Updated docs for 2.2.1 release
diff --git a/celix-src b/celix-src
index 85ef063..b618e6a 160000
--- a/celix-src
+++ b/celix-src
@@ -1 +1 @@
-Subproject commit 85ef063a38758bdbe4aba1e6124a4d5d437a07be
+Subproject commit b618e6aa1df05c91b2d7ba8a6768d023cafdce36
diff --git a/config.toml b/config.toml
index 68439be..0b69eeb 100644
--- a/config.toml
+++ b/config.toml
@@ -33,7 +33,7 @@
 date = ["date", ":filename", "publishDate", "lastmod"]
 
 [params]
-latestVersion = "2.2.0"
+latestVersion = "2.2.1"
 
 repositoryUrl = "https://github.com/apache/celix"
 repositorySourceBranch = "master"
diff --git a/extract_celix_docs.sh b/extract_celix_docs.sh
old mode 100644
new mode 100755
diff --git a/generate_celix_doxygen.sh b/generate_celix_doxygen.sh
old mode 100644
new mode 100755
diff --git a/publish.sh b/publish.sh
old mode 100644
new mode 100755
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/rsa_spi/README.md b/source/docs/2.2.0/celix/bundles/remote_services/rsa_spi/README.md
deleted file mode 100644
index 6711efa..0000000
--- a/source/docs/2.2.0/celix/bundles/remote_services/rsa_spi/README.md
+++ /dev/null
@@ -1,17 +0,0 @@
----
-type: celix-doc
-title: Remote Service Admin
-version: 2.2.0
----
-
-# Remote Service Admin
-
-The Remote Service Admin (RSA) provides the mechanisms to import and export services when instructed to do so by the Topology Manager. 
-
-To delegate method calls to the actual service implementation, the RSA_SHM and the RSA_HTTP are using "endpoint/proxy" bundles, which has all the knowledge about the marshalling and unmarshalling of data for the service. The RSA_DFI implementation combines a [foreign function interface](https://en.wikipedia.org/wiki/Foreign_function_interface) technique together with manually created descriptors.
-
-Note that this folder contains code commonly used by the RSA implementations and therefore does not include any CMAKE configuration.
-
-## Properties
-    ENDPOINTS				 defines the relative directory where endpoints and proxys can be found (default: endpoints)
-    CELIX_FRAMEWORK_EXTENDER_PATH  Used in RSA_DFI only. Can be used to define a path to use as an extender path point for the framework bundle. For normal bundles the bundle cache is used. 
diff --git a/source/docs/2.2.0/celix/CHANGES.md b/source/docs/2.2.1/celix/CHANGES.md
similarity index 98%
rename from source/docs/2.2.0/celix/CHANGES.md
rename to source/docs/2.2.1/celix/CHANGES.md
index 9dba7b9..8292034 100644
--- a/source/docs/2.2.0/celix/CHANGES.md
+++ b/source/docs/2.2.1/celix/CHANGES.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Changes
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
@@ -21,6 +21,12 @@
 limitations under the License.
 -->
 
+# Changes for 2.2.1
+
+# Fixes
+
+- Fixes etcdlib CMake setup to that etcdlib can be build as a separate project
+
 # Changes for 2.2.0
 
 ## New features:
diff --git a/source/docs/2.2.0/celix/README.md b/source/docs/2.2.1/celix/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/README.md
rename to source/docs/2.2.1/celix/README.md
index 35b0083..0f13d38 100644
--- a/source/docs/2.2.0/celix/README.md
+++ b/source/docs/2.2.1/celix/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: README.md
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/deployment_admin/README.md b/source/docs/2.2.1/celix/bundles/deployment_admin/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/deployment_admin/README.md
rename to source/docs/2.2.1/celix/bundles/deployment_admin/README.md
index bb174e0..a70297b 100644
--- a/source/docs/2.2.0/celix/bundles/deployment_admin/README.md
+++ b/source/docs/2.2.1/celix/bundles/deployment_admin/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Deployment Admin
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/device_access/README.md b/source/docs/2.2.1/celix/bundles/device_access/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/device_access/README.md
rename to source/docs/2.2.1/celix/bundles/device_access/README.md
index 3ed3e5a..de30c31 100644
--- a/source/docs/2.2.0/celix/bundles/device_access/README.md
+++ b/source/docs/2.2.1/celix/bundles/device_access/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Device Access
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/device_access/example/base_driver/README.md b/source/docs/2.2.1/celix/bundles/device_access/example/base_driver/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/device_access/example/base_driver/README.md
rename to source/docs/2.2.1/celix/bundles/device_access/example/base_driver/README.md
index d5974ac..51106ce 100644
--- a/source/docs/2.2.0/celix/bundles/device_access/example/base_driver/README.md
+++ b/source/docs/2.2.1/celix/bundles/device_access/example/base_driver/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Base driver
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/device_access/example/consuming_driver/README.md b/source/docs/2.2.1/celix/bundles/device_access/example/consuming_driver/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/device_access/example/consuming_driver/README.md
rename to source/docs/2.2.1/celix/bundles/device_access/example/consuming_driver/README.md
index 05477de..b618d7e 100644
--- a/source/docs/2.2.0/celix/bundles/device_access/example/consuming_driver/README.md
+++ b/source/docs/2.2.1/celix/bundles/device_access/example/consuming_driver/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Consuming driver
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/device_access/example/refining_driver/README.md b/source/docs/2.2.1/celix/bundles/device_access/example/refining_driver/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/device_access/example/refining_driver/README.md
rename to source/docs/2.2.1/celix/bundles/device_access/example/refining_driver/README.md
index 296b510..5b0fbaf 100644
--- a/source/docs/2.2.0/celix/bundles/device_access/example/refining_driver/README.md
+++ b/source/docs/2.2.1/celix/bundles/device_access/example/refining_driver/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Refining driver
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/http_admin/README.md b/source/docs/2.2.1/celix/bundles/http_admin/README.md
old mode 100644
new mode 100755
similarity index 99%
rename from source/docs/2.2.0/celix/bundles/http_admin/README.md
rename to source/docs/2.2.1/celix/bundles/http_admin/README.md
index 542fa20..298120f
--- a/source/docs/2.2.0/celix/bundles/http_admin/README.md
+++ b/source/docs/2.2.1/celix/bundles/http_admin/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: HTTP Admin
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/logging/log_service/README.md b/source/docs/2.2.1/celix/bundles/logging/log_service/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/logging/log_service/README.md
rename to source/docs/2.2.1/celix/bundles/logging/log_service/README.md
index f219375..d0a4611 100644
--- a/source/docs/2.2.0/celix/bundles/logging/log_service/README.md
+++ b/source/docs/2.2.1/celix/bundles/logging/log_service/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Log Service
-version: 2.2.0
+version: 2.2.1
 ---
 
 # Log Service
diff --git a/source/docs/2.2.0/celix/bundles/logging/log_writer/README.md b/source/docs/2.2.1/celix/bundles/logging/log_writer/README.md
similarity index 96%
rename from source/docs/2.2.0/celix/bundles/logging/log_writer/README.md
rename to source/docs/2.2.1/celix/bundles/logging/log_writer/README.md
index 6108fc6..075add8 100644
--- a/source/docs/2.2.0/celix/bundles/logging/log_writer/README.md
+++ b/source/docs/2.2.1/celix/bundles/logging/log_writer/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Log Writer
-version: 2.2.0
+version: 2.2.1
 ---
 
 # Log Writer
diff --git a/source/docs/2.2.0/celix/bundles/pubsub/README.md b/source/docs/2.2.1/celix/bundles/pubsub/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/bundles/pubsub/README.md
rename to source/docs/2.2.1/celix/bundles/pubsub/README.md
index 05c6b5b..133c040 100644
--- a/source/docs/2.2.0/celix/bundles/pubsub/README.md
+++ b/source/docs/2.2.1/celix/bundles/pubsub/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Publisher / subscriber implementation
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/pubsub/examples/keys/README.md b/source/docs/2.2.1/celix/bundles/pubsub/examples/keys/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/pubsub/examples/keys/README.md
rename to source/docs/2.2.1/celix/bundles/pubsub/examples/keys/README.md
index bd0812f..b41bd53 100644
--- a/source/docs/2.2.0/celix/bundles/pubsub/examples/keys/README.md
+++ b/source/docs/2.2.1/celix/bundles/pubsub/examples/keys/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Pubsub Keys
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/pubsub/pubsub_admin_udp_mc/README.md b/source/docs/2.2.1/celix/bundles/pubsub/pubsub_admin_udp_mc/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/bundles/pubsub/pubsub_admin_udp_mc/README.md
rename to source/docs/2.2.1/celix/bundles/pubsub/pubsub_admin_udp_mc/README.md
index bfd5f57..b38c304 100644
--- a/source/docs/2.2.0/celix/bundles/pubsub/pubsub_admin_udp_mc/README.md
+++ b/source/docs/2.2.1/celix/bundles/pubsub/pubsub_admin_udp_mc/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: PSA UDP Multicast
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/README.md b/source/docs/2.2.1/celix/bundles/remote_services/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/bundles/remote_services/README.md
rename to source/docs/2.2.1/celix/bundles/remote_services/README.md
index 07e73c3..b52e0ca 100644
--- a/source/docs/2.2.0/celix/bundles/remote_services/README.md
+++ b/source/docs/2.2.1/celix/bundles/remote_services/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Remote Service Admin Service
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
@@ -21,6 +21,8 @@
 limitations under the License.
 -->
 
+Title: Apache Celix Remote Service Admin Service
+
 ## Introduction
 
 The Remote Service Admin Service subproject contains an adapted implementation of the OSGi Enterprise Remote Service Admin Service Specification. The subproject consists of three parts, each described in more detail in the following sections.
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/discovery_etcd/README.md b/source/docs/2.2.1/celix/bundles/remote_services/discovery_etcd/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/remote_services/discovery_etcd/README.md
rename to source/docs/2.2.1/celix/bundles/remote_services/discovery_etcd/README.md
index 1ca9d04..2e7ae38 100644
--- a/source/docs/2.2.0/celix/bundles/remote_services/discovery_etcd/README.md
+++ b/source/docs/2.2.1/celix/bundles/remote_services/discovery_etcd/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Discovery ETCD
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/remote_service_admin_dfi/README.md b/source/docs/2.2.1/celix/bundles/remote_services/remote_service_admin_dfi/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/remote_services/remote_service_admin_dfi/README.md
rename to source/docs/2.2.1/celix/bundles/remote_services/remote_service_admin_dfi/README.md
index c729388..98534b4 100644
--- a/source/docs/2.2.0/celix/bundles/remote_services/remote_service_admin_dfi/README.md
+++ b/source/docs/2.2.1/celix/bundles/remote_services/remote_service_admin_dfi/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Remote Service Admin DFI
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/remote_services_api/README.md b/source/docs/2.2.1/celix/bundles/remote_services/remote_services_api/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/remote_services/remote_services_api/README.md
rename to source/docs/2.2.1/celix/bundles/remote_services/remote_services_api/README.md
index 6711efa..8955398 100644
--- a/source/docs/2.2.0/celix/bundles/remote_services/remote_services_api/README.md
+++ b/source/docs/2.2.1/celix/bundles/remote_services/remote_services_api/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Remote Service Admin
-version: 2.2.0
+version: 2.2.1
 ---
 
 # Remote Service Admin
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/remote_services_api/README.md b/source/docs/2.2.1/celix/bundles/remote_services/rsa_spi/README.md
similarity index 98%
copy from source/docs/2.2.0/celix/bundles/remote_services/remote_services_api/README.md
copy to source/docs/2.2.1/celix/bundles/remote_services/rsa_spi/README.md
index 6711efa..8955398 100644
--- a/source/docs/2.2.0/celix/bundles/remote_services/remote_services_api/README.md
+++ b/source/docs/2.2.1/celix/bundles/remote_services/rsa_spi/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Remote Service Admin
-version: 2.2.0
+version: 2.2.1
 ---
 
 # Remote Service Admin
diff --git a/source/docs/2.2.0/celix/bundles/remote_services/topology_manager/README.md b/source/docs/2.2.1/celix/bundles/remote_services/topology_manager/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/remote_services/topology_manager/README.md
rename to source/docs/2.2.1/celix/bundles/remote_services/topology_manager/README.md
index 3665ec0..b4762b1 100644
--- a/source/docs/2.2.0/celix/bundles/remote_services/topology_manager/README.md
+++ b/source/docs/2.2.1/celix/bundles/remote_services/topology_manager/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Topology Manager
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/shell/remote_shell/README.md b/source/docs/2.2.1/celix/bundles/shell/remote_shell/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/shell/remote_shell/README.md
rename to source/docs/2.2.1/celix/bundles/shell/remote_shell/README.md
index bfd6064..92cc306 100644
--- a/source/docs/2.2.0/celix/bundles/shell/remote_shell/README.md
+++ b/source/docs/2.2.1/celix/bundles/shell/remote_shell/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Remote Shell
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/shell/shell/README.md b/source/docs/2.2.1/celix/bundles/shell/shell/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/shell/shell/README.md
rename to source/docs/2.2.1/celix/bundles/shell/shell/README.md
index 44e1b15..60d6fe1 100644
--- a/source/docs/2.2.0/celix/bundles/shell/shell/README.md
+++ b/source/docs/2.2.1/celix/bundles/shell/shell/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Shell
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/shell/shell_tui/README.md b/source/docs/2.2.1/celix/bundles/shell/shell_tui/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/shell/shell_tui/README.md
rename to source/docs/2.2.1/celix/bundles/shell/shell_tui/README.md
index 8f13343..049d516 100644
--- a/source/docs/2.2.0/celix/bundles/shell/shell_tui/README.md
+++ b/source/docs/2.2.1/celix/bundles/shell/shell_tui/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Shell TUI
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/bundles/shell/shell_wui/README.md b/source/docs/2.2.1/celix/bundles/shell/shell_wui/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/bundles/shell/shell_wui/README.md
rename to source/docs/2.2.1/celix/bundles/shell/shell_wui/README.md
index 34de21b..862b191 100644
--- a/source/docs/2.2.0/celix/bundles/shell/shell_wui/README.md
+++ b/source/docs/2.2.1/celix/bundles/shell/shell_wui/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Shell WUI
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/documents/building/README.md b/source/docs/2.2.1/celix/documents/building/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/documents/building/README.md
rename to source/docs/2.2.1/celix/documents/building/README.md
index c5e3a8c..acce97e 100644
--- a/source/docs/2.2.0/celix/documents/building/README.md
+++ b/source/docs/2.2.1/celix/documents/building/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Building and Installing
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/documents/cmake_commands/README.md b/source/docs/2.2.1/celix/documents/cmake_commands/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/documents/cmake_commands/README.md
rename to source/docs/2.2.1/celix/documents/cmake_commands/README.md
index 6f8af7d..36bcf27 100644
--- a/source/docs/2.2.0/celix/documents/cmake_commands/README.md
+++ b/source/docs/2.2.1/celix/documents/cmake_commands/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: CMake Commands
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/documents/getting_started/README.md b/source/docs/2.2.1/celix/documents/getting_started/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/documents/getting_started/README.md
rename to source/docs/2.2.1/celix/documents/getting_started/README.md
index 1132d4f..023cc8c 100644
--- a/source/docs/2.2.0/celix/documents/getting_started/README.md
+++ b/source/docs/2.2.1/celix/documents/getting_started/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Getting Started Guide
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/documents/getting_started/creating_a_simple_bundle.md b/source/docs/2.2.1/celix/documents/getting_started/creating_a_simple_bundle.md
similarity index 98%
rename from source/docs/2.2.0/celix/documents/getting_started/creating_a_simple_bundle.md
rename to source/docs/2.2.1/celix/documents/getting_started/creating_a_simple_bundle.md
index bc8ea23..f5cd896 100644
--- a/source/docs/2.2.0/celix/documents/getting_started/creating_a_simple_bundle.md
+++ b/source/docs/2.2.1/celix/documents/getting_started/creating_a_simple_bundle.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Creating a Simple Bundle
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
@@ -26,7 +26,7 @@
 ## Intro
 This page is intended for first time users of Apache Celix. It should guide you through building & installing Apache Celix, setting up a new project, creating your first bundle, setting up the project for use with Eclipse project and finally running and debugging your bundle directly from eclipse workspace. 
 
-If there are any uncertainties or question, don't hesitate to ask your questions in the [Apache Celix mailing](https://celix.apache.org/support/mailinglist.html).
+If there are any uncertainties or question, don't hesitate to ask your questions on the [Apache Celix mailing list](https://celix.apache.org/support/mailing-list.html).
 
 ## Prerequisite
 Some experience with a command line interface (xterm) is expected to be able to follow this guide. 
diff --git a/source/docs/2.2.0/celix/documents/getting_started/using_services_with_c.md b/source/docs/2.2.1/celix/documents/getting_started/using_services_with_c.md
similarity index 99%
rename from source/docs/2.2.0/celix/documents/getting_started/using_services_with_c.md
rename to source/docs/2.2.1/celix/documents/getting_started/using_services_with_c.md
index d4d617d..3005a46 100644
--- a/source/docs/2.2.0/celix/documents/getting_started/using_services_with_c.md
+++ b/source/docs/2.2.1/celix/documents/getting_started/using_services_with_c.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Using Services with C
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/documents/getting_started/using_services_with_cxx.md b/source/docs/2.2.1/celix/documents/getting_started/using_services_with_cxx.md
similarity index 99%
rename from source/docs/2.2.0/celix/documents/getting_started/using_services_with_cxx.md
rename to source/docs/2.2.1/celix/documents/getting_started/using_services_with_cxx.md
index b652463..b2e31d7 100644
--- a/source/docs/2.2.0/celix/documents/getting_started/using_services_with_cxx.md
+++ b/source/docs/2.2.1/celix/documents/getting_started/using_services_with_cxx.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Using Services with C++
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/documents/intro/README.md b/source/docs/2.2.1/celix/documents/intro/README.md
similarity index 97%
rename from source/docs/2.2.0/celix/documents/intro/README.md
rename to source/docs/2.2.1/celix/documents/intro/README.md
index 9bdc4cd..bcb6388 100644
--- a/source/docs/2.2.0/celix/documents/intro/README.md
+++ b/source/docs/2.2.1/celix/documents/intro/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Introduction
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
@@ -129,7 +129,7 @@
 ## C services in Apache Celix
 As mentioned OSGi uses Java Interfaces to define a service. Since C does not have Interfaces as compilable unit, this is not possible for Celix.  To be able to define a service which hides implementation details, Celix uses structs with function pointers.
  
-See [Apache Celix - Getting Started Guide](https://github.com/apache/celix/blob/master/documents/getting_started/readme.html) for a more in depth look at services and service usage.
+See [Apache Celix - Getting Started Guide](../getting_started/README.html) for a more in depth look at services and service usage.
  
 ## Impact of dynamic services
 Services in Apache Celix are dynamic, meaning that they can come and go at any moment. 
diff --git a/source/docs/2.2.0/celix/documents/subprojects/README.md b/source/docs/2.2.1/celix/documents/subprojects/README.md
similarity index 93%
rename from source/docs/2.2.0/celix/documents/subprojects/README.md
rename to source/docs/2.2.1/celix/documents/subprojects/README.md
index 33b1382..c8a5e2b 100644
--- a/source/docs/2.2.0/celix/documents/subprojects/README.md
+++ b/source/docs/2.2.1/celix/documents/subprojects/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Subprojects
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
@@ -39,4 +39,4 @@
 * [Remote Shell](../../bundles/shell/remote_shell/README.html) - A remote (telnet) frontend for the Celix shell.
 * [Bonjour Shell](../../bundles/shell/shell_bonjour) - A remote (Bonjour / mDNS) frontend for the Celix shell.
 * [Deployment Admin](../../bundles/deployment_admin/README.html) - A deployment admin implementation.
-* [Pubsub](../../pubsub/README.html) - An implementation for a publish-subscribe remote services system, that use dfi library for message serialization.
+* [Pubsub](../../bundles/pubsub/README.html) - An implementation for a publish-subscribe remote services system, that use dfi library for message serialization.
diff --git a/source/docs/2.2.0/celix/examples/celix-examples/README.md b/source/docs/2.2.1/celix/examples/celix-examples/README.md
similarity index 97%
rename from source/docs/2.2.0/celix/examples/celix-examples/README.md
rename to source/docs/2.2.1/celix/examples/celix-examples/README.md
index c7dd193..1b9c032 100644
--- a/source/docs/2.2.0/celix/examples/celix-examples/README.md
+++ b/source/docs/2.2.1/celix/examples/celix-examples/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Celix Examples
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/examples/celix-examples/http_example/README.md b/source/docs/2.2.1/celix/examples/celix-examples/http_example/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/examples/celix-examples/http_example/README.md
rename to source/docs/2.2.1/celix/examples/celix-examples/http_example/README.md
index cec650f..d9f5567 100644
--- a/source/docs/2.2.0/celix/examples/celix-examples/http_example/README.md
+++ b/source/docs/2.2.1/celix/examples/celix-examples/http_example/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: HTTP Example
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/examples/celix-examples/services_example_c/README.md b/source/docs/2.2.1/celix/examples/celix-examples/services_example_c/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/examples/celix-examples/services_example_c/README.md
rename to source/docs/2.2.1/celix/examples/celix-examples/services_example_c/README.md
index e3f43ff..836007d 100644
--- a/source/docs/2.2.0/celix/examples/celix-examples/services_example_c/README.md
+++ b/source/docs/2.2.1/celix/examples/celix-examples/services_example_c/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Services example C
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/dependency_manager/README.md b/source/docs/2.2.1/celix/libs/dependency_manager/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/libs/dependency_manager/README.md
rename to source/docs/2.2.1/celix/libs/dependency_manager/README.md
index 68758a4..61cc930 100644
--- a/source/docs/2.2.0/celix/libs/dependency_manager/README.md
+++ b/source/docs/2.2.1/celix/libs/dependency_manager/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Dependency Manager
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/dependency_manager/TODO.md b/source/docs/2.2.1/celix/libs/dependency_manager/TODO.md
similarity index 98%
rename from source/docs/2.2.0/celix/libs/dependency_manager/TODO.md
rename to source/docs/2.2.1/celix/libs/dependency_manager/TODO.md
index 9acfa91..789e818 100644
--- a/source/docs/2.2.0/celix/libs/dependency_manager/TODO.md
+++ b/source/docs/2.2.1/celix/libs/dependency_manager/TODO.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: TODO.md
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/dependency_manager_cxx/README.md b/source/docs/2.2.1/celix/libs/dependency_manager_cxx/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/libs/dependency_manager_cxx/README.md
rename to source/docs/2.2.1/celix/libs/dependency_manager_cxx/README.md
index 2452b08..9db38e6 100644
--- a/source/docs/2.2.0/celix/libs/dependency_manager_cxx/README.md
+++ b/source/docs/2.2.1/celix/libs/dependency_manager_cxx/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: C++ Dependency Manager
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/dependency_manager_cxx/TODO.md b/source/docs/2.2.1/celix/libs/dependency_manager_cxx/TODO.md
similarity index 98%
rename from source/docs/2.2.0/celix/libs/dependency_manager_cxx/TODO.md
rename to source/docs/2.2.1/celix/libs/dependency_manager_cxx/TODO.md
index fc395c9..883529e 100644
--- a/source/docs/2.2.0/celix/libs/dependency_manager_cxx/TODO.md
+++ b/source/docs/2.2.1/celix/libs/dependency_manager_cxx/TODO.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: TODO.md
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/etcdlib/README.md b/source/docs/2.2.1/celix/libs/etcdlib/README.md
similarity index 97%
rename from source/docs/2.2.0/celix/libs/etcdlib/README.md
rename to source/docs/2.2.1/celix/libs/etcdlib/README.md
index e293851..8f84cbe 100644
--- a/source/docs/2.2.0/celix/libs/etcdlib/README.md
+++ b/source/docs/2.2.1/celix/libs/etcdlib/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Etcdlib
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
@@ -22,10 +22,10 @@
 -->
 
 # Etcdlib
-
 etcd is a distributed, consistent key-value store for shared configuration and service discovery, part of the CoreOS project.
 
 This repository provides a library for etcd for C applications.
+It uses the v2 (REST) api of etcd.
 
 Etcdlib can be used as part of Celix but is also usable stand-alone.
 
diff --git a/source/docs/2.2.0/celix/libs/launcher/README.md b/source/docs/2.2.1/celix/libs/launcher/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/libs/launcher/README.md
rename to source/docs/2.2.1/celix/libs/launcher/README.md
index e00a6a9..bd7dd6b 100644
--- a/source/docs/2.2.0/celix/libs/launcher/README.md
+++ b/source/docs/2.2.1/celix/libs/launcher/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Launcher
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/utils/README.md b/source/docs/2.2.1/celix/libs/utils/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/libs/utils/README.md
rename to source/docs/2.2.1/celix/libs/utils/README.md
index 661dc8b..48b9480 100644
--- a/source/docs/2.2.0/celix/libs/utils/README.md
+++ b/source/docs/2.2.1/celix/libs/utils/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Utils
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/libs/utils/docs/thpool/Design.md b/source/docs/2.2.1/celix/libs/utils/docs/thpool/Design.md
similarity index 99%
rename from source/docs/2.2.0/celix/libs/utils/docs/thpool/Design.md
rename to source/docs/2.2.1/celix/libs/utils/docs/thpool/Design.md
index 7db4ca4..4110204 100644
--- a/source/docs/2.2.0/celix/libs/utils/docs/thpool/Design.md
+++ b/source/docs/2.2.1/celix/libs/utils/docs/thpool/Design.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: C Thread Pool design
-version: 2.2.0
+version: 2.2.1
 ---
 
 ## High level
diff --git a/source/docs/2.2.0/celix/libs/utils/docs/thpool/FAQ.md b/source/docs/2.2.1/celix/libs/utils/docs/thpool/FAQ.md
similarity index 99%
rename from source/docs/2.2.0/celix/libs/utils/docs/thpool/FAQ.md
rename to source/docs/2.2.1/celix/libs/utils/docs/thpool/FAQ.md
index c235af0..99d1bdc 100644
--- a/source/docs/2.2.0/celix/libs/utils/docs/thpool/FAQ.md
+++ b/source/docs/2.2.1/celix/libs/utils/docs/thpool/FAQ.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: C Thread Pool FAQ
-version: 2.2.0
+version: 2.2.1
 ---
 
 
diff --git a/source/docs/2.2.0/celix/libs/utils/docs/thpool/README.md b/source/docs/2.2.1/celix/libs/utils/docs/thpool/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/libs/utils/docs/thpool/README.md
rename to source/docs/2.2.1/celix/libs/utils/docs/thpool/README.md
index c200e16..41d339a 100644
--- a/source/docs/2.2.0/celix/libs/utils/docs/thpool/README.md
+++ b/source/docs/2.2.1/celix/libs/utils/docs/thpool/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: C Thread Pool
-version: 2.2.0
+version: 2.2.1
 ---
 
 ![Build status](http://178.62.170.124:3000/pithikos/c-thread-pool/badge/?branch=master)
diff --git a/source/docs/2.2.0/celix/libs/utils/include/memstream/README.md b/source/docs/2.2.1/celix/libs/utils/include/memstream/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/libs/utils/include/memstream/README.md
rename to source/docs/2.2.1/celix/libs/utils/include/memstream/README.md
index e84fe63..c3d86bc 100644
--- a/source/docs/2.2.0/celix/libs/utils/include/memstream/README.md
+++ b/source/docs/2.2.1/celix/libs/utils/include/memstream/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: memstream
-version: 2.2.0
+version: 2.2.1
 ---
 
 fmemopen for Mac OS and iOS
diff --git a/source/docs/2.2.0/celix/misc/experimental/README.md b/source/docs/2.2.1/celix/misc/experimental/README.md
similarity index 98%
rename from source/docs/2.2.0/celix/misc/experimental/README.md
rename to source/docs/2.2.1/celix/misc/experimental/README.md
index e8345f3..4c1d63e 100644
--- a/source/docs/2.2.0/celix/misc/experimental/README.md
+++ b/source/docs/2.2.1/celix/misc/experimental/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Intro
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/celix/misc/experimental/bundles/config_admin/README.md b/source/docs/2.2.1/celix/misc/experimental/bundles/config_admin/README.md
similarity index 99%
rename from source/docs/2.2.0/celix/misc/experimental/bundles/config_admin/README.md
rename to source/docs/2.2.1/celix/misc/experimental/bundles/config_admin/README.md
index 0ee5eaf..459aff9 100644
--- a/source/docs/2.2.0/celix/misc/experimental/bundles/config_admin/README.md
+++ b/source/docs/2.2.1/celix/misc/experimental/bundles/config_admin/README.md
@@ -1,7 +1,7 @@
 ---
 type: celix-doc
 title: Configuration Admin
-version: 2.2.0
+version: 2.2.1
 ---
 
 <!--
diff --git a/source/docs/2.2.0/docs.md b/source/docs/2.2.1/docs.md
similarity index 79%
rename from source/docs/2.2.0/docs.md
rename to source/docs/2.2.1/docs.md
index 7161804..8a4214d 100644
--- a/source/docs/2.2.0/docs.md
+++ b/source/docs/2.2.1/docs.md
@@ -1,8 +1,8 @@
 ---
-title: Documentation for v2.2.0
+title: Documentation for v2.2.1
 ---
 
-# Documentation for Celix v2.2.0
+# Documentation for Celix v2.2.1
 
 Get started with Celix by going through the appropriate content.
 
@@ -14,9 +14,9 @@
  - [Building](./celix/documents/building/README.html)
  - [Subprojects](./celix/documents/subprojects/README.html)
 
-The Doxygen documentation for release 2.2.0 is available <a href="html/index.html" target="_blank">here</a>.
+The Doxygen documentation for release 2.2.1 is available <a href="html/index.html" target="_blank">here</a>.
 
-View the 2.2.0 changelog [here](./celix/CHANGES.html).
+View the 2.2.1 changelog [here](./celix/CHANGES.html).
  
 > The [Celix mailing list](/support/mailing-list.html) is an excellent place to reach out for help. If you don't find 
 > an answer to your problem in the mailing list archives, post a new question on the mailing list.
diff --git a/source/download.md b/source/download.md
index 9a1a1e4..fac09a9 100644
--- a/source/download.md
+++ b/source/download.md
@@ -41,5 +41,5 @@
 
 - Source: <a href="[preferred]celix/celix-{{< param "latestVersion" >}}/celix-{{< param "latestVersion" >}}.tar.gz">celix-{{< param "latestVersion" >}}.tar.gz</a> 
 [ [PGP](https://downloads.apache.org/celix/celix-{{< param "latestVersion" >}}/celix-{{< param "latestVersion" >}}.tar.gz.asc) ]
-[ [SHA1](https://downloads.apache.org/celix/celix-{{< param "latestVersion" >}}/celix-{{< param "latestVersion" >}}.tar.gz.sha) ]
+[ [SHA512](https://downloads.apache.org/celix/celix-{{< param "latestVersion" >}}/celix-{{< param "latestVersion" >}}.tar.gz.sha.512) ]
 
diff --git a/static/docs/2.2.0/html/README_8md.html b/static/docs/2.2.0/html/README_8md.html
deleted file mode 100644
index b3416da..0000000
--- a/static/docs/2.2.0/html/README_8md.html
+++ /dev/null
@@ -1,97 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: README.md File Reference</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">README.md File Reference</div>  </div>
-</div><!--header-->
-<div class="contents">
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/arrowdown.png b/static/docs/2.2.0/html/arrowdown.png
deleted file mode 100644
index 0b63f6d..0000000
--- a/static/docs/2.2.0/html/arrowdown.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/arrowright.png b/static/docs/2.2.0/html/arrowright.png
deleted file mode 100644
index c6ee22f..0000000
--- a/static/docs/2.2.0/html/arrowright.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__api_8h_source.html b/static/docs/2.2.0/html/celix__api_8h_source.html
deleted file mode 100644
index ab3bb52..0000000
--- a/static/docs/2.2.0/html/celix__api_8h_source.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_api.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_api.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__api_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_CELIX_API_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_CELIX_API_H_</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;properties.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;array_list.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_constants.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;bundle.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;bundle_context.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;framework.h&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;celix_array_list.h&quot;</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">//#include &quot;celix_constants.h&quot;</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;celix_utils_api.h&quot;</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle_8h.html">celix_bundle.h</a>&quot;</span></div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle__context_8h.html">celix_bundle_context.h</a>&quot;</span></div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__framework_8h.html">celix_framework.h</a>&quot;</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &quot;celix_framework_factory.h&quot;</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;celix_launcher.h&quot;</span></div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;celix_dependency_manager.h&quot;</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__dm__component_8h.html">celix_dm_component.h</a>&quot;</span></div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &quot;dm_service_dependency.h&quot;</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle__activator_8h.html">celix_bundle_activator.h</a>&quot;</span></div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &quot;celix_framework_factory.h&quot;</span></div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;</div><div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;celix/dm/DependencyManager.h&quot;</span></div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif //CELIX_CELIX_API_H_</span></div><div class="ttc" id="celix__bundle__context_8h_html"><div class="ttname"><a href="celix__bundle__context_8h.html">celix_bundle_context.h</a></div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html"><div class="ttname"><a href="celix__bundle__activator_8h.html">celix_bundle_activator.h</a></div></div>
-<div class="ttc" id="celix__bundle_8h_html"><div class="ttname"><a href="celix__bundle_8h.html">celix_bundle.h</a></div></div>
-<div class="ttc" id="celix__framework_8h_html"><div class="ttname"><a href="celix__framework_8h.html">celix_framework.h</a></div></div>
-<div class="ttc" id="celix__dm__component_8h_html"><div class="ttname"><a href="celix__dm__component_8h.html">celix_dm_component.h</a></div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.md5
deleted file mode 100644
index e7fbc3f..0000000
--- a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-a6612e25788d7125c063b8485ebd690c
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.png b/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.png
deleted file mode 100644
index 557e80b..0000000
--- a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__incl.map b/static/docs/2.2.0/html/celix__bundle_8h__incl.map
deleted file mode 100644
index 3bb17b6..0000000
--- a/static/docs/2.2.0/html/celix__bundle_8h__incl.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="libs/framework/include/celix_bundle.h" name="libs/framework/include/celix_bundle.h">
-</map>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__incl.md5 b/static/docs/2.2.0/html/celix__bundle_8h__incl.md5
deleted file mode 100644
index 8b5d0ae..0000000
--- a/static/docs/2.2.0/html/celix__bundle_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-0316c239d1542705c9ab79c686bce4a0
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__incl.png b/static/docs/2.2.0/html/celix__bundle_8h__incl.png
deleted file mode 100644
index f78324c..0000000
--- a/static/docs/2.2.0/html/celix__bundle_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__bundle_8h_source.html b/static/docs/2.2.0/html/celix__bundle_8h_source.html
deleted file mode 100644
index 74c0479..0000000
--- a/static/docs/2.2.0/html/celix__bundle_8h_source.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_bundle.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_bundle.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__bundle_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;bundle_state.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#ifndef CELIX_BUNDLE_H_</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#define CELIX_BUNDLE_H_</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle_getId</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;celix_bundle_state_e <a class="code" href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle_getState</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;<span class="keywordtype">char</span>* <a class="code" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle_getEntry</a>(<span class="keyword">const</span> celix_bundle_t* bnd, <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle_getGroup</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;</div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle_getSymbolicName</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;</div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_BUNDLE_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="celix__bundle_8h_html_a5cbe24596271fc91c79c8f42c8b92bc5"><div class="ttname"><a href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle_getEntry</a></div><div class="ttdeci">char * celix_bundle_getEntry(const celix_bundle_t *bnd, const char *path)</div></div>
-<div class="ttc" id="celix__bundle_8h_html_a7106fcc7b06c0506dd7e1678ba024a35"><div class="ttname"><a href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle_getState</a></div><div class="ttdeci">celix_bundle_state_e celix_bundle_getState(const celix_bundle_t *bnd)</div></div>
-<div class="ttc" id="celix__bundle_8h_html_a391c2aa2fdf3c8d0c65fc07a07bb7545"><div class="ttname"><a href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle_getSymbolicName</a></div><div class="ttdeci">const char * celix_bundle_getSymbolicName(const celix_bundle_t *bnd)</div></div>
-<div class="ttc" id="celix__bundle_8h_html_a5abd44b1259599d08f2312760fb32170"><div class="ttname"><a href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle_getGroup</a></div><div class="ttdeci">const char * celix_bundle_getGroup(const celix_bundle_t *bnd)</div></div>
-<div class="ttc" id="celix__bundle_8h_html_a8a9b02c9438f05099ff2bde9fea8c3cd"><div class="ttname"><a href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle_getId</a></div><div class="ttdeci">long celix_bundle_getId(const celix_bundle_t *bnd)</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.md5
deleted file mode 100644
index 8070585..0000000
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-89d4ccc15c48c0fd1737b3270fabd80c
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.png b/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.png
deleted file mode 100644
index 9bcb692..0000000
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.map b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.map
deleted file mode 100644
index a7c4bbc..0000000
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="libs/framework/include/celix_bundle_activator.h" name="libs/framework/include/celix_bundle_activator.h">
-<area shape="rect" id="node3" href="$celix__bundle__context_8h.html" title="celix_bundle_context.h" alt="" coords="305,95,471,121"/>
-</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.md5 b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.md5
deleted file mode 100644
index 7fde1d7..0000000
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-6ce611c622776f25c14bb4bef75766f0
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.png b/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.png
deleted file mode 100644
index 1f0591c..0000000
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h_source.html b/static/docs/2.2.0/html/celix__bundle__activator_8h_source.html
deleted file mode 100644
index 85f1b8b..0000000
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h_source.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_bundle_activator.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_bundle_activator.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__bundle__activator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle__context_8h.html">celix_bundle_context.h</a>&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#ifndef CELIX_BUNDLE_ACTIVATOR_H_</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#define CELIX_BUNDLE_ACTIVATOR_H_</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a>(celix_bundle_context_t *ctx, <span class="keywordtype">void</span> **userData);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx);</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx);</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t* ctx);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160;</div><div class="line"><a name="l00115"></a><span class="lineno"><a class="line" href="celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2">  115</a></span>&#160;<span class="preprocessor">#define CELIX_GEN_BUNDLE_ACTIVATOR(actType, actStart, actStop)                                                         \</span></div><div class="line"><a name="l00116"></a><span class="lineno">  116</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx __attribute__((unused)), void **userData) {    \</span></div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="preprocessor">    celix_status_t status = CELIX_SUCCESS;                                                                             \</span></div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="preprocessor">    actType *data = (actType*)calloc(1, sizeof(*data));                                                                \</span></div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">    if (data != NULL) {                                                                                                \</span></div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="preprocessor">        *userData = data;                                                                                              \</span></div><div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="preprocessor">    } else {                                                                                                           \</span></div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">        status = CELIX_ENOMEM;                                                                                         \</span></div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div><div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor">    return status;                                                                                                     \</span></div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx) {                              \</span></div><div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">    return actStart((actType*)userData, ctx);                                                                          \</span></div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx) {                               \</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">    return actStop((actType*)userData, ctx);                                                                           \</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_destroy(void *userData, celix_bundle_context_t *ctx __attribute__((unused))) {    \</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">    free(userData);                                                                                                    \</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="preprocessor">}</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;</div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;}</div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="preprocessor">#define CELIX_GEN_CXX_BUNDLE_ACTIVATOR(actType)                                                                        \</span></div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">namespace </span><span class="comment">/*anon*/</span><span class="preprocessor"> {                                                                                                   \</span></div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="preprocessor">struct BundleActivatorData {                                                                                           \</span></div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="preprocessor">    std::shared_ptr&lt;DependencyManager&gt; mng{};                                                                          \</span></div><div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="preprocessor">    std::unique_ptr&lt;actType&gt; activator{};                                                                              \</span></div><div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="preprocessor">};                                                                                                                     \</span></div><div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_create(celix_bundle_context_t *context, void** userData) {                   \</span></div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">    int status = CELIX_SUCCESS;                                                                                        \</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">    BundleActivatorData* data = nullptr;                                                                               \</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor">    data = new BundleActivatorData{};                                                                                  \</span></div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor">        data-&gt;mng = std::shared_ptr&lt;celix::dm::DependencyManager&gt;{new celix::dm::DependencyManager{context}};          \</span></div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div><div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="preprocessor">    if (data == nullptr || data-&gt;mng == nullptr) {                                                                     \</span></div><div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="preprocessor">        status = CELIX_ENOMEM;                                                                                         \</span></div><div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="preprocessor">        if (data != nullptr) {                                                                                         \</span></div><div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="preprocessor">            delete data;                                                                                               \</span></div><div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">        }                                                                                                              \</span></div><div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor">        *userData = nullptr;                                                                                           \</span></div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="preprocessor">    } else {                                                                                                           \</span></div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="preprocessor">        *userData = data;                                                                                              \</span></div><div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div><div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="preprocessor">    return status;                                                                                                     \</span></div><div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_start(void *userData, celix_bundle_context_t *) {                            \</span></div><div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="preprocessor">    auto* data = static_cast&lt;BundleActivatorData*&gt;(userData);                                                          \</span></div><div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor">        data-&gt;activator = std::unique_ptr&lt;actType&gt;{new actType{data-&gt;mng}};                                            \</span></div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="preprocessor">        data-&gt;mng-&gt;start();                                                                                            \</span></div><div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div><div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div><div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_stop(void *userData, celix_bundle_context_t*) {                              \</span></div><div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="preprocessor">    auto* data = static_cast&lt;BundleActivatorData*&gt;(userData);                                                          \</span></div><div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div><div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="preprocessor">        data-&gt;mng-&gt;stop();                                                                                             \</span></div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="preprocessor">        data-&gt;activator = nullptr;                                                                                     \</span></div><div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="preprocessor">        data-&gt;mng = nullptr;                                                                                           \</span></div><div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div><div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div><div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div><div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_destroy(void *userData, celix_bundle_context_t*) {                           \</span></div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="preprocessor">    auto* data = static_cast&lt;BundleActivatorData*&gt;(userData);                                                          \</span></div><div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div><div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="preprocessor">        delete data;                                                                                                   \</span></div><div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div><div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div><div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="preprocessor"></span></div><div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160;</div><div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_BUNDLE_ACTIVATOR_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="celix__bundle__activator_8h_html_a8d7cd41a721060d28c6ce8d94f9f0ca9"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_destroy(void *userData, celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html"><div class="ttname"><a href="celix__bundle__context_8h.html">celix_bundle_context.h</a></div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html_a57025ac322aecc8acfac832748c780e6"><div class="ttname"><a href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx, void **userData)</div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html_ae650439680848e3e3f7fc71b9e4dd213"><div class="ttname"><a href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html_a8ac12a9b8d321ee1c1feee5bf047b666"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx)</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.map b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.map
deleted file mode 100644
index e90bcfb..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.map
+++ /dev/null
@@ -1,4 +0,0 @@
-<map id="libs/framework/include/celix_bundle_context.h" name="libs/framework/include/celix_bundle_context.h">
-<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="9,184,172,225"/>
-<area shape="rect" id="node3" href="$celix__bundle__activator_8h.html" title="libs/framework/include\l/celix_bundle_activator.h" alt="" coords="65,95,244,136"/>
-</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.md5
deleted file mode 100644
index 7ddc7ee..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-e60e73611e86a52f66970472d1fd882b
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.png b/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.png
deleted file mode 100644
index 49e7a48..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h__dep__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.map b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.map
deleted file mode 100644
index bd8270e..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="libs/framework/include/celix_bundle_context.h" name="libs/framework/include/celix_bundle_context.h">
-</map>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.md5 b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.md5
deleted file mode 100644
index bc08f1b..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-6dc4d34e9d261e5261f8cc40f8e0bcbe
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.png b/static/docs/2.2.0/html/celix__bundle__context_8h__incl.png
deleted file mode 100644
index 38c6f15..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h_source.html b/static/docs/2.2.0/html/celix__bundle__context_8h_source.html
deleted file mode 100644
index 503ef7b..0000000
--- a/static/docs/2.2.0/html/celix__bundle__context_8h_source.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_bundle_context.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_bundle_context.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__bundle__context_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;celix_service_factory.h&quot;</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;celix_array_list.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;celix_filter.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#ifndef CELIX_BUNDLE_CONTEXT_H_</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#define CELIX_BUNDLE_CONTEXT_H_</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#define OPTS_INIT {}</span></div><div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#else</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f">   40</a></span>&#160;<span class="preprocessor">#define OPTS_INIT</span></div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundleContext_registerService</a>(celix_bundle_context_t *ctx, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName, celix_properties_t *properties);</div><div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a>(celix_bundle_context_t *ctx, celix_service_factory_t *factory, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName, celix_properties_t *props);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html">   75</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__registration__options.html">celix_service_registration_options</a> {</div><div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">   83</a></span>&#160;    <span class="keywordtype">void</span> *svc <a class="code" href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">OPTS_INIT</a>;</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">   99</a></span>&#160;    celix_service_factory_t *factory <a class="code" href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">OPTS_INIT</a>;</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">  105</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName <a class="code" href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">OPTS_INIT</a>;</div><div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">  114</a></span>&#160;    celix_properties_t *properties <a class="code" href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">OPTS_INIT</a>;</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">  119</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceLanguage <a class="code" href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">OPTS_INIT</a>;</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">  128</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceVersion <a class="code" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">OPTS_INIT</a>;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a>;</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div><div class="line"><a name="l00135"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c">  135</a></span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS { .svc = NULL, \</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">    .factory = NULL, \</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">    .serviceName = NULL, \</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="preprocessor">    .properties = NULL, \</span></div><div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">    .serviceLanguage = NULL, \</span></div><div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor">    .serviceVersion = NULL }</span></div><div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__registration__options.html">celix_service_registration_options_t</a> *opts);</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> serviceId);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;</div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;</div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;</div><div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;</div><div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;</div><div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">celix_bundleContext_findService</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName);</div><div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;</div><div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;celix_array_list_t* <a class="code" href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName);</div><div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;</div><div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html">  193</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options</a> {</div><div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">  197</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName <a class="code" href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">OPTS_INIT</a>;</div><div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;</div><div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">  204</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* versionRange <a class="code" href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">OPTS_INIT</a>;</div><div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;</div><div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">  210</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* filter <a class="code" href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">OPTS_INIT</a>;</div><div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;</div><div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">  215</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceLanguage <a class="code" href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">OPTS_INIT</a>;</div><div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160;</div><div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160;</div><div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">  222</a></span>&#160;    <span class="keywordtype">bool</span> ignoreServiceLanguage <a class="code" href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">OPTS_INIT</a>;</div><div class="line"><a name="l00223"></a><span class="lineno">  223</span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a>;</div><div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160;</div><div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div><div class="line"><a name="l00229"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a">  229</a></span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_FILTER_OPTIONS {.serviceName = NULL, .versionRange = NULL, .filter = NULL, .serviceLanguage = NULL, .ignoreServiceLanguage = false}</span></div><div class="line"><a name="l00230"></a><span class="lineno">  230</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160;</div><div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160;</div><div class="line"><a name="l00240"></a><span class="lineno">  240</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> *opts);</div><div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160;</div><div class="line"><a name="l00249"></a><span class="lineno">  249</span>&#160;celix_array_list_t* <a class="code" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> *opts);</div><div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160;</div><div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160;</div><div class="line"><a name="l00264"></a><span class="lineno">  264</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a>(</div><div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        celix_bundle_context_t* ctx,</div><div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div><div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <span class="keywordtype">void</span>* callbackHandle,</div><div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keywordtype">void</span> (*<span class="keyword">set</span>)(<span class="keywordtype">void</span>* handle, <span class="keywordtype">void</span>* svc)</div><div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;);</div><div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160;</div><div class="line"><a name="l00281"></a><span class="lineno">  281</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a>(</div><div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        celix_bundle_context_t* ctx,</div><div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div><div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keywordtype">void</span>* callbackHandle,</div><div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        <span class="keywordtype">void</span> (*add)(<span class="keywordtype">void</span>* handle, <span class="keywordtype">void</span>* svc),</div><div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        <span class="keywordtype">void</span> (*<span class="keyword">remove</span>)(<span class="keywordtype">void</span>* handle, <span class="keywordtype">void</span>* svc)</div><div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;);</div><div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160;</div><div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html">  292</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a> {</div><div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">  296</a></span>&#160;    <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> filter <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div><div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160;</div><div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">  301</a></span>&#160;    <span class="keywordtype">void</span>* callbackHandle <a class="code" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">OPTS_INIT</a>;</div><div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160;</div><div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da">  309</a></span>&#160;    void (*<span class="keyword">set</span>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) OPTS_INIT;</div><div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160;</div><div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172">  315</a></span>&#160;    void (*setWithProperties)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) OPTS_INIT; <span class="comment">//highest ranking</span></div><div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160;</div><div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59">  321</a></span>&#160;    void (*setWithOwner)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) OPTS_INIT; <span class="comment">//highest ranking</span></div><div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160;</div><div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815">  329</a></span>&#160;    void (*add)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) OPTS_INIT;</div><div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160;</div><div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c">  335</a></span>&#160;    void (*addWithProperties)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) OPTS_INIT;</div><div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160;</div><div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6">  341</a></span>&#160;    void (*addWithOwner)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) OPTS_INIT;</div><div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160;</div><div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">  352</a></span>&#160;    void (*<span class="keyword">remove</span>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) OPTS_INIT;</div><div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160;</div><div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a">  358</a></span>&#160;    void (*removeWithProperties)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) OPTS_INIT;</div><div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160;</div><div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1">  364</a></span>&#160;    void (*removeWithOwner)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) OPTS_INIT;</div><div class="line"><a name="l00365"></a><span class="lineno">  365</span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a>;</div><div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160;</div><div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div><div class="line"><a name="l00371"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909">  371</a></span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_TRACKING_OPTIONS { .filter.serviceName = NULL, \</span></div><div class="line"><a name="l00372"></a><span class="lineno">  372</span>&#160;<span class="preprocessor">    .filter.versionRange = NULL, \</span></div><div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="preprocessor">    .filter.filter = NULL, \</span></div><div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="preprocessor">    .filter.serviceLanguage = NULL, \</span></div><div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="preprocessor">    .filter.ignoreServiceLanguage = false, \</span></div><div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="preprocessor">    .callbackHandle = NULL, \</span></div><div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="preprocessor">    .set = NULL, \</span></div><div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;<span class="preprocessor">    .add = NULL, \</span></div><div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;<span class="preprocessor">    .remove = NULL, \</span></div><div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="preprocessor">    .setWithProperties = NULL, \</span></div><div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="preprocessor">    .addWithProperties = NULL, \</span></div><div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;<span class="preprocessor">    .removeWithProperties = NULL, \</span></div><div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="preprocessor">    .setWithOwner = NULL, \</span></div><div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="preprocessor">    .addWithOwner = NULL, \</span></div><div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<span class="preprocessor">    .removeWithOwner = NULL}</span></div><div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160;</div><div class="line"><a name="l00396"></a><span class="lineno">  396</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__tracking__options.html">celix_service_tracking_options_t</a> *opts);</div><div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160;</div><div class="line"><a name="l00405"></a><span class="lineno">  405</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> trackerId);</div><div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160;</div><div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160;</div><div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160;</div><div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160;</div><div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160;</div><div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160;</div><div class="line"><a name="l00429"></a><span class="lineno">  429</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundleContext_useServiceWithId</a>(</div><div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        <span class="keywordtype">long</span> serviceId,</div><div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName <span class="comment">/*sanity check*/</span>,</div><div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div><div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* svc)</div><div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;);</div><div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160;</div><div class="line"><a name="l00453"></a><span class="lineno">  453</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundleContext_useService</a>(</div><div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div><div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div><div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc)</div><div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;);</div><div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160;</div><div class="line"><a name="l00475"></a><span class="lineno">  475</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a>(</div><div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div><div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div><div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc)</div><div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;);</div><div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160;</div><div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html">  485</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__use__options.html">celix_service_use_options</a> {</div><div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">  489</a></span>&#160;    <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> filter <a class="code" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a>;</div><div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160;</div><div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">  496</a></span>&#160;     <span class="keywordtype">double</span> waitTimeoutInSeconds <a class="code" href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">OPTS_INIT</a>;</div><div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160;</div><div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">  501</a></span>&#160;    <span class="keywordtype">void</span> *callbackHandle <a class="code" href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">OPTS_INIT</a>;</div><div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160;</div><div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">  510</a></span>&#160;    void (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) OPTS_INIT;</div><div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160;</div><div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867">  516</a></span>&#160;    void (*useWithProperties)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) OPTS_INIT;</div><div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160;</div><div class="line"><a name="l00522"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5">  522</a></span>&#160;    void (*useWithOwner)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) OPTS_INIT;</div><div class="line"><a name="l00523"></a><span class="lineno">  523</span>&#160;} <a class="code" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a>;</div><div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160;</div><div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div><div class="line"><a name="l00529"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865">  529</a></span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_USE_OPTIONS {.filter.serviceName = NULL, \</span></div><div class="line"><a name="l00530"></a><span class="lineno">  530</span>&#160;<span class="preprocessor">    .filter.versionRange = NULL, \</span></div><div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="preprocessor">    .filter.filter = NULL, \</span></div><div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;<span class="preprocessor">    .filter.serviceLanguage = NULL, \</span></div><div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;<span class="preprocessor">    .waitTimeoutInSeconds = 0.0F, \</span></div><div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;<span class="preprocessor">    .callbackHandle = NULL, \</span></div><div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;<span class="preprocessor">    .use = NULL, \</span></div><div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="preprocessor">    .useWithProperties = NULL, \</span></div><div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;<span class="preprocessor">    .useWithOwner = NULL}</span></div><div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160;</div><div class="line"><a name="l00554"></a><span class="lineno">  554</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a>(</div><div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        <span class="keyword">const</span> <a class="code" href="structcelix__service__use__options.html">celix_service_use_options_t</a> *opts);</div><div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160;</div><div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160;</div><div class="line"><a name="l00572"></a><span class="lineno">  572</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a>(</div><div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        <span class="keyword">const</span> <a class="code" href="structcelix__service__use__options.html">celix_service_use_options_t</a> *opts);</div><div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160;</div><div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160;</div><div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160;</div><div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160;</div><div class="line"><a name="l00586"></a><span class="lineno">  586</span>&#160;celix_array_list_t* <a class="code" href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a>(celix_bundle_context_t *ctx);</div><div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160;</div><div class="line"><a name="l00594"></a><span class="lineno">  594</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundleContext_isBundleInstalled</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bndId);</div><div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160;</div><div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160;</div><div class="line"><a name="l00606"></a><span class="lineno">  606</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundleContext_installBundle</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *bundleLoc, <span class="keywordtype">bool</span> autoStart);</div><div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160;</div><div class="line"><a name="l00616"></a><span class="lineno">  616</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundleContext_uninstallBundle</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bundleId);</div><div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160;</div><div class="line"><a name="l00626"></a><span class="lineno">  626</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundleContext_stopBundle</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bundleId);</div><div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160;</div><div class="line"><a name="l00636"></a><span class="lineno">  636</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundleContext_startBundle</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bundleId);</div><div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160;</div><div class="line"><a name="l00648"></a><span class="lineno">  648</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a>(</div><div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;        celix_bundle_context_t* ctx,</div><div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;        <span class="keywordtype">void</span>* callbackHandle,</div><div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        <span class="keywordtype">void</span> (*onStarted)(<span class="keywordtype">void</span>* handle, <span class="keyword">const</span> celix_bundle_t *bundle),</div><div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;        <span class="keywordtype">void</span> (*onStopped)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle)</div><div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;);</div><div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160;</div><div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160;</div><div class="line"><a name="l00659"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html">  659</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a> {</div><div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">  663</a></span>&#160;    <span class="keywordtype">void</span>* callbackHandle <a class="code" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">OPTS_INIT</a>;</div><div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160;</div><div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb">  671</a></span>&#160;    void (*onStarted)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle) OPTS_INIT; <span class="comment">//highest ranking</span></div><div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160;</div><div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492">  679</a></span>&#160;    void (*onStopped)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle) OPTS_INIT;</div><div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160;</div><div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    <span class="comment">//TODO callback for on installed, resolved, uninstalled ??</span></div><div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160;</div><div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">  688</a></span>&#160;    void (*onBundleEvent)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_event_t *event) OPTS_INIT;</div><div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160;</div><div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">  694</a></span>&#160;    <span class="keywordtype">bool</span> includeFrameworkBundle <a class="code" href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">OPTS_INIT</a>;</div><div class="line"><a name="l00695"></a><span class="lineno">  695</span>&#160;} <a class="code" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a>;</div><div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160;</div><div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div><div class="line"><a name="l00701"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c">  701</a></span>&#160;<span class="preprocessor">#define CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS {.callbackHandle = NULL, .onStarted = NULL, .onStopped = NULL, .onBundleEvent = NULL}</span></div><div class="line"><a name="l00702"></a><span class="lineno">  702</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160;</div><div class="line"><a name="l00713"></a><span class="lineno">  713</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a>(</div><div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;        celix_bundle_context_t* ctx,</div><div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;        <span class="keyword">const</span> <a class="code" href="structcelix__bundle__tracker__options.html">celix_bundle_tracking_options_t</a> *opts</div><div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;);</div><div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160;</div><div class="line"><a name="l00729"></a><span class="lineno">  729</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a>(</div><div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;        <span class="keywordtype">long</span> bundleId,</div><div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div><div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle)</div><div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;);</div><div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160;</div><div class="line"><a name="l00745"></a><span class="lineno">  745</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a>(</div><div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div><div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle)</div><div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;);</div><div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160;</div><div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160;</div><div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160;</div><div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;<span class="comment">//TODO add useBundleWithOptions (e.g. which state)</span></div><div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;<span class="comment">//TODO findBundles</span></div><div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160;</div><div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html">  759</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a> {</div><div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">  763</a></span>&#160;    celix_filter_t *<a class="code" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">filter</a>;</div><div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160;</div><div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">  768</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">serviceName</a>;</div><div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160;</div><div class="line"><a name="l00773"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">  773</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">serviceLanguage</a>;</div><div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160;</div><div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">  778</a></span>&#160;    <span class="keywordtype">long</span> <a class="code" href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">bundleId</a>;</div><div class="line"><a name="l00779"></a><span class="lineno">  779</span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a>;</div><div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160;</div><div class="line"><a name="l00798"></a><span class="lineno">  798</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a>(</div><div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;        celix_bundle_context_t *ctx,</div><div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName,</div><div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div><div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;        <span class="keywordtype">void</span> (*trackerAdd)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> <a class="code" href="structcelix__service__tracker__info.html">celix_service_tracker_info_t</a> *info),</div><div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;        <span class="keywordtype">void</span> (*trackerRemove)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> <a class="code" href="structcelix__service__tracker__info.html">celix_service_tracker_info_t</a> *info));</div><div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160;</div><div class="line"><a name="l00810"></a><span class="lineno">  810</span>&#160;celix_dependency_manager_t* <a class="code" href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a>(celix_bundle_context_t *ctx);</div><div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160;</div><div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160;</div><div class="line"><a name="l00816"></a><span class="lineno">  816</span>&#160;celix_bundle_t* <a class="code" href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundleContext_getBundle</a>(celix_bundle_context_t *ctx);</div><div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160;</div><div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160;</div><div class="line"><a name="l00825"></a><span class="lineno">  825</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundleContext_getProperty</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *defaultVal);</div><div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160;</div><div class="line"><a name="l00835"></a><span class="lineno">  835</span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundleContext_getPropertyAsLong</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">long</span> defaultValue);</div><div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160;</div><div class="line"><a name="l00845"></a><span class="lineno">  845</span>&#160;<span class="keywordtype">double</span> <a class="code" href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundleContext_getPropertyAsDouble</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">double</span> defaultValue);</div><div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160;</div><div class="line"><a name="l00855"></a><span class="lineno">  855</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundleContext_getPropertyAsBool</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">bool</span> defaultValue);</div><div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160;</div><div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;<span class="comment">//TODO getPropertyAs for int, uint, ulong, bool, etc</span></div><div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160;</div><div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;<span class="preprocessor">#undef OPTS_INIT</span></div><div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160;</div><div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;}</div><div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160;</div><div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;<span class="preprocessor">#endif //CELIX_BUNDLE_CONTEXT_H_</span></div><div class="ttc" id="celix__bundle__context_8h_html_ac8322b5aa4adf9dcd8c288ce72a05414"><div class="ttname"><a href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">celix_bundleContext_findService</a></div><div class="ttdeci">long celix_bundleContext_findService(celix_bundle_context_t *ctx, const char *serviceName)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a612409acf5453dbc370d93b784153d51"><div class="ttname"><a href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a></div><div class="ttdeci">long celix_bundleContext_trackService(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*set)(void *handle, void *svc))</div></div>
-<div class="ttc" id="structcelix__service__filter__options_html_a70cc8aee445c1a24782454393f12ff98"><div class="ttname"><a href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">bool ignoreServiceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:222</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a3daf88ae43bb01e104f506c3a2dc8351"><div class="ttname"><a href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a></div><div class="ttdeci">long celix_bundleContext_trackBundles(celix_bundle_context_t *ctx, void *callbackHandle, void(*onStarted)(void *handle, const celix_bundle_t *bundle), void(*onStopped)(void *handle, const celix_bundle_t *bundle))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_afde9ed40231b5c3bbba19559e68e77f6"><div class="ttname"><a href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_listBundles(celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="structcelix__service__use__options_html"><div class="ttname"><a href="structcelix__service__use__options.html">celix_service_use_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:485</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a3f7f55d1587f421f27518574a525ff63"><div class="ttname"><a href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundleContext_getBundle</a></div><div class="ttdeci">celix_bundle_t * celix_bundleContext_getBundle(celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="structcelix__service__filter__options_html"><div class="ttname"><a href="structcelix__service__filter__options.html">celix_service_filter_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:193</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a80f61dd38b9da8447cd4f931779eaf16"><div class="ttname"><a href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a></div><div class="ttdeci">long celix_bundleContext_trackServiceTrackers(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*trackerAdd)(void *handle, const celix_service_tracker_info_t *info), void(*trackerRemove)(void *handle, const celix_service_tracker_info_t *info))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_ad1512520baedecad54a7bc307e0a6c7b"><div class="ttname"><a href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a></div><div class="ttdeci">void celix_bundleContext_useServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_use_options_t *opts)</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html_ae44ee7cc15427e406a67b0396201700c"><div class="ttname"><a href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:119</div></div>
-<div class="ttc" id="structcelix__service__filter__options_html_a65bea04c378ef46d841046ffbb2f805c"><div class="ttname"><a href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *versionRange OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:204</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a8df4bfbc27c99736c0209ef130cff98f"><div class="ttname"><a href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundleContext_startBundle</a></div><div class="ttdeci">bool celix_bundleContext_startBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_ac36cdb8a06bb34f9371d7bb32953c69e"><div class="ttname"><a href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundleContext_useService</a></div><div class="ttdeci">bool celix_bundleContext_useService(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_aa121100c5f5d03c0ccdda9c87286f7db"><div class="ttname"><a href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundleContext_getProperty</a></div><div class="ttdeci">const char * celix_bundleContext_getProperty(celix_bundle_context_t *ctx, const char *key, const char *defaultVal)</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html_a94eb8e6e1af0cca435d99aa5d2457fca"><div class="ttname"><a href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_factory_t *factory OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:99</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html"><div class="ttname"><a href="structcelix__service__registration__options.html">celix_service_registration_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:75</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html_a86179f0c7a032f3309440a2cd8d91a61"><div class="ttname"><a href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceName OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:105</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a41c34f8165addcbd0d65b4a0c23345d0"><div class="ttname"><a href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_findServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_filter_options_t *opts)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a8cfbbb7e17cb4a825a525c547f72b4b0"><div class="ttname"><a href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a></div><div class="ttdeci">long celix_bundleContext_findServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_filter_options_t *opts)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_abcde0edf5b4969bdd67831cff3db0a43"><div class="ttname"><a href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a></div><div class="ttdeci">long celix_bundleContext_registerServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_registration_options_t *opts)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a098adf1e9f65deb166110008bd4314dd"><div class="ttname"><a href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundleContext_uninstallBundle</a></div><div class="ttdeci">bool celix_bundleContext_uninstallBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a43e3bfd38ef956ffe861065e698a72e4"><div class="ttname"><a href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a></div><div class="ttdeci">long celix_bundleContext_trackServices(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*add)(void *handle, void *svc), void(*remove)(void *handle, void *svc))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a27980e1631d4575cc45c6c6ba38c6f71"><div class="ttname"><a href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a></div><div class="ttdeci">long celix_bundleContext_trackServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_tracking_options_t *opts)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a41e6642ba1a739b5768911fa41e5d170"><div class="ttname"><a href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundleContext_getPropertyAsBool</a></div><div class="ttdeci">bool celix_bundleContext_getPropertyAsBool(celix_bundle_context_t *ctx, const char *key, bool defaultValue)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a6bcc1ddc92a68053a0300553baa2e35a"><div class="ttname"><a href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a></div><div class="ttdeci">struct celix_service_registration_options celix_service_registration_options_t</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html_a6e1274cc3b190b3dc05c7c145f57d407"><div class="ttname"><a href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">celix_properties_t *properties OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:114</div></div>
-<div class="ttc" id="structcelix__service__use__options_html_a31a9834b87a5c2c3ed6b8532cd85c653"><div class="ttname"><a href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:501</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_aec6e03faece0f8247de19d8c1527406d"><div class="ttname"><a href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundleContext_useServiceWithId</a></div><div class="ttdeci">bool celix_bundleContext_useServiceWithId(celix_bundle_context_t *ctx, long serviceId, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
-<div class="ttc" id="structcelix__service__filter__options_html_a9286701a4c946d1ed28afde05cd34d51"><div class="ttname"><a href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:215</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a39270507a3766afbfcc9420c7270d262"><div class="ttname"><a href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a></div><div class="ttdeci">void celix_bundleContext_useServices(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a92be7dd7985a890c4b92bcb8497e8b9f"><div class="ttname"><a href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundleContext_getPropertyAsDouble</a></div><div class="ttdeci">double celix_bundleContext_getPropertyAsDouble(celix_bundle_context_t *ctx, const char *key, double defaultValue)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a4e53ca7fd5a9c2b792ff0a8e048236d2"><div class="ttname"><a href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a></div><div class="ttdeci">struct celix_service_tracking_options celix_service_tracking_options_t</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a5bc54fd14871cc88ed887c8cea8f7b78"><div class="ttname"><a href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundleContext_registerService</a></div><div class="ttdeci">long celix_bundleContext_registerService(celix_bundle_context_t *ctx, void *svc, const char *serviceName, celix_properties_t *properties)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_aa603acb136351b4135ce6a8c0b1fda71"><div class="ttname"><a href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a></div><div class="ttdeci">long celix_bundleContext_trackBundlesWithOptions(celix_bundle_context_t *ctx, const celix_bundle_tracking_options_t *opts)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a1e8a78de5f799d303231385b51085055"><div class="ttname"><a href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a></div><div class="ttdeci">bool celix_bundleContext_useServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_use_options_t *opts)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a03a6d1c49c91c212ad7be115e1035840"><div class="ttname"><a href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a></div><div class="ttdeci">void celix_bundleContext_useBundles(celix_bundle_context_t *ctx, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a0ea27b2a81018583a464a10932cfae62"><div class="ttname"><a href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundleContext_getPropertyAsLong</a></div><div class="ttdeci">long celix_bundleContext_getPropertyAsLong(celix_bundle_context_t *ctx, const char *key, long defaultValue)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_ae6fb701de56577ab43263b5619604e86"><div class="ttname"><a href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a></div><div class="ttdeci">struct celix_bundle_tracker_options celix_bundle_tracking_options_t</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_abc6f11edf20a71cbade3668e4bc66ed6"><div class="ttname"><a href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a></div><div class="ttdeci">struct celix_service_use_options celix_service_use_options_t</div></div>
-<div class="ttc" id="structcelix__service__tracker__info_html_a5baca60295d208fe0581a564c3627f65"><div class="ttname"><a href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info::serviceLanguage</a></div><div class="ttdeci">const char * serviceLanguage</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:773</div></div>
-<div class="ttc" id="structcelix__service__use__options_html_ae24e3e35d7d92d5b41d58b53506bcca0"><div class="ttname"><a href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">double waitTimeoutInSeconds OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:496</div></div>
-<div class="ttc" id="structcelix__bundle__tracker__options_html"><div class="ttname"><a href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:659</div></div>
-<div class="ttc" id="structcelix__service__tracking__options_html"><div class="ttname"><a href="structcelix__service__tracking__options.html">celix_service_tracking_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:292</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a727ee2600c19ce2fd42b3b80b695c7f6"><div class="ttname"><a href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundleContext_installBundle</a></div><div class="ttdeci">long celix_bundleContext_installBundle(celix_bundle_context_t *ctx, const char *bundleLoc, bool autoStart)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_abb3cedf5ffa7a326cef2af64a1094635"><div class="ttname"><a href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a></div><div class="ttdeci">bool celix_bundleContext_useBundle(celix_bundle_context_t *ctx, long bundleId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_ac36566dcc477bb2c123e5124527090c1"><div class="ttname"><a href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a></div><div class="ttdeci">celix_dependency_manager_t * celix_bundleContext_getDependencyManager(celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="structcelix__service__tracker__info_html_a5f695cf6d8cd69e0c419298ded657546"><div class="ttname"><a href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">celix_service_tracker_info::serviceName</a></div><div class="ttdeci">const char * serviceName</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:768</div></div>
-<div class="ttc" id="structcelix__service__tracker__info_html"><div class="ttname"><a href="structcelix__service__tracker__info.html">celix_service_tracker_info</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:759</div></div>
-<div class="ttc" id="structcelix__service__use__options_html_addad49a12179fff8b2dbf5313d70952f"><div class="ttname"><a href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_filter_options_t filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:489</div></div>
-<div class="ttc" id="structcelix__service__tracking__options_html_a2fcaf1b7274379695cc9a4bb1c719d86"><div class="ttname"><a href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">celix_service_tracking_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:301</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html_a9c24c1179305b68840149449b1fa6d87"><div class="ttname"><a href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">void *svc OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:83</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a3b4906a9e6fb34fe3ca5118539a81fc7"><div class="ttname"><a href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a></div><div class="ttdeci">void celix_bundleContext_stopTracker(celix_bundle_context_t *ctx, long trackerId)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a54e95a32f444f0124896a4d193e3be22"><div class="ttname"><a href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a></div><div class="ttdeci">struct celix_service_filter_options celix_service_filter_options_t</div></div>
-<div class="ttc" id="structcelix__bundle__tracker__options_html_a80ebdcbb840fa97d81e1250fba2d20af"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">celix_bundle_tracker_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:663</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a1ebd82cb3d61aab769956d856293b9b9"><div class="ttname"><a href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a></div><div class="ttdeci">void celix_bundleContext_unregisterService(celix_bundle_context_t *ctx, long serviceId)</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a69f5283bcb563038d1a8e35e2a2b028b"><div class="ttname"><a href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a></div><div class="ttdeci">struct celix_service_tracker_info celix_service_tracker_info_t</div></div>
-<div class="ttc" id="structcelix__bundle__tracker__options_html_a54a11feb78bd514c95f7c9aecaa7f212"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">celix_bundle_tracker_options::OPTS_INIT</a></div><div class="ttdeci">bool includeFrameworkBundle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:694</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a96a901f0597f9d2accf073153d90344c"><div class="ttname"><a href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_findServices(celix_bundle_context_t *ctx, const char *serviceName)</div></div>
-<div class="ttc" id="structcelix__service__registration__options_html_af9b1a622c06a3053ed3917649241fc23"><div class="ttname"><a href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceVersion OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:128</div></div>
-<div class="ttc" id="structcelix__service__tracker__info_html_a6978e4b5f2fcc2d42a42f0e7ed3bb7c8"><div class="ttname"><a href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">celix_service_tracker_info::bundleId</a></div><div class="ttdeci">long bundleId</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:778</div></div>
-<div class="ttc" id="structcelix__service__tracking__options_html_a9272f1870b544b28329545b84f3425c2"><div class="ttname"><a href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">celix_service_tracking_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_filter_options_t filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:296</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_ac7151f08ded1d7571867a44abe9f3531"><div class="ttname"><a href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundleContext_isBundleInstalled</a></div><div class="ttdeci">bool celix_bundleContext_isBundleInstalled(celix_bundle_context_t *ctx, long bndId)</div></div>
-<div class="ttc" id="structcelix__service__tracker__info_html_a3cd52ce46875995a973fb6b65967d7e4"><div class="ttname"><a href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info::filter</a></div><div class="ttdeci">celix_filter_t * filter</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:763</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_ad6e1553f9507d04c7a0ad91d067d479b"><div class="ttname"><a href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundleContext_stopBundle</a></div><div class="ttdeci">bool celix_bundleContext_stopBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
-<div class="ttc" id="structcelix__service__filter__options_html_addb2e1e8fcce127512d272383e78cbd1"><div class="ttname"><a href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceName OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:197</div></div>
-<div class="ttc" id="structcelix__service__filter__options_html_ac15f30b81e60826290a29fb12da6684a"><div class="ttname"><a href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:210</div></div>
-<div class="ttc" id="celix__bundle__context_8h_html_a3caa917285feaad580b61d4c0c8430a9"><div class="ttname"><a href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a></div><div class="ttdeci">long celix_bundleContext_registerServiceFactory(celix_bundle_context_t *ctx, celix_service_factory_t *factory, const char *serviceName, celix_properties_t *props)</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.md5
deleted file mode 100644
index 9e64a5f..0000000
--- a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-7e25806b199045afd87a691b9c1347d3
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.png b/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.png
deleted file mode 100644
index 8a2a20b..0000000
--- a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__incl.map b/static/docs/2.2.0/html/celix__dm__component_8h__incl.map
deleted file mode 100644
index 26c0a6c..0000000
--- a/static/docs/2.2.0/html/celix__dm__component_8h__incl.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="libs/framework/include/celix_dm_component.h" name="libs/framework/include/celix_dm_component.h">
-<area shape="rect" id="node7" href="$celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="522,95,642,121"/>
-</map>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__incl.md5 b/static/docs/2.2.0/html/celix__dm__component_8h__incl.md5
deleted file mode 100644
index 37e5228..0000000
--- a/static/docs/2.2.0/html/celix__dm__component_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-d32416cfedd0c6aff65050fbde4eaea6
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__incl.png b/static/docs/2.2.0/html/celix__dm__component_8h__incl.png
deleted file mode 100644
index b191d9c..0000000
--- a/static/docs/2.2.0/html/celix__dm__component_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h_source.html b/static/docs/2.2.0/html/celix__dm__component_8h_source.html
deleted file mode 100644
index 2fcba6f..0000000
--- a/static/docs/2.2.0/html/celix__dm__component_8h_source.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_dm_component.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_dm_component.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__dm__component_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_COMPONENT_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_COMPONENT_H_</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;celix_errno.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;properties.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;array_list.h&quot;</span></div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__dm__info_8h.html">celix_dm_info.h</a>&quot;</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">   35</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a> {</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">   36</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">DM_CMP_STATE_INACTIVE</a> = 1,</div><div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">   37</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">DM_CMP_STATE_WAITING_FOR_REQUIRED</a> = 2,</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">   38</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED</a> = 3,</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">   39</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">DM_CMP_STATE_TRACKING_OPTIONAL</a> = 4,</div><div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;} <a class="code" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a>;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf">   42</a></span>&#160;<span class="preprocessor">#define CELIX_DM_COMPONENT_MAX_ID_LENGTH 64</span></div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00">   43</a></span>&#160;<span class="preprocessor">#define CELIX_DM_COMPONENT_MAX_NAME_LENGTH 128</span></div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">   45</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)(<span class="keywordtype">void</span> *userData);</div><div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;celix_dm_component_t* <a class="code" href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dmComponent_create</a>(celix_bundle_context_t *context, <span class="keyword">const</span> <span class="keywordtype">char</span>* name);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dmComponent_destroy</a>(celix_dm_component_t *cmp);</div><div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;</div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dmComponent_setCLanguageProperty</a>(celix_dm_component_t *component, <span class="keywordtype">bool</span> setCLangProp);</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dmComponent_addInterface</a>(celix_dm_component_t *component, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceVersion, <span class="keyword">const</span> <span class="keywordtype">void</span>* service, celix_properties_t *properties);</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dmComponent_removeInterface</a>(celix_dm_component_t *component, <span class="keyword">const</span> <span class="keywordtype">void</span>* service);</div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dmComponent_setImplementation</a>(celix_dm_component_t *component, <span class="keywordtype">void</span>* implementation);</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dmComponent_getInterfaces</a>(celix_dm_component_t *component, celix_array_list_t **servicesNames);</div><div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160;</div><div class="line"><a name="l00094"></a><span class="lineno">   94</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dmComponent_addServiceDependency</a>(celix_dm_component_t *component, celix_dm_service_dependency_t *dep);</div><div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160;</div><div class="line"><a name="l00099"></a><span class="lineno">   99</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a>(celix_dm_component_t *component, celix_dm_service_dependency_t *dependency);</div><div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160;</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;<a class="code" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a> <a class="code" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a>(celix_dm_component_t *cmp);</div><div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160;</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;<span class="keywordtype">void</span> * <a class="code" href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a>(celix_dm_component_t *cmp);</div><div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160;</div><div class="line"><a name="l00114"></a><span class="lineno">  114</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dmComponent_getName</a>(celix_dm_component_t *cmp);</div><div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;</div><div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;celix_bundle_context_t* <a class="code" href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dmComponent_getBundleContext</a>(celix_dm_component_t *component);</div><div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;</div><div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a>(celix_dm_component_t *component, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> init, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> start, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> stop, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> deinit);</div><div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;</div><div class="line"><a name="l00130"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452">  130</a></span>&#160;<span class="preprocessor">#define CELIX_DMCOMPONENT_SETCALLBACKS(dmCmp, type, init, start, stop, deinit) \</span></div><div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="preprocessor">    do {  \</span></div><div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">        int (*tmp_init)(type)   = (init); \</span></div><div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">        int (*tmp_start)(type)  = (start); \</span></div><div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">        int (*tmp_stop)(type)   = (stop); \</span></div><div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">        int (*tmp_deinit)(type) = (deinit); \</span></div><div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">        celix_dmComponent_setCallbacks((dmCmp), (celix_dm_cmp_lifecycle_fpt)tmp_init, (celix_dm_cmp_lifecycle_fpt)tmp_start, (celix_dm_cmp_lifecycle_fpt)tmp_stop, (celix_dm_cmp_lifecycle_fpt)tmp_deinit); \</span></div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">    } while(0)</span></div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dmComponent_getComponentInfo</a>(celix_dm_component_t *component, <a class="code" href="structcelix__dm__component__info__struct.html">dm_component_info_pt</a> *info);</div><div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dmComponent_isActive</a>(celix_dm_component_t *component);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00150"></a><span class="lineno">  150</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dmComponent_destroyComponentInfo</a>(<a class="code" href="structcelix__dm__component__info__struct.html">dm_component_info_pt</a> info);</div><div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;}</div><div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;</div><div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* COMPONENT_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:38</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a7bbf1a0da294be7ba9ae8272f1b938d7"><div class="ttname"><a href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dmComponent_isActive</a></div><div class="ttdeci">bool celix_dmComponent_isActive(celix_dm_component_t *component)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ab8bd7a13007bda2619c1764886eabeab"><div class="ttname"><a href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dmComponent_setCLanguageProperty</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCLanguageProperty(celix_dm_component_t *component, bool setCLangProp)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a56a8c5019a43eb96d62fd9e98cb56ba8"><div class="ttname"><a href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dmComponent_destroy</a></div><div class="ttdeci">void celix_dmComponent_destroy(celix_dm_component_t *cmp)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_af98630b8f8980c906d5aefc5f8a82c99"><div class="ttname"><a href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a></div><div class="ttdeci">celix_dm_component_state_t celix_dmComponent_currentState(celix_dm_component_t *cmp)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a017e996f6b1db5e902bf3a9cc043634f"><div class="ttname"><a href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCallbacks(celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ad7d4a85042adba432bd8d398d9c106b8"><div class="ttname"><a href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dmComponent_addServiceDependency</a></div><div class="ttdeci">celix_status_t celix_dmComponent_addServiceDependency(celix_dm_component_t *component, celix_dm_service_dependency_t *dep)</div></div>
-<div class="ttc" id="celix__dm__info_8h_html"><div class="ttname"><a href="celix__dm__info_8h.html">celix_dm_info.h</a></div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a5647f75ea3a3c3755940ee42f51320a8"><div class="ttname"><a href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a></div><div class="ttdeci">void * celix_dmComponent_getImplementation(celix_dm_component_t *cmp)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_adf75af7d75d2c1f7e53d78f23f97d40c"><div class="ttname"><a href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dmComponent_create</a></div><div class="ttdeci">celix_dm_component_t * celix_dmComponent_create(celix_bundle_context_t *context, const char *name)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a837dbb925f543da453bd88375e26537e"><div class="ttname"><a href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a></div><div class="ttdeci">enum celix_dm_component_state_enum celix_dm_component_state_t</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a9c73a72049f39d42d66b6d9c60d185dc"><div class="ttname"><a href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a></div><div class="ttdeci">int(* celix_dm_cmp_lifecycle_fpt)(void *userData)</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:45</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a45a01df6ed75d8530563d52f58a0b165"><div class="ttname"><a href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dmComponent_setImplementation</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setImplementation(celix_dm_component_t *component, void *implementation)</div></div>
-<div class="ttc" id="structcelix__dm__component__info__struct_html"><div class="ttname"><a href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:52</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">DM_CMP_STATE_WAITING_FOR_REQUIRED</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:37</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ae0312e00f51f85d8e48b18020964e21f"><div class="ttname"><a href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dmComponent_getInterfaces</a></div><div class="ttdeci">celix_status_t celix_dmComponent_getInterfaces(celix_dm_component_t *component, celix_array_list_t **servicesNames)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a0ce2c610cbe3a329ea6561eb5cda0d8d"><div class="ttname"><a href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a></div><div class="ttdeci">celix_status_t celix_dmComponent_removeServiceDependency(celix_dm_component_t *component, celix_dm_service_dependency_t *dependency)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a3e4a6e8e87cc8d3b3655eaaa06ad261e"><div class="ttname"><a href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dmComponent_removeInterface</a></div><div class="ttdeci">celix_status_t celix_dmComponent_removeInterface(celix_dm_component_t *component, const void *service)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a></div><div class="ttdeci">celix_dm_component_state_enum</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:35</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a99be995e9e94514fc4f6782dd48456ba"><div class="ttname"><a href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dmComponent_getBundleContext</a></div><div class="ttdeci">celix_bundle_context_t * celix_dmComponent_getBundleContext(celix_dm_component_t *component)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a30de51befa422dc65ac89ae3d9b8319f"><div class="ttname"><a href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dmComponent_getName</a></div><div class="ttdeci">const char * celix_dmComponent_getName(celix_dm_component_t *cmp)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a3345d3bfa11070069d745131668d02ae"><div class="ttname"><a href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dmComponent_getComponentInfo</a></div><div class="ttdeci">celix_status_t celix_dmComponent_getComponentInfo(celix_dm_component_t *component, dm_component_info_pt *info)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">DM_CMP_STATE_TRACKING_OPTIONAL</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:39</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">DM_CMP_STATE_INACTIVE</a></div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:36</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_aafd2f2eff931784f70eb2a37e943446a"><div class="ttname"><a href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dmComponent_addInterface</a></div><div class="ttdeci">celix_status_t celix_dmComponent_addInterface(celix_dm_component_t *component, const char *serviceName, const char *serviceVersion, const void *service, celix_properties_t *properties)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_af62df6623e978a1cc62b3ca8ab5863c3"><div class="ttname"><a href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dmComponent_destroyComponentInfo</a></div><div class="ttdeci">void celix_dmComponent_destroyComponentInfo(dm_component_info_pt info)</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.map b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.map
deleted file mode 100644
index b5aca6f..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.map
+++ /dev/null
@@ -1,5 +0,0 @@
-<map id="libs/framework/include/celix_dm_info.h" name="libs/framework/include/celix_dm_info.h">
-<area shape="rect" id="node2" href="$celix__dm__component_8h.html" title="libs/framework/include\l/celix_dm_component.h" alt="" coords="5,95,180,136"/>
-<area shape="rect" id="node4" href="$celix__dm__service__dependency_8h.html" title="libs/framework/include\l/celix_dm_service_dependency.h" alt="" coords="205,95,434,136"/>
-<area shape="rect" id="node3" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,184,174,225"/>
-</map>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.md5
deleted file mode 100644
index 2c35076..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-3da1f0e45c57899d1bdd8a2ebdb12121
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.png b/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.png
deleted file mode 100644
index 7441891..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h__dep__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__incl.map b/static/docs/2.2.0/html/celix__dm__info_8h__incl.map
deleted file mode 100644
index 51b9c16..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h__incl.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="libs/framework/include/celix_dm_info.h" name="libs/framework/include/celix_dm_info.h">
-</map>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__incl.md5 b/static/docs/2.2.0/html/celix__dm__info_8h__incl.md5
deleted file mode 100644
index c851fa6..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-bc8b6b691e51d889f40f318f0f6de927
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h__incl.png b/static/docs/2.2.0/html/celix__dm__info_8h__incl.png
deleted file mode 100644
index 79c3901..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h_source.html b/static/docs/2.2.0/html/celix__dm__info_8h_source.html
deleted file mode 100644
index 1a7ab05..0000000
--- a/static/docs/2.2.0/html/celix__dm__info_8h_source.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_dm_info.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_dm_info.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__dm__info_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_DM_INFO_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_DM_INFO_H_</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;celix_array_list.h&quot;</span></div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="structcelix__dm__interface__info__struct.html">   34</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">   35</a></span>&#160;    <span class="keywordtype">char</span>* <a class="code" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">name</a>;</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">   36</a></span>&#160;    celix_properties_t *<a class="code" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">properties</a>;</div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;};</div><div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">   38</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a>;  <span class="comment">//deprecated</span></div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0">   39</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> <a class="code" href="structcelix__dm__interface__info__struct.html">dm_interface_info_t</a>;  <span class="comment">//deprecated</span></div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6">   40</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> <a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_t</a>;</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html">   42</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> {</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">   43</a></span>&#160;    <span class="keywordtype">char</span> *<a class="code" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">filter</a>;</div><div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">   44</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">available</a>;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">   45</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">required</a>;</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">   46</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">count</a>;</div><div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;};</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">   48</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a>;  <span class="comment">//deprecated</span></div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">   49</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> <a class="code" href="structcelix__dm__service__dependency__info__struct.html">dm_service_dependency_info_t</a>;  <span class="comment">//deprecated</span></div><div class="line"><a name="l00050"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4">   50</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> <a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_t</a>;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html">   52</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> {</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5">   53</a></span>&#160;    <span class="keywordtype">char</span> <span class="keywordtype">id</span>[64];</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">   54</a></span>&#160;    <span class="keywordtype">char</span> <a class="code" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">name</a>[128];</div><div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">   55</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">active</a>;</div><div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">   56</a></span>&#160;    <span class="keywordtype">char</span> * <a class="code" href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">state</a>;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">   57</a></span>&#160;    celix_array_list_t *<a class="code" href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">interfaces</a>;   <span class="comment">// type dm_interface_info_pt</span></div><div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">   58</a></span>&#160;    celix_array_list_t *<a class="code" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">dependency_list</a>;  <span class="comment">// type dm_service_dependency_info_pt</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;};</div><div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">   60</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a>; <span class="comment">//deprecated</span></div><div class="line"><a name="l00061"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7">   61</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> <a class="code" href="structcelix__dm__component__info__struct.html">dm_component_info_t</a>; <span class="comment">//deprecated</span></div><div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16">   62</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> <a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_t</a>;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;</div><div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structcelix__dm__dependency__manager__info__struct.html">   64</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> {</div><div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">   65</a></span>&#160;    <span class="keywordtype">long</span> <a class="code" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">bndId</a>;</div><div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">   66</a></span>&#160;    celix_array_list_t *<a class="code" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">components</a>;      <span class="comment">// type dm_component_info</span></div><div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div><div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">   68</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a>; <span class="comment">//deprecated</span></div><div class="line"><a name="l00069"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02">   69</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> <a class="code" href="structcelix__dm__dependency__manager__info__struct.html">dm_dependency_manager_info_t</a>; <span class="comment">//deprecated</span></div><div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64">   70</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> <a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dependency_manager_info_t</a>;</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160;</div><div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;}</div><div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#endif //CELIX_DM_INFO_H_</span></div><div class="ttc" id="structcelix__dm__interface__info__struct_html_ae2306753d7867ac9dc13d0d1b00f60be"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">celix_dm_interface_info_struct::name</a></div><div class="ttdeci">char * name</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:35</div></div>
-<div class="ttc" id="structcelix__dm__interface__info__struct_html"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:34</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:42</div></div>
-<div class="ttc" id="structcelix__dm__interface__info__struct_html_a6fb90a86fdaa6aefde5e598f5ca85e2c"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct::properties</a></div><div class="ttdeci">celix_properties_t * properties</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:36</div></div>
-<div class="ttc" id="structcelix__dm__component__info__struct_html_a0c64e56c05452d29efc60ac8b75f7163"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">celix_dm_component_info_struct::state</a></div><div class="ttdeci">char * state</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:56</div></div>
-<div class="ttc" id="structcelix__dm__component__info__struct_html_abbbe72fb049ad5ebb5941421929ae51a"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">celix_dm_component_info_struct::interfaces</a></div><div class="ttdeci">celix_array_list_t * interfaces</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:57</div></div>
-<div class="ttc" id="structcelix__dm__component__info__struct_html_a293333dd64e557ab4b3d80c44d6d2499"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct::active</a></div><div class="ttdeci">bool active</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:55</div></div>
-<div class="ttc" id="structcelix__dm__dependency__manager__info__struct_html_a3d4be4557e6b124bd6b2c586fddfb75b"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct::components</a></div><div class="ttdeci">celix_array_list_t * components</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:66</div></div>
-<div class="ttc" id="structcelix__dm__component__info__struct_html_abb385ead04139565ed13ed34841d1bda"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct::dependency_list</a></div><div class="ttdeci">celix_array_list_t * dependency_list</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:58</div></div>
-<div class="ttc" id="structcelix__dm__component__info__struct_html"><div class="ttname"><a href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:52</div></div>
-<div class="ttc" id="celix__dm__info_8h_html_a230d51a712bc30bd2b52126e17f63738"><div class="ttname"><a href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a></div><div class="ttdeci">struct celix_dm_dependency_manager_info_struct * dm_dependency_manager_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:68</div></div>
-<div class="ttc" id="structcelix__dm__dependency__manager__info__struct_html_ac51721859e70f844e4c23873aec85dfb"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct::bndId</a></div><div class="ttdeci">long bndId</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:65</div></div>
-<div class="ttc" id="structcelix__dm__dependency__manager__info__struct_html"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:64</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_ac06a272ddf7c02e335be784082ba5e9f"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct::filter</a></div><div class="ttdeci">char * filter</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:43</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_ad9284f87c8033a14e5ba5de8118b7f09"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">celix_dm_service_dependency_info_struct::count</a></div><div class="ttdeci">size_t count</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:46</div></div>
-<div class="ttc" id="celix__dm__info_8h_html_a0a06988849c18fd4848452086f36ed6e"><div class="ttname"><a href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a></div><div class="ttdeci">struct celix_dm_service_dependency_info_struct * dm_service_dependency_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:48</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_a77659b20ca3bcc2b9282f4644bdcbe66"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">celix_dm_service_dependency_info_struct::available</a></div><div class="ttdeci">bool available</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:44</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html_a8ad066c5fa5d75e9fb82add72cbfc705"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">celix_dm_service_dependency_info_struct::required</a></div><div class="ttdeci">bool required</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:45</div></div>
-<div class="ttc" id="celix__dm__info_8h_html_a4325313bb7b98b6eded2212a6edd065a"><div class="ttname"><a href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a></div><div class="ttdeci">struct celix_dm_component_info_struct * dm_component_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:60</div></div>
-<div class="ttc" id="celix__dm__info_8h_html_abb40885e5ab16c4701927d7095194ee2"><div class="ttname"><a href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a></div><div class="ttdeci">struct celix_dm_interface_info_struct * dm_interface_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:38</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.map b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.map
deleted file mode 100644
index 3490ed3..0000000
--- a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="libs/framework/include/celix_dm_service_dependency.h" name="libs/framework/include/celix_dm_service_dependency.h">
-<area shape="rect" id="node5" href="$celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="404,95,524,121"/>
-</map>
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.md5 b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.md5
deleted file mode 100644
index cd4e16b..0000000
--- a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-e54ca2eb2af8cc6db5cc140b413fae0c
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.png b/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.png
deleted file mode 100644
index dd8e5ef..0000000
--- a/static/docs/2.2.0/html/celix__dm__service__dependency_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h_source.html b/static/docs/2.2.0/html/celix__dm__service__dependency_8h_source.html
deleted file mode 100644
index a11221d..0000000
--- a/static/docs/2.2.0/html/celix__dm__service__dependency_8h_source.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_dm_service_dependency.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_dm_service_dependency.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__dm__service__dependency_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_DM_SERVICE_DEPENDENCY_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_DM_SERVICE_DEPENDENCY_H_</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;celix_errno.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_threads.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__dm__info_8h.html">celix_dm_info.h</a>&quot;</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;</div><div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">   34</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a> {</div><div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">   35</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</a>,</div><div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">   36</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</a></div><div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;} <a class="code" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a>;</div><div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;</div><div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">   39</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* service);</div><div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">   40</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* oldService, <span class="keywordtype">void</span>* newService);</div><div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;</div><div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">   42</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* service, <span class="keyword">const</span> celix_properties_t *props);</div><div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">   43</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* oldService, <span class="keywordtype">void</span>* newService, <span class="keyword">const</span> celix_properties_t *newProps);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html">   45</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a> {</div><div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b">   46</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <span class="keyword">set</span>;</div><div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">   47</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">add</a>;</div><div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">   48</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <span class="keyword">remove</span>;</div><div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">   49</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">swap</a>;</div><div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">   51</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">setWithProps</a>;</div><div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">   52</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">addWithProps</a>;</div><div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">   53</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">removeWithProps</a>;</div><div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">   54</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">swapWithProps</a>;</div><div class="line"><a name="l00055"></a><span class="lineno">   55</span>&#160;} <a class="code" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a>;</div><div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160;</div><div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7">   57</a></span>&#160;<span class="preprocessor">#define CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS { .set = NULL, \</span></div><div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160;<span class="preprocessor">    .add = NULL, \</span></div><div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">    .remove = NULL, \</span></div><div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">    .swap = NULL, \</span></div><div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">    .setWithProps = NULL, \</span></div><div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">    .addWithProps = NULL, \</span></div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">    .removeWithProps = NULL, \</span></div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">    .swapWithProps = NULL }</span></div><div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160;</div><div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;celix_dm_service_dependency_t* <a class="code" href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dmServiceDependency_create</a>(<span class="keywordtype">void</span>);</div><div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160;</div><div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dmServiceDependency_destroy</a>(celix_dm_service_dependency_t *dep);</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dmServiceDependency_setRequired</a>(celix_dm_service_dependency_t *dependency, <span class="keywordtype">bool</span> required);</div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;</div><div class="line"><a name="l00087"></a><span class="lineno">   87</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a>(celix_dm_service_dependency_t *dependency, <span class="keywordtype">bool</span> addCLangFilter);</div><div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160;</div><div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160;</div><div class="line"><a name="l00103"></a><span class="lineno">  103</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a>(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy);</div><div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160;</div><div class="line"><a name="l00108"></a><span class="lineno">  108</span>&#160;celix_dm_service_dependency_strategy_t <a class="code" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a>(celix_dm_service_dependency_t *dependency);</div><div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160;</div><div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a>(celix_dm_service_dependency_t *dependency, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceVersionRange, <span class="keyword">const</span> <span class="keywordtype">char</span>* filter);</div><div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;</div><div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dmServiceDependency_getFilter</a>(celix_dm_service_dependency_t *dependency);</div><div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;</div><div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dmServiceDependency_setCallback</a>(celix_dm_service_dependency_t *dependency, <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <span class="keyword">set</span>);</div><div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;</div><div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a>(celix_dm_service_dependency_t *dependency, <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <span class="keyword">set</span>);</div><div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;</div><div class="line"><a name="l00145"></a><span class="lineno">  145</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a>(celix_dm_service_dependency_t *dependency, <span class="keyword">const</span> <a class="code" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options_t</a> *opts);</div><div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160;</div><div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a>(celix_dm_service_dependency_t *dependency, <span class="keywordtype">void</span>* handle);</div><div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;</div><div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<a class="code" href="structcelix__dm__service__dependency__info__struct.html">dm_service_dependency_info_t</a>* <a class="code" href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dmServiceDependency_createInfo</a>(celix_dm_service_dependency_t* dep);</div><div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;</div><div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dmServiceDependency_destroyInfo</a>(celix_dm_service_dependency_t *dep, <a class="code" href="structcelix__dm__service__dependency__info__struct.html">dm_service_dependency_info_t</a> *info);</div><div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;</div><div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;}</div><div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;</div><div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_DM_SERVICE_DEPENDENCY_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="celix__dm__service__dependency_8h_html_a3aab7f5d65c74eb819047e5ec1f4c05f"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a></div><div class="ttdeci">int(* celix_dm_service_update_fp)(void *handle, void *service)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:39</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a8a77266cc94a0f019b29d75a8e54995d"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a></div><div class="ttdeci">int(* celix_dm_service_swap_fp)(void *handle, void *oldService, void *newService)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:40</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_ac282334d66c3cfc4fda1b67245172979"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dmServiceDependency_destroy</a></div><div class="ttdeci">void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a38a2114a58286eebc673a8dc5f314e43"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a></div><div class="ttdeci">enum celix_dm_service_dependency_strategy_enum celix_dm_service_dependency_strategy_t</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a9aec79471c46aecc7412523fe839e549"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setAddCLanguageFilter(celix_dm_service_dependency_t *dependency, bool addCLangFilter)</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__info__struct_html"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:42</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_aebe0669933d37f9fd1c3fdc873127d78"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void *handle)</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a9663db4ef079c6300f95dadfe2c03813"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">celix_dm_service_dependency_callback_options::add</a></div><div class="ttdeci">celix_dm_service_update_fp add</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:47</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:35</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a2602a6526ef6cde42d606c9ed958cec7"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)</div></div>
-<div class="ttc" id="celix__dm__info_8h_html"><div class="ttname"><a href="celix__dm__info_8h.html">celix_dm_info.h</a></div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a6b4b49e1cbd6865c5dc14e94086f629f"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a></div><div class="ttdeci">int(* celix_dm_service_swap_with_props_fp)(void *handle, void *oldService, void *newService, const celix_properties_t *newProps)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:43</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88c"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a></div><div class="ttdeci">celix_dm_service_dependency_strategy_enum</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:34</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a9d833904b765bee7073ec41828ea7d2e"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a9bdfec7b27301bd71dd4f45fcdd11568"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set)</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a35b874e6fa5a6c3af03f09e6492e8b48"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">celix_dm_service_dependency_callback_options::swap</a></div><div class="ttdeci">celix_dm_service_swap_fp swap</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:49</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:36</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a54ee61c8ab040dc87de22588013316fd"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">celix_dm_service_dependency_callback_options::removeWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp removeWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:53</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a0c33bcf502f8683bce3cf382c4bdc76a"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dmServiceDependency_setRequired</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_acb96da27c0087a05d885b0f55756de8a"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dmServiceDependency_destroyInfo</a></div><div class="ttdeci">void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a588b147bec75a501fac3b35076fc98a3"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dmServiceDependency_create</a></div><div class="ttdeci">celix_dm_service_dependency_t * celix_dmServiceDependency_create(void)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a8365396c6363ad98b66725243f97f8ea"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a></div><div class="ttdeci">celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a31898ef1ad5f9695dc85a24202020ebe"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a487a41d56ea2bf1aa51cd7f7e83ff844"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dmServiceDependency_getFilter</a></div><div class="ttdeci">const char * celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency)</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a1a731a456c8e617acfa4d81a6357959c"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dmServiceDependency_setCallback</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set)</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a1e0bfcf2034cd6d69d954256d101598d"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">celix_dm_service_dependency_callback_options::swapWithProps</a></div><div class="ttdeci">celix_dm_service_swap_with_props_fp swapWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:54</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a286bb094f7e4b4a9066e9b235aa8ade9"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">celix_dm_service_dependency_callback_options::setWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp setWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:51</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a5dd45f27aabacee9bce3ac0b3122b661"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a></div><div class="ttdeci">struct celix_dm_service_dependency_callback_options celix_dm_service_dependency_callback_options_t</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html_a5cf7a8e9026d08803798c70cb6a30330"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">celix_dm_service_dependency_callback_options::addWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp addWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:52</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_a0b84d9164563664da40491151f7d7131"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dmServiceDependency_createInfo</a></div><div class="ttdeci">dm_service_dependency_info_t * celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t *dep)</div></div>
-<div class="ttc" id="structcelix__dm__service__dependency__callback__options_html"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:45</div></div>
-<div class="ttc" id="celix__dm__service__dependency_8h_html_afb8ee50fcfc77f274578d85a70bb2b94"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a></div><div class="ttdeci">int(* celix_dm_service_update_with_props_fp)(void *handle, void *service, const celix_properties_t *props)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:42</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.md5 b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.md5
deleted file mode 100644
index 0e7094a..0000000
--- a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-2bd3a4a884e8210ad5aadcf83d82c464
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.png b/static/docs/2.2.0/html/celix__framework_8h__dep__incl.png
deleted file mode 100644
index a708808..0000000
--- a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__framework_8h__incl.map b/static/docs/2.2.0/html/celix__framework_8h__incl.map
deleted file mode 100644
index ab11cce..0000000
--- a/static/docs/2.2.0/html/celix__framework_8h__incl.map
+++ /dev/null
@@ -1,2 +0,0 @@
-<map id="libs/framework/include/celix_framework.h" name="libs/framework/include/celix_framework.h">
-</map>
diff --git a/static/docs/2.2.0/html/celix__framework_8h__incl.md5 b/static/docs/2.2.0/html/celix__framework_8h__incl.md5
deleted file mode 100644
index bdbb839..0000000
--- a/static/docs/2.2.0/html/celix__framework_8h__incl.md5
+++ /dev/null
@@ -1 +0,0 @@
-f54583c4b22ac2cb4b459d9a083699ef
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/celix__framework_8h__incl.png b/static/docs/2.2.0/html/celix__framework_8h__incl.png
deleted file mode 100644
index 5362e46..0000000
--- a/static/docs/2.2.0/html/celix__framework_8h__incl.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__framework_8h_source.html b/static/docs/2.2.0/html/celix__framework_8h_source.html
deleted file mode 100644
index c5012c7..0000000
--- a/static/docs/2.2.0/html/celix__framework_8h_source.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: libs/framework/include/celix_framework.h Source File</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div id="nav-path" class="navpath">
-  <ul>
-<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
-</div>
-</div><!-- top -->
-<div class="header">
-  <div class="headertitle">
-<div class="title">celix_framework.h</div>  </div>
-</div><!--header-->
-<div class="contents">
-<a href="celix__framework_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_FRAMEWORK_H_</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_FRAMEWORK_H_</span></div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;</div><div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework_getUUID</a>(<span class="keyword">const</span> celix_framework_t *fw);</div><div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;</div><div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;celix_bundle_context_t* <a class="code" href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework_getFrameworkContext</a>(<span class="keyword">const</span> celix_framework_t *fw);</div><div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160;</div><div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160;celix_bundle_t* <a class="code" href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">celix_framework_getFrameworkBundle</a>(<span class="keyword">const</span> celix_framework_t *fw);</div><div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160;</div><div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework_useBundles</a>(celix_framework_t *fw, <span class="keywordtype">bool</span> includeFrameworkBundle, <span class="keywordtype">void</span> *callbackHandle, <span class="keywordtype">void</span>(*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bnd));</div><div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;</div><div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework_useBundle</a>(celix_framework_t *fw, <span class="keywordtype">bool</span> onlyActive, <span class="keywordtype">long</span> bndId, <span class="keywordtype">void</span> *callbackHandle, <span class="keywordtype">void</span>(*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bnd));</div><div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160;</div><div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160;</div><div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160;</div><div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;}</div><div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#endif</span></div><div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160;</div><div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_FRAMEWORK_H_ */</span><span class="preprocessor"></span></div><div class="ttc" id="celix__framework_8h_html_ae980ec9c8f83f8a3e65dc7da9d794f18"><div class="ttname"><a href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">celix_framework_getFrameworkBundle</a></div><div class="ttdeci">celix_bundle_t * celix_framework_getFrameworkBundle(const celix_framework_t *fw)</div></div>
-<div class="ttc" id="celix__framework_8h_html_a671ba53e13abea3d4eb328a66b62802f"><div class="ttname"><a href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework_getUUID</a></div><div class="ttdeci">const char * celix_framework_getUUID(const celix_framework_t *fw)</div></div>
-<div class="ttc" id="celix__framework_8h_html_a192ba45dd2a7175fd4d19c70da59f9ab"><div class="ttname"><a href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework_useBundles</a></div><div class="ttdeci">void celix_framework_useBundles(celix_framework_t *fw, bool includeFrameworkBundle, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</div></div>
-<div class="ttc" id="celix__framework_8h_html_ab158bb807ea2171c5d20076cb457c8d1"><div class="ttname"><a href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework_useBundle</a></div><div class="ttdeci">bool celix_framework_useBundle(celix_framework_t *fw, bool onlyActive, long bndId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</div></div>
-<div class="ttc" id="celix__framework_8h_html_aa2e913753f841b3b0b22c196b39d03b1"><div class="ttname"><a href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework_getFrameworkContext</a></div><div class="ttdeci">celix_bundle_context_t * celix_framework_getFrameworkContext(const celix_framework_t *fw)</div></div>
-</div><!-- fragment --></div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/classes.html b/static/docs/2.2.0/html/classes.html
deleted file mode 100644
index 91fab51..0000000
--- a/static/docs/2.2.0/html/classes.html
+++ /dev/null
@@ -1,107 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: Class Index</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li class="current"><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
-  <div class="headertitle">
-<div class="title">Class Index</div>  </div>
-</div><!--header-->
-<div class="contents">
-<div class="qindex"><a class="qindex" href="#letter_C">C</a></div>
-<table class="classindex">
-<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>&#160;&#160;&#160;</td></tr>
-<tr><td valign="top"><a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>&#160;&#160;&#160;</td><td valign="top"><a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>&#160;&#160;&#160;</td><td></td></tr>
-<tr><td></td><td></td><td></td><td></td><td></td></tr>
-</table>
-<div class="qindex"><a class="qindex" href="#letter_C">C</a></div>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/globals_enum.html b/static/docs/2.2.0/html/globals_enum.html
deleted file mode 100644
index d69075e..0000000
--- a/static/docs/2.2.0/html/globals_enum.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: File Members</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li class="current"><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Macros</span></a></li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="contents">
-&#160;<ul>
-<li>celix_dm_component_state_enum
-: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component.h</a>
-</li>
-<li>celix_dm_service_dependency_strategy_enum
-: <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency.h</a>
-</li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/graph_legend.html b/static/docs/2.2.0/html/graph_legend.html
deleted file mode 100644
index 15b4b1b..0000000
--- a/static/docs/2.2.0/html/graph_legend.html
+++ /dev/null
@@ -1,120 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
-<title>Celix: Graph Legend</title>
-<link href="tabs.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="jquery.js"></script>
-<script type="text/javascript" src="dynsections.js"></script>
-<link href="search/search.css" rel="stylesheet" type="text/css"/>
-<script type="text/javascript" src="search/searchdata.js"></script>
-<script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
-<link href="doxygen.css" rel="stylesheet" type="text/css" />
-</head>
-<body>
-<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
-<div id="titlearea">
-<table cellspacing="0" cellpadding="0">
- <tbody>
- <tr style="height: 56px;">
-  <td id="projectalign" style="padding-left: 0.5em;">
-   <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
-   </div>
-   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
-  </td>
- </tr>
- </tbody>
-</table>
-</div>
-<!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
-<script type="text/javascript">
-var searchBox = new SearchBox("searchBox", "search",false,'Search');
-</script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-</div><!-- top -->
-<!-- window showing the filter options -->
-<div id="MSearchSelectWindow"
-     onmouseover="return searchBox.OnSearchSelectShow()"
-     onmouseout="return searchBox.OnSearchSelectHide()"
-     onkeydown="return searchBox.OnSearchSelectKey(event)">
-</div>
-
-<!-- iframe showing the search results (closed by default) -->
-<div id="MSearchResultsWindow">
-<iframe src="javascript:void(0)" frameborder="0" 
-        name="MSearchResults" id="MSearchResults">
-</iframe>
-</div>
-
-<div class="header">
-  <div class="headertitle">
-<div class="title">Graph Legend</div>  </div>
-</div><!--header-->
-<div class="contents">
-<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
-<p>Consider the following example: </p><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;/*! Invisible class because of truncation */</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;class Invisible { };</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;</div><div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;/*! Truncated class, inheritance relation is hidden */</div><div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;class Truncated : public Invisible { };</div><div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;</div><div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;/* Class not documented with doxygen comments */</div><div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;class Undocumented { };</div><div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;</div><div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;/*! Class that is inherited using public inheritance */</div><div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;class PublicBase : public Truncated { };</div><div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;</div><div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;/*! A template class */</div><div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;template&lt;class T&gt; class Templ { };</div><div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;</div><div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;/*! Class that is inherited using protected inheritance */</div><div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;class ProtectedBase { };</div><div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;/*! Class that is inherited using private inheritance */</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;class PrivateBase { };</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;/*! Class that is used by the Inherited class */</div><div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;class Used { };</div><div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;</div><div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;/*! Super class that inherits a number of other classes */</div><div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;class Inherited : public PublicBase,</div><div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;                  protected ProtectedBase,</div><div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;                  private PrivateBase,</div><div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;                  public Undocumented,</div><div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;                  public Templ&lt;int&gt;</div><div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;{</div><div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;  private:</div><div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;    Used *m_usedClass;</div><div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;};</div></div><!-- fragment --><p> This will result in the following graph:</p>
-<center><div class="image">
-<img src="graph_legend.png" />
-</div>
-</center><p>The boxes in the above graph have the following meaning: </p>
-<ul>
-<li>
-A filled gray box represents the struct or class for which the graph is generated. </li>
-<li>
-A box with a black border denotes a documented struct or class. </li>
-<li>
-A box with a gray border denotes an undocumented struct or class. </li>
-<li>
-A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
-</ul>
-<p>The arrows have the following meaning: </p>
-<ul>
-<li>
-A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
-<li>
-A dark green arrow is used for protected inheritance. </li>
-<li>
-A dark red arrow is used for private inheritance. </li>
-<li>
-A purple dashed arrow is used if a class is contained or used by another class. The arrow is labeled with the variable(s) through which the pointed class or struct is accessible. </li>
-<li>
-A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance. </li>
-</ul>
-</div><!-- contents -->
-<!-- start footer part -->
-<hr class="footer"/><address class="footer"><small>
-Generated by &#160;<a href="http://www.doxygen.org/index.html">
-<img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
-</small></address>
-</body>
-</html>
diff --git a/static/docs/2.2.0/html/graph_legend.md5 b/static/docs/2.2.0/html/graph_legend.md5
deleted file mode 100644
index a06ed05..0000000
--- a/static/docs/2.2.0/html/graph_legend.md5
+++ /dev/null
@@ -1 +0,0 @@
-387ff8eb65306fa251338d3c9bd7bfff
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/graph_legend.png b/static/docs/2.2.0/html/graph_legend.png
deleted file mode 100644
index ab7a9c0..0000000
--- a/static/docs/2.2.0/html/graph_legend.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/jquery.js b/static/docs/2.2.0/html/jquery.js
deleted file mode 100644
index d52a1c7..0000000
--- a/static/docs/2.2.0/html/jquery.js
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * jQuery JavaScript Library v1.7.1
- * http://jquery.com/
- *
- * Copyright 2011, John Resig
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- * Copyright 2011, The Dojo Foundation
- * Released under the MIT, BSD, and GPL Licenses.
- *
- * Date: Mon Nov 21 21:11:03 2011 -0500
- */
-(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))}else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML="   <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false}b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.each(("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu").split(" "),function(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
-/*
- * Sizzle CSS Selector Engine
- *  Copyright 2011, The Dojo Foundation
- *  Released under the MIT, BSD, and GPL Licenses.
- *  More information: http://sizzlejs.com/
- */
-(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)}}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null)){return this.elem[this.prop]}var e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*
- * jQuery UI 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI
- */
-(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h<j.length;h++){if(e.options[j[h][0]]){j[h][1].apply(e.element,f)}}}},contains:function(f,e){return document.compareDocumentPosition?f.compareDocumentPosition(e)&16:f!==e&&f.contains(e)},hasScroll:function(h,f){if(a(h).css("overflow")==="hidden"){return false}var e=(f&&f==="left")?"scrollLeft":"scrollTop",g=false;if(h[e]>0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*
- * jQuery UI Widget 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Widget
- */
-(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*
- * jQuery UI Mouse 1.8.18
- *
- * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT or GPL Version 2 licenses.
- * http://jquery.org/license
- *
- * http://docs.jquery.com/UI/Mouse
- *
- * Depends:
- *	jquery.ui.widget.js
- */
-(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g<l.length;g++){var j=c.trim(l[g]),e="ui-resizable-"+j;var h=c('<div class="ui-resizable-handle '+e+'"></div>');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(h<e.maxWidth){e.maxWidth=h}if(k<e.maxHeight){e.maxHeight=k}}this._vBoundaries=e},_updateCache:function(e){var f=this.options;this.offset=this.helper.offset();if(a(e.left)){this.position.left=e.left}if(a(e.top)){this.position.top=e.top}if(a(e.height)){this.size.height=e.height}if(a(e.width)){this.size.width=e.width}},_updateRatio:function(h,g){var i=this.options,j=this.position,f=this.size,e=this.axis;if(a(h.height)){h.width=(h.height*this.aspectRatio)}else{if(a(h.width)){h.height=(h.width/this.aspectRatio)}}if(e=="sw"){h.left=j.left+(f.width-h.width);h.top=null}if(e=="nw"){h.top=j.top+(f.height-h.height);h.left=j.left+(f.width-h.width)}return h},_respectSize:function(l,g){var j=this.helper,i=this._vBoundaries,r=this._aspectRatio||g.shiftKey,q=this.axis,t=a(l.width)&&i.maxWidth&&(i.maxWidth<l.width),m=a(l.height)&&i.maxHeight&&(i.maxHeight<l.height),h=a(l.width)&&i.minWidth&&(i.minWidth>l.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f<this._proportionallyResizeElements.length;f++){var h=this._proportionallyResizeElements[f];if(!this.borderDif){var e=[h.css("borderTopWidth"),h.css("borderRightWidth"),h.css("borderBottomWidth"),h.css("borderLeftWidth")],j=[h.css("paddingTop"),h.css("paddingRight"),h.css("paddingBottom"),h.css("paddingLeft")];this.borderDif=c.map(e,function(l,n){var m=parseInt(l,10)||0,o=parseInt(j[n],10)||0;return m+o})}if(c.browser.msie&&!(!(c(g).is(":hidden")||c(g).parents(":hidden").length))){continue}h.css({height:(g.height()-this.borderDif[0]-this.borderDif[2])||0,width:(g.width()-this.borderDif[1]-this.borderDif[3])||0})}},_renderProxy:function(){var f=this.element,i=this.options;this.elementOffset=f.offset();if(this._helper){this.helper=this.helper||c('<div style="overflow:hidden;"></div>');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*
- * jQuery hashchange event - v1.3 - 7/21/2010
- * http://benalman.com/projects/jquery-hashchange-plugin/
- * 
- * Copyright (c) 2010 "Cowboy" Ben Alman
- * Dual licensed under the MIT and GPL licenses.
- * http://benalman.com/about/license/
- */
-(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this);(function(c){var a=c.scrollTo=function(f,e,d){c(window).scrollTo(f,e,d)};a.defaults={axis:"xy",duration:parseFloat(c.fn.jquery)>=1.3?0:1};a.window=function(d){return c(window)._scrollable()};c.fn._scrollable=function(){return this.map(function(){var e=this,d=!e.nodeName||c.inArray(e.nodeName.toLowerCase(),["iframe","#document","html","body"])!=-1;if(!d){return e}var f=(e.contentWindow||e).document||e.ownerDocument||e;return c.browser.safari||f.compatMode=="BackCompat"?f.body:f.documentElement})};c.fn.scrollTo=function(f,e,d){if(typeof e=="object"){d=e;e=0}if(typeof d=="function"){d={onAfter:d}}if(f=="max"){f=9000000000}d=c.extend({},a.defaults,d);e=e||d.speed||d.duration;d.queue=d.queue&&d.axis.length>1;if(d.queue){e/=2}d.offset=b(d.offset);d.over=b(d.over);return this._scrollable().each(function(){var l=this,j=c(l),k=f,i,g={},m=j.is("html,body");switch(typeof k){case"number":case"string":if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(k)){k=b(k);break}k=c(k,this);case"object":if(k.is||k.style){i=(k=c(k)).offset()}}c.each(d.axis.split(""),function(q,r){var s=r=="x"?"Left":"Top",u=s.toLowerCase(),p="scroll"+s,o=l[p],n=a.max(l,r);if(i){g[p]=i[u]+(m?0:o-j.offset()[u]);if(d.margin){g[p]-=parseInt(k.css("margin"+s))||0;g[p]-=parseInt(k.css("border"+s+"Width"))||0}g[p]+=d.offset[u]||0;if(d.over[u]){g[p]+=k[r=="x"?"width":"height"]()*d.over[u]}}else{var t=k[u];g[p]=t.slice&&t.slice(-1)=="%"?parseFloat(t)/100*n:t}if(/^\d+$/.test(g[p])){g[p]=g[p]<=0?0:Math.min(g[p],n)}if(!q&&d.queue){if(o!=g[p]){h(d.onAfterFirst)}delete g[p]}});h(d.onAfter);function h(n){j.animate(g,e,d.easing,n&&function(){n.call(this,f,d)})}}).end()};a.max=function(j,i){var h=i=="x"?"Width":"Height",e="scroll"+h;if(!c(j).is("html,body")){return j[e]-c(j)[h.toLowerCase()]()}var g="client"+h,f=j.ownerDocument.documentElement,d=j.ownerDocument.body;return Math.max(f[e],d[e])-Math.min(f[g],d[g])};function b(d){return typeof d=="object"?d:{top:d,left:d}}})(jQuery);/*
- PowerTip - v1.2.0 - 2013-04-03
- http://stevenbenner.github.com/jquery-powertip/
- Copyright (c) 2013 Steven Benner (http://stevenbenner.com/).
- Released under MIT license.
- https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
-*/
-(function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/search/all_0.js b/static/docs/2.2.0/html/search/all_0.js
deleted file mode 100644
index 4bca9e2..0000000
--- a/static/docs/2.2.0/html/search/all_0.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var searchData=
-[
-  ['active',['active',['../structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499',1,'celix_dm_component_info_struct']]],
-  ['add',['add',['../structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815',1,'celix_service_tracking_options::add()'],['../structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813',1,'celix_dm_service_dependency_callback_options::add()']]],
-  ['addwithowner',['addWithOwner',['../structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6',1,'celix_service_tracking_options']]],
-  ['addwithproperties',['addWithProperties',['../structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c',1,'celix_service_tracking_options']]],
-  ['addwithprops',['addWithProps',['../structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330',1,'celix_dm_service_dependency_callback_options']]],
-  ['available',['available',['../structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66',1,'celix_dm_service_dependency_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_1.js b/static/docs/2.2.0/html/search/all_1.js
deleted file mode 100644
index b71bf2e..0000000
--- a/static/docs/2.2.0/html/search/all_1.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['bndid',['bndId',['../structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb',1,'celix_dm_dependency_manager_info_struct']]],
-  ['bundleid',['bundleId',['../structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8',1,'celix_service_tracker_info']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_2.js b/static/docs/2.2.0/html/search/all_2.js
deleted file mode 100644
index 0606682..0000000
--- a/static/docs/2.2.0/html/search/all_2.js
+++ /dev/null
@@ -1,132 +0,0 @@
-var searchData=
-[
-  ['celix_5fapi_2eh',['celix_api.h',['../celix__api_8h.html',1,'']]],
-  ['celix_5fbundle_2eh',['celix_bundle.h',['../celix__bundle_8h.html',1,'']]],
-  ['celix_5fbundle_5factivator_2eh',['celix_bundle_activator.h',['../celix__bundle__activator_8h.html',1,'']]],
-  ['celix_5fbundle_5fcontext_2eh',['celix_bundle_context.h',['../celix__bundle__context_8h.html',1,'']]],
-  ['celix_5fbundle_5fgetentry',['celix_bundle_getEntry',['../celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetgroup',['celix_bundle_getGroup',['../celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetid',['celix_bundle_getId',['../celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetstate',['celix_bundle_getState',['../celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetsymbolicname',['celix_bundle_getSymbolicName',['../celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5ftracker_5foptions',['celix_bundle_tracker_options',['../structcelix__bundle__tracker__options.html',1,'']]],
-  ['celix_5fbundle_5ftracking_5foptions_5ft',['celix_bundle_tracking_options_t',['../celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86',1,'celix_bundle_context.h']]],
-  ['celix_5fbundleactivator_5fcreate',['celix_bundleActivator_create',['../celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundleactivator_5fdestroy',['celix_bundleActivator_destroy',['../celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundleactivator_5fstart',['celix_bundleActivator_start',['../celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundleactivator_5fstop',['celix_bundleActivator_stop',['../celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundlecontext_5ffindservice',['celix_bundleContext_findService',['../celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ffindservices',['celix_bundleContext_findServices',['../celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ffindserviceswithoptions',['celix_bundleContext_findServicesWithOptions',['../celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ffindservicewithoptions',['celix_bundleContext_findServiceWithOptions',['../celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetbundle',['celix_bundleContext_getBundle',['../celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetdependencymanager',['celix_bundleContext_getDependencyManager',['../celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetproperty',['celix_bundleContext_getProperty',['../celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetpropertyasbool',['celix_bundleContext_getPropertyAsBool',['../celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetpropertyasdouble',['celix_bundleContext_getPropertyAsDouble',['../celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetpropertyaslong',['celix_bundleContext_getPropertyAsLong',['../celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5finstallbundle',['celix_bundleContext_installBundle',['../celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fisbundleinstalled',['celix_bundleContext_isBundleInstalled',['../celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5flistbundles',['celix_bundleContext_listBundles',['../celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fregisterservice',['celix_bundleContext_registerService',['../celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fregisterservicefactory',['celix_bundleContext_registerServiceFactory',['../celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fregisterservicewithoptions',['celix_bundleContext_registerServiceWithOptions',['../celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fstartbundle',['celix_bundleContext_startBundle',['../celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fstopbundle',['celix_bundleContext_stopBundle',['../celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fstoptracker',['celix_bundleContext_stopTracker',['../celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackbundles',['celix_bundleContext_trackBundles',['../celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackbundleswithoptions',['celix_bundleContext_trackBundlesWithOptions',['../celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackservice',['celix_bundleContext_trackService',['../celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackservices',['celix_bundleContext_trackServices',['../celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackserviceswithoptions',['celix_bundleContext_trackServicesWithOptions',['../celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackservicetrackers',['celix_bundleContext_trackServiceTrackers',['../celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5funinstallbundle',['celix_bundleContext_uninstallBundle',['../celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5funregisterservice',['celix_bundleContext_unregisterService',['../celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fusebundle',['celix_bundleContext_useBundle',['../celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fusebundles',['celix_bundleContext_useBundles',['../celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservice',['celix_bundleContext_useService',['../celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservices',['celix_bundleContext_useServices',['../celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseserviceswithoptions',['celix_bundleContext_useServicesWithOptions',['../celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservicewithid',['celix_bundleContext_useServiceWithId',['../celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservicewithoptions',['celix_bundleContext_useServiceWithOptions',['../celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055',1,'celix_bundle_context.h']]],
-  ['celix_5fdependency_5fmanager_5finfo_5ft',['celix_dependency_manager_info_t',['../celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fcmp_5flifecycle_5ffpt',['celix_dm_cmp_lifecycle_fpt',['../celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fcomponent_2eh',['celix_dm_component.h',['../celix__dm__component_8h.html',1,'']]],
-  ['celix_5fdm_5fcomponent_5finfo_5fstruct',['celix_dm_component_info_struct',['../structcelix__dm__component__info__struct.html',1,'']]],
-  ['celix_5fdm_5fcomponent_5finfo_5ft',['celix_dm_component_info_t',['../celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fcomponent_5fmax_5fid_5flength',['CELIX_DM_COMPONENT_MAX_ID_LENGTH',['../celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fcomponent_5fmax_5fname_5flength',['CELIX_DM_COMPONENT_MAX_NAME_LENGTH',['../celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fcomponent_5fstate_5fenum',['celix_dm_component_state_enum',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fcomponent_5fstate_5ft',['celix_dm_component_state_t',['../celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fdependency_5fmanager_5finfo_5fstruct',['celix_dm_dependency_manager_info_struct',['../structcelix__dm__dependency__manager__info__struct.html',1,'']]],
-  ['celix_5fdm_5finfo_2eh',['celix_dm_info.h',['../celix__dm__info_8h.html',1,'']]],
-  ['celix_5fdm_5finterface_5finfo_5fstruct',['celix_dm_interface_info_struct',['../structcelix__dm__interface__info__struct.html',1,'']]],
-  ['celix_5fdm_5finterface_5finfo_5ft',['celix_dm_interface_info_t',['../celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fservice_5fdependency_2eh',['celix_dm_service_dependency.h',['../celix__dm__service__dependency_8h.html',1,'']]],
-  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions',['celix_dm_service_dependency_callback_options',['../structcelix__dm__service__dependency__callback__options.html',1,'']]],
-  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions_5ft',['celix_dm_service_dependency_callback_options_t',['../celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5finfo_5fstruct',['celix_dm_service_dependency_info_struct',['../structcelix__dm__service__dependency__info__struct.html',1,'']]],
-  ['celix_5fdm_5fservice_5fdependency_5finfo_5ft',['celix_dm_service_dependency_info_t',['../celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5fenum',['celix_dm_service_dependency_strategy_enum',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5ft',['celix_dm_service_dependency_strategy_t',['../celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fswap_5ffp',['celix_dm_service_swap_fp',['../celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fswap_5fwith_5fprops_5ffp',['celix_dm_service_swap_with_props_fp',['../celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fupdate_5ffp',['celix_dm_service_update_fp',['../celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fupdate_5fwith_5fprops_5ffp',['celix_dm_service_update_with_props_fp',['../celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmcomponent_5faddinterface',['celix_dmComponent_addInterface',['../celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5faddservicedependency',['celix_dmComponent_addServiceDependency',['../celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fcreate',['celix_dmComponent_create',['../celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fcurrentstate',['celix_dmComponent_currentState',['../celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fdestroy',['celix_dmComponent_destroy',['../celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fdestroycomponentinfo',['celix_dmComponent_destroyComponentInfo',['../celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetbundlecontext',['celix_dmComponent_getBundleContext',['../celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetcomponentinfo',['celix_dmComponent_getComponentInfo',['../celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetimplementation',['celix_dmComponent_getImplementation',['../celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetinterfaces',['celix_dmComponent_getInterfaces',['../celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetname',['celix_dmComponent_getName',['../celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fisactive',['celix_dmComponent_isActive',['../celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fremoveinterface',['celix_dmComponent_removeInterface',['../celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fremoveservicedependency',['celix_dmComponent_removeServiceDependency',['../celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetcallbacks',['CELIX_DMCOMPONENT_SETCALLBACKS',['../celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452',1,'CELIX_DMCOMPONENT_SETCALLBACKS():&#160;celix_dm_component.h'],['../celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f',1,'celix_dmComponent_setCallbacks(celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit):&#160;celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetclanguageproperty',['celix_dmComponent_setCLanguageProperty',['../celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetimplementation',['celix_dmComponent_setImplementation',['../celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165',1,'celix_dm_component.h']]],
-  ['celix_5fdmservicedependency_5fcreate',['celix_dmServiceDependency_create',['../celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fcreateinfo',['celix_dmServiceDependency_createInfo',['../celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fdestroy',['celix_dmServiceDependency_destroy',['../celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fdestroyinfo',['celix_dmServiceDependency_destroyInfo',['../celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fgetfilter',['celix_dmServiceDependency_getFilter',['../celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fgetstrategy',['celix_dmServiceDependency_getStrategy',['../celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetaddclanguagefilter',['celix_dmServiceDependency_setAddCLanguageFilter',['../celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallback',['celix_dmServiceDependency_setCallback',['../celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallbackhandle',['celix_dmServiceDependency_setCallbackHandle',['../celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallbackswithoptions',['celix_dmServiceDependency_setCallbacksWithOptions',['../celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallbackwithproperties',['celix_dmServiceDependency_setCallbackWithProperties',['../celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetrequired',['celix_dmServiceDependency_setRequired',['../celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetservice',['celix_dmServiceDependency_setService',['../celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetstrategy',['celix_dmServiceDependency_setStrategy',['../celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fempty_5fbundle_5ftracking_5foptions',['CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fdm_5fservice_5fdependency_5fcallback_5foptions',['CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS',['../celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fempty_5fservice_5ffilter_5foptions',['CELIX_EMPTY_SERVICE_FILTER_OPTIONS',['../celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fservice_5fregistration_5foptions',['CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS',['../celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fservice_5ftracking_5foptions',['CELIX_EMPTY_SERVICE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fservice_5fuse_5foptions',['CELIX_EMPTY_SERVICE_USE_OPTIONS',['../celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865',1,'celix_bundle_context.h']]],
-  ['celix_5fframework_2eh',['celix_framework.h',['../celix__framework_8h.html',1,'']]],
-  ['celix_5fframework_5fgetframeworkbundle',['celix_framework_getFrameworkBundle',['../celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18',1,'celix_framework.h']]],
-  ['celix_5fframework_5fgetframeworkcontext',['celix_framework_getFrameworkContext',['../celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1',1,'celix_framework.h']]],
-  ['celix_5fframework_5fgetuuid',['celix_framework_getUUID',['../celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f',1,'celix_framework.h']]],
-  ['celix_5fframework_5fusebundle',['celix_framework_useBundle',['../celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1',1,'celix_framework.h']]],
-  ['celix_5fframework_5fusebundles',['celix_framework_useBundles',['../celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab',1,'celix_framework.h']]],
-  ['celix_5fgen_5fbundle_5factivator',['CELIX_GEN_BUNDLE_ACTIVATOR',['../celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2',1,'celix_bundle_activator.h']]],
-  ['celix_5fservice_5ffilter_5foptions',['celix_service_filter_options',['../structcelix__service__filter__options.html',1,'']]],
-  ['celix_5fservice_5ffilter_5foptions_5ft',['celix_service_filter_options_t',['../celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5fregistration_5foptions',['celix_service_registration_options',['../structcelix__service__registration__options.html',1,'']]],
-  ['celix_5fservice_5fregistration_5foptions_5ft',['celix_service_registration_options_t',['../celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5ftracker_5finfo',['celix_service_tracker_info',['../structcelix__service__tracker__info.html',1,'']]],
-  ['celix_5fservice_5ftracker_5finfo_5ft',['celix_service_tracker_info_t',['../celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5ftracking_5foptions',['celix_service_tracking_options',['../structcelix__service__tracking__options.html',1,'']]],
-  ['celix_5fservice_5ftracking_5foptions_5ft',['celix_service_tracking_options_t',['../celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5fuse_5foptions',['celix_service_use_options',['../structcelix__service__use__options.html',1,'']]],
-  ['celix_5fservice_5fuse_5foptions_5ft',['celix_service_use_options_t',['../celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6',1,'celix_bundle_context.h']]],
-  ['components',['components',['../structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b',1,'celix_dm_dependency_manager_info_struct']]],
-  ['count',['count',['../structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09',1,'celix_dm_service_dependency_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_3.js b/static/docs/2.2.0/html/search/all_3.js
deleted file mode 100644
index 1e4ff55..0000000
--- a/static/docs/2.2.0/html/search/all_3.js
+++ /dev/null
@@ -1,18 +0,0 @@
-var searchData=
-[
-  ['dependency_5flist',['dependency_list',['../structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda',1,'celix_dm_component_info_struct']]],
-  ['dm_5fcmp_5fstate_5finactive',['DM_CMP_STATE_INACTIVE',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e',1,'celix_dm_component.h']]],
-  ['dm_5fcmp_5fstate_5finstantiated_5fand_5fwaiting_5ffor_5frequired',['DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e',1,'celix_dm_component.h']]],
-  ['dm_5fcmp_5fstate_5ftracking_5foptional',['DM_CMP_STATE_TRACKING_OPTIONAL',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46',1,'celix_dm_component.h']]],
-  ['dm_5fcmp_5fstate_5fwaiting_5ffor_5frequired',['DM_CMP_STATE_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc',1,'celix_dm_component.h']]],
-  ['dm_5fcomponent_5finfo_5fpt',['dm_component_info_pt',['../celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a',1,'celix_dm_info.h']]],
-  ['dm_5fcomponent_5finfo_5ft',['dm_component_info_t',['../celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7',1,'celix_dm_info.h']]],
-  ['dm_5fdependency_5fmanager_5finfo_5fpt',['dm_dependency_manager_info_pt',['../celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738',1,'celix_dm_info.h']]],
-  ['dm_5fdependency_5fmanager_5finfo_5ft',['dm_dependency_manager_info_t',['../celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02',1,'celix_dm_info.h']]],
-  ['dm_5finterface_5finfo_5fpt',['dm_interface_info_pt',['../celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2',1,'celix_dm_info.h']]],
-  ['dm_5finterface_5finfo_5ft',['dm_interface_info_t',['../celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0',1,'celix_dm_info.h']]],
-  ['dm_5fservice_5fdependency_5finfo_5fpt',['dm_service_dependency_info_pt',['../celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e',1,'celix_dm_info.h']]],
-  ['dm_5fservice_5fdependency_5finfo_5ft',['dm_service_dependency_info_t',['../celix__dm__info_8h.html#a553833e914505261622b13563c8a045e',1,'celix_dm_info.h']]],
-  ['dm_5fservice_5fdependency_5fstrategy_5flocking',['DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1',1,'celix_dm_service_dependency.h']]],
-  ['dm_5fservice_5fdependency_5fstrategy_5fsuspend',['DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428',1,'celix_dm_service_dependency.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_4.js b/static/docs/2.2.0/html/search/all_4.js
deleted file mode 100644
index b00e4f1..0000000
--- a/static/docs/2.2.0/html/search/all_4.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['filter',['filter',['../structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4',1,'celix_service_tracker_info::filter()'],['../structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f',1,'celix_dm_service_dependency_info_struct::filter()']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_5.js b/static/docs/2.2.0/html/search/all_5.js
deleted file mode 100644
index fe6bc89..0000000
--- a/static/docs/2.2.0/html/search/all_5.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['id',['id',['../structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5',1,'celix_dm_component_info_struct']]],
-  ['interfaces',['interfaces',['../structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a',1,'celix_dm_component_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_6.js b/static/docs/2.2.0/html/search/all_6.js
deleted file mode 100644
index 482f76a..0000000
--- a/static/docs/2.2.0/html/search/all_6.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['name',['name',['../structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be',1,'celix_dm_interface_info_struct::name()'],['../structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a',1,'celix_dm_component_info_struct::name()']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_7.js b/static/docs/2.2.0/html/search/all_7.js
deleted file mode 100644
index 4241433..0000000
--- a/static/docs/2.2.0/html/search/all_7.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var searchData=
-[
-  ['onbundleevent',['onBundleEvent',['../structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398',1,'celix_bundle_tracker_options']]],
-  ['onstarted',['onStarted',['../structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb',1,'celix_bundle_tracker_options']]],
-  ['onstopped',['onStopped',['../structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492',1,'celix_bundle_tracker_options']]],
-  ['opts_5finit',['OPTS_INIT',['../structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af',1,'celix_bundle_tracker_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212',1,'celix_bundle_tracker_options::OPTS_INIT()'],['../celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f',1,'OPTS_INIT():&#160;celix_bundle_context.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_8.js b/static/docs/2.2.0/html/search/all_8.js
deleted file mode 100644
index 7b68b47..0000000
--- a/static/docs/2.2.0/html/search/all_8.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['properties',['properties',['../structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c',1,'celix_dm_interface_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_9.js b/static/docs/2.2.0/html/search/all_9.js
deleted file mode 100644
index 84e0018..0000000
--- a/static/docs/2.2.0/html/search/all_9.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var searchData=
-[
-  ['readme_2emd',['README.md',['../README_8md.html',1,'']]],
-  ['remove',['remove',['../structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882',1,'celix_service_tracking_options::remove()'],['../structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b',1,'celix_dm_service_dependency_callback_options::remove()']]],
-  ['removewithowner',['removeWithOwner',['../structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1',1,'celix_service_tracking_options']]],
-  ['removewithproperties',['removeWithProperties',['../structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a',1,'celix_service_tracking_options']]],
-  ['removewithprops',['removeWithProps',['../structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd',1,'celix_dm_service_dependency_callback_options']]],
-  ['required',['required',['../structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705',1,'celix_dm_service_dependency_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_a.js b/static/docs/2.2.0/html/search/all_a.js
deleted file mode 100644
index 32a0cab..0000000
--- a/static/docs/2.2.0/html/search/all_a.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var searchData=
-[
-  ['servicelanguage',['serviceLanguage',['../structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65',1,'celix_service_tracker_info']]],
-  ['servicename',['serviceName',['../structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546',1,'celix_service_tracker_info']]],
-  ['set',['set',['../structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da',1,'celix_service_tracking_options::set()'],['../structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b',1,'celix_dm_service_dependency_callback_options::set()']]],
-  ['setwithowner',['setWithOwner',['../structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59',1,'celix_service_tracking_options']]],
-  ['setwithproperties',['setWithProperties',['../structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172',1,'celix_service_tracking_options']]],
-  ['setwithprops',['setWithProps',['../structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9',1,'celix_dm_service_dependency_callback_options']]],
-  ['state',['state',['../structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163',1,'celix_dm_component_info_struct']]],
-  ['swap',['swap',['../structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48',1,'celix_dm_service_dependency_callback_options']]],
-  ['swapwithprops',['swapWithProps',['../structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d',1,'celix_dm_service_dependency_callback_options']]]
-];
diff --git a/static/docs/2.2.0/html/search/all_b.js b/static/docs/2.2.0/html/search/all_b.js
deleted file mode 100644
index 8dc944d..0000000
--- a/static/docs/2.2.0/html/search/all_b.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var searchData=
-[
-  ['use',['use',['../structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7',1,'celix_service_use_options']]],
-  ['usewithowner',['useWithOwner',['../structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5',1,'celix_service_use_options']]],
-  ['usewithproperties',['useWithProperties',['../structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867',1,'celix_service_use_options']]]
-];
diff --git a/static/docs/2.2.0/html/search/classes_0.js b/static/docs/2.2.0/html/search/classes_0.js
deleted file mode 100644
index d721d0a..0000000
--- a/static/docs/2.2.0/html/search/classes_0.js
+++ /dev/null
@@ -1,14 +0,0 @@
-var searchData=
-[
-  ['celix_5fbundle_5ftracker_5foptions',['celix_bundle_tracker_options',['../structcelix__bundle__tracker__options.html',1,'']]],
-  ['celix_5fdm_5fcomponent_5finfo_5fstruct',['celix_dm_component_info_struct',['../structcelix__dm__component__info__struct.html',1,'']]],
-  ['celix_5fdm_5fdependency_5fmanager_5finfo_5fstruct',['celix_dm_dependency_manager_info_struct',['../structcelix__dm__dependency__manager__info__struct.html',1,'']]],
-  ['celix_5fdm_5finterface_5finfo_5fstruct',['celix_dm_interface_info_struct',['../structcelix__dm__interface__info__struct.html',1,'']]],
-  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions',['celix_dm_service_dependency_callback_options',['../structcelix__dm__service__dependency__callback__options.html',1,'']]],
-  ['celix_5fdm_5fservice_5fdependency_5finfo_5fstruct',['celix_dm_service_dependency_info_struct',['../structcelix__dm__service__dependency__info__struct.html',1,'']]],
-  ['celix_5fservice_5ffilter_5foptions',['celix_service_filter_options',['../structcelix__service__filter__options.html',1,'']]],
-  ['celix_5fservice_5fregistration_5foptions',['celix_service_registration_options',['../structcelix__service__registration__options.html',1,'']]],
-  ['celix_5fservice_5ftracker_5finfo',['celix_service_tracker_info',['../structcelix__service__tracker__info.html',1,'']]],
-  ['celix_5fservice_5ftracking_5foptions',['celix_service_tracking_options',['../structcelix__service__tracking__options.html',1,'']]],
-  ['celix_5fservice_5fuse_5foptions',['celix_service_use_options',['../structcelix__service__use__options.html',1,'']]]
-];
diff --git a/static/docs/2.2.0/html/search/defines_0.js b/static/docs/2.2.0/html/search/defines_0.js
deleted file mode 100644
index 284a67c..0000000
--- a/static/docs/2.2.0/html/search/defines_0.js
+++ /dev/null
@@ -1,13 +0,0 @@
-var searchData=
-[
-  ['celix_5fdm_5fcomponent_5fmax_5fid_5flength',['CELIX_DM_COMPONENT_MAX_ID_LENGTH',['../celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fcomponent_5fmax_5fname_5flength',['CELIX_DM_COMPONENT_MAX_NAME_LENGTH',['../celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetcallbacks',['CELIX_DMCOMPONENT_SETCALLBACKS',['../celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452',1,'celix_dm_component.h']]],
-  ['celix_5fempty_5fbundle_5ftracking_5foptions',['CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fdm_5fservice_5fdependency_5fcallback_5foptions',['CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS',['../celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fempty_5fservice_5ffilter_5foptions',['CELIX_EMPTY_SERVICE_FILTER_OPTIONS',['../celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fservice_5fregistration_5foptions',['CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS',['../celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fservice_5ftracking_5foptions',['CELIX_EMPTY_SERVICE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909',1,'celix_bundle_context.h']]],
-  ['celix_5fempty_5fservice_5fuse_5foptions',['CELIX_EMPTY_SERVICE_USE_OPTIONS',['../celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865',1,'celix_bundle_context.h']]],
-  ['celix_5fgen_5fbundle_5factivator',['CELIX_GEN_BUNDLE_ACTIVATOR',['../celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2',1,'celix_bundle_activator.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/defines_1.js b/static/docs/2.2.0/html/search/defines_1.js
deleted file mode 100644
index b4ceea4..0000000
--- a/static/docs/2.2.0/html/search/defines_1.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['opts_5finit',['OPTS_INIT',['../celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f',1,'celix_bundle_context.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/enums_0.js b/static/docs/2.2.0/html/search/enums_0.js
deleted file mode 100644
index 9bbcccf..0000000
--- a/static/docs/2.2.0/html/search/enums_0.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['celix_5fdm_5fcomponent_5fstate_5fenum',['celix_dm_component_state_enum',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5fenum',['celix_dm_service_dependency_strategy_enum',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c',1,'celix_dm_service_dependency.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/enumvalues_0.js b/static/docs/2.2.0/html/search/enumvalues_0.js
deleted file mode 100644
index 9943b0b..0000000
--- a/static/docs/2.2.0/html/search/enumvalues_0.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var searchData=
-[
-  ['dm_5fcmp_5fstate_5finactive',['DM_CMP_STATE_INACTIVE',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e',1,'celix_dm_component.h']]],
-  ['dm_5fcmp_5fstate_5finstantiated_5fand_5fwaiting_5ffor_5frequired',['DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e',1,'celix_dm_component.h']]],
-  ['dm_5fcmp_5fstate_5ftracking_5foptional',['DM_CMP_STATE_TRACKING_OPTIONAL',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46',1,'celix_dm_component.h']]],
-  ['dm_5fcmp_5fstate_5fwaiting_5ffor_5frequired',['DM_CMP_STATE_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc',1,'celix_dm_component.h']]],
-  ['dm_5fservice_5fdependency_5fstrategy_5flocking',['DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1',1,'celix_dm_service_dependency.h']]],
-  ['dm_5fservice_5fdependency_5fstrategy_5fsuspend',['DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428',1,'celix_dm_service_dependency.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/files_0.js b/static/docs/2.2.0/html/search/files_0.js
deleted file mode 100644
index 58fb88f..0000000
--- a/static/docs/2.2.0/html/search/files_0.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var searchData=
-[
-  ['celix_5fapi_2eh',['celix_api.h',['../celix__api_8h.html',1,'']]],
-  ['celix_5fbundle_2eh',['celix_bundle.h',['../celix__bundle_8h.html',1,'']]],
-  ['celix_5fbundle_5factivator_2eh',['celix_bundle_activator.h',['../celix__bundle__activator_8h.html',1,'']]],
-  ['celix_5fbundle_5fcontext_2eh',['celix_bundle_context.h',['../celix__bundle__context_8h.html',1,'']]],
-  ['celix_5fdm_5fcomponent_2eh',['celix_dm_component.h',['../celix__dm__component_8h.html',1,'']]],
-  ['celix_5fdm_5finfo_2eh',['celix_dm_info.h',['../celix__dm__info_8h.html',1,'']]],
-  ['celix_5fdm_5fservice_5fdependency_2eh',['celix_dm_service_dependency.h',['../celix__dm__service__dependency_8h.html',1,'']]],
-  ['celix_5fframework_2eh',['celix_framework.h',['../celix__framework_8h.html',1,'']]]
-];
diff --git a/static/docs/2.2.0/html/search/files_1.js b/static/docs/2.2.0/html/search/files_1.js
deleted file mode 100644
index f1a1f84..0000000
--- a/static/docs/2.2.0/html/search/files_1.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['readme_2emd',['README.md',['../README_8md.html',1,'']]]
-];
diff --git a/static/docs/2.2.0/html/search/functions_0.js b/static/docs/2.2.0/html/search/functions_0.js
deleted file mode 100644
index d05e015..0000000
--- a/static/docs/2.2.0/html/search/functions_0.js
+++ /dev/null
@@ -1,82 +0,0 @@
-var searchData=
-[
-  ['celix_5fbundle_5fgetentry',['celix_bundle_getEntry',['../celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetgroup',['celix_bundle_getGroup',['../celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetid',['celix_bundle_getId',['../celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetstate',['celix_bundle_getState',['../celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35',1,'celix_bundle.h']]],
-  ['celix_5fbundle_5fgetsymbolicname',['celix_bundle_getSymbolicName',['../celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545',1,'celix_bundle.h']]],
-  ['celix_5fbundleactivator_5fcreate',['celix_bundleActivator_create',['../celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundleactivator_5fdestroy',['celix_bundleActivator_destroy',['../celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundleactivator_5fstart',['celix_bundleActivator_start',['../celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundleactivator_5fstop',['celix_bundleActivator_stop',['../celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213',1,'celix_bundle_activator.h']]],
-  ['celix_5fbundlecontext_5ffindservice',['celix_bundleContext_findService',['../celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ffindservices',['celix_bundleContext_findServices',['../celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ffindserviceswithoptions',['celix_bundleContext_findServicesWithOptions',['../celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ffindservicewithoptions',['celix_bundleContext_findServiceWithOptions',['../celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetbundle',['celix_bundleContext_getBundle',['../celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetdependencymanager',['celix_bundleContext_getDependencyManager',['../celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetproperty',['celix_bundleContext_getProperty',['../celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetpropertyasbool',['celix_bundleContext_getPropertyAsBool',['../celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetpropertyasdouble',['celix_bundleContext_getPropertyAsDouble',['../celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fgetpropertyaslong',['celix_bundleContext_getPropertyAsLong',['../celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5finstallbundle',['celix_bundleContext_installBundle',['../celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fisbundleinstalled',['celix_bundleContext_isBundleInstalled',['../celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5flistbundles',['celix_bundleContext_listBundles',['../celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fregisterservice',['celix_bundleContext_registerService',['../celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fregisterservicefactory',['celix_bundleContext_registerServiceFactory',['../celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fregisterservicewithoptions',['celix_bundleContext_registerServiceWithOptions',['../celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fstartbundle',['celix_bundleContext_startBundle',['../celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fstopbundle',['celix_bundleContext_stopBundle',['../celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fstoptracker',['celix_bundleContext_stopTracker',['../celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackbundles',['celix_bundleContext_trackBundles',['../celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackbundleswithoptions',['celix_bundleContext_trackBundlesWithOptions',['../celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackservice',['celix_bundleContext_trackService',['../celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackservices',['celix_bundleContext_trackServices',['../celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackserviceswithoptions',['celix_bundleContext_trackServicesWithOptions',['../celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5ftrackservicetrackers',['celix_bundleContext_trackServiceTrackers',['../celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5funinstallbundle',['celix_bundleContext_uninstallBundle',['../celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5funregisterservice',['celix_bundleContext_unregisterService',['../celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fusebundle',['celix_bundleContext_useBundle',['../celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fusebundles',['celix_bundleContext_useBundles',['../celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservice',['celix_bundleContext_useService',['../celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservices',['celix_bundleContext_useServices',['../celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseserviceswithoptions',['celix_bundleContext_useServicesWithOptions',['../celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservicewithid',['celix_bundleContext_useServiceWithId',['../celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d',1,'celix_bundle_context.h']]],
-  ['celix_5fbundlecontext_5fuseservicewithoptions',['celix_bundleContext_useServiceWithOptions',['../celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055',1,'celix_bundle_context.h']]],
-  ['celix_5fdmcomponent_5faddinterface',['celix_dmComponent_addInterface',['../celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5faddservicedependency',['celix_dmComponent_addServiceDependency',['../celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fcreate',['celix_dmComponent_create',['../celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fcurrentstate',['celix_dmComponent_currentState',['../celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fdestroy',['celix_dmComponent_destroy',['../celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fdestroycomponentinfo',['celix_dmComponent_destroyComponentInfo',['../celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetbundlecontext',['celix_dmComponent_getBundleContext',['../celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetcomponentinfo',['celix_dmComponent_getComponentInfo',['../celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetimplementation',['celix_dmComponent_getImplementation',['../celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetinterfaces',['celix_dmComponent_getInterfaces',['../celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fgetname',['celix_dmComponent_getName',['../celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fisactive',['celix_dmComponent_isActive',['../celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fremoveinterface',['celix_dmComponent_removeInterface',['../celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fremoveservicedependency',['celix_dmComponent_removeServiceDependency',['../celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetcallbacks',['celix_dmComponent_setCallbacks',['../celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetclanguageproperty',['celix_dmComponent_setCLanguageProperty',['../celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab',1,'celix_dm_component.h']]],
-  ['celix_5fdmcomponent_5fsetimplementation',['celix_dmComponent_setImplementation',['../celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165',1,'celix_dm_component.h']]],
-  ['celix_5fdmservicedependency_5fcreate',['celix_dmServiceDependency_create',['../celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fcreateinfo',['celix_dmServiceDependency_createInfo',['../celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fdestroy',['celix_dmServiceDependency_destroy',['../celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fdestroyinfo',['celix_dmServiceDependency_destroyInfo',['../celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fgetfilter',['celix_dmServiceDependency_getFilter',['../celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fgetstrategy',['celix_dmServiceDependency_getStrategy',['../celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetaddclanguagefilter',['celix_dmServiceDependency_setAddCLanguageFilter',['../celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallback',['celix_dmServiceDependency_setCallback',['../celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallbackhandle',['celix_dmServiceDependency_setCallbackHandle',['../celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallbackswithoptions',['celix_dmServiceDependency_setCallbacksWithOptions',['../celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetcallbackwithproperties',['celix_dmServiceDependency_setCallbackWithProperties',['../celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetrequired',['celix_dmServiceDependency_setRequired',['../celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetservice',['celix_dmServiceDependency_setService',['../celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdmservicedependency_5fsetstrategy',['celix_dmServiceDependency_setStrategy',['../celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fframework_5fgetframeworkbundle',['celix_framework_getFrameworkBundle',['../celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18',1,'celix_framework.h']]],
-  ['celix_5fframework_5fgetframeworkcontext',['celix_framework_getFrameworkContext',['../celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1',1,'celix_framework.h']]],
-  ['celix_5fframework_5fgetuuid',['celix_framework_getUUID',['../celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f',1,'celix_framework.h']]],
-  ['celix_5fframework_5fusebundle',['celix_framework_useBundle',['../celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1',1,'celix_framework.h']]],
-  ['celix_5fframework_5fusebundles',['celix_framework_useBundles',['../celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab',1,'celix_framework.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/mag_sel.png b/static/docs/2.2.0/html/search/mag_sel.png
deleted file mode 100644
index 81f6040..0000000
--- a/static/docs/2.2.0/html/search/mag_sel.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/search/search_l.png b/static/docs/2.2.0/html/search/search_l.png
deleted file mode 100644
index c872f4d..0000000
--- a/static/docs/2.2.0/html/search/search_l.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/search/search_r.png b/static/docs/2.2.0/html/search/search_r.png
deleted file mode 100644
index 97ee8b4..0000000
--- a/static/docs/2.2.0/html/search/search_r.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/search/typedefs_0.js b/static/docs/2.2.0/html/search/typedefs_0.js
deleted file mode 100644
index 7526780..0000000
--- a/static/docs/2.2.0/html/search/typedefs_0.js
+++ /dev/null
@@ -1,21 +0,0 @@
-var searchData=
-[
-  ['celix_5fbundle_5ftracking_5foptions_5ft',['celix_bundle_tracking_options_t',['../celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86',1,'celix_bundle_context.h']]],
-  ['celix_5fdependency_5fmanager_5finfo_5ft',['celix_dependency_manager_info_t',['../celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fcmp_5flifecycle_5ffpt',['celix_dm_cmp_lifecycle_fpt',['../celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5fcomponent_5finfo_5ft',['celix_dm_component_info_t',['../celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fcomponent_5fstate_5ft',['celix_dm_component_state_t',['../celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e',1,'celix_dm_component.h']]],
-  ['celix_5fdm_5finterface_5finfo_5ft',['celix_dm_interface_info_t',['../celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions_5ft',['celix_dm_service_dependency_callback_options_t',['../celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5finfo_5ft',['celix_dm_service_dependency_info_t',['../celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4',1,'celix_dm_info.h']]],
-  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5ft',['celix_dm_service_dependency_strategy_t',['../celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fswap_5ffp',['celix_dm_service_swap_fp',['../celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fswap_5fwith_5fprops_5ffp',['celix_dm_service_swap_with_props_fp',['../celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fupdate_5ffp',['celix_dm_service_update_fp',['../celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fdm_5fservice_5fupdate_5fwith_5fprops_5ffp',['celix_dm_service_update_with_props_fp',['../celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94',1,'celix_dm_service_dependency.h']]],
-  ['celix_5fservice_5ffilter_5foptions_5ft',['celix_service_filter_options_t',['../celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5fregistration_5foptions_5ft',['celix_service_registration_options_t',['../celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5ftracker_5finfo_5ft',['celix_service_tracker_info_t',['../celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5ftracking_5foptions_5ft',['celix_service_tracking_options_t',['../celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2',1,'celix_bundle_context.h']]],
-  ['celix_5fservice_5fuse_5foptions_5ft',['celix_service_use_options_t',['../celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6',1,'celix_bundle_context.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/typedefs_1.js b/static/docs/2.2.0/html/search/typedefs_1.js
deleted file mode 100644
index 4da6516..0000000
--- a/static/docs/2.2.0/html/search/typedefs_1.js
+++ /dev/null
@@ -1,11 +0,0 @@
-var searchData=
-[
-  ['dm_5fcomponent_5finfo_5fpt',['dm_component_info_pt',['../celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a',1,'celix_dm_info.h']]],
-  ['dm_5fcomponent_5finfo_5ft',['dm_component_info_t',['../celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7',1,'celix_dm_info.h']]],
-  ['dm_5fdependency_5fmanager_5finfo_5fpt',['dm_dependency_manager_info_pt',['../celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738',1,'celix_dm_info.h']]],
-  ['dm_5fdependency_5fmanager_5finfo_5ft',['dm_dependency_manager_info_t',['../celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02',1,'celix_dm_info.h']]],
-  ['dm_5finterface_5finfo_5fpt',['dm_interface_info_pt',['../celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2',1,'celix_dm_info.h']]],
-  ['dm_5finterface_5finfo_5ft',['dm_interface_info_t',['../celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0',1,'celix_dm_info.h']]],
-  ['dm_5fservice_5fdependency_5finfo_5fpt',['dm_service_dependency_info_pt',['../celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e',1,'celix_dm_info.h']]],
-  ['dm_5fservice_5fdependency_5finfo_5ft',['dm_service_dependency_info_t',['../celix__dm__info_8h.html#a553833e914505261622b13563c8a045e',1,'celix_dm_info.h']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_0.js b/static/docs/2.2.0/html/search/variables_0.js
deleted file mode 100644
index 4bca9e2..0000000
--- a/static/docs/2.2.0/html/search/variables_0.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var searchData=
-[
-  ['active',['active',['../structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499',1,'celix_dm_component_info_struct']]],
-  ['add',['add',['../structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815',1,'celix_service_tracking_options::add()'],['../structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813',1,'celix_dm_service_dependency_callback_options::add()']]],
-  ['addwithowner',['addWithOwner',['../structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6',1,'celix_service_tracking_options']]],
-  ['addwithproperties',['addWithProperties',['../structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c',1,'celix_service_tracking_options']]],
-  ['addwithprops',['addWithProps',['../structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330',1,'celix_dm_service_dependency_callback_options']]],
-  ['available',['available',['../structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66',1,'celix_dm_service_dependency_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_1.js b/static/docs/2.2.0/html/search/variables_1.js
deleted file mode 100644
index b71bf2e..0000000
--- a/static/docs/2.2.0/html/search/variables_1.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['bndid',['bndId',['../structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb',1,'celix_dm_dependency_manager_info_struct']]],
-  ['bundleid',['bundleId',['../structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8',1,'celix_service_tracker_info']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_2.js b/static/docs/2.2.0/html/search/variables_2.js
deleted file mode 100644
index eb59049..0000000
--- a/static/docs/2.2.0/html/search/variables_2.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['components',['components',['../structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b',1,'celix_dm_dependency_manager_info_struct']]],
-  ['count',['count',['../structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09',1,'celix_dm_service_dependency_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_3.js b/static/docs/2.2.0/html/search/variables_3.js
deleted file mode 100644
index 01474ac..0000000
--- a/static/docs/2.2.0/html/search/variables_3.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['dependency_5flist',['dependency_list',['../structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda',1,'celix_dm_component_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_4.js b/static/docs/2.2.0/html/search/variables_4.js
deleted file mode 100644
index b00e4f1..0000000
--- a/static/docs/2.2.0/html/search/variables_4.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['filter',['filter',['../structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4',1,'celix_service_tracker_info::filter()'],['../structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f',1,'celix_dm_service_dependency_info_struct::filter()']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_5.js b/static/docs/2.2.0/html/search/variables_5.js
deleted file mode 100644
index fe6bc89..0000000
--- a/static/docs/2.2.0/html/search/variables_5.js
+++ /dev/null
@@ -1,5 +0,0 @@
-var searchData=
-[
-  ['id',['id',['../structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5',1,'celix_dm_component_info_struct']]],
-  ['interfaces',['interfaces',['../structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a',1,'celix_dm_component_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_6.js b/static/docs/2.2.0/html/search/variables_6.js
deleted file mode 100644
index 482f76a..0000000
--- a/static/docs/2.2.0/html/search/variables_6.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['name',['name',['../structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be',1,'celix_dm_interface_info_struct::name()'],['../structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a',1,'celix_dm_component_info_struct::name()']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_7.js b/static/docs/2.2.0/html/search/variables_7.js
deleted file mode 100644
index 6f8db7d..0000000
--- a/static/docs/2.2.0/html/search/variables_7.js
+++ /dev/null
@@ -1,7 +0,0 @@
-var searchData=
-[
-  ['onbundleevent',['onBundleEvent',['../structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398',1,'celix_bundle_tracker_options']]],
-  ['onstarted',['onStarted',['../structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb',1,'celix_bundle_tracker_options']]],
-  ['onstopped',['onStopped',['../structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492',1,'celix_bundle_tracker_options']]],
-  ['opts_5finit',['OPTS_INIT',['../structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af',1,'celix_bundle_tracker_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212',1,'celix_bundle_tracker_options::OPTS_INIT()']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_8.js b/static/docs/2.2.0/html/search/variables_8.js
deleted file mode 100644
index 7b68b47..0000000
--- a/static/docs/2.2.0/html/search/variables_8.js
+++ /dev/null
@@ -1,4 +0,0 @@
-var searchData=
-[
-  ['properties',['properties',['../structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c',1,'celix_dm_interface_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_9.js b/static/docs/2.2.0/html/search/variables_9.js
deleted file mode 100644
index 75003a3..0000000
--- a/static/docs/2.2.0/html/search/variables_9.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var searchData=
-[
-  ['remove',['remove',['../structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882',1,'celix_service_tracking_options::remove()'],['../structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b',1,'celix_dm_service_dependency_callback_options::remove()']]],
-  ['removewithowner',['removeWithOwner',['../structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1',1,'celix_service_tracking_options']]],
-  ['removewithproperties',['removeWithProperties',['../structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a',1,'celix_service_tracking_options']]],
-  ['removewithprops',['removeWithProps',['../structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd',1,'celix_dm_service_dependency_callback_options']]],
-  ['required',['required',['../structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705',1,'celix_dm_service_dependency_info_struct']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_a.js b/static/docs/2.2.0/html/search/variables_a.js
deleted file mode 100644
index 32a0cab..0000000
--- a/static/docs/2.2.0/html/search/variables_a.js
+++ /dev/null
@@ -1,12 +0,0 @@
-var searchData=
-[
-  ['servicelanguage',['serviceLanguage',['../structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65',1,'celix_service_tracker_info']]],
-  ['servicename',['serviceName',['../structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546',1,'celix_service_tracker_info']]],
-  ['set',['set',['../structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da',1,'celix_service_tracking_options::set()'],['../structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b',1,'celix_dm_service_dependency_callback_options::set()']]],
-  ['setwithowner',['setWithOwner',['../structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59',1,'celix_service_tracking_options']]],
-  ['setwithproperties',['setWithProperties',['../structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172',1,'celix_service_tracking_options']]],
-  ['setwithprops',['setWithProps',['../structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9',1,'celix_dm_service_dependency_callback_options']]],
-  ['state',['state',['../structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163',1,'celix_dm_component_info_struct']]],
-  ['swap',['swap',['../structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48',1,'celix_dm_service_dependency_callback_options']]],
-  ['swapwithprops',['swapWithProps',['../structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d',1,'celix_dm_service_dependency_callback_options']]]
-];
diff --git a/static/docs/2.2.0/html/search/variables_b.js b/static/docs/2.2.0/html/search/variables_b.js
deleted file mode 100644
index 8dc944d..0000000
--- a/static/docs/2.2.0/html/search/variables_b.js
+++ /dev/null
@@ -1,6 +0,0 @@
-var searchData=
-[
-  ['use',['use',['../structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7',1,'celix_service_use_options']]],
-  ['usewithowner',['useWithOwner',['../structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5',1,'celix_service_use_options']]],
-  ['usewithproperties',['useWithProperties',['../structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867',1,'celix_service_use_options']]]
-];
diff --git a/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.map b/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.map
deleted file mode 100644
index 672fe25..0000000
--- a/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="celix_service_tracking_options" name="celix_service_tracking_options">
-<area shape="rect" id="node2" href="$structcelix__service__filter__options.html" title="celix_service_filter\l_options" alt="" coords="17,5,154,47"/>
-</map>
diff --git a/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.md5 b/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.md5
deleted file mode 100644
index 4e8ef57..0000000
--- a/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-3f1ee4333c99dc5c9983e245bd48e552
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.png b/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.png
deleted file mode 100644
index 323fa91..0000000
--- a/static/docs/2.2.0/html/structcelix__service__tracking__options__coll__graph.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.map b/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.map
deleted file mode 100644
index b787a8b..0000000
--- a/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.map
+++ /dev/null
@@ -1,3 +0,0 @@
-<map id="celix_service_use_options" name="celix_service_use_options">
-<area shape="rect" id="node2" href="$structcelix__service__filter__options.html" title="celix_service_filter\l_options" alt="" coords="30,5,167,47"/>
-</map>
diff --git a/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.md5 b/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.md5
deleted file mode 100644
index fea5baf..0000000
--- a/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.md5
+++ /dev/null
@@ -1 +0,0 @@
-e421935805ef7ae3b7bedd2fffec6acc
\ No newline at end of file
diff --git a/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.png b/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.png
deleted file mode 100644
index f176046..0000000
--- a/static/docs/2.2.0/html/structcelix__service__use__options__coll__graph.png
+++ /dev/null
Binary files differ
diff --git a/static/docs/2.2.0/html/tabs.css b/static/docs/2.2.0/html/tabs.css
deleted file mode 100644
index 9cf578f..0000000
--- a/static/docs/2.2.0/html/tabs.css
+++ /dev/null
@@ -1,60 +0,0 @@
-.tabs, .tabs2, .tabs3 {
-    background-image: url('tab_b.png');
-    width: 100%;
-    z-index: 101;
-    font-size: 13px;
-    font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif;
-}
-
-.tabs2 {
-    font-size: 10px;
-}
-.tabs3 {
-    font-size: 9px;
-}
-
-.tablist {
-    margin: 0;
-    padding: 0;
-    display: table;
-}
-
-.tablist li {
-    float: left;
-    display: table-cell;
-    background-image: url('tab_b.png');
-    line-height: 36px;
-    list-style: none;
-}
-
-.tablist a {
-    display: block;
-    padding: 0 20px;
-    font-weight: bold;
-    background-image:url('tab_s.png');
-    background-repeat:no-repeat;
-    background-position:right;
-    color: #283A5D;
-    text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-    text-decoration: none;
-    outline: none;
-}
-
-.tabs3 .tablist a {
-    padding: 0 10px;
-}
-
-.tablist a:hover {
-    background-image: url('tab_h.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-    text-decoration: none;
-}
-
-.tablist li.current a {
-    background-image: url('tab_a.png');
-    background-repeat:repeat-x;
-    color: #fff;
-    text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0);
-}
diff --git a/static/docs/2.2.1/html/README_8md.html b/static/docs/2.2.1/html/README_8md.html
new file mode 100755
index 0000000..1c003d7
--- /dev/null
+++ b/static/docs/2.2.1/html/README_8md.html
@@ -0,0 +1,78 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: README.md File Reference</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">README.md File Reference</div>  </div>
+</div><!--header-->
+<div class="contents">
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/annotated.html b/static/docs/2.2.1/html/annotated.html
old mode 100644
new mode 100755
similarity index 78%
rename from static/docs/2.2.0/html/annotated.html
rename to static/docs/2.2.1/html/annotated.html
index c11f22a..2631a9a
--- a/static/docs/2.2.0/html/annotated.html
+++ b/static/docs/2.2.1/html/annotated.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Class List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -107,7 +87,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/bc_s.png b/static/docs/2.2.1/html/bc_s.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/bc_s.png
rename to static/docs/2.2.1/html/bc_s.png
Binary files differ
diff --git a/static/docs/2.2.0/html/bdwn.png b/static/docs/2.2.1/html/bdwn.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/bdwn.png
rename to static/docs/2.2.1/html/bdwn.png
Binary files differ
diff --git a/static/docs/2.2.0/html/celix__api_8h.html b/static/docs/2.2.1/html/celix__api_8h.html
old mode 100644
new mode 100755
similarity index 72%
rename from static/docs/2.2.0/html/celix__api_8h.html
rename to static/docs/2.2.1/html/celix__api_8h.html
index 830e2d9..6bdf6f7
--- a/static/docs/2.2.0/html/celix__api_8h.html
+++ b/static/docs/2.2.1/html/celix__api_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_api.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -114,7 +95,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/celix__api_8h_source.html b/static/docs/2.2.1/html/celix__api_8h_source.html
new file mode 100755
index 0000000..65aca3e
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__api_8h_source.html
@@ -0,0 +1,140 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_api.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_api.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__api_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_CELIX_API_H_</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_CELIX_API_H_</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;properties.h&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;array_list.h&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_constants.h&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;bundle.h&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;bundle_context.h&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;framework.h&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#include &quot;celix_array_list.h&quot;</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="comment">//#include &quot;celix_constants.h&quot;</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#include &quot;celix_utils_api.h&quot;</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle_8h.html">celix_bundle.h</a>&quot;</span></div>
+<div class="line"><a name="l00035"></a><span class="lineno">   35</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle__context_8h.html">celix_bundle_context.h</a>&quot;</span></div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__framework_8h.html">celix_framework.h</a>&quot;</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#include &quot;celix_framework_factory.h&quot;</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#include &quot;celix_launcher.h&quot;</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160; </div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160;<span class="preprocessor">#include &quot;celix_dependency_manager.h&quot;</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__dm__component_8h.html">celix_dm_component.h</a>&quot;</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160;<span class="preprocessor">#include &quot;dm_service_dependency.h&quot;</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno">   45</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle__activator_8h.html">celix_bundle_activator.h</a>&quot;</span></div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160;<span class="preprocessor">#include &quot;celix_framework_factory.h&quot;</span></div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160; </div>
+<div class="line"><a name="l00048"></a><span class="lineno">   48</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="preprocessor">#include &quot;celix/dm/DependencyManager.h&quot;</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160;<span class="preprocessor">#endif //CELIX_CELIX_API_H_</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="acelix__framework_8h_html"><div class="ttname"><a href="celix__framework_8h.html">celix_framework.h</a></div></div>
+<div class="ttc" id="acelix__dm__component_8h_html"><div class="ttname"><a href="celix__dm__component_8h.html">celix_dm_component.h</a></div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html"><div class="ttname"><a href="celix__bundle__activator_8h.html">celix_bundle_activator.h</a></div></div>
+<div class="ttc" id="acelix__bundle_8h_html"><div class="ttname"><a href="celix__bundle_8h.html">celix_bundle.h</a></div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html"><div class="ttname"><a href="celix__bundle__context_8h.html">celix_bundle_context.h</a></div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h.html b/static/docs/2.2.1/html/celix__bundle_8h.html
old mode 100644
new mode 100755
similarity index 82%
rename from static/docs/2.2.0/html/celix__bundle_8h.html
rename to static/docs/2.2.1/html/celix__bundle_8h.html
index 6c288cb..f8eb515
--- a/static/docs/2.2.0/html/celix__bundle_8h.html
+++ b/static/docs/2.2.1/html/celix__bundle_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_bundle.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -99,6 +80,9 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__bundle_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__bundle_8h" id="libs_2framework_2include_2celix__bundle_8h">
+<area shape="rect" title=" " alt="" coords="42,5,193,47"/>
+<area shape="rect" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" title=" " alt="" coords="128,95,235,121"/>
 </map>
 </div>
 </div><div class="textblock"><div class="dynheader">
@@ -106,7 +90,8 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__bundle_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle_8hdep" alt=""/></div>
 <map name="libs_2framework_2include_2celix__bundle_8hdep" id="libs_2framework_2include_2celix__bundle_8hdep">
-<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+<area shape="rect" title=" " alt="" coords="5,5,156,47"/>
+<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="5,95,156,136"/>
 </map>
 </div>
 </div>
@@ -126,7 +111,9 @@
 <tr class="separator:a391c2aa2fdf3c8d0c65fc07a07bb7545"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a5cbe24596271fc91c79c8f42c8b92bc5"></a>
+<a id="a5cbe24596271fc91c79c8f42c8b92bc5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5cbe24596271fc91c79c8f42c8b92bc5">&#9670;&nbsp;</a></span>celix_bundle_getEntry()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -161,7 +148,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a5abd44b1259599d08f2312760fb32170"></a>
+<a id="a5abd44b1259599d08f2312760fb32170"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5abd44b1259599d08f2312760fb32170">&#9670;&nbsp;</a></span>celix_bundle_getGroup()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -177,7 +166,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8a9b02c9438f05099ff2bde9fea8c3cd"></a>
+<a id="a8a9b02c9438f05099ff2bde9fea8c3cd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8a9b02c9438f05099ff2bde9fea8c3cd">&#9670;&nbsp;</a></span>celix_bundle_getId()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -200,7 +191,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a7106fcc7b06c0506dd7e1678ba024a35"></a>
+<a id="a7106fcc7b06c0506dd7e1678ba024a35"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7106fcc7b06c0506dd7e1678ba024a35">&#9670;&nbsp;</a></span>celix_bundle_getState()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -223,7 +216,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a391c2aa2fdf3c8d0c65fc07a07bb7545"></a>
+<a id="a391c2aa2fdf3c8d0c65fc07a07bb7545"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a391c2aa2fdf3c8d0c65fc07a07bb7545">&#9670;&nbsp;</a></span>celix_bundle_getSymbolicName()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -244,7 +239,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.map b/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.map
old mode 100644
new mode 100755
similarity index 61%
rename from static/docs/2.2.0/html/celix__bundle_8h__dep__incl.map
rename to static/docs/2.2.1/html/celix__bundle_8h__dep__incl.map
index 200107e..089c19d
--- a/static/docs/2.2.0/html/celix__bundle_8h__dep__incl.map
+++ b/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.map
@@ -1,3 +1,4 @@
 <map id="libs/framework/include/celix_bundle.h" name="libs/framework/include/celix_bundle.h">
-<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+<area shape="rect" id="node1" title=" " alt="" coords="5,5,156,47"/>
+<area shape="rect" id="node2" href="$celix__api_8h.html" title=" " alt="" coords="5,95,156,136"/>
 </map>
diff --git a/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.md5 b/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.md5
new file mode 100755
index 0000000..440464e
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.md5
@@ -0,0 +1 @@
+e0feb6000157269d96295652c994311c
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.png b/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.png
new file mode 100755
index 0000000..91e9bb6
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle_8h__dep__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__bundle_8h__incl.map b/static/docs/2.2.1/html/celix__bundle_8h__incl.map
new file mode 100755
index 0000000..c30fa43
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle_8h__incl.map
@@ -0,0 +1,5 @@
+<map id="libs/framework/include/celix_bundle.h" name="libs/framework/include/celix_bundle.h">
+<area shape="rect" id="node1" title=" " alt="" coords="42,5,193,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" id="node3" title=" " alt="" coords="128,95,235,121"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__bundle_8h__incl.md5 b/static/docs/2.2.1/html/celix__bundle_8h__incl.md5
new file mode 100755
index 0000000..b1ca130
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle_8h__incl.md5
@@ -0,0 +1 @@
+3504c0e9c0780f0be0e965a9e07124c8
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__bundle_8h__incl.png b/static/docs/2.2.1/html/celix__bundle_8h__incl.png
new file mode 100755
index 0000000..ead1581
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__bundle_8h_source.html b/static/docs/2.2.1/html/celix__bundle_8h_source.html
new file mode 100755
index 0000000..b155bc0
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle_8h_source.html
@@ -0,0 +1,132 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_bundle.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_bundle.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__bundle_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;bundle_state.h&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#ifndef CELIX_BUNDLE_H_</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#define CELIX_BUNDLE_H_</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">   35</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle_getId</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">   42</a></span>&#160;celix_bundle_state_e <a class="code" href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle_getState</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div>
+<div class="line"><a name="l00043"></a><span class="lineno">   43</span>&#160; </div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">   55</a></span>&#160;<span class="keywordtype">char</span>* <a class="code" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle_getEntry</a>(<span class="keyword">const</span> celix_bundle_t* bnd, <span class="keyword">const</span> <span class="keywordtype">char</span> *path);</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">   57</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle_getGroup</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div>
+<div class="line"><a name="l00058"></a><span class="lineno">   58</span>&#160; </div>
+<div class="line"><a name="l00059"></a><span class="lineno"><a class="line" href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">   59</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle_getSymbolicName</a>(<span class="keyword">const</span> celix_bundle_t *bnd);</div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160; </div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;}</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160; </div>
+<div class="line"><a name="l00066"></a><span class="lineno">   66</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_BUNDLE_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="acelix__bundle_8h_html_a5cbe24596271fc91c79c8f42c8b92bc5"><div class="ttname"><a href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle_getEntry</a></div><div class="ttdeci">char * celix_bundle_getEntry(const celix_bundle_t *bnd, const char *path)</div></div>
+<div class="ttc" id="acelix__bundle_8h_html_a7106fcc7b06c0506dd7e1678ba024a35"><div class="ttname"><a href="celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35">celix_bundle_getState</a></div><div class="ttdeci">celix_bundle_state_e celix_bundle_getState(const celix_bundle_t *bnd)</div></div>
+<div class="ttc" id="acelix__bundle_8h_html_a391c2aa2fdf3c8d0c65fc07a07bb7545"><div class="ttname"><a href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle_getSymbolicName</a></div><div class="ttdeci">const char * celix_bundle_getSymbolicName(const celix_bundle_t *bnd)</div></div>
+<div class="ttc" id="acelix__bundle_8h_html_a5abd44b1259599d08f2312760fb32170"><div class="ttname"><a href="celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170">celix_bundle_getGroup</a></div><div class="ttdeci">const char * celix_bundle_getGroup(const celix_bundle_t *bnd)</div></div>
+<div class="ttc" id="acelix__bundle_8h_html_a8a9b02c9438f05099ff2bde9fea8c3cd"><div class="ttname"><a href="celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd">celix_bundle_getId</a></div><div class="ttdeci">long celix_bundle_getId(const celix_bundle_t *bnd)</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h.html b/static/docs/2.2.1/html/celix__bundle__activator_8h.html
old mode 100644
new mode 100755
similarity index 70%
rename from static/docs/2.2.0/html/celix__bundle__activator_8h.html
rename to static/docs/2.2.1/html/celix__bundle__activator_8h.html
index a8f8a57..7b8829a
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h.html
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_bundle_activator.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -100,7 +81,14 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__bundle__activator_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__activator_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__bundle__activator_8h" id="libs_2framework_2include_2celix__bundle__activator_8h">
-<area shape="rect" id="node3" href="celix__bundle__context_8h.html" title="celix_bundle_context.h" alt="" coords="305,95,471,121"/>
+<area shape="rect" title=" " alt="" coords="220,5,385,47"/>
+<area shape="rect" title=" " alt="" coords="204,95,268,121"/>
+<area shape="rect" href="celix__bundle__context_8h.html" title=" " alt="" coords="292,95,447,121"/>
+<area shape="rect" title=" " alt="" coords="5,169,104,196"/>
+<area shape="rect" title=" " alt="" coords="128,169,283,196"/>
+<area shape="rect" title=" " alt="" coords="307,169,431,196"/>
+<area shape="rect" title=" " alt="" coords="456,169,576,196"/>
+<area shape="rect" title=" " alt="" coords="600,169,691,196"/>
 </map>
 </div>
 </div><div class="textblock"><div class="dynheader">
@@ -108,7 +96,8 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__bundle__activator_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__activator_8hdep" alt=""/></div>
 <map name="libs_2framework_2include_2celix__bundle__activator_8hdep" id="libs_2framework_2include_2celix__bundle__activator_8hdep">
-<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="13,95,176,136"/>
+<area shape="rect" title=" " alt="" coords="5,5,171,47"/>
+<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="13,95,163,136"/>
 </map>
 </div>
 </div>
@@ -131,7 +120,9 @@
 <tr class="separator:a8d7cd41a721060d28c6ce8d94f9f0ca9"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Macro Definition Documentation</h2>
-<a class="anchor" id="a47b446e557ecaff78dafa19ba3e340c2"></a>
+<a id="a47b446e557ecaff78dafa19ba3e340c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a47b446e557ecaff78dafa19ba3e340c2">&#9670;&nbsp;</a></span>CELIX_GEN_BUNDLE_ACTIVATOR</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -160,10 +151,29 @@
         </tr>
       </table>
 </div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a>(celix_bundle_context_t *ctx __attribute__((unused)), <span class="keywordtype">void</span> **userData) {    \</div><div class="line">    celix_status_t status = CELIX_SUCCESS;                                                                             \</div><div class="line">    actType *data = (actType*)calloc(1, <span class="keyword">sizeof</span>(*data));                                                                \</div><div class="line">    if (data != NULL) {                                                                                                \</div><div class="line">        *userData = data;                                                                                              \</div><div class="line">    } <span class="keywordflow">else</span> {                                                                                                           \</div><div class="line">        status = CELIX_ENOMEM;                                                                                         \</div><div class="line">    }                                                                                                                  \</div><div class="line">    return status;                                                                                                     \</div><div class="line">}                                                                                                                      \</div><div class="line">                                                                                                                       \</div><div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx) {                              \</div><div class="line">    return actStart((actType*)userData, ctx);                                                                          \</div><div class="line">}                                                                                                                      \</div><div class="line">                                                                                                                       \</div><div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx) {                               \</div><div class="line">    return actStop((actType*)userData, ctx);                                                                           \</div><div class="line">}                                                                                                                      \</div><div class="line">                                                                                                                       \</div><div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx __attribute__((unused))) {    \</div><div class="line">    free(userData);                                                                                                    \</div><div class="line">    return CELIX_SUCCESS;                                                                                              \</div><div class="line">}</div><div class="ttc" id="celix__bundle__activator_8h_html_a8d7cd41a721060d28c6ce8d94f9f0ca9"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_destroy(void *userData, celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html_a57025ac322aecc8acfac832748c780e6"><div class="ttname"><a href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx, void **userData)</div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html_ae650439680848e3e3f7fc71b9e4dd213"><div class="ttname"><a href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx)</div></div>
-<div class="ttc" id="celix__bundle__activator_8h_html_a8ac12a9b8d321ee1c1feee5bf047b666"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx)</div></div>
+<b>Value:</b><div class="fragment"><div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a>(celix_bundle_context_t *ctx __attribute__((unused)), <span class="keywordtype">void</span> **userData) {    \</div>
+<div class="line">    celix_status_t status = CELIX_SUCCESS;                                                                             \</div>
+<div class="line">    actType *data = (actType*)calloc(1, <span class="keyword">sizeof</span>(*data));                                                                \</div>
+<div class="line">    if (data != NULL) {                                                                                                \</div>
+<div class="line">        *userData = data;                                                                                              \</div>
+<div class="line">    } <span class="keywordflow">else</span> {                                                                                                           \</div>
+<div class="line">        status = CELIX_ENOMEM;                                                                                         \</div>
+<div class="line">    }                                                                                                                  \</div>
+<div class="line">    return status;                                                                                                     \</div>
+<div class="line">}                                                                                                                      \</div>
+<div class="line">                                                                                                                       \</div>
+<div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx) {                              \</div>
+<div class="line">    return actStart((actType*)userData, ctx);                                                                          \</div>
+<div class="line">}                                                                                                                      \</div>
+<div class="line">                                                                                                                       \</div>
+<div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx) {                               \</div>
+<div class="line">    return actStop((actType*)userData, ctx);                                                                           \</div>
+<div class="line">}                                                                                                                      \</div>
+<div class="line">                                                                                                                       \</div>
+<div class="line">celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx __attribute__((unused))) {    \</div>
+<div class="line">    free(userData);                                                                                                    \</div>
+<div class="line">    return CELIX_SUCCESS;                                                                                              \</div>
+<div class="line">}</div>
 </div><!-- fragment --><p>This macro generates the required bundle activator functions for C. This can be used to more type safe bundle activator entries.</p>
 <p>The macro will create the following bundle activator functions:</p><ul>
 <li>bundleActivator_create which allocates a pointer to the provided type.</li>
@@ -182,7 +192,9 @@
 </div>
 </div>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a57025ac322aecc8acfac832748c780e6"></a>
+<a id="a57025ac322aecc8acfac832748c780e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a57025ac322aecc8acfac832748c780e6">&#9670;&nbsp;</a></span>celix_bundleActivator_create()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -221,7 +233,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8d7cd41a721060d28c6ce8d94f9f0ca9"></a>
+<a id="a8d7cd41a721060d28c6ce8d94f9f0ca9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8d7cd41a721060d28c6ce8d94f9f0ca9">&#9670;&nbsp;</a></span>celix_bundleActivator_destroy()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -261,7 +275,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8ac12a9b8d321ee1c1feee5bf047b666"></a>
+<a id="a8ac12a9b8d321ee1c1feee5bf047b666"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ac12a9b8d321ee1c1feee5bf047b666">&#9670;&nbsp;</a></span>celix_bundleActivator_start()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -301,7 +317,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ae650439680848e3e3f7fc71b9e4dd213"></a>
+<a id="ae650439680848e3e3f7fc71b9e4dd213"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae650439680848e3e3f7fc71b9e4dd213">&#9670;&nbsp;</a></span>celix_bundleActivator_stop()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -342,11 +360,15 @@
 </div>
 </div>
 </div><!-- contents -->
+<div class="ttc" id="acelix__bundle__activator_8h_html_ae650439680848e3e3f7fc71b9e4dd213"><div class="ttname"><a href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html_a57025ac322aecc8acfac832748c780e6"><div class="ttname"><a href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx, void **userData)</div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html_a8ac12a9b8d321ee1c1feee5bf047b666"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html_a8d7cd41a721060d28c6ce8d94f9f0ca9"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_destroy(void *userData, celix_bundle_context_t *ctx)</div></div>
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.map b/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.map
old mode 100644
new mode 100755
similarity index 64%
rename from static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.map
rename to static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.map
index 6b5b68e..9e90c44
--- a/static/docs/2.2.0/html/celix__bundle__activator_8h__dep__incl.map
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.map
@@ -1,3 +1,4 @@
 <map id="libs/framework/include/celix_bundle_activator.h" name="libs/framework/include/celix_bundle_activator.h">
-<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="13,95,176,136"/>
+<area shape="rect" id="node1" title=" " alt="" coords="5,5,171,47"/>
+<area shape="rect" id="node2" href="$celix__api_8h.html" title=" " alt="" coords="13,95,163,136"/>
 </map>
diff --git a/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.md5 b/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.md5
new file mode 100755
index 0000000..cf608bf
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.md5
@@ -0,0 +1 @@
+a0f7f0156b56f55e7192cb94bd6b09ec
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.png b/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.png
new file mode 100755
index 0000000..ad53d62
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h__dep__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.map b/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.map
new file mode 100755
index 0000000..83784cf
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.map
@@ -0,0 +1,10 @@
+<map id="libs/framework/include/celix_bundle_activator.h" name="libs/framework/include/celix_bundle_activator.h">
+<area shape="rect" id="node1" title=" " alt="" coords="220,5,385,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="204,95,268,121"/>
+<area shape="rect" id="node3" href="$celix__bundle__context_8h.html" title=" " alt="" coords="292,95,447,121"/>
+<area shape="rect" id="node4" title=" " alt="" coords="5,169,104,196"/>
+<area shape="rect" id="node5" title=" " alt="" coords="128,169,283,196"/>
+<area shape="rect" id="node6" title=" " alt="" coords="307,169,431,196"/>
+<area shape="rect" id="node7" title=" " alt="" coords="456,169,576,196"/>
+<area shape="rect" id="node8" title=" " alt="" coords="600,169,691,196"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.md5 b/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.md5
new file mode 100755
index 0000000..1cc02f7
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.md5
@@ -0,0 +1 @@
+d7c71beb342aa11da9afca630fef1759
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.png b/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.png
new file mode 100755
index 0000000..f0816fa
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__bundle__activator_8h_source.html b/static/docs/2.2.1/html/celix__bundle__activator_8h_source.html
new file mode 100755
index 0000000..d61d6be
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__activator_8h_source.html
@@ -0,0 +1,216 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_bundle_activator.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_bundle_activator.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__bundle__activator_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &lt;stdlib.h&gt;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160; </div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__bundle__context_8h.html">celix_bundle_context.h</a>&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#ifndef CELIX_BUNDLE_ACTIVATOR_H_</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#define CELIX_BUNDLE_ACTIVATOR_H_</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">   45</a></span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a>(celix_bundle_context_t *ctx, <span class="keywordtype">void</span> **userData);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">   63</a></span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx);</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
+<div class="line"><a name="l00082"></a><span class="lineno"><a class="line" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">   82</a></span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t *ctx);</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">   99</a></span>&#160;celix_status_t <a class="code" href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a>(<span class="keywordtype">void</span> *userData, celix_bundle_context_t* ctx);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
+<div class="line"><a name="l00101"></a><span class="lineno">  101</span>&#160; </div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160;<span class="preprocessor">#define CELIX_GEN_BUNDLE_ACTIVATOR(actType, actStart, actStop)                                                         \</span></div>
+<div class="line"><a name="l00116"></a><span class="lineno"><a class="line" href="celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2">  116</a></span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx __attribute__((unused)), void **userData) {    \</span></div>
+<div class="line"><a name="l00117"></a><span class="lineno">  117</span>&#160;<span class="preprocessor">    celix_status_t status = CELIX_SUCCESS;                                                                             \</span></div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160;<span class="preprocessor">    actType *data = (actType*)calloc(1, sizeof(*data));                                                                \</span></div>
+<div class="line"><a name="l00119"></a><span class="lineno">  119</span>&#160;<span class="preprocessor">    if (data != NULL) {                                                                                                \</span></div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160;<span class="preprocessor">        *userData = data;                                                                                              \</span></div>
+<div class="line"><a name="l00121"></a><span class="lineno">  121</span>&#160;<span class="preprocessor">    } else {                                                                                                           \</span></div>
+<div class="line"><a name="l00122"></a><span class="lineno">  122</span>&#160;<span class="preprocessor">        status = CELIX_ENOMEM;                                                                                         \</span></div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div>
+<div class="line"><a name="l00124"></a><span class="lineno">  124</span>&#160;<span class="preprocessor">    return status;                                                                                                     \</span></div>
+<div class="line"><a name="l00125"></a><span class="lineno">  125</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00127"></a><span class="lineno">  127</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx) {                              \</span></div>
+<div class="line"><a name="l00128"></a><span class="lineno">  128</span>&#160;<span class="preprocessor">    return actStart((actType*)userData, ctx);                                                                          \</span></div>
+<div class="line"><a name="l00129"></a><span class="lineno">  129</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno">  131</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx) {                               \</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">    return actStop((actType*)userData, ctx);                                                                           \</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">celix_status_t celix_bundleActivator_destroy(void *userData, celix_bundle_context_t *ctx __attribute__((unused))) {    \</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">    free(userData);                                                                                                    \</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="preprocessor">}</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160; </div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;}</div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160;<span class="preprocessor">#define CELIX_GEN_CXX_BUNDLE_ACTIVATOR(actType)                                                                        \</span></div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00157"></a><span class="lineno">  157</span>&#160;<span class="preprocessor">namespace </span><span class="comment">/*anon*/</span><span class="preprocessor"> {                                                                                                   \</span></div>
+<div class="line"><a name="l00158"></a><span class="lineno">  158</span>&#160;<span class="preprocessor">struct BundleActivatorData {                                                                                           \</span></div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160;<span class="preprocessor">    std::shared_ptr&lt;DependencyManager&gt; mng{};                                                                          \</span></div>
+<div class="line"><a name="l00160"></a><span class="lineno">  160</span>&#160;<span class="preprocessor">    std::unique_ptr&lt;actType&gt; activator{};                                                                              \</span></div>
+<div class="line"><a name="l00161"></a><span class="lineno">  161</span>&#160;<span class="preprocessor">};                                                                                                                     \</span></div>
+<div class="line"><a name="l00162"></a><span class="lineno">  162</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00163"></a><span class="lineno">  163</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_create(celix_bundle_context_t *context, void** userData) {                   \</span></div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">    int status = CELIX_SUCCESS;                                                                                        \</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">    BundleActivatorData* data = nullptr;                                                                               \</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160;<span class="preprocessor">    data = new BundleActivatorData{};                                                                                  \</span></div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160;<span class="preprocessor">        data-&gt;mng = std::shared_ptr&lt;celix::dm::DependencyManager&gt;{new celix::dm::DependencyManager{context}};          \</span></div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div>
+<div class="line"><a name="l00172"></a><span class="lineno">  172</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00173"></a><span class="lineno">  173</span>&#160;<span class="preprocessor">    if (data == nullptr || data-&gt;mng == nullptr) {                                                                     \</span></div>
+<div class="line"><a name="l00174"></a><span class="lineno">  174</span>&#160;<span class="preprocessor">        status = CELIX_ENOMEM;                                                                                         \</span></div>
+<div class="line"><a name="l00175"></a><span class="lineno">  175</span>&#160;<span class="preprocessor">        if (data != nullptr) {                                                                                         \</span></div>
+<div class="line"><a name="l00176"></a><span class="lineno">  176</span>&#160;<span class="preprocessor">            delete data;                                                                                               \</span></div>
+<div class="line"><a name="l00177"></a><span class="lineno">  177</span>&#160;<span class="preprocessor">        }                                                                                                              \</span></div>
+<div class="line"><a name="l00178"></a><span class="lineno">  178</span>&#160;<span class="preprocessor">        *userData = nullptr;                                                                                           \</span></div>
+<div class="line"><a name="l00179"></a><span class="lineno">  179</span>&#160;<span class="preprocessor">    } else {                                                                                                           \</span></div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160;<span class="preprocessor">        *userData = data;                                                                                              \</span></div>
+<div class="line"><a name="l00181"></a><span class="lineno">  181</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div>
+<div class="line"><a name="l00182"></a><span class="lineno">  182</span>&#160;<span class="preprocessor">    return status;                                                                                                     \</span></div>
+<div class="line"><a name="l00183"></a><span class="lineno">  183</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00184"></a><span class="lineno">  184</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00185"></a><span class="lineno">  185</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_start(void *userData, celix_bundle_context_t *) {                            \</span></div>
+<div class="line"><a name="l00186"></a><span class="lineno">  186</span>&#160;<span class="preprocessor">    auto* data = static_cast&lt;BundleActivatorData*&gt;(userData);                                                          \</span></div>
+<div class="line"><a name="l00187"></a><span class="lineno">  187</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div>
+<div class="line"><a name="l00188"></a><span class="lineno">  188</span>&#160;<span class="preprocessor">        data-&gt;activator = std::unique_ptr&lt;actType&gt;{new actType{data-&gt;mng}};                                            \</span></div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160;<span class="preprocessor">        data-&gt;mng-&gt;start();                                                                                            \</span></div>
+<div class="line"><a name="l00190"></a><span class="lineno">  190</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div>
+<div class="line"><a name="l00191"></a><span class="lineno">  191</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div>
+<div class="line"><a name="l00192"></a><span class="lineno">  192</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00193"></a><span class="lineno">  193</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00194"></a><span class="lineno">  194</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_stop(void *userData, celix_bundle_context_t*) {                              \</span></div>
+<div class="line"><a name="l00195"></a><span class="lineno">  195</span>&#160;<span class="preprocessor">    auto* data = static_cast&lt;BundleActivatorData*&gt;(userData);                                                          \</span></div>
+<div class="line"><a name="l00196"></a><span class="lineno">  196</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div>
+<div class="line"><a name="l00197"></a><span class="lineno">  197</span>&#160;<span class="preprocessor">        data-&gt;mng-&gt;stop();                                                                                             \</span></div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160;<span class="preprocessor">        data-&gt;activator = nullptr;                                                                                     \</span></div>
+<div class="line"><a name="l00199"></a><span class="lineno">  199</span>&#160;<span class="preprocessor">        data-&gt;mng = nullptr;                                                                                           \</span></div>
+<div class="line"><a name="l00200"></a><span class="lineno">  200</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div>
+<div class="line"><a name="l00201"></a><span class="lineno">  201</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div>
+<div class="line"><a name="l00202"></a><span class="lineno">  202</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00203"></a><span class="lineno">  203</span>&#160;<span class="preprocessor">                                                                                                                       \</span></div>
+<div class="line"><a name="l00204"></a><span class="lineno">  204</span>&#160;<span class="preprocessor">extern &quot;C&quot; celix_status_t bundleActivator_destroy(void *userData, celix_bundle_context_t*) {                           \</span></div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160;<span class="preprocessor">    auto* data = static_cast&lt;BundleActivatorData*&gt;(userData);                                                          \</span></div>
+<div class="line"><a name="l00206"></a><span class="lineno">  206</span>&#160;<span class="preprocessor">    if (data != nullptr) {                                                                                             \</span></div>
+<div class="line"><a name="l00207"></a><span class="lineno">  207</span>&#160;<span class="preprocessor">        delete data;                                                                                                   \</span></div>
+<div class="line"><a name="l00208"></a><span class="lineno">  208</span>&#160;<span class="preprocessor">    }                                                                                                                  \</span></div>
+<div class="line"><a name="l00209"></a><span class="lineno">  209</span>&#160;<span class="preprocessor">    return CELIX_SUCCESS;                                                                                              \</span></div>
+<div class="line"><a name="l00210"></a><span class="lineno">  210</span>&#160;<span class="preprocessor">}                                                                                                                      \</span></div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160;<span class="preprocessor"></span> </div>
+<div class="line"><a name="l00212"></a><span class="lineno">  212</span>&#160; </div>
+<div class="line"><a name="l00213"></a><span class="lineno">  213</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00214"></a><span class="lineno">  214</span>&#160; </div>
+<div class="line"><a name="l00215"></a><span class="lineno">  215</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_BUNDLE_ACTIVATOR_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="acelix__bundle__activator_8h_html_ae650439680848e3e3f7fc71b9e4dd213"><div class="ttname"><a href="celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213">celix_bundleActivator_stop</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_stop(void *userData, celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html_a57025ac322aecc8acfac832748c780e6"><div class="ttname"><a href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundleActivator_create</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_create(celix_bundle_context_t *ctx, void **userData)</div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html_a8ac12a9b8d321ee1c1feee5bf047b666"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666">celix_bundleActivator_start</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_start(void *userData, celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html"><div class="ttname"><a href="celix__bundle__context_8h.html">celix_bundle_context.h</a></div></div>
+<div class="ttc" id="acelix__bundle__activator_8h_html_a8d7cd41a721060d28c6ce8d94f9f0ca9"><div class="ttname"><a href="celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9">celix_bundleActivator_destroy</a></div><div class="ttdeci">celix_status_t celix_bundleActivator_destroy(void *userData, celix_bundle_context_t *ctx)</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__bundle__context_8h.html b/static/docs/2.2.1/html/celix__bundle__context_8h.html
old mode 100644
new mode 100755
similarity index 83%
rename from static/docs/2.2.0/html/celix__bundle__context_8h.html
rename to static/docs/2.2.1/html/celix__bundle__context_8h.html
index 7bea31c..d5f998a
--- a/static/docs/2.2.0/html/celix__bundle__context_8h.html
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_bundle_context.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -105,6 +86,12 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__bundle__context_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__context_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__bundle__context_8h" id="libs_2framework_2include_2celix__bundle__context_8h">
+<area shape="rect" title=" " alt="" coords="290,5,449,47"/>
+<area shape="rect" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" title=" " alt="" coords="128,95,283,121"/>
+<area shape="rect" title=" " alt="" coords="307,95,431,121"/>
+<area shape="rect" title=" " alt="" coords="456,95,576,121"/>
+<area shape="rect" title=" " alt="" coords="600,95,691,121"/>
 </map>
 </div>
 </div><div class="textblock"><div class="dynheader">
@@ -112,8 +99,9 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__bundle__context_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__bundle__context_8hdep" alt=""/></div>
 <map name="libs_2framework_2include_2celix__bundle__context_8hdep" id="libs_2framework_2include_2celix__bundle__context_8hdep">
-<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="9,184,172,225"/>
-<area shape="rect" id="node3" href="celix__bundle__activator_8h.html" title="libs/framework/include\l/celix_bundle_activator.h" alt="" coords="65,95,244,136"/>
+<area shape="rect" title=" " alt="" coords="5,5,164,47"/>
+<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="9,184,160,225"/>
+<area shape="rect" href="celix__bundle__activator_8h.html" title=" " alt="" coords="62,95,227,136"/>
 </map>
 </div>
 </div>
@@ -151,18 +139,18 @@
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
 Typedefs</h2></td></tr>
-<tr class="memitem:a6bcc1ddc92a68053a0300553baa2e35a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a></td></tr>
-<tr class="separator:a6bcc1ddc92a68053a0300553baa2e35a"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a54e95a32f444f0124896a4d193e3be22"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a></td></tr>
-<tr class="separator:a54e95a32f444f0124896a4d193e3be22"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a4e53ca7fd5a9c2b792ff0a8e048236d2"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a></td></tr>
-<tr class="separator:a4e53ca7fd5a9c2b792ff0a8e048236d2"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abc6f11edf20a71cbade3668e4bc66ed6"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a></td></tr>
-<tr class="separator:abc6f11edf20a71cbade3668e4bc66ed6"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ae6fb701de56577ab43263b5619604e86"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a></td></tr>
-<tr class="separator:ae6fb701de56577ab43263b5619604e86"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a69f5283bcb563038d1a8e35e2a2b028b"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a></td></tr>
-<tr class="separator:a69f5283bcb563038d1a8e35e2a2b028b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aacaeb063a21a237ac515607d689eebb8"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_service_registration_options_t</a></td></tr>
+<tr class="separator:aacaeb063a21a237ac515607d689eebb8"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a7eab80d54386fb32b91dd414846c2d45"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a></td></tr>
+<tr class="separator:a7eab80d54386fb32b91dd414846c2d45"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a5c017c82bf57881c04f8c6f545b25a75"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_service_tracking_options_t</a></td></tr>
+<tr class="separator:a5c017c82bf57881c04f8c6f545b25a75"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ae2da28d23f5246c20c6b675b80e7d130"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a></td></tr>
+<tr class="separator:ae2da28d23f5246c20c6b675b80e7d130"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a1b011b5fe49a718345698eeb359d0c3a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_tracking_options_t</a></td></tr>
+<tr class="separator:a1b011b5fe49a718345698eeb359d0c3a"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:aea7e7fcd4022db2f9f4123dd3b7a794a"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a></td></tr>
+<tr class="separator:aea7e7fcd4022db2f9f4123dd3b7a794a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
 Functions</h2></td></tr>
@@ -170,7 +158,7 @@
 <tr class="separator:a5bc54fd14871cc88ed887c8cea8f7b78"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3caa917285feaad580b61d4c0c8430a9"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a> (celix_bundle_context_t *ctx, celix_service_factory_t *factory, const char *serviceName, celix_properties_t *props)</td></tr>
 <tr class="separator:a3caa917285feaad580b61d4c0c8430a9"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abcde0edf5b4969bdd67831cff3db0a43"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a> *opts)</td></tr>
+<tr class="memitem:abcde0edf5b4969bdd67831cff3db0a43"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_service_registration_options_t</a> *opts)</td></tr>
 <tr class="separator:abcde0edf5b4969bdd67831cff3db0a43"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a1ebd82cb3d61aab769956d856293b9b9"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a> (celix_bundle_context_t *ctx, long serviceId)</td></tr>
 <tr class="separator:a1ebd82cb3d61aab769956d856293b9b9"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -178,15 +166,15 @@
 <tr class="separator:ac8322b5aa4adf9dcd8c288ce72a05414"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a96a901f0597f9d2accf073153d90344c"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a> (celix_bundle_context_t *ctx, const char *serviceName)</td></tr>
 <tr class="separator:a96a901f0597f9d2accf073153d90344c"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8cfbbb7e17cb4a825a525c547f72b4b0"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *opts)</td></tr>
+<tr class="memitem:a8cfbbb7e17cb4a825a525c547f72b4b0"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> *opts)</td></tr>
 <tr class="separator:a8cfbbb7e17cb4a825a525c547f72b4b0"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a41c34f8165addcbd0d65b4a0c23345d0"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *opts)</td></tr>
+<tr class="memitem:a41c34f8165addcbd0d65b4a0c23345d0"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> *opts)</td></tr>
 <tr class="separator:a41c34f8165addcbd0d65b4a0c23345d0"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a612409acf5453dbc370d93b784153d51"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*set)(void *handle, void *svc))</td></tr>
 <tr class="separator:a612409acf5453dbc370d93b784153d51"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a43e3bfd38ef956ffe861065e698a72e4"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*add)(void *handle, void *svc), void(*remove)(void *handle, void *svc))</td></tr>
 <tr class="separator:a43e3bfd38ef956ffe861065e698a72e4"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a27980e1631d4575cc45c6c6ba38c6f71"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a> *opts)</td></tr>
+<tr class="memitem:a27980e1631d4575cc45c6c6ba38c6f71"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_service_tracking_options_t</a> *opts)</td></tr>
 <tr class="separator:a27980e1631d4575cc45c6c6ba38c6f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3b4906a9e6fb34fe3ca5118539a81fc7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a> (celix_bundle_context_t *ctx, long trackerId)</td></tr>
 <tr class="separator:a3b4906a9e6fb34fe3ca5118539a81fc7"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -196,9 +184,9 @@
 <tr class="separator:ac36cdb8a06bb34f9371d7bb32953c69e"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a39270507a3766afbfcc9420c7270d262"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</td></tr>
 <tr class="separator:a39270507a3766afbfcc9420c7270d262"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a1e8a78de5f799d303231385b51085055"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *opts)</td></tr>
+<tr class="memitem:a1e8a78de5f799d303231385b51085055"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a> *opts)</td></tr>
 <tr class="separator:a1e8a78de5f799d303231385b51085055"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:ad1512520baedecad54a7bc307e0a6c7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *opts)</td></tr>
+<tr class="memitem:ad1512520baedecad54a7bc307e0a6c7b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a> *opts)</td></tr>
 <tr class="separator:ad1512520baedecad54a7bc307e0a6c7b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:afde9ed40231b5c3bbba19559e68e77f6"><td class="memItemLeft" align="right" valign="top">celix_array_list_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a> (celix_bundle_context_t *ctx)</td></tr>
 <tr class="separator:afde9ed40231b5c3bbba19559e68e77f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -214,13 +202,13 @@
 <tr class="separator:a8df4bfbc27c99736c0209ef130cff98f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3daf88ae43bb01e104f506c3a2dc8351"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a> (celix_bundle_context_t *ctx, void *callbackHandle, void(*onStarted)(void *handle, const celix_bundle_t *bundle), void(*onStopped)(void *handle, const celix_bundle_t *bundle))</td></tr>
 <tr class="separator:a3daf88ae43bb01e104f506c3a2dc8351"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa603acb136351b4135ce6a8c0b1fda71"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a> *opts)</td></tr>
+<tr class="memitem:aa603acb136351b4135ce6a8c0b1fda71"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a> (celix_bundle_context_t *ctx, const <a class="el" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_tracking_options_t</a> *opts)</td></tr>
 <tr class="separator:aa603acb136351b4135ce6a8c0b1fda71"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:abb3cedf5ffa7a326cef2af64a1094635"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a> (celix_bundle_context_t *ctx, long bundleId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</td></tr>
 <tr class="separator:abb3cedf5ffa7a326cef2af64a1094635"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a03a6d1c49c91c212ad7be115e1035840"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a> (celix_bundle_context_t *ctx, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</td></tr>
 <tr class="separator:a03a6d1c49c91c212ad7be115e1035840"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a80f61dd38b9da8447cd4f931779eaf16"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*trackerAdd)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a> *info), void(*trackerRemove)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a> *info))</td></tr>
+<tr class="memitem:a80f61dd38b9da8447cd4f931779eaf16"><td class="memItemLeft" align="right" valign="top">long&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a> (celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*trackerAdd)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a> *info), void(*trackerRemove)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a> *info))</td></tr>
 <tr class="separator:a80f61dd38b9da8447cd4f931779eaf16"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ac36566dcc477bb2c123e5124527090c1"><td class="memItemLeft" align="right" valign="top">celix_dependency_manager_t *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a> (celix_bundle_context_t *ctx)</td></tr>
 <tr class="separator:ac36566dcc477bb2c123e5124527090c1"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -236,7 +224,9 @@
 <tr class="separator:a41e6642ba1a739b5768911fa41e5d170"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Macro Definition Documentation</h2>
-<a class="anchor" id="a3c68ea824e7268d26852785ea92c777c"></a>
+<a id="a3c68ea824e7268d26852785ea92c777c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c68ea824e7268d26852785ea92c777c">&#9670;&nbsp;</a></span>CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -249,7 +239,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a7199f710ea1c193d361e8c151a92bc6a"></a>
+<a id="a7199f710ea1c193d361e8c151a92bc6a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7199f710ea1c193d361e8c151a92bc6a">&#9670;&nbsp;</a></span>CELIX_EMPTY_SERVICE_FILTER_OPTIONS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -262,7 +254,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a6020a7ba8712efd0847fdf28e74eb69c"></a>
+<a id="a6020a7ba8712efd0847fdf28e74eb69c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6020a7ba8712efd0847fdf28e74eb69c">&#9670;&nbsp;</a></span>CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -271,11 +265,19 @@
         </tr>
       </table>
 </div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">{ .svc = NULL, \</div><div class="line">    .factory = NULL, \</div><div class="line">    .serviceName = NULL, \</div><div class="line">    .properties = NULL, \</div><div class="line">    .serviceLanguage = NULL, \</div><div class="line">    .serviceVersion = NULL }</div></div><!-- fragment --><p>C Macro to create a empty celix_service_registration_options_t type. </p>
+<b>Value:</b><div class="fragment"><div class="line">    { .svc = NULL, \</div>
+<div class="line">    .factory = NULL, \</div>
+<div class="line">    .serviceName = NULL, \</div>
+<div class="line">    .properties = NULL, \</div>
+<div class="line">    .serviceLanguage = NULL, \</div>
+<div class="line">    .serviceVersion = NULL }</div>
+</div><!-- fragment --><p>C Macro to create a empty celix_service_registration_options_t type. </p>
 
 </div>
 </div>
-<a class="anchor" id="ae86a28f8d19f6c1e2951172335e0e909"></a>
+<a id="ae86a28f8d19f6c1e2951172335e0e909"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae86a28f8d19f6c1e2951172335e0e909">&#9670;&nbsp;</a></span>CELIX_EMPTY_SERVICE_TRACKING_OPTIONS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -284,11 +286,28 @@
         </tr>
       </table>
 </div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">{ .filter.serviceName = NULL, \</div><div class="line">    .filter.versionRange = NULL, \</div><div class="line">    .filter.filter = NULL, \</div><div class="line">    .filter.serviceLanguage = NULL, \</div><div class="line">    .filter.ignoreServiceLanguage = <span class="keyword">false</span>, \</div><div class="line">    .callbackHandle = NULL, \</div><div class="line">    .set = NULL, \</div><div class="line">    .add = NULL, \</div><div class="line">    .remove = NULL, \</div><div class="line">    .setWithProperties = NULL, \</div><div class="line">    .addWithProperties = NULL, \</div><div class="line">    .removeWithProperties = NULL, \</div><div class="line">    .setWithOwner = NULL, \</div><div class="line">    .addWithOwner = NULL, \</div><div class="line">    .removeWithOwner = NULL}</div></div><!-- fragment --><p>C Macro to create a empty celix_service_tracking_options_t type. </p>
+<b>Value:</b><div class="fragment"><div class="line">    { .filter.serviceName = NULL, \</div>
+<div class="line">    .filter.versionRange = NULL, \</div>
+<div class="line">    .filter.filter = NULL, \</div>
+<div class="line">    .filter.serviceLanguage = NULL, \</div>
+<div class="line">    .filter.ignoreServiceLanguage = <span class="keyword">false</span>, \</div>
+<div class="line">    .callbackHandle = NULL, \</div>
+<div class="line">    .set = NULL, \</div>
+<div class="line">    .add = NULL, \</div>
+<div class="line">    .remove = NULL, \</div>
+<div class="line">    .setWithProperties = NULL, \</div>
+<div class="line">    .addWithProperties = NULL, \</div>
+<div class="line">    .removeWithProperties = NULL, \</div>
+<div class="line">    .setWithOwner = NULL, \</div>
+<div class="line">    .addWithOwner = NULL, \</div>
+<div class="line">    .removeWithOwner = NULL}</div>
+</div><!-- fragment --><p>C Macro to create a empty celix_service_tracking_options_t type. </p>
 
 </div>
 </div>
-<a class="anchor" id="a6024cf4864950551fa9df01806a69865"></a>
+<a id="a6024cf4864950551fa9df01806a69865"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6024cf4864950551fa9df01806a69865">&#9670;&nbsp;</a></span>CELIX_EMPTY_SERVICE_USE_OPTIONS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -297,11 +316,22 @@
         </tr>
       </table>
 </div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">{.filter.serviceName = NULL, \</div><div class="line">    .filter.versionRange = NULL, \</div><div class="line">    .filter.filter = NULL, \</div><div class="line">    .filter.serviceLanguage = NULL, \</div><div class="line">    .waitTimeoutInSeconds = 0.0F, \</div><div class="line">    .callbackHandle = NULL, \</div><div class="line">    .use = NULL, \</div><div class="line">    .useWithProperties = NULL, \</div><div class="line">    .useWithOwner = NULL}</div></div><!-- fragment --><p>C Macro to create a empty celix_service_use_options_t type. </p>
+<b>Value:</b><div class="fragment"><div class="line">    {.filter.serviceName = NULL, \</div>
+<div class="line">    .filter.versionRange = NULL, \</div>
+<div class="line">    .filter.filter = NULL, \</div>
+<div class="line">    .filter.serviceLanguage = NULL, \</div>
+<div class="line">    .waitTimeoutInSeconds = 0.0F, \</div>
+<div class="line">    .callbackHandle = NULL, \</div>
+<div class="line">    .use = NULL, \</div>
+<div class="line">    .useWithProperties = NULL, \</div>
+<div class="line">    .useWithOwner = NULL}</div>
+</div><!-- fragment --><p>C Macro to create a empty celix_service_use_options_t type. </p>
 
 </div>
 </div>
-<a class="anchor" id="a8ebbfbe80221fe8adc8c3afbdceb570f"></a>
+<a id="a8ebbfbe80221fe8adc8c3afbdceb570f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ebbfbe80221fe8adc8c3afbdceb570f">&#9670;&nbsp;</a></span>OPTS_INIT</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -315,12 +345,14 @@
 </div>
 </div>
 <h2 class="groupheader">Typedef Documentation</h2>
-<a class="anchor" id="ae6fb701de56577ab43263b5619604e86"></a>
+<a id="a1b011b5fe49a718345698eeb359d0c3a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b011b5fe49a718345698eeb359d0c3a">&#9670;&nbsp;</a></span>celix_bundle_tracking_options_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>  <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a> <a class="el" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_tracking_options_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -328,12 +360,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a54e95a32f444f0124896a4d193e3be22"></a>
+<a id="a7eab80d54386fb32b91dd414846c2d45"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7eab80d54386fb32b91dd414846c2d45">&#9670;&nbsp;</a></span>celix_service_filter_options_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>  <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a> <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -341,12 +375,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a6bcc1ddc92a68053a0300553baa2e35a"></a>
+<a id="aacaeb063a21a237ac515607d689eebb8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aacaeb063a21a237ac515607d689eebb8">&#9670;&nbsp;</a></span>celix_service_registration_options_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>  <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a> <a class="el" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_service_registration_options_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -354,12 +390,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a69f5283bcb563038d1a8e35e2a2b028b"></a>
+<a id="aea7e7fcd4022db2f9f4123dd3b7a794a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aea7e7fcd4022db2f9f4123dd3b7a794a">&#9670;&nbsp;</a></span>celix_service_tracker_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>  <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a> <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -367,12 +405,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a4e53ca7fd5a9c2b792ff0a8e048236d2"></a>
+<a id="a5c017c82bf57881c04f8c6f545b25a75"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5c017c82bf57881c04f8c6f545b25a75">&#9670;&nbsp;</a></span>celix_service_tracking_options_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>  <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a> <a class="el" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_service_tracking_options_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -380,12 +420,14 @@
 
 </div>
 </div>
-<a class="anchor" id="abc6f11edf20a71cbade3668e4bc66ed6"></a>
+<a id="ae2da28d23f5246c20c6b675b80e7d130"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae2da28d23f5246c20c6b675b80e7d130">&#9670;&nbsp;</a></span>celix_service_use_options_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>  <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a> <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -394,7 +436,9 @@
 </div>
 </div>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ac8322b5aa4adf9dcd8c288ce72a05414"></a>
+<a id="ac8322b5aa4adf9dcd8c288ce72a05414"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac8322b5aa4adf9dcd8c288ce72a05414">&#9670;&nbsp;</a></span>celix_bundleContext_findService()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -429,7 +473,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a96a901f0597f9d2accf073153d90344c"></a>
+<a id="a96a901f0597f9d2accf073153d90344c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a96a901f0597f9d2accf073153d90344c">&#9670;&nbsp;</a></span>celix_bundleContext_findServices()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -464,7 +510,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a41c34f8165addcbd0d65b4a0c23345d0"></a>
+<a id="a41c34f8165addcbd0d65b4a0c23345d0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a41c34f8165addcbd0d65b4a0c23345d0">&#9670;&nbsp;</a></span>celix_bundleContext_findServicesWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -477,7 +525,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -499,7 +547,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8cfbbb7e17cb4a825a525c547f72b4b0"></a>
+<a id="a8cfbbb7e17cb4a825a525c547f72b4b0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8cfbbb7e17cb4a825a525c547f72b4b0">&#9670;&nbsp;</a></span>celix_bundleContext_findServiceWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -512,7 +562,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -534,7 +584,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3f7f55d1587f421f27518574a525ff63"></a>
+<a id="a3f7f55d1587f421f27518574a525ff63"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3f7f55d1587f421f27518574a525ff63">&#9670;&nbsp;</a></span>celix_bundleContext_getBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -551,7 +603,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac36566dcc477bb2c123e5124527090c1"></a>
+<a id="ac36566dcc477bb2c123e5124527090c1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac36566dcc477bb2c123e5124527090c1">&#9670;&nbsp;</a></span>celix_bundleContext_getDependencyManager()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -569,7 +623,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aa121100c5f5d03c0ccdda9c87286f7db"></a>
+<a id="aa121100c5f5d03c0ccdda9c87286f7db"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa121100c5f5d03c0ccdda9c87286f7db">&#9670;&nbsp;</a></span>celix_bundleContext_getProperty()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -609,7 +665,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a41e6642ba1a739b5768911fa41e5d170"></a>
+<a id="a41e6642ba1a739b5768911fa41e5d170"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a41e6642ba1a739b5768911fa41e5d170">&#9670;&nbsp;</a></span>celix_bundleContext_getPropertyAsBool()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -650,7 +708,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a92be7dd7985a890c4b92bcb8497e8b9f"></a>
+<a id="a92be7dd7985a890c4b92bcb8497e8b9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a92be7dd7985a890c4b92bcb8497e8b9f">&#9670;&nbsp;</a></span>celix_bundleContext_getPropertyAsDouble()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -691,7 +751,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a0ea27b2a81018583a464a10932cfae62"></a>
+<a id="a0ea27b2a81018583a464a10932cfae62"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ea27b2a81018583a464a10932cfae62">&#9670;&nbsp;</a></span>celix_bundleContext_getPropertyAsLong()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -732,7 +794,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a727ee2600c19ce2fd42b3b80b695c7f6"></a>
+<a id="a727ee2600c19ce2fd42b3b80b695c7f6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a727ee2600c19ce2fd42b3b80b695c7f6">&#9670;&nbsp;</a></span>celix_bundleContext_installBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -774,7 +838,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac7151f08ded1d7571867a44abe9f3531"></a>
+<a id="ac7151f08ded1d7571867a44abe9f3531"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac7151f08ded1d7571867a44abe9f3531">&#9670;&nbsp;</a></span>celix_bundleContext_isBundleInstalled()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -808,7 +874,9 @@
 
 </div>
 </div>
-<a class="anchor" id="afde9ed40231b5c3bbba19559e68e77f6"></a>
+<a id="afde9ed40231b5c3bbba19559e68e77f6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afde9ed40231b5c3bbba19559e68e77f6">&#9670;&nbsp;</a></span>celix_bundleContext_listBundles()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -832,7 +900,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a5bc54fd14871cc88ed887c8cea8f7b78"></a>
+<a id="a5bc54fd14871cc88ed887c8cea8f7b78"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5bc54fd14871cc88ed887c8cea8f7b78">&#9670;&nbsp;</a></span>celix_bundleContext_registerService()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -881,7 +951,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3caa917285feaad580b61d4c0c8430a9"></a>
+<a id="a3caa917285feaad580b61d4c0c8430a9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3caa917285feaad580b61d4c0c8430a9">&#9670;&nbsp;</a></span>celix_bundleContext_registerServiceFactory()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -931,7 +1003,9 @@
 
 </div>
 </div>
-<a class="anchor" id="abcde0edf5b4969bdd67831cff3db0a43"></a>
+<a id="abcde0edf5b4969bdd67831cff3db0a43"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abcde0edf5b4969bdd67831cff3db0a43">&#9670;&nbsp;</a></span>celix_bundleContext_registerServiceWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -944,7 +1018,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_service_registration_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_service_registration_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -966,7 +1040,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8df4bfbc27c99736c0209ef130cff98f"></a>
+<a id="a8df4bfbc27c99736c0209ef130cff98f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8df4bfbc27c99736c0209ef130cff98f">&#9670;&nbsp;</a></span>celix_bundleContext_startBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1001,7 +1077,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ad6e1553f9507d04c7a0ad91d067d479b"></a>
+<a id="ad6e1553f9507d04c7a0ad91d067d479b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad6e1553f9507d04c7a0ad91d067d479b">&#9670;&nbsp;</a></span>celix_bundleContext_stopBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1036,7 +1114,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3b4906a9e6fb34fe3ca5118539a81fc7"></a>
+<a id="a3b4906a9e6fb34fe3ca5118539a81fc7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3b4906a9e6fb34fe3ca5118539a81fc7">&#9670;&nbsp;</a></span>celix_bundleContext_stopTracker()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1064,7 +1144,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3daf88ae43bb01e104f506c3a2dc8351"></a>
+<a id="a3daf88ae43bb01e104f506c3a2dc8351"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3daf88ae43bb01e104f506c3a2dc8351">&#9670;&nbsp;</a></span>celix_bundleContext_trackBundles()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1113,7 +1195,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aa603acb136351b4135ce6a8c0b1fda71"></a>
+<a id="aa603acb136351b4135ce6a8c0b1fda71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa603acb136351b4135ce6a8c0b1fda71">&#9670;&nbsp;</a></span>celix_bundleContext_trackBundlesWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1126,7 +1210,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_tracking_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_tracking_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -1148,7 +1232,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a612409acf5453dbc370d93b784153d51"></a>
+<a id="a612409acf5453dbc370d93b784153d51"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a612409acf5453dbc370d93b784153d51">&#9670;&nbsp;</a></span>celix_bundleContext_trackService()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1197,7 +1283,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a43e3bfd38ef956ffe861065e698a72e4"></a>
+<a id="a43e3bfd38ef956ffe861065e698a72e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a43e3bfd38ef956ffe861065e698a72e4">&#9670;&nbsp;</a></span>celix_bundleContext_trackServices()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1253,7 +1341,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a27980e1631d4575cc45c6c6ba38c6f71"></a>
+<a id="a27980e1631d4575cc45c6c6ba38c6f71"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a27980e1631d4575cc45c6c6ba38c6f71">&#9670;&nbsp;</a></span>celix_bundleContext_trackServicesWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1266,7 +1356,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_service_tracking_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_service_tracking_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -1288,7 +1378,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a80f61dd38b9da8447cd4f931779eaf16"></a>
+<a id="a80f61dd38b9da8447cd4f931779eaf16"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a80f61dd38b9da8447cd4f931779eaf16">&#9670;&nbsp;</a></span>celix_bundleContext_trackServiceTrackers()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1313,13 +1405,13 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">void(*)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a> *info)&#160;</td>
+          <td class="paramtype">void(*)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a> *info)&#160;</td>
           <td class="paramname"><em>trackerAdd</em>, </td>
         </tr>
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">void(*)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_service_tracker_info_t</a> *info)&#160;</td>
+          <td class="paramtype">void(*)(void *handle, const <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a> *info)&#160;</td>
           <td class="paramname"><em>trackerRemove</em>&#160;</td>
         </tr>
         <tr>
@@ -1346,7 +1438,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a098adf1e9f65deb166110008bd4314dd"></a>
+<a id="a098adf1e9f65deb166110008bd4314dd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a098adf1e9f65deb166110008bd4314dd">&#9670;&nbsp;</a></span>celix_bundleContext_uninstallBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1381,7 +1475,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a1ebd82cb3d61aab769956d856293b9b9"></a>
+<a id="a1ebd82cb3d61aab769956d856293b9b9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1ebd82cb3d61aab769956d856293b9b9">&#9670;&nbsp;</a></span>celix_bundleContext_unregisterService()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1416,7 +1512,9 @@
 
 </div>
 </div>
-<a class="anchor" id="abb3cedf5ffa7a326cef2af64a1094635"></a>
+<a id="abb3cedf5ffa7a326cef2af64a1094635"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abb3cedf5ffa7a326cef2af64a1094635">&#9670;&nbsp;</a></span>celix_bundleContext_useBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1465,7 +1563,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a03a6d1c49c91c212ad7be115e1035840"></a>
+<a id="a03a6d1c49c91c212ad7be115e1035840"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a03a6d1c49c91c212ad7be115e1035840">&#9670;&nbsp;</a></span>celix_bundleContext_useBundles()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1506,7 +1606,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac36cdb8a06bb34f9371d7bb32953c69e"></a>
+<a id="ac36cdb8a06bb34f9371d7bb32953c69e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac36cdb8a06bb34f9371d7bb32953c69e">&#9670;&nbsp;</a></span>celix_bundleContext_useService()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1557,7 +1659,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a39270507a3766afbfcc9420c7270d262"></a>
+<a id="a39270507a3766afbfcc9420c7270d262"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a39270507a3766afbfcc9420c7270d262">&#9670;&nbsp;</a></span>celix_bundleContext_useServices()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1607,7 +1711,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ad1512520baedecad54a7bc307e0a6c7b"></a>
+<a id="ad1512520baedecad54a7bc307e0a6c7b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad1512520baedecad54a7bc307e0a6c7b">&#9670;&nbsp;</a></span>celix_bundleContext_useServicesWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1620,7 +1726,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -1643,7 +1749,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aec6e03faece0f8247de19d8c1527406d"></a>
+<a id="aec6e03faece0f8247de19d8c1527406d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aec6e03faece0f8247de19d8c1527406d">&#9670;&nbsp;</a></span>celix_bundleContext_useServiceWithId()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1701,7 +1809,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a1e8a78de5f799d303231385b51085055"></a>
+<a id="a1e8a78de5f799d303231385b51085055"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e8a78de5f799d303231385b51085055">&#9670;&nbsp;</a></span>celix_bundleContext_useServiceWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -1714,7 +1824,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_service_use_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -1743,7 +1853,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.map b/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.map
new file mode 100755
index 0000000..90e5ab2
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.map
@@ -0,0 +1,5 @@
+<map id="libs/framework/include/celix_bundle_context.h" name="libs/framework/include/celix_bundle_context.h">
+<area shape="rect" id="node1" title=" " alt="" coords="5,5,164,47"/>
+<area shape="rect" id="node2" href="$celix__api_8h.html" title=" " alt="" coords="9,184,160,225"/>
+<area shape="rect" id="node3" href="$celix__bundle__activator_8h.html" title=" " alt="" coords="62,95,227,136"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.md5 b/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.md5
new file mode 100755
index 0000000..47c28ab
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.md5
@@ -0,0 +1 @@
+dd319bdebb1db91655a65b4870aac46e
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.png b/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.png
new file mode 100755
index 0000000..137d564
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h__dep__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h__incl.map b/static/docs/2.2.1/html/celix__bundle__context_8h__incl.map
new file mode 100755
index 0000000..d37138f
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h__incl.map
@@ -0,0 +1,8 @@
+<map id="libs/framework/include/celix_bundle_context.h" name="libs/framework/include/celix_bundle_context.h">
+<area shape="rect" id="node1" title=" " alt="" coords="290,5,449,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" id="node3" title=" " alt="" coords="128,95,283,121"/>
+<area shape="rect" id="node4" title=" " alt="" coords="307,95,431,121"/>
+<area shape="rect" id="node5" title=" " alt="" coords="456,95,576,121"/>
+<area shape="rect" id="node6" title=" " alt="" coords="600,95,691,121"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h__incl.md5 b/static/docs/2.2.1/html/celix__bundle__context_8h__incl.md5
new file mode 100755
index 0000000..7bcc591
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h__incl.md5
@@ -0,0 +1 @@
+49b5d165f43bff07f95c230e7abbbbea
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h__incl.png b/static/docs/2.2.1/html/celix__bundle__context_8h__incl.png
new file mode 100755
index 0000000..5833dc7
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__bundle__context_8h_source.html b/static/docs/2.2.1/html/celix__bundle__context_8h_source.html
new file mode 100755
index 0000000..a0deac6
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__bundle__context_8h_source.html
@@ -0,0 +1,499 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_bundle_context.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_bundle_context.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__bundle__context_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#include &quot;celix_service_factory.h&quot;</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;celix_array_list.h&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;celix_filter.h&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160; </div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#ifndef CELIX_BUNDLE_CONTEXT_H_</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#define CELIX_BUNDLE_CONTEXT_H_</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160; </div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160;<span class="preprocessor">#define OPTS_INIT {}</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="preprocessor">#else</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="preprocessor">#define OPTS_INIT</span></div>
+<div class="line"><a name="l00041"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f">   41</a></span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">   52</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundleContext_registerService</a>(celix_bundle_context_t *ctx, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName, celix_properties_t *properties);</div>
+<div class="line"><a name="l00053"></a><span class="lineno">   53</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">   70</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a>(celix_bundle_context_t *ctx, celix_service_factory_t *factory, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName, celix_properties_t *props);</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
+<div class="line"><a name="l00075"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html">   75</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__registration__options.html">celix_service_registration_options</a> {</div>
+<div class="line"><a name="l00083"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">   83</a></span>&#160;    <span class="keywordtype">void</span> *svc <a class="code" href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">   99</a></span>&#160;    celix_service_factory_t *factory <a class="code" href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
+<div class="line"><a name="l00105"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">  105</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName <a class="code" href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00106"></a><span class="lineno">  106</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">  114</a></span>&#160;    celix_properties_t *properties <a class="code" href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">  119</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceLanguage <a class="code" href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
+<div class="line"><a name="l00128"></a><span class="lineno"><a class="line" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">  128</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceVersion <a class="code" href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">  129</a></span>&#160;} <a class="code" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_service_registration_options_t</a>;</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS { .svc = NULL, \</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c">  136</a></span>&#160;<span class="preprocessor">    .factory = NULL, \</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">    .serviceName = NULL, \</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160;<span class="preprocessor">    .properties = NULL, \</span></div>
+<div class="line"><a name="l00139"></a><span class="lineno">  139</span>&#160;<span class="preprocessor">    .serviceLanguage = NULL, \</span></div>
+<div class="line"><a name="l00140"></a><span class="lineno">  140</span>&#160;<span class="preprocessor">    .serviceVersion = NULL }</span></div>
+<div class="line"><a name="l00141"></a><span class="lineno">  141</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00142"></a><span class="lineno">  142</span>&#160; </div>
+<div class="line"><a name="l00143"></a><span class="lineno">  143</span>&#160; </div>
+<div class="line"><a name="l00151"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">  151</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__registration__options.html">celix_service_registration_options_t</a> *opts);</div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160; </div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">  163</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> serviceId);</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160; </div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160; </div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160; </div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160; </div>
+<div class="line"><a name="l00170"></a><span class="lineno">  170</span>&#160; </div>
+<div class="line"><a name="l00171"></a><span class="lineno">  171</span>&#160; </div>
+<div class="line"><a name="l00179"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">  179</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">celix_bundleContext_findService</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName);</div>
+<div class="line"><a name="l00180"></a><span class="lineno">  180</span>&#160; </div>
+<div class="line"><a name="l00188"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">  188</a></span>&#160;celix_array_list_t* <a class="code" href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName);</div>
+<div class="line"><a name="l00189"></a><span class="lineno">  189</span>&#160; </div>
+<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html">  193</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options</a> {</div>
+<div class="line"><a name="l00197"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">  197</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName <a class="code" href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00198"></a><span class="lineno">  198</span>&#160; </div>
+<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">  204</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* versionRange <a class="code" href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00205"></a><span class="lineno">  205</span>&#160; </div>
+<div class="line"><a name="l00210"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">  210</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* filter <a class="code" href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00211"></a><span class="lineno">  211</span>&#160; </div>
+<div class="line"><a name="l00215"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">  215</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceLanguage <a class="code" href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00216"></a><span class="lineno">  216</span>&#160; </div>
+<div class="line"><a name="l00217"></a><span class="lineno">  217</span>&#160; </div>
+<div class="line"><a name="l00222"></a><span class="lineno"><a class="line" href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">  222</a></span>&#160;    <span class="keywordtype">bool</span> ignoreServiceLanguage <a class="code" href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00223"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">  223</a></span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a>;</div>
+<div class="line"><a name="l00224"></a><span class="lineno">  224</span>&#160; </div>
+<div class="line"><a name="l00228"></a><span class="lineno">  228</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div>
+<div class="line"><a name="l00229"></a><span class="lineno">  229</span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_FILTER_OPTIONS {.serviceName = NULL, .versionRange = NULL, .filter = NULL, .serviceLanguage = NULL, .ignoreServiceLanguage = false}</span></div>
+<div class="line"><a name="l00230"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a">  230</a></span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00231"></a><span class="lineno">  231</span>&#160; </div>
+<div class="line"><a name="l00232"></a><span class="lineno">  232</span>&#160; </div>
+<div class="line"><a name="l00240"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">  240</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> *opts);</div>
+<div class="line"><a name="l00241"></a><span class="lineno">  241</span>&#160; </div>
+<div class="line"><a name="l00249"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">  249</a></span>&#160;celix_array_list_t* <a class="code" href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> *opts);</div>
+<div class="line"><a name="l00250"></a><span class="lineno">  250</span>&#160; </div>
+<div class="line"><a name="l00251"></a><span class="lineno">  251</span>&#160; </div>
+<div class="line"><a name="l00264"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">  264</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a>(</div>
+<div class="line"><a name="l00265"></a><span class="lineno">  265</span>&#160;        celix_bundle_context_t* ctx,</div>
+<div class="line"><a name="l00266"></a><span class="lineno">  266</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div>
+<div class="line"><a name="l00267"></a><span class="lineno">  267</span>&#160;        <span class="keywordtype">void</span>* callbackHandle,</div>
+<div class="line"><a name="l00268"></a><span class="lineno">  268</span>&#160;        <span class="keywordtype">void</span> (*set)(<span class="keywordtype">void</span>* handle, <span class="keywordtype">void</span>* svc)</div>
+<div class="line"><a name="l00269"></a><span class="lineno">  269</span>&#160;);</div>
+<div class="line"><a name="l00270"></a><span class="lineno">  270</span>&#160; </div>
+<div class="line"><a name="l00281"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">  281</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a>(</div>
+<div class="line"><a name="l00282"></a><span class="lineno">  282</span>&#160;        celix_bundle_context_t* ctx,</div>
+<div class="line"><a name="l00283"></a><span class="lineno">  283</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div>
+<div class="line"><a name="l00284"></a><span class="lineno">  284</span>&#160;        <span class="keywordtype">void</span>* callbackHandle,</div>
+<div class="line"><a name="l00285"></a><span class="lineno">  285</span>&#160;        <span class="keywordtype">void</span> (*add)(<span class="keywordtype">void</span>* handle, <span class="keywordtype">void</span>* svc),</div>
+<div class="line"><a name="l00286"></a><span class="lineno">  286</span>&#160;        <span class="keywordtype">void</span> (*remove)(<span class="keywordtype">void</span>* handle, <span class="keywordtype">void</span>* svc)</div>
+<div class="line"><a name="l00287"></a><span class="lineno">  287</span>&#160;);</div>
+<div class="line"><a name="l00288"></a><span class="lineno">  288</span>&#160; </div>
+<div class="line"><a name="l00292"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html">  292</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a> {</div>
+<div class="line"><a name="l00296"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">  296</a></span>&#160;    <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> filter <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00297"></a><span class="lineno">  297</span>&#160; </div>
+<div class="line"><a name="l00301"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">  301</a></span>&#160;    <span class="keywordtype">void</span>* callbackHandle <a class="code" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00302"></a><span class="lineno">  302</span>&#160; </div>
+<div class="line"><a name="l00309"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da">  309</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da">set</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00310"></a><span class="lineno">  310</span>&#160; </div>
+<div class="line"><a name="l00315"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172">  315</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172">setWithProperties</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>; <span class="comment">//highest ranking</span></div>
+<div class="line"><a name="l00316"></a><span class="lineno">  316</span>&#160; </div>
+<div class="line"><a name="l00321"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59">  321</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59">setWithOwner</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>; <span class="comment">//highest ranking</span></div>
+<div class="line"><a name="l00322"></a><span class="lineno">  322</span>&#160; </div>
+<div class="line"><a name="l00329"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815">  329</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815">add</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00330"></a><span class="lineno">  330</span>&#160; </div>
+<div class="line"><a name="l00335"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c">  335</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c">addWithProperties</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00336"></a><span class="lineno">  336</span>&#160; </div>
+<div class="line"><a name="l00341"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6">  341</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6">addWithOwner</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00342"></a><span class="lineno">  342</span>&#160; </div>
+<div class="line"><a name="l00352"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">  352</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">remove</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00353"></a><span class="lineno">  353</span>&#160; </div>
+<div class="line"><a name="l00358"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a">  358</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a">removeWithProperties</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00359"></a><span class="lineno">  359</span>&#160; </div>
+<div class="line"><a name="l00364"></a><span class="lineno"><a class="line" href="structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1">  364</a></span>&#160;    void (*<a class="code" href="structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1">removeWithOwner</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) <a class="code" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00365"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">  365</a></span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_service_tracking_options_t</a>;</div>
+<div class="line"><a name="l00366"></a><span class="lineno">  366</span>&#160; </div>
+<div class="line"><a name="l00370"></a><span class="lineno">  370</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div>
+<div class="line"><a name="l00371"></a><span class="lineno">  371</span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_TRACKING_OPTIONS { .filter.serviceName = NULL, \</span></div>
+<div class="line"><a name="l00372"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909">  372</a></span>&#160;<span class="preprocessor">    .filter.versionRange = NULL, \</span></div>
+<div class="line"><a name="l00373"></a><span class="lineno">  373</span>&#160;<span class="preprocessor">    .filter.filter = NULL, \</span></div>
+<div class="line"><a name="l00374"></a><span class="lineno">  374</span>&#160;<span class="preprocessor">    .filter.serviceLanguage = NULL, \</span></div>
+<div class="line"><a name="l00375"></a><span class="lineno">  375</span>&#160;<span class="preprocessor">    .filter.ignoreServiceLanguage = false, \</span></div>
+<div class="line"><a name="l00376"></a><span class="lineno">  376</span>&#160;<span class="preprocessor">    .callbackHandle = NULL, \</span></div>
+<div class="line"><a name="l00377"></a><span class="lineno">  377</span>&#160;<span class="preprocessor">    .set = NULL, \</span></div>
+<div class="line"><a name="l00378"></a><span class="lineno">  378</span>&#160;<span class="preprocessor">    .add = NULL, \</span></div>
+<div class="line"><a name="l00379"></a><span class="lineno">  379</span>&#160;<span class="preprocessor">    .remove = NULL, \</span></div>
+<div class="line"><a name="l00380"></a><span class="lineno">  380</span>&#160;<span class="preprocessor">    .setWithProperties = NULL, \</span></div>
+<div class="line"><a name="l00381"></a><span class="lineno">  381</span>&#160;<span class="preprocessor">    .addWithProperties = NULL, \</span></div>
+<div class="line"><a name="l00382"></a><span class="lineno">  382</span>&#160;<span class="preprocessor">    .removeWithProperties = NULL, \</span></div>
+<div class="line"><a name="l00383"></a><span class="lineno">  383</span>&#160;<span class="preprocessor">    .setWithOwner = NULL, \</span></div>
+<div class="line"><a name="l00384"></a><span class="lineno">  384</span>&#160;<span class="preprocessor">    .addWithOwner = NULL, \</span></div>
+<div class="line"><a name="l00385"></a><span class="lineno">  385</span>&#160;<span class="preprocessor">    .removeWithOwner = NULL}</span></div>
+<div class="line"><a name="l00386"></a><span class="lineno">  386</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00387"></a><span class="lineno">  387</span>&#160; </div>
+<div class="line"><a name="l00396"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">  396</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <a class="code" href="structcelix__service__tracking__options.html">celix_service_tracking_options_t</a> *opts);</div>
+<div class="line"><a name="l00397"></a><span class="lineno">  397</span>&#160; </div>
+<div class="line"><a name="l00405"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">  405</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> trackerId);</div>
+<div class="line"><a name="l00406"></a><span class="lineno">  406</span>&#160; </div>
+<div class="line"><a name="l00407"></a><span class="lineno">  407</span>&#160; </div>
+<div class="line"><a name="l00408"></a><span class="lineno">  408</span>&#160; </div>
+<div class="line"><a name="l00409"></a><span class="lineno">  409</span>&#160; </div>
+<div class="line"><a name="l00410"></a><span class="lineno">  410</span>&#160; </div>
+<div class="line"><a name="l00411"></a><span class="lineno">  411</span>&#160; </div>
+<div class="line"><a name="l00429"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">  429</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundleContext_useServiceWithId</a>(</div>
+<div class="line"><a name="l00430"></a><span class="lineno">  430</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00431"></a><span class="lineno">  431</span>&#160;        <span class="keywordtype">long</span> serviceId,</div>
+<div class="line"><a name="l00432"></a><span class="lineno">  432</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName <span class="comment">/*sanity check*/</span>,</div>
+<div class="line"><a name="l00433"></a><span class="lineno">  433</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div>
+<div class="line"><a name="l00434"></a><span class="lineno">  434</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* svc)</div>
+<div class="line"><a name="l00435"></a><span class="lineno">  435</span>&#160;);</div>
+<div class="line"><a name="l00436"></a><span class="lineno">  436</span>&#160; </div>
+<div class="line"><a name="l00453"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">  453</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundleContext_useService</a>(</div>
+<div class="line"><a name="l00454"></a><span class="lineno">  454</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00455"></a><span class="lineno">  455</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div>
+<div class="line"><a name="l00456"></a><span class="lineno">  456</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div>
+<div class="line"><a name="l00457"></a><span class="lineno">  457</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc)</div>
+<div class="line"><a name="l00458"></a><span class="lineno">  458</span>&#160;);</div>
+<div class="line"><a name="l00459"></a><span class="lineno">  459</span>&#160; </div>
+<div class="line"><a name="l00475"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">  475</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a>(</div>
+<div class="line"><a name="l00476"></a><span class="lineno">  476</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00477"></a><span class="lineno">  477</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName,</div>
+<div class="line"><a name="l00478"></a><span class="lineno">  478</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div>
+<div class="line"><a name="l00479"></a><span class="lineno">  479</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc)</div>
+<div class="line"><a name="l00480"></a><span class="lineno">  480</span>&#160;);</div>
+<div class="line"><a name="l00481"></a><span class="lineno">  481</span>&#160; </div>
+<div class="line"><a name="l00485"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html">  485</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__use__options.html">celix_service_use_options</a> {</div>
+<div class="line"><a name="l00489"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">  489</a></span>&#160;    <a class="code" href="structcelix__service__filter__options.html">celix_service_filter_options_t</a> filter <a class="code" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00490"></a><span class="lineno">  490</span>&#160; </div>
+<div class="line"><a name="l00496"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">  496</a></span>&#160;     <span class="keywordtype">double</span> waitTimeoutInSeconds <a class="code" href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00497"></a><span class="lineno">  497</span>&#160; </div>
+<div class="line"><a name="l00501"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">  501</a></span>&#160;    <span class="keywordtype">void</span> *callbackHandle <a class="code" href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00502"></a><span class="lineno">  502</span>&#160; </div>
+<div class="line"><a name="l00510"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">  510</a></span>&#160;    void (*<a class="code" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">use</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc) <a class="code" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00511"></a><span class="lineno">  511</span>&#160; </div>
+<div class="line"><a name="l00516"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867">  516</a></span>&#160;    void (*<a class="code" href="structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867">useWithProperties</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props) <a class="code" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00517"></a><span class="lineno">  517</span>&#160; </div>
+<div class="line"><a name="l00522"></a><span class="lineno"><a class="line" href="structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5">  522</a></span>&#160;    void (*<a class="code" href="structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5">useWithOwner</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span> *svc, <span class="keyword">const</span> celix_properties_t *props, <span class="keyword">const</span> celix_bundle_t *svcOwner) <a class="code" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00523"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">  523</a></span>&#160;} <a class="code" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a>;</div>
+<div class="line"><a name="l00524"></a><span class="lineno">  524</span>&#160; </div>
+<div class="line"><a name="l00528"></a><span class="lineno">  528</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div>
+<div class="line"><a name="l00529"></a><span class="lineno">  529</span>&#160;<span class="preprocessor">#define CELIX_EMPTY_SERVICE_USE_OPTIONS {.filter.serviceName = NULL, \</span></div>
+<div class="line"><a name="l00530"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865">  530</a></span>&#160;<span class="preprocessor">    .filter.versionRange = NULL, \</span></div>
+<div class="line"><a name="l00531"></a><span class="lineno">  531</span>&#160;<span class="preprocessor">    .filter.filter = NULL, \</span></div>
+<div class="line"><a name="l00532"></a><span class="lineno">  532</span>&#160;<span class="preprocessor">    .filter.serviceLanguage = NULL, \</span></div>
+<div class="line"><a name="l00533"></a><span class="lineno">  533</span>&#160;<span class="preprocessor">    .waitTimeoutInSeconds = 0.0F, \</span></div>
+<div class="line"><a name="l00534"></a><span class="lineno">  534</span>&#160;<span class="preprocessor">    .callbackHandle = NULL, \</span></div>
+<div class="line"><a name="l00535"></a><span class="lineno">  535</span>&#160;<span class="preprocessor">    .use = NULL, \</span></div>
+<div class="line"><a name="l00536"></a><span class="lineno">  536</span>&#160;<span class="preprocessor">    .useWithProperties = NULL, \</span></div>
+<div class="line"><a name="l00537"></a><span class="lineno">  537</span>&#160;<span class="preprocessor">    .useWithOwner = NULL}</span></div>
+<div class="line"><a name="l00538"></a><span class="lineno">  538</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00539"></a><span class="lineno">  539</span>&#160; </div>
+<div class="line"><a name="l00554"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">  554</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a>(</div>
+<div class="line"><a name="l00555"></a><span class="lineno">  555</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00556"></a><span class="lineno">  556</span>&#160;        <span class="keyword">const</span> <a class="code" href="structcelix__service__use__options.html">celix_service_use_options_t</a> *opts);</div>
+<div class="line"><a name="l00557"></a><span class="lineno">  557</span>&#160; </div>
+<div class="line"><a name="l00558"></a><span class="lineno">  558</span>&#160; </div>
+<div class="line"><a name="l00572"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">  572</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a>(</div>
+<div class="line"><a name="l00573"></a><span class="lineno">  573</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00574"></a><span class="lineno">  574</span>&#160;        <span class="keyword">const</span> <a class="code" href="structcelix__service__use__options.html">celix_service_use_options_t</a> *opts);</div>
+<div class="line"><a name="l00575"></a><span class="lineno">  575</span>&#160; </div>
+<div class="line"><a name="l00576"></a><span class="lineno">  576</span>&#160; </div>
+<div class="line"><a name="l00577"></a><span class="lineno">  577</span>&#160; </div>
+<div class="line"><a name="l00578"></a><span class="lineno">  578</span>&#160; </div>
+<div class="line"><a name="l00586"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">  586</a></span>&#160;celix_array_list_t* <a class="code" href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a>(celix_bundle_context_t *ctx);</div>
+<div class="line"><a name="l00587"></a><span class="lineno">  587</span>&#160; </div>
+<div class="line"><a name="l00594"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">  594</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundleContext_isBundleInstalled</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bndId);</div>
+<div class="line"><a name="l00595"></a><span class="lineno">  595</span>&#160; </div>
+<div class="line"><a name="l00596"></a><span class="lineno">  596</span>&#160; </div>
+<div class="line"><a name="l00606"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">  606</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundleContext_installBundle</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *bundleLoc, <span class="keywordtype">bool</span> autoStart);</div>
+<div class="line"><a name="l00607"></a><span class="lineno">  607</span>&#160; </div>
+<div class="line"><a name="l00616"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">  616</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundleContext_uninstallBundle</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bundleId);</div>
+<div class="line"><a name="l00617"></a><span class="lineno">  617</span>&#160; </div>
+<div class="line"><a name="l00626"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">  626</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundleContext_stopBundle</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bundleId);</div>
+<div class="line"><a name="l00627"></a><span class="lineno">  627</span>&#160; </div>
+<div class="line"><a name="l00636"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">  636</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundleContext_startBundle</a>(celix_bundle_context_t *ctx, <span class="keywordtype">long</span> bundleId);</div>
+<div class="line"><a name="l00637"></a><span class="lineno">  637</span>&#160; </div>
+<div class="line"><a name="l00648"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">  648</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a>(</div>
+<div class="line"><a name="l00649"></a><span class="lineno">  649</span>&#160;        celix_bundle_context_t* ctx,</div>
+<div class="line"><a name="l00650"></a><span class="lineno">  650</span>&#160;        <span class="keywordtype">void</span>* callbackHandle,</div>
+<div class="line"><a name="l00651"></a><span class="lineno">  651</span>&#160;        <span class="keywordtype">void</span> (*onStarted)(<span class="keywordtype">void</span>* handle, <span class="keyword">const</span> celix_bundle_t *bundle),</div>
+<div class="line"><a name="l00652"></a><span class="lineno">  652</span>&#160;        <span class="keywordtype">void</span> (*onStopped)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle)</div>
+<div class="line"><a name="l00653"></a><span class="lineno">  653</span>&#160;);</div>
+<div class="line"><a name="l00654"></a><span class="lineno">  654</span>&#160; </div>
+<div class="line"><a name="l00655"></a><span class="lineno">  655</span>&#160; </div>
+<div class="line"><a name="l00659"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html">  659</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a> {</div>
+<div class="line"><a name="l00663"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">  663</a></span>&#160;    <span class="keywordtype">void</span>* callbackHandle <a class="code" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00664"></a><span class="lineno">  664</span>&#160; </div>
+<div class="line"><a name="l00671"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb">  671</a></span>&#160;    void (*<a class="code" href="structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb">onStarted</a>)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle) <a class="code" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">OPTS_INIT</a>; <span class="comment">//highest ranking</span></div>
+<div class="line"><a name="l00672"></a><span class="lineno">  672</span>&#160; </div>
+<div class="line"><a name="l00679"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492">  679</a></span>&#160;    void (*<a class="code" href="structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492">onStopped</a>)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle) <a class="code" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00680"></a><span class="lineno">  680</span>&#160; </div>
+<div class="line"><a name="l00681"></a><span class="lineno">  681</span>&#160;    <span class="comment">//TODO callback for on installed, resolved, uninstalled ??</span></div>
+<div class="line"><a name="l00682"></a><span class="lineno">  682</span>&#160; </div>
+<div class="line"><a name="l00688"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">  688</a></span>&#160;    void (*<a class="code" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">onBundleEvent</a>)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_event_t *event) <a class="code" href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00689"></a><span class="lineno">  689</span>&#160; </div>
+<div class="line"><a name="l00694"></a><span class="lineno"><a class="line" href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">  694</a></span>&#160;    <span class="keywordtype">bool</span> includeFrameworkBundle <a class="code" href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">OPTS_INIT</a>;</div>
+<div class="line"><a name="l00695"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">  695</a></span>&#160;} <a class="code" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_tracking_options_t</a>;</div>
+<div class="line"><a name="l00696"></a><span class="lineno">  696</span>&#160; </div>
+<div class="line"><a name="l00700"></a><span class="lineno">  700</span>&#160;<span class="preprocessor">#ifndef __cplusplus</span></div>
+<div class="line"><a name="l00701"></a><span class="lineno">  701</span>&#160;<span class="preprocessor">#define CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS {.callbackHandle = NULL, .onStarted = NULL, .onStopped = NULL, .onBundleEvent = NULL}</span></div>
+<div class="line"><a name="l00702"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c">  702</a></span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00703"></a><span class="lineno">  703</span>&#160; </div>
+<div class="line"><a name="l00713"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">  713</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a>(</div>
+<div class="line"><a name="l00714"></a><span class="lineno">  714</span>&#160;        celix_bundle_context_t* ctx,</div>
+<div class="line"><a name="l00715"></a><span class="lineno">  715</span>&#160;        <span class="keyword">const</span> <a class="code" href="structcelix__bundle__tracker__options.html">celix_bundle_tracking_options_t</a> *opts</div>
+<div class="line"><a name="l00716"></a><span class="lineno">  716</span>&#160;);</div>
+<div class="line"><a name="l00717"></a><span class="lineno">  717</span>&#160; </div>
+<div class="line"><a name="l00729"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">  729</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a>(</div>
+<div class="line"><a name="l00730"></a><span class="lineno">  730</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00731"></a><span class="lineno">  731</span>&#160;        <span class="keywordtype">long</span> bundleId,</div>
+<div class="line"><a name="l00732"></a><span class="lineno">  732</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div>
+<div class="line"><a name="l00733"></a><span class="lineno">  733</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle)</div>
+<div class="line"><a name="l00734"></a><span class="lineno">  734</span>&#160;);</div>
+<div class="line"><a name="l00735"></a><span class="lineno">  735</span>&#160; </div>
+<div class="line"><a name="l00745"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">  745</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a>(</div>
+<div class="line"><a name="l00746"></a><span class="lineno">  746</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00747"></a><span class="lineno">  747</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div>
+<div class="line"><a name="l00748"></a><span class="lineno">  748</span>&#160;        <span class="keywordtype">void</span> (*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bundle)</div>
+<div class="line"><a name="l00749"></a><span class="lineno">  749</span>&#160;);</div>
+<div class="line"><a name="l00750"></a><span class="lineno">  750</span>&#160; </div>
+<div class="line"><a name="l00751"></a><span class="lineno">  751</span>&#160; </div>
+<div class="line"><a name="l00752"></a><span class="lineno">  752</span>&#160; </div>
+<div class="line"><a name="l00753"></a><span class="lineno">  753</span>&#160;<span class="comment">//TODO add useBundleWithOptions (e.g. which state)</span></div>
+<div class="line"><a name="l00754"></a><span class="lineno">  754</span>&#160;<span class="comment">//TODO findBundles</span></div>
+<div class="line"><a name="l00755"></a><span class="lineno">  755</span>&#160; </div>
+<div class="line"><a name="l00759"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html">  759</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a> {</div>
+<div class="line"><a name="l00763"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">  763</a></span>&#160;    celix_filter_t *<a class="code" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">filter</a>;</div>
+<div class="line"><a name="l00764"></a><span class="lineno">  764</span>&#160; </div>
+<div class="line"><a name="l00768"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">  768</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">serviceName</a>;</div>
+<div class="line"><a name="l00769"></a><span class="lineno">  769</span>&#160; </div>
+<div class="line"><a name="l00773"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">  773</a></span>&#160;    <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">serviceLanguage</a>;</div>
+<div class="line"><a name="l00774"></a><span class="lineno">  774</span>&#160; </div>
+<div class="line"><a name="l00778"></a><span class="lineno"><a class="line" href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">  778</a></span>&#160;    <span class="keywordtype">long</span> <a class="code" href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">bundleId</a>;</div>
+<div class="line"><a name="l00779"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">  779</a></span>&#160;} <a class="code" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a>;</div>
+<div class="line"><a name="l00780"></a><span class="lineno">  780</span>&#160; </div>
+<div class="line"><a name="l00798"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">  798</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a>(</div>
+<div class="line"><a name="l00799"></a><span class="lineno">  799</span>&#160;        celix_bundle_context_t *ctx,</div>
+<div class="line"><a name="l00800"></a><span class="lineno">  800</span>&#160;        <span class="keyword">const</span> <span class="keywordtype">char</span> *serviceName,</div>
+<div class="line"><a name="l00801"></a><span class="lineno">  801</span>&#160;        <span class="keywordtype">void</span> *callbackHandle,</div>
+<div class="line"><a name="l00802"></a><span class="lineno">  802</span>&#160;        <span class="keywordtype">void</span> (*trackerAdd)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> <a class="code" href="structcelix__service__tracker__info.html">celix_service_tracker_info_t</a> *info),</div>
+<div class="line"><a name="l00803"></a><span class="lineno">  803</span>&#160;        <span class="keywordtype">void</span> (*trackerRemove)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> <a class="code" href="structcelix__service__tracker__info.html">celix_service_tracker_info_t</a> *info));</div>
+<div class="line"><a name="l00804"></a><span class="lineno">  804</span>&#160; </div>
+<div class="line"><a name="l00810"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">  810</a></span>&#160;celix_dependency_manager_t* <a class="code" href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a>(celix_bundle_context_t *ctx);</div>
+<div class="line"><a name="l00811"></a><span class="lineno">  811</span>&#160; </div>
+<div class="line"><a name="l00812"></a><span class="lineno">  812</span>&#160; </div>
+<div class="line"><a name="l00816"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">  816</a></span>&#160;celix_bundle_t* <a class="code" href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundleContext_getBundle</a>(celix_bundle_context_t *ctx);</div>
+<div class="line"><a name="l00817"></a><span class="lineno">  817</span>&#160; </div>
+<div class="line"><a name="l00818"></a><span class="lineno">  818</span>&#160; </div>
+<div class="line"><a name="l00825"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">  825</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundleContext_getProperty</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keyword">const</span> <span class="keywordtype">char</span> *defaultVal);</div>
+<div class="line"><a name="l00826"></a><span class="lineno">  826</span>&#160; </div>
+<div class="line"><a name="l00835"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">  835</a></span>&#160;<span class="keywordtype">long</span> <a class="code" href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundleContext_getPropertyAsLong</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">long</span> defaultValue);</div>
+<div class="line"><a name="l00836"></a><span class="lineno">  836</span>&#160; </div>
+<div class="line"><a name="l00845"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">  845</a></span>&#160;<span class="keywordtype">double</span> <a class="code" href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundleContext_getPropertyAsDouble</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">double</span> defaultValue);</div>
+<div class="line"><a name="l00846"></a><span class="lineno">  846</span>&#160; </div>
+<div class="line"><a name="l00855"></a><span class="lineno"><a class="line" href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">  855</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundleContext_getPropertyAsBool</a>(celix_bundle_context_t *ctx, <span class="keyword">const</span> <span class="keywordtype">char</span> *key, <span class="keywordtype">bool</span> defaultValue);</div>
+<div class="line"><a name="l00856"></a><span class="lineno">  856</span>&#160; </div>
+<div class="line"><a name="l00857"></a><span class="lineno">  857</span>&#160;<span class="comment">//TODO getPropertyAs for int, uint, ulong, bool, etc</span></div>
+<div class="line"><a name="l00858"></a><span class="lineno">  858</span>&#160; </div>
+<div class="line"><a name="l00859"></a><span class="lineno">  859</span>&#160;<span class="preprocessor">#undef OPTS_INIT</span></div>
+<div class="line"><a name="l00860"></a><span class="lineno">  860</span>&#160; </div>
+<div class="line"><a name="l00861"></a><span class="lineno">  861</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00862"></a><span class="lineno">  862</span>&#160;}</div>
+<div class="line"><a name="l00863"></a><span class="lineno">  863</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00864"></a><span class="lineno">  864</span>&#160; </div>
+<div class="line"><a name="l00865"></a><span class="lineno">  865</span>&#160;<span class="preprocessor">#endif //CELIX_BUNDLE_CONTEXT_H_</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="astructcelix__service__registration__options_html_af9b1a622c06a3053ed3917649241fc23"><div class="ttname"><a href="structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceVersion OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:128</div></div>
+<div class="ttc" id="astructcelix__service__filter__options_html_a65bea04c378ef46d841046ffbb2f805c"><div class="ttname"><a href="structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *versionRange OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:204</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a80f61dd38b9da8447cd4f931779eaf16"><div class="ttname"><a href="celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16">celix_bundleContext_trackServiceTrackers</a></div><div class="ttdeci">long celix_bundleContext_trackServiceTrackers(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*trackerAdd)(void *handle, const celix_service_tracker_info_t *info), void(*trackerRemove)(void *handle, const celix_service_tracker_info_t *info))</div></div>
+<div class="ttc" id="astructcelix__service__filter__options_html_ac15f30b81e60826290a29fb12da6684a"><div class="ttname"><a href="structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:210</div></div>
+<div class="ttc" id="astructcelix__bundle__tracker__options_html_a044b58b6aa64edfd3f49921fdf6756bb"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb">celix_bundle_tracker_options::onStarted</a></div><div class="ttdeci">void(* onStarted)(void *handle, const celix_bundle_t *bundle) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:671</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a612409acf5453dbc370d93b784153d51"><div class="ttname"><a href="celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51">celix_bundleContext_trackService</a></div><div class="ttdeci">long celix_bundleContext_trackService(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*set)(void *handle, void *svc))</div></div>
+<div class="ttc" id="astructcelix__service__registration__options_html"><div class="ttname"><a href="structcelix__service__registration__options.html">celix_service_registration_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:75</div></div>
+<div class="ttc" id="astructcelix__service__registration__options_html_a94eb8e6e1af0cca435d99aa5d2457fca"><div class="ttname"><a href="structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_factory_t *factory OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:99</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a3daf88ae43bb01e104f506c3a2dc8351"><div class="ttname"><a href="celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351">celix_bundleContext_trackBundles</a></div><div class="ttdeci">long celix_bundleContext_trackBundles(celix_bundle_context_t *ctx, void *callbackHandle, void(*onStarted)(void *handle, const celix_bundle_t *bundle), void(*onStopped)(void *handle, const celix_bundle_t *bundle))</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ac36cdb8a06bb34f9371d7bb32953c69e"><div class="ttname"><a href="celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e">celix_bundleContext_useService</a></div><div class="ttdeci">bool celix_bundleContext_useService(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_aa121100c5f5d03c0ccdda9c87286f7db"><div class="ttname"><a href="celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db">celix_bundleContext_getProperty</a></div><div class="ttdeci">const char * celix_bundleContext_getProperty(celix_bundle_context_t *ctx, const char *key, const char *defaultVal)</div></div>
+<div class="ttc" id="astructcelix__bundle__tracker__options_html_aae47b1896e9b058f9a43d26246241398"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">celix_bundle_tracker_options::onBundleEvent</a></div><div class="ttdeci">void(* onBundleEvent)(void *handle, const celix_bundle_event_t *event) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:688</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a43e3bfd38ef956ffe861065e698a72e4"><div class="ttname"><a href="celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4">celix_bundleContext_trackServices</a></div><div class="ttdeci">long celix_bundleContext_trackServices(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*add)(void *handle, void *svc), void(*remove)(void *handle, void *svc))</div></div>
+<div class="ttc" id="astructcelix__service__registration__options_html_ae44ee7cc15427e406a67b0396201700c"><div class="ttname"><a href="structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:119</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a2fcaf1b7274379695cc9a4bb1c719d86"><div class="ttname"><a href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">celix_service_tracking_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:301</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a27980e1631d4575cc45c6c6ba38c6f71"><div class="ttname"><a href="celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71">celix_bundleContext_trackServicesWithOptions</a></div><div class="ttdeci">long celix_bundleContext_trackServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_tracking_options_t *opts)</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_aa9e8b9cae7ea59ddb796a6bc904f57da"><div class="ttname"><a href="structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da">celix_service_tracking_options::set</a></div><div class="ttdeci">void(* set)(void *handle, void *svc) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:309</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a3f7f55d1587f421f27518574a525ff63"><div class="ttname"><a href="celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63">celix_bundleContext_getBundle</a></div><div class="ttdeci">celix_bundle_t * celix_bundleContext_getBundle(celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="astructcelix__bundle__tracker__options_html"><div class="ttname"><a href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:659</div></div>
+<div class="ttc" id="astructcelix__service__registration__options_html_a9c24c1179305b68840149449b1fa6d87"><div class="ttname"><a href="structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">void *svc OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:83</div></div>
+<div class="ttc" id="astructcelix__service__registration__options_html_a6e1274cc3b190b3dc05c7c145f57d407"><div class="ttname"><a href="structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">celix_properties_t *properties OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:114</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_aacaeb063a21a237ac515607d689eebb8"><div class="ttname"><a href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_service_registration_options_t</a></div><div class="ttdeci">struct celix_service_registration_options celix_service_registration_options_t</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a8cfbbb7e17cb4a825a525c547f72b4b0"><div class="ttname"><a href="celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0">celix_bundleContext_findServiceWithOptions</a></div><div class="ttdeci">long celix_bundleContext_findServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_filter_options_t *opts)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ad1512520baedecad54a7bc307e0a6c7b"><div class="ttname"><a href="celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b">celix_bundleContext_useServicesWithOptions</a></div><div class="ttdeci">void celix_bundleContext_useServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_use_options_t *opts)</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a4f80c99b050b1e49663cab329848364c"><div class="ttname"><a href="structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c">celix_service_tracking_options::addWithProperties</a></div><div class="ttdeci">void(* addWithProperties)(void *handle, void *svc, const celix_properties_t *props) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:335</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a8df4bfbc27c99736c0209ef130cff98f"><div class="ttname"><a href="celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f">celix_bundleContext_startBundle</a></div><div class="ttdeci">bool celix_bundleContext_startBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_abcde0edf5b4969bdd67831cff3db0a43"><div class="ttname"><a href="celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43">celix_bundleContext_registerServiceWithOptions</a></div><div class="ttdeci">long celix_bundleContext_registerServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_registration_options_t *opts)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a098adf1e9f65deb166110008bd4314dd"><div class="ttname"><a href="celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd">celix_bundleContext_uninstallBundle</a></div><div class="ttdeci">bool celix_bundleContext_uninstallBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ae2da28d23f5246c20c6b675b80e7d130"><div class="ttname"><a href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_service_use_options_t</a></div><div class="ttdeci">struct celix_service_use_options celix_service_use_options_t</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a8445caaae53d71a47c0289d2e3e5f882"><div class="ttname"><a href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">celix_service_tracking_options::remove</a></div><div class="ttdeci">void(* remove)(void *handle, void *svc) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:352</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a9272f1870b544b28329545b84f3425c2"><div class="ttname"><a href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">celix_service_tracking_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_filter_options_t filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:296</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_afe7fa7d7fce1c581dff6e7986e958815"><div class="ttname"><a href="structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815">celix_service_tracking_options::add</a></div><div class="ttdeci">void(* add)(void *handle, void *svc) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:329</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a5c017c82bf57881c04f8c6f545b25a75"><div class="ttname"><a href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_service_tracking_options_t</a></div><div class="ttdeci">struct celix_service_tracking_options celix_service_tracking_options_t</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a41c34f8165addcbd0d65b4a0c23345d0"><div class="ttname"><a href="celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0">celix_bundleContext_findServicesWithOptions</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_findServicesWithOptions(celix_bundle_context_t *ctx, const celix_service_filter_options_t *opts)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_aec6e03faece0f8247de19d8c1527406d"><div class="ttname"><a href="celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d">celix_bundleContext_useServiceWithId</a></div><div class="ttdeci">bool celix_bundleContext_useServiceWithId(celix_bundle_context_t *ctx, long serviceId, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
+<div class="ttc" id="astructcelix__service__tracker__info_html_a6978e4b5f2fcc2d42a42f0e7ed3bb7c8"><div class="ttname"><a href="structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">celix_service_tracker_info::bundleId</a></div><div class="ttdeci">long bundleId</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:778</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a41e6642ba1a739b5768911fa41e5d170"><div class="ttname"><a href="celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170">celix_bundleContext_getPropertyAsBool</a></div><div class="ttdeci">bool celix_bundleContext_getPropertyAsBool(celix_bundle_context_t *ctx, const char *key, bool defaultValue)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a92be7dd7985a890c4b92bcb8497e8b9f"><div class="ttname"><a href="celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f">celix_bundleContext_getPropertyAsDouble</a></div><div class="ttdeci">double celix_bundleContext_getPropertyAsDouble(celix_bundle_context_t *ctx, const char *key, double defaultValue)</div></div>
+<div class="ttc" id="astructcelix__service__filter__options_html_addb2e1e8fcce127512d272383e78cbd1"><div class="ttname"><a href="structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceName OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:197</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a39270507a3766afbfcc9420c7270d262"><div class="ttname"><a href="celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262">celix_bundleContext_useServices</a></div><div class="ttdeci">void celix_bundleContext_useServices(celix_bundle_context_t *ctx, const char *serviceName, void *callbackHandle, void(*use)(void *handle, void *svc))</div></div>
+<div class="ttc" id="astructcelix__bundle__tracker__options_html_a80ebdcbb840fa97d81e1250fba2d20af"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af">celix_bundle_tracker_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:663</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_acf6dbcde52efbed145933e8a28f3f2e1"><div class="ttname"><a href="structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1">celix_service_tracking_options::removeWithOwner</a></div><div class="ttdeci">void(* removeWithOwner)(void *handle, void *svc, const celix_properties_t *props, const celix_bundle_t *svcOwner) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:364</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a1e8a78de5f799d303231385b51085055"><div class="ttname"><a href="celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055">celix_bundleContext_useServiceWithOptions</a></div><div class="ttdeci">bool celix_bundleContext_useServiceWithOptions(celix_bundle_context_t *ctx, const celix_service_use_options_t *opts)</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html"><div class="ttname"><a href="structcelix__service__use__options.html">celix_service_use_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:485</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a727ee2600c19ce2fd42b3b80b695c7f6"><div class="ttname"><a href="celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6">celix_bundleContext_installBundle</a></div><div class="ttdeci">long celix_bundleContext_installBundle(celix_bundle_context_t *ctx, const char *bundleLoc, bool autoStart)</div></div>
+<div class="ttc" id="astructcelix__service__registration__options_html_a86179f0c7a032f3309440a2cd8d91a61"><div class="ttname"><a href="structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61">celix_service_registration_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceName OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:105</div></div>
+<div class="ttc" id="astructcelix__service__filter__options_html_a9286701a4c946d1ed28afde05cd34d51"><div class="ttname"><a href="structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">const char *serviceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:215</div></div>
+<div class="ttc" id="astructcelix__service__tracker__info_html_a3cd52ce46875995a973fb6b65967d7e4"><div class="ttname"><a href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info::filter</a></div><div class="ttdeci">celix_filter_t * filter</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:763</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html_a2ba3552bfc25500084bfaf2dbb0f46c5"><div class="ttname"><a href="structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5">celix_service_use_options::useWithOwner</a></div><div class="ttdeci">void(* useWithOwner)(void *handle, void *svc, const celix_properties_t *props, const celix_bundle_t *svcOwner) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:522</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html_addad49a12179fff8b2dbf5313d70952f"><div class="ttname"><a href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">celix_service_filter_options_t filter OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:489</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a5bc54fd14871cc88ed887c8cea8f7b78"><div class="ttname"><a href="celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78">celix_bundleContext_registerService</a></div><div class="ttdeci">long celix_bundleContext_registerService(celix_bundle_context_t *ctx, void *svc, const char *serviceName, celix_properties_t *properties)</div></div>
+<div class="ttc" id="astructcelix__bundle__tracker__options_html_a54a11feb78bd514c95f7c9aecaa7f212"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212">celix_bundle_tracker_options::OPTS_INIT</a></div><div class="ttdeci">bool includeFrameworkBundle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:694</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html"><div class="ttname"><a href="structcelix__service__tracking__options.html">celix_service_tracking_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:292</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_aa603acb136351b4135ce6a8c0b1fda71"><div class="ttname"><a href="celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71">celix_bundleContext_trackBundlesWithOptions</a></div><div class="ttdeci">long celix_bundleContext_trackBundlesWithOptions(celix_bundle_context_t *ctx, const celix_bundle_tracking_options_t *opts)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a03a6d1c49c91c212ad7be115e1035840"><div class="ttname"><a href="celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840">celix_bundleContext_useBundles</a></div><div class="ttdeci">void celix_bundleContext_useBundles(celix_bundle_context_t *ctx, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html_a31a9834b87a5c2c3ed6b8532cd85c653"><div class="ttname"><a href="structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">void *callbackHandle OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:501</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a3b4906a9e6fb34fe3ca5118539a81fc7"><div class="ttname"><a href="celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7">celix_bundleContext_stopTracker</a></div><div class="ttdeci">void celix_bundleContext_stopTracker(celix_bundle_context_t *ctx, long trackerId)</div></div>
+<div class="ttc" id="astructcelix__service__filter__options_html"><div class="ttname"><a href="structcelix__service__filter__options.html">celix_service_filter_options</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:193</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html_ac7efa464a614a3faf6970a4917c596a7"><div class="ttname"><a href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">celix_service_use_options::use</a></div><div class="ttdeci">void(* use)(void *handle, void *svc) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:510</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a0ea27b2a81018583a464a10932cfae62"><div class="ttname"><a href="celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62">celix_bundleContext_getPropertyAsLong</a></div><div class="ttdeci">long celix_bundleContext_getPropertyAsLong(celix_bundle_context_t *ctx, const char *key, long defaultValue)</div></div>
+<div class="ttc" id="astructcelix__service__filter__options_html_a70cc8aee445c1a24782454393f12ff98"><div class="ttname"><a href="structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98">celix_service_filter_options::OPTS_INIT</a></div><div class="ttdeci">bool ignoreServiceLanguage OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:222</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a7eab80d54386fb32b91dd414846c2d45"><div class="ttname"><a href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a></div><div class="ttdeci">struct celix_service_filter_options celix_service_filter_options_t</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_af75c423757dcd16bf90d57a5726ac98a"><div class="ttname"><a href="structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a">celix_service_tracking_options::removeWithProperties</a></div><div class="ttdeci">void(* removeWithProperties)(void *handle, void *svc, const celix_properties_t *props) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:358</div></div>
+<div class="ttc" id="astructcelix__bundle__tracker__options_html_aeac272edbc00cb62f7071df0699dd492"><div class="ttname"><a href="structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492">celix_bundle_tracker_options::onStopped</a></div><div class="ttdeci">void(* onStopped)(void *handle, const celix_bundle_t *bundle) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:679</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_aea7e7fcd4022db2f9f4123dd3b7a794a"><div class="ttname"><a href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_service_tracker_info_t</a></div><div class="ttdeci">struct celix_service_tracker_info celix_service_tracker_info_t</div></div>
+<div class="ttc" id="astructcelix__service__tracker__info_html"><div class="ttname"><a href="structcelix__service__tracker__info.html">celix_service_tracker_info</a></div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:759</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a96a901f0597f9d2accf073153d90344c"><div class="ttname"><a href="celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c">celix_bundleContext_findServices</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_findServices(celix_bundle_context_t *ctx, const char *serviceName)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a1b011b5fe49a718345698eeb359d0c3a"><div class="ttname"><a href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_tracking_options_t</a></div><div class="ttdeci">struct celix_bundle_tracker_options celix_bundle_tracking_options_t</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html_a8192eb7aa470178f78ea8c09c4574867"><div class="ttname"><a href="structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867">celix_service_use_options::useWithProperties</a></div><div class="ttdeci">void(* useWithProperties)(void *handle, void *svc, const celix_properties_t *props) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:516</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_abb3cedf5ffa7a326cef2af64a1094635"><div class="ttname"><a href="celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635">celix_bundleContext_useBundle</a></div><div class="ttdeci">bool celix_bundleContext_useBundle(celix_bundle_context_t *ctx, long bundleId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bundle))</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a3caa917285feaad580b61d4c0c8430a9"><div class="ttname"><a href="celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9">celix_bundleContext_registerServiceFactory</a></div><div class="ttdeci">long celix_bundleContext_registerServiceFactory(celix_bundle_context_t *ctx, celix_service_factory_t *factory, const char *serviceName, celix_properties_t *props)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ac36566dcc477bb2c123e5124527090c1"><div class="ttname"><a href="celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1">celix_bundleContext_getDependencyManager</a></div><div class="ttdeci">celix_dependency_manager_t * celix_bundleContext_getDependencyManager(celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a12a988b8f1f3bd3a2e61c65d82f14d59"><div class="ttname"><a href="structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59">celix_service_tracking_options::setWithOwner</a></div><div class="ttdeci">void(* setWithOwner)(void *handle, void *svc, const celix_properties_t *props, const celix_bundle_t *svcOwner) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:321</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a787fd0f4f6719fefea2ae70fe6a1a5e6"><div class="ttname"><a href="structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6">celix_service_tracking_options::addWithOwner</a></div><div class="ttdeci">void(* addWithOwner)(void *handle, void *svc, const celix_properties_t *props, const celix_bundle_t *svcOwner) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:341</div></div>
+<div class="ttc" id="astructcelix__service__use__options_html_ae24e3e35d7d92d5b41d58b53506bcca0"><div class="ttname"><a href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">celix_service_use_options::OPTS_INIT</a></div><div class="ttdeci">double waitTimeoutInSeconds OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:496</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ac8322b5aa4adf9dcd8c288ce72a05414"><div class="ttname"><a href="celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414">celix_bundleContext_findService</a></div><div class="ttdeci">long celix_bundleContext_findService(celix_bundle_context_t *ctx, const char *serviceName)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ac7151f08ded1d7571867a44abe9f3531"><div class="ttname"><a href="celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531">celix_bundleContext_isBundleInstalled</a></div><div class="ttdeci">bool celix_bundleContext_isBundleInstalled(celix_bundle_context_t *ctx, long bndId)</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_ad6e1553f9507d04c7a0ad91d067d479b"><div class="ttname"><a href="celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b">celix_bundleContext_stopBundle</a></div><div class="ttdeci">bool celix_bundleContext_stopBundle(celix_bundle_context_t *ctx, long bundleId)</div></div>
+<div class="ttc" id="astructcelix__service__tracker__info_html_a5baca60295d208fe0581a564c3627f65"><div class="ttname"><a href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info::serviceLanguage</a></div><div class="ttdeci">const char * serviceLanguage</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:773</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_a1ebd82cb3d61aab769956d856293b9b9"><div class="ttname"><a href="celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9">celix_bundleContext_unregisterService</a></div><div class="ttdeci">void celix_bundleContext_unregisterService(celix_bundle_context_t *ctx, long serviceId)</div></div>
+<div class="ttc" id="astructcelix__service__tracker__info_html_a5f695cf6d8cd69e0c419298ded657546"><div class="ttname"><a href="structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546">celix_service_tracker_info::serviceName</a></div><div class="ttdeci">const char * serviceName</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:768</div></div>
+<div class="ttc" id="acelix__bundle__context_8h_html_afde9ed40231b5c3bbba19559e68e77f6"><div class="ttname"><a href="celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6">celix_bundleContext_listBundles</a></div><div class="ttdeci">celix_array_list_t * celix_bundleContext_listBundles(celix_bundle_context_t *ctx)</div></div>
+<div class="ttc" id="astructcelix__service__tracking__options_html_a256f8db1eecb89a8b71e4ef03ab11172"><div class="ttname"><a href="structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172">celix_service_tracking_options::setWithProperties</a></div><div class="ttdeci">void(* setWithProperties)(void *handle, void *svc, const celix_properties_t *props) OPTS_INIT</div><div class="ttdef"><b>Definition:</b> celix_bundle_context.h:315</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h.html b/static/docs/2.2.1/html/celix__dm__component_8h.html
old mode 100644
new mode 100755
similarity index 79%
rename from static/docs/2.2.0/html/celix__dm__component_8h.html
rename to static/docs/2.2.1/html/celix__dm__component_8h.html
index f282d23..5b1c477
--- a/static/docs/2.2.0/html/celix__dm__component_8h.html
+++ b/static/docs/2.2.1/html/celix__dm__component_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_dm_component.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -106,7 +87,15 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__dm__component_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__component_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__dm__component_8h" id="libs_2framework_2include_2celix__dm__component_8h">
-<area shape="rect" id="node7" href="celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="522,95,642,121"/>
+<area shape="rect" title=" " alt="" coords="176,5,336,47"/>
+<area shape="rect" title=" " alt="" coords="173,169,248,196"/>
+<area shape="rect" title=" " alt="" coords="26,95,125,121"/>
+<area shape="rect" title=" " alt="" coords="149,95,245,121"/>
+<area shape="rect" title=" " alt="" coords="269,95,360,121"/>
+<area shape="rect" title=" " alt="" coords="384,95,471,121"/>
+<area shape="rect" href="celix__dm__info_8h.html" title=" " alt="" coords="495,95,608,121"/>
+<area shape="rect" title=" " alt="" coords="418,169,538,196"/>
+<area shape="rect" title=" " alt="" coords="563,169,687,196"/>
 </map>
 </div>
 </div><div class="textblock"><div class="dynheader">
@@ -114,7 +103,8 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__dm__component_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__component_8hdep" alt=""/></div>
 <map name="libs_2framework_2include_2celix__dm__component_8hdep" id="libs_2framework_2include_2celix__dm__component_8hdep">
-<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,95,174,136"/>
+<area shape="rect" title=" " alt="" coords="5,5,165,47"/>
+<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="10,95,161,136"/>
 </map>
 </div>
 </div>
@@ -131,8 +121,8 @@
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
 Typedefs</h2></td></tr>
-<tr class="memitem:a837dbb925f543da453bd88375e26537e"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a></td></tr>
-<tr class="separator:a837dbb925f543da453bd88375e26537e"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd49054c559adbeb9627fa3d45d6c02a"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a></td></tr>
+<tr class="separator:afd49054c559adbeb9627fa3d45d6c02a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9c73a72049f39d42d66b6d9c60d185dc"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>) (void *userData)</td></tr>
 <tr class="separator:a9c73a72049f39d42d66b6d9c60d185dc"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
@@ -165,7 +155,7 @@
 <tr class="separator:ad7d4a85042adba432bd8d398d9c106b8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0ce2c610cbe3a329ea6561eb5cda0d8d"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a> (celix_dm_component_t *component, celix_dm_service_dependency_t *dependency)</td></tr>
 <tr class="separator:a0ce2c610cbe3a329ea6561eb5cda0d8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:af98630b8f8980c906d5aefc5f8a82c99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a> (celix_dm_component_t *cmp)</td></tr>
+<tr class="memitem:af98630b8f8980c906d5aefc5f8a82c99"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a> (celix_dm_component_t *cmp)</td></tr>
 <tr class="separator:af98630b8f8980c906d5aefc5f8a82c99"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a5647f75ea3a3c3755940ee42f51320a8"><td class="memItemLeft" align="right" valign="top">void *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a> (celix_dm_component_t *cmp)</td></tr>
 <tr class="separator:a5647f75ea3a3c3755940ee42f51320a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -183,7 +173,9 @@
 <tr class="separator:af62df6623e978a1cc62b3ca8ab5863c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Macro Definition Documentation</h2>
-<a class="anchor" id="aa19dcff16825fa2e91656ff136d877cf"></a>
+<a id="aa19dcff16825fa2e91656ff136d877cf"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa19dcff16825fa2e91656ff136d877cf">&#9670;&nbsp;</a></span>CELIX_DM_COMPONENT_MAX_ID_LENGTH</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -195,7 +187,9 @@
 
 </div>
 </div>
-<a class="anchor" id="af8861849eb5e4057def1bb12a5111d00"></a>
+<a id="af8861849eb5e4057def1bb12a5111d00"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af8861849eb5e4057def1bb12a5111d00">&#9670;&nbsp;</a></span>CELIX_DM_COMPONENT_MAX_NAME_LENGTH</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -207,7 +201,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aad1f80b04be28b8e7bf495113c2fe452"></a>
+<a id="aad1f80b04be28b8e7bf495113c2fe452"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aad1f80b04be28b8e7bf495113c2fe452">&#9670;&nbsp;</a></span>CELIX_DMCOMPONENT_SETCALLBACKS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -254,14 +250,21 @@
         </tr>
       </table>
 </div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line"><span class="keywordflow">do</span> {  \</div><div class="line">        int (*tmp_init)(type)   = (init); \</div><div class="line">        int (*tmp_start)(type)  = (start); \</div><div class="line">        int (*tmp_stop)(type)   = (stop); \</div><div class="line">        int (*tmp_deinit)(type) = (deinit); <a class="code" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">\</a></div><div class="line"><a class="code" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">        celix_dmComponent_setCallbacks</a>((dmCmp), (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_init, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_start, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_stop, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_deinit); \</div><div class="line">    } <span class="keywordflow">while</span>(0)</div><div class="ttc" id="celix__dm__component_8h_html_a017e996f6b1db5e902bf3a9cc043634f"><div class="ttname"><a href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCallbacks(celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit)</div></div>
-<div class="ttc" id="celix__dm__component_8h_html_a9c73a72049f39d42d66b6d9c60d185dc"><div class="ttname"><a href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a></div><div class="ttdeci">int(* celix_dm_cmp_lifecycle_fpt)(void *userData)</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:45</div></div>
+<b>Value:</b><div class="fragment"><div class="line">    <span class="keywordflow">do</span> {  \</div>
+<div class="line">        int (*tmp_init)(type)   = (init); \</div>
+<div class="line">        int (*tmp_start)(type)  = (start); \</div>
+<div class="line">        int (*tmp_stop)(type)   = (stop); \</div>
+<div class="line">        int (*tmp_deinit)(type) = (deinit); \</div>
+<div class="line">        celix_dmComponent_setCallbacks((dmCmp), (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_init, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_start, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_stop, (<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)tmp_deinit); \</div>
+<div class="line">    } <span class="keywordflow">while</span>(0)</div>
 </div><!-- fragment --><p>Set the component life cycle callbacks using a MACRO for improving the type safety. </p>
 
 </div>
 </div>
 <h2 class="groupheader">Typedef Documentation</h2>
-<a class="anchor" id="a9c73a72049f39d42d66b6d9c60d185dc"></a>
+<a id="a9c73a72049f39d42d66b6d9c60d185dc"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9c73a72049f39d42d66b6d9c60d185dc">&#9670;&nbsp;</a></span>celix_dm_cmp_lifecycle_fpt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -273,12 +276,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a837dbb925f543da453bd88375e26537e"></a>
+<a id="afd49054c559adbeb9627fa3d45d6c02a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afd49054c559adbeb9627fa3d45d6c02a">&#9670;&nbsp;</a></span>celix_dm_component_state_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a>  <a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a></td>
+          <td class="memname">typedef enum <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a> <a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -286,7 +291,9 @@
 </div>
 </div>
 <h2 class="groupheader">Enumeration Type Documentation</h2>
-<a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4"></a>
+<a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab8b6c8d35fe5b976b8f58a6816e6c4e4">&#9670;&nbsp;</a></span>celix_dm_component_state_enum</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -296,20 +303,18 @@
       </table>
 </div><div class="memdoc">
 <table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"></a>DM_CMP_STATE_INACTIVE&#160;</td><td class="fielddoc">
-</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"></a>DM_CMP_STATE_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc">
-</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e"></a>DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc">
-</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46"></a>DM_CMP_STATE_TRACKING_OPTIONAL&#160;</td><td class="fielddoc">
-</td></tr>
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"></a>DM_CMP_STATE_INACTIVE&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"></a>DM_CMP_STATE_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e"></a>DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46"></a>DM_CMP_STATE_TRACKING_OPTIONAL&#160;</td><td class="fielddoc"></td></tr>
 </table>
 
 </div>
 </div>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="aafd2f2eff931784f70eb2a37e943446a"></a>
+<a id="aafd2f2eff931784f70eb2a37e943446a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aafd2f2eff931784f70eb2a37e943446a">&#9670;&nbsp;</a></span>celix_dmComponent_addInterface()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -362,7 +367,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ad7d4a85042adba432bd8d398d9c106b8"></a>
+<a id="ad7d4a85042adba432bd8d398d9c106b8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad7d4a85042adba432bd8d398d9c106b8">&#9670;&nbsp;</a></span>celix_dmComponent_addServiceDependency()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -389,7 +396,9 @@
 
 </div>
 </div>
-<a class="anchor" id="adf75af7d75d2c1f7e53d78f23f97d40c"></a>
+<a id="adf75af7d75d2c1f7e53d78f23f97d40c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#adf75af7d75d2c1f7e53d78f23f97d40c">&#9670;&nbsp;</a></span>celix_dmComponent_create()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -416,12 +425,14 @@
 
 </div>
 </div>
-<a class="anchor" id="af98630b8f8980c906d5aefc5f8a82c99"></a>
+<a id="af98630b8f8980c906d5aefc5f8a82c99"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af98630b8f8980c906d5aefc5f8a82c99">&#9670;&nbsp;</a></span>celix_dmComponent_currentState()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component_state_t</a> celix_dmComponent_currentState </td>
+          <td class="memname"><a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a> celix_dmComponent_currentState </td>
           <td>(</td>
           <td class="paramtype">celix_dm_component_t *&#160;</td>
           <td class="paramname"><em>cmp</em></td><td>)</td>
@@ -433,7 +444,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a56a8c5019a43eb96d62fd9e98cb56ba8"></a>
+<a id="a56a8c5019a43eb96d62fd9e98cb56ba8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a56a8c5019a43eb96d62fd9e98cb56ba8">&#9670;&nbsp;</a></span>celix_dmComponent_destroy()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -450,7 +463,9 @@
 
 </div>
 </div>
-<a class="anchor" id="af62df6623e978a1cc62b3ca8ab5863c3"></a>
+<a id="af62df6623e978a1cc62b3ca8ab5863c3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af62df6623e978a1cc62b3ca8ab5863c3">&#9670;&nbsp;</a></span>celix_dmComponent_destroyComponentInfo()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -467,7 +482,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a99be995e9e94514fc4f6782dd48456ba"></a>
+<a id="a99be995e9e94514fc4f6782dd48456ba"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a99be995e9e94514fc4f6782dd48456ba">&#9670;&nbsp;</a></span>celix_dmComponent_getBundleContext()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -484,7 +501,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3345d3bfa11070069d745131668d02ae"></a>
+<a id="a3345d3bfa11070069d745131668d02ae"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3345d3bfa11070069d745131668d02ae">&#9670;&nbsp;</a></span>celix_dmComponent_getComponentInfo()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -511,7 +530,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a5647f75ea3a3c3755940ee42f51320a8"></a>
+<a id="a5647f75ea3a3c3755940ee42f51320a8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5647f75ea3a3c3755940ee42f51320a8">&#9670;&nbsp;</a></span>celix_dmComponent_getImplementation()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -528,7 +549,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ae0312e00f51f85d8e48b18020964e21f"></a>
+<a id="ae0312e00f51f85d8e48b18020964e21f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae0312e00f51f85d8e48b18020964e21f">&#9670;&nbsp;</a></span>celix_dmComponent_getInterfaces()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -555,7 +578,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a30de51befa422dc65ac89ae3d9b8319f"></a>
+<a id="a30de51befa422dc65ac89ae3d9b8319f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a30de51befa422dc65ac89ae3d9b8319f">&#9670;&nbsp;</a></span>celix_dmComponent_getName()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -572,7 +597,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a7bbf1a0da294be7ba9ae8272f1b938d7"></a>
+<a id="a7bbf1a0da294be7ba9ae8272f1b938d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7bbf1a0da294be7ba9ae8272f1b938d7">&#9670;&nbsp;</a></span>celix_dmComponent_isActive()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -588,7 +615,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3e4a6e8e87cc8d3b3655eaaa06ad261e"></a>
+<a id="a3e4a6e8e87cc8d3b3655eaaa06ad261e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3e4a6e8e87cc8d3b3655eaaa06ad261e">&#9670;&nbsp;</a></span>celix_dmComponent_removeInterface()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -622,7 +651,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a0ce2c610cbe3a329ea6561eb5cda0d8d"></a>
+<a id="a0ce2c610cbe3a329ea6561eb5cda0d8d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0ce2c610cbe3a329ea6561eb5cda0d8d">&#9670;&nbsp;</a></span>celix_dmComponent_removeServiceDependency()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -649,7 +680,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a017e996f6b1db5e902bf3a9cc043634f"></a>
+<a id="a017e996f6b1db5e902bf3a9cc043634f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a017e996f6b1db5e902bf3a9cc043634f">&#9670;&nbsp;</a></span>celix_dmComponent_setCallbacks()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -694,7 +727,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ab8bd7a13007bda2619c1764886eabeab"></a>
+<a id="ab8bd7a13007bda2619c1764886eabeab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab8bd7a13007bda2619c1764886eabeab">&#9670;&nbsp;</a></span>celix_dmComponent_setCLanguageProperty()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -721,7 +756,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a45a01df6ed75d8530563d52f58a0b165"></a>
+<a id="a45a01df6ed75d8530563d52f58a0b165"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a45a01df6ed75d8530563d52f58a0b165">&#9670;&nbsp;</a></span>celix_dmComponent_setImplementation()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -749,11 +786,12 @@
 </div>
 </div>
 </div><!-- contents -->
+<div class="ttc" id="acelix__dm__component_8h_html_a9c73a72049f39d42d66b6d9c60d185dc"><div class="ttname"><a href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a></div><div class="ttdeci">int(* celix_dm_cmp_lifecycle_fpt)(void *userData)</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:45</div></div>
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.map b/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.map
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.map
rename to static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.map
index 6f6a630..8742e35
--- a/static/docs/2.2.0/html/celix__dm__component_8h__dep__incl.map
+++ b/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.map
@@ -1,3 +1,4 @@
 <map id="libs/framework/include/celix_dm_component.h" name="libs/framework/include/celix_dm_component.h">
-<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,95,174,136"/>
+<area shape="rect" id="node1" title=" " alt="" coords="5,5,165,47"/>
+<area shape="rect" id="node2" href="$celix__api_8h.html" title=" " alt="" coords="10,95,161,136"/>
 </map>
diff --git a/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.md5 b/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.md5
new file mode 100755
index 0000000..518f15f
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.md5
@@ -0,0 +1 @@
+f3b03741275a715092e1c004ff9aaf31
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.png b/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.png
new file mode 100755
index 0000000..f6988d9
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__component_8h__dep__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__dm__component_8h__incl.map b/static/docs/2.2.1/html/celix__dm__component_8h__incl.map
new file mode 100755
index 0000000..1df7cca
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__component_8h__incl.map
@@ -0,0 +1,11 @@
+<map id="libs/framework/include/celix_dm_component.h" name="libs/framework/include/celix_dm_component.h">
+<area shape="rect" id="node1" title=" " alt="" coords="176,5,336,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="173,169,248,196"/>
+<area shape="rect" id="node3" title=" " alt="" coords="26,95,125,121"/>
+<area shape="rect" id="node4" title=" " alt="" coords="149,95,245,121"/>
+<area shape="rect" id="node5" title=" " alt="" coords="269,95,360,121"/>
+<area shape="rect" id="node6" title=" " alt="" coords="384,95,471,121"/>
+<area shape="rect" id="node7" href="$celix__dm__info_8h.html" title=" " alt="" coords="495,95,608,121"/>
+<area shape="rect" id="node8" title=" " alt="" coords="418,169,538,196"/>
+<area shape="rect" id="node9" title=" " alt="" coords="563,169,687,196"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__dm__component_8h__incl.md5 b/static/docs/2.2.1/html/celix__dm__component_8h__incl.md5
new file mode 100755
index 0000000..9b14e8d
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__component_8h__incl.md5
@@ -0,0 +1 @@
+93f3caab7f8ba45b46d464dd9715fa61
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__dm__component_8h__incl.png b/static/docs/2.2.1/html/celix__dm__component_8h__incl.png
new file mode 100755
index 0000000..52161a5
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__component_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__dm__component_8h_source.html b/static/docs/2.2.1/html/celix__dm__component_8h_source.html
new file mode 100755
index 0000000..f178880
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__component_8h_source.html
@@ -0,0 +1,202 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_dm_component.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_dm_component.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__dm__component_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_COMPONENT_H_</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_COMPONENT_H_</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;celix_errno.h&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;properties.h&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="preprocessor">#include &quot;array_list.h&quot;</span></div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__dm__info_8h.html">celix_dm_info.h</a>&quot;</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160; </div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00034"></a><span class="lineno">   34</span>&#160; </div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">   35</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a> {</div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">   36</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">DM_CMP_STATE_INACTIVE</a> = 1,</div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">   37</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">DM_CMP_STATE_WAITING_FOR_REQUIRED</a> = 2,</div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">   38</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED</a> = 3,</div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">   39</a></span>&#160;    <a class="code" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">DM_CMP_STATE_TRACKING_OPTIONAL</a> = 4,</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">   40</a></span>&#160;} <a class="code" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno">   42</span>&#160;<span class="preprocessor">#define CELIX_DM_COMPONENT_MAX_ID_LENGTH 64</span></div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf">   43</a></span>&#160;<span class="preprocessor">#define CELIX_DM_COMPONENT_MAX_NAME_LENGTH 128</span></div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00">   44</a></span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">   45</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a>)(<span class="keywordtype">void</span> *userData);</div>
+<div class="line"><a name="l00046"></a><span class="lineno">   46</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">   51</a></span>&#160;celix_dm_component_t* <a class="code" href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dmComponent_create</a>(celix_bundle_context_t *context, <span class="keyword">const</span> <span class="keywordtype">char</span>* name);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">   56</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dmComponent_destroy</a>(celix_dm_component_t *cmp);</div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160; </div>
+<div class="line"><a name="l00062"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">   62</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dmComponent_setCLanguageProperty</a>(celix_dm_component_t *component, <span class="keywordtype">bool</span> setCLangProp);</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
+<div class="line"><a name="l00072"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">   72</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dmComponent_addInterface</a>(celix_dm_component_t *component, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceVersion, <span class="keyword">const</span> <span class="keywordtype">void</span>* service, celix_properties_t *properties);</div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">   80</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dmComponent_removeInterface</a>(celix_dm_component_t *component, <span class="keyword">const</span> <span class="keywordtype">void</span>* service);</div>
+<div class="line"><a name="l00084"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">   84</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dmComponent_setImplementation</a>(celix_dm_component_t *component, <span class="keywordtype">void</span>* implementation);</div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">   89</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dmComponent_getInterfaces</a>(celix_dm_component_t *component, celix_array_list_t **servicesNames);</div>
+<div class="line"><a name="l00090"></a><span class="lineno">   90</span>&#160; </div>
+<div class="line"><a name="l00094"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">   94</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dmComponent_addServiceDependency</a>(celix_dm_component_t *component, celix_dm_service_dependency_t *dep);</div>
+<div class="line"><a name="l00095"></a><span class="lineno">   95</span>&#160; </div>
+<div class="line"><a name="l00099"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">   99</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a>(celix_dm_component_t *component, celix_dm_service_dependency_t *dependency);</div>
+<div class="line"><a name="l00100"></a><span class="lineno">  100</span>&#160; </div>
+<div class="line"><a name="l00104"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">  104</a></span>&#160;<a class="code" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a> <a class="code" href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a>(celix_dm_component_t *cmp);</div>
+<div class="line"><a name="l00105"></a><span class="lineno">  105</span>&#160; </div>
+<div class="line"><a name="l00109"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">  109</a></span>&#160;<span class="keywordtype">void</span> * <a class="code" href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a>(celix_dm_component_t *cmp);</div>
+<div class="line"><a name="l00110"></a><span class="lineno">  110</span>&#160; </div>
+<div class="line"><a name="l00114"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">  114</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dmComponent_getName</a>(celix_dm_component_t *cmp);</div>
+<div class="line"><a name="l00115"></a><span class="lineno">  115</span>&#160; </div>
+<div class="line"><a name="l00119"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">  119</a></span>&#160;celix_bundle_context_t* <a class="code" href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dmComponent_getBundleContext</a>(celix_dm_component_t *component);</div>
+<div class="line"><a name="l00120"></a><span class="lineno">  120</span>&#160; </div>
+<div class="line"><a name="l00125"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">  125</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a>(celix_dm_component_t *component, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> init, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> start, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> stop, <a class="code" href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a> deinit);</div>
+<div class="line"><a name="l00126"></a><span class="lineno">  126</span>&#160; </div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160;<span class="preprocessor">#define CELIX_DMCOMPONENT_SETCALLBACKS(dmCmp, type, init, start, stop, deinit) \</span></div>
+<div class="line"><a name="l00131"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452">  131</a></span>&#160;<span class="preprocessor">    do {  \</span></div>
+<div class="line"><a name="l00132"></a><span class="lineno">  132</span>&#160;<span class="preprocessor">        int (*tmp_init)(type)   = (init); \</span></div>
+<div class="line"><a name="l00133"></a><span class="lineno">  133</span>&#160;<span class="preprocessor">        int (*tmp_start)(type)  = (start); \</span></div>
+<div class="line"><a name="l00134"></a><span class="lineno">  134</span>&#160;<span class="preprocessor">        int (*tmp_stop)(type)   = (stop); \</span></div>
+<div class="line"><a name="l00135"></a><span class="lineno">  135</span>&#160;<span class="preprocessor">        int (*tmp_deinit)(type) = (deinit); \</span></div>
+<div class="line"><a name="l00136"></a><span class="lineno">  136</span>&#160;<span class="preprocessor">        celix_dmComponent_setCallbacks((dmCmp), (celix_dm_cmp_lifecycle_fpt)tmp_init, (celix_dm_cmp_lifecycle_fpt)tmp_start, (celix_dm_cmp_lifecycle_fpt)tmp_stop, (celix_dm_cmp_lifecycle_fpt)tmp_deinit); \</span></div>
+<div class="line"><a name="l00137"></a><span class="lineno">  137</span>&#160;<span class="preprocessor">    } while(0)</span></div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
+<div class="line"><a name="l00143"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">  143</a></span>&#160;celix_status_t <a class="code" href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dmComponent_getComponentInfo</a>(celix_dm_component_t *component, <a class="code" href="structcelix__dm__component__info__struct.html">dm_component_info_pt</a> *info);</div>
+<div class="line"><a name="l00144"></a><span class="lineno">  144</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">  145</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dmComponent_isActive</a>(celix_dm_component_t *component);</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160; </div>
+<div class="line"><a name="l00150"></a><span class="lineno"><a class="line" href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">  150</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dmComponent_destroyComponentInfo</a>(<a class="code" href="structcelix__dm__component__info__struct.html">dm_component_info_pt</a> info);</div>
+<div class="line"><a name="l00151"></a><span class="lineno">  151</span>&#160; </div>
+<div class="line"><a name="l00152"></a><span class="lineno">  152</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160;}</div>
+<div class="line"><a name="l00154"></a><span class="lineno">  154</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00155"></a><span class="lineno">  155</span>&#160; </div>
+<div class="line"><a name="l00156"></a><span class="lineno">  156</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* COMPONENT_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="acelix__dm__component_8h_html_ab8bd7a13007bda2619c1764886eabeab"><div class="ttname"><a href="celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab">celix_dmComponent_setCLanguageProperty</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCLanguageProperty(celix_dm_component_t *component, bool setCLangProp)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a3345d3bfa11070069d745131668d02ae"><div class="ttname"><a href="celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae">celix_dmComponent_getComponentInfo</a></div><div class="ttdeci">celix_status_t celix_dmComponent_getComponentInfo(celix_dm_component_t *component, dm_component_info_pt *info)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_aafd2f2eff931784f70eb2a37e943446a"><div class="ttname"><a href="celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a">celix_dmComponent_addInterface</a></div><div class="ttdeci">celix_status_t celix_dmComponent_addInterface(celix_dm_component_t *component, const char *serviceName, const char *serviceVersion, const void *service, celix_properties_t *properties)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a017e996f6b1db5e902bf3a9cc043634f"><div class="ttname"><a href="celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f">celix_dmComponent_setCallbacks</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setCallbacks(celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit)</div></div>
+<div class="ttc" id="acelix__dm__info_8h_html"><div class="ttname"><a href="celix__dm__info_8h.html">celix_dm_info.h</a></div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a5647f75ea3a3c3755940ee42f51320a8"><div class="ttname"><a href="celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8">celix_dmComponent_getImplementation</a></div><div class="ttdeci">void * celix_dmComponent_getImplementation(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_af98630b8f8980c906d5aefc5f8a82c99"><div class="ttname"><a href="celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99">celix_dmComponent_currentState</a></div><div class="ttdeci">celix_dm_component_state_t celix_dmComponent_currentState(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a45a01df6ed75d8530563d52f58a0b165"><div class="ttname"><a href="celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165">celix_dmComponent_setImplementation</a></div><div class="ttdeci">celix_status_t celix_dmComponent_setImplementation(celix_dm_component_t *component, void *implementation)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_adf75af7d75d2c1f7e53d78f23f97d40c"><div class="ttname"><a href="celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c">celix_dmComponent_create</a></div><div class="ttdeci">celix_dm_component_t * celix_dmComponent_create(celix_bundle_context_t *context, const char *name)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a99be995e9e94514fc4f6782dd48456ba"><div class="ttname"><a href="celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba">celix_dmComponent_getBundleContext</a></div><div class="ttdeci">celix_bundle_context_t * celix_dmComponent_getBundleContext(celix_dm_component_t *component)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a9c73a72049f39d42d66b6d9c60d185dc"><div class="ttname"><a href="celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc">celix_dm_cmp_lifecycle_fpt</a></div><div class="ttdeci">int(* celix_dm_cmp_lifecycle_fpt)(void *userData)</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:45</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc">DM_CMP_STATE_WAITING_FOR_REQUIRED</a></div><div class="ttdeci">@ DM_CMP_STATE_WAITING_FOR_REQUIRED</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:37</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46">DM_CMP_STATE_TRACKING_OPTIONAL</a></div><div class="ttdeci">@ DM_CMP_STATE_TRACKING_OPTIONAL</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:39</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ad7d4a85042adba432bd8d398d9c106b8"><div class="ttname"><a href="celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8">celix_dmComponent_addServiceDependency</a></div><div class="ttdeci">celix_status_t celix_dmComponent_addServiceDependency(celix_dm_component_t *component, celix_dm_service_dependency_t *dep)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a0ce2c610cbe3a329ea6561eb5cda0d8d"><div class="ttname"><a href="celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d">celix_dmComponent_removeServiceDependency</a></div><div class="ttdeci">celix_status_t celix_dmComponent_removeServiceDependency(celix_dm_component_t *component, celix_dm_service_dependency_t *dependency)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a7bbf1a0da294be7ba9ae8272f1b938d7"><div class="ttname"><a href="celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7">celix_dmComponent_isActive</a></div><div class="ttdeci">bool celix_dmComponent_isActive(celix_dm_component_t *component)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ae0312e00f51f85d8e48b18020964e21f"><div class="ttname"><a href="celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f">celix_dmComponent_getInterfaces</a></div><div class="ttdeci">celix_status_t celix_dmComponent_getInterfaces(celix_dm_component_t *component, celix_array_list_t **servicesNames)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_af62df6623e978a1cc62b3ca8ab5863c3"><div class="ttname"><a href="celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3">celix_dmComponent_destroyComponentInfo</a></div><div class="ttdeci">void celix_dmComponent_destroyComponentInfo(dm_component_info_pt info)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a30de51befa422dc65ac89ae3d9b8319f"><div class="ttname"><a href="celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f">celix_dmComponent_getName</a></div><div class="ttdeci">const char * celix_dmComponent_getName(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html"><div class="ttname"><a href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:52</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e">DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED</a></div><div class="ttdeci">@ DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:38</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a56a8c5019a43eb96d62fd9e98cb56ba8"><div class="ttname"><a href="celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8">celix_dmComponent_destroy</a></div><div class="ttdeci">void celix_dmComponent_destroy(celix_dm_component_t *cmp)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_a3e4a6e8e87cc8d3b3655eaaa06ad261e"><div class="ttname"><a href="celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e">celix_dmComponent_removeInterface</a></div><div class="ttdeci">celix_status_t celix_dmComponent_removeInterface(celix_dm_component_t *component, const void *service)</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_afd49054c559adbeb9627fa3d45d6c02a"><div class="ttname"><a href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component_state_t</a></div><div class="ttdeci">enum celix_dm_component_state_enum celix_dm_component_state_t</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">DM_CMP_STATE_INACTIVE</a></div><div class="ttdeci">@ DM_CMP_STATE_INACTIVE</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:36</div></div>
+<div class="ttc" id="acelix__dm__component_8h_html_ab8b6c8d35fe5b976b8f58a6816e6c4e4"><div class="ttname"><a href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component_state_enum</a></div><div class="ttdeci">celix_dm_component_state_enum</div><div class="ttdef"><b>Definition:</b> celix_dm_component.h:35</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__info_8h.html b/static/docs/2.2.1/html/celix__dm__info_8h.html
old mode 100644
new mode 100755
similarity index 82%
rename from static/docs/2.2.0/html/celix__dm__info_8h.html
rename to static/docs/2.2.1/html/celix__dm__info_8h.html
index 98056f3..79ce7d6
--- a/static/docs/2.2.0/html/celix__dm__info_8h.html
+++ b/static/docs/2.2.1/html/celix__dm__info_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_dm_info.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,6 +82,10 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__dm__info_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__info_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__dm__info_8h" id="libs_2framework_2include_2celix__dm__info_8h">
+<area shape="rect" title=" " alt="" coords="89,5,239,47"/>
+<area shape="rect" title=" " alt="" coords="5,95,80,121"/>
+<area shape="rect" title=" " alt="" coords="104,95,224,121"/>
+<area shape="rect" title=" " alt="" coords="249,95,373,121"/>
 </map>
 </div>
 </div><div class="textblock"><div class="dynheader">
@@ -108,9 +93,10 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__dm__info_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__info_8hdep" alt=""/></div>
 <map name="libs_2framework_2include_2celix__dm__info_8hdep" id="libs_2framework_2include_2celix__dm__info_8hdep">
-<area shape="rect" id="node2" href="celix__dm__component_8h.html" title="libs/framework/include\l/celix_dm_component.h" alt="" coords="5,95,180,136"/>
-<area shape="rect" id="node4" href="celix__dm__service__dependency_8h.html" title="libs/framework/include\l/celix_dm_service_dependency.h" alt="" coords="205,95,434,136"/>
-<area shape="rect" id="node3" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="11,184,174,225"/>
+<area shape="rect" title=" " alt="" coords="115,5,266,47"/>
+<area shape="rect" href="celix__dm__component_8h.html" title=" " alt="" coords="5,95,165,136"/>
+<area shape="rect" href="celix__dm__service__dependency_8h.html" title=" " alt="" coords="190,95,405,136"/>
+<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="10,184,161,225"/>
 </map>
 </div>
 </div>
@@ -155,7 +141,9 @@
 <tr class="separator:af06092e6852ba40f4241b4e539265e64"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Typedef Documentation</h2>
-<a class="anchor" id="af06092e6852ba40f4241b4e539265e64"></a>
+<a id="af06092e6852ba40f4241b4e539265e64"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af06092e6852ba40f4241b4e539265e64">&#9670;&nbsp;</a></span>celix_dependency_manager_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -167,7 +155,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a57ffe4e9f51e746fdf4ae50151150b16"></a>
+<a id="a57ffe4e9f51e746fdf4ae50151150b16"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a57ffe4e9f51e746fdf4ae50151150b16">&#9670;&nbsp;</a></span>celix_dm_component_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -179,7 +169,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a635d8bc54edda5e7e70f7b27943196b6"></a>
+<a id="a635d8bc54edda5e7e70f7b27943196b6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a635d8bc54edda5e7e70f7b27943196b6">&#9670;&nbsp;</a></span>celix_dm_interface_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -191,7 +183,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a7fd4e90372051b1549c588095fb24fd4"></a>
+<a id="a7fd4e90372051b1549c588095fb24fd4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a7fd4e90372051b1549c588095fb24fd4">&#9670;&nbsp;</a></span>celix_dm_service_dependency_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -203,7 +197,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a4325313bb7b98b6eded2212a6edd065a"></a>
+<a id="a4325313bb7b98b6eded2212a6edd065a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4325313bb7b98b6eded2212a6edd065a">&#9670;&nbsp;</a></span>dm_component_info_pt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -215,7 +211,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a81bba27d8f869e77dd921c7cd8ac35d7"></a>
+<a id="a81bba27d8f869e77dd921c7cd8ac35d7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a81bba27d8f869e77dd921c7cd8ac35d7">&#9670;&nbsp;</a></span>dm_component_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -227,7 +225,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a230d51a712bc30bd2b52126e17f63738"></a>
+<a id="a230d51a712bc30bd2b52126e17f63738"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a230d51a712bc30bd2b52126e17f63738">&#9670;&nbsp;</a></span>dm_dependency_manager_info_pt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -239,7 +239,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aeaa11da320e45fdeef41c441bff70f02"></a>
+<a id="aeaa11da320e45fdeef41c441bff70f02"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeaa11da320e45fdeef41c441bff70f02">&#9670;&nbsp;</a></span>dm_dependency_manager_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -251,7 +253,9 @@
 
 </div>
 </div>
-<a class="anchor" id="abb40885e5ab16c4701927d7095194ee2"></a>
+<a id="abb40885e5ab16c4701927d7095194ee2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abb40885e5ab16c4701927d7095194ee2">&#9670;&nbsp;</a></span>dm_interface_info_pt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -263,7 +267,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3c8c9b3b3b6d6cb2853ce22f337ed7f0"></a>
+<a id="a3c8c9b3b3b6d6cb2853ce22f337ed7f0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3c8c9b3b3b6d6cb2853ce22f337ed7f0">&#9670;&nbsp;</a></span>dm_interface_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -275,7 +281,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a0a06988849c18fd4848452086f36ed6e"></a>
+<a id="a0a06988849c18fd4848452086f36ed6e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0a06988849c18fd4848452086f36ed6e">&#9670;&nbsp;</a></span>dm_service_dependency_info_pt</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -287,7 +295,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a553833e914505261622b13563c8a045e"></a>
+<a id="a553833e914505261622b13563c8a045e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a553833e914505261622b13563c8a045e">&#9670;&nbsp;</a></span>dm_service_dependency_info_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -304,7 +314,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.map b/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.map
new file mode 100755
index 0000000..ace9373
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.map
@@ -0,0 +1,6 @@
+<map id="libs/framework/include/celix_dm_info.h" name="libs/framework/include/celix_dm_info.h">
+<area shape="rect" id="node1" title=" " alt="" coords="115,5,266,47"/>
+<area shape="rect" id="node2" href="$celix__dm__component_8h.html" title=" " alt="" coords="5,95,165,136"/>
+<area shape="rect" id="node4" href="$celix__dm__service__dependency_8h.html" title=" " alt="" coords="190,95,405,136"/>
+<area shape="rect" id="node3" href="$celix__api_8h.html" title=" " alt="" coords="10,184,161,225"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.md5 b/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.md5
new file mode 100755
index 0000000..0d4047d
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.md5
@@ -0,0 +1 @@
+4a8d8440307c1816782f2a3457ece53d
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.png b/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.png
new file mode 100755
index 0000000..c17c4ed
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h__dep__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h__incl.map b/static/docs/2.2.1/html/celix__dm__info_8h__incl.map
new file mode 100755
index 0000000..e79a78c
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h__incl.map
@@ -0,0 +1,6 @@
+<map id="libs/framework/include/celix_dm_info.h" name="libs/framework/include/celix_dm_info.h">
+<area shape="rect" id="node1" title=" " alt="" coords="89,5,239,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="5,95,80,121"/>
+<area shape="rect" id="node3" title=" " alt="" coords="104,95,224,121"/>
+<area shape="rect" id="node4" title=" " alt="" coords="249,95,373,121"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h__incl.md5 b/static/docs/2.2.1/html/celix__dm__info_8h__incl.md5
new file mode 100755
index 0000000..9e8c349
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h__incl.md5
@@ -0,0 +1 @@
+0abb7b6821ea1037166cd6b32190d1ed
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h__incl.png b/static/docs/2.2.1/html/celix__dm__info_8h__incl.png
new file mode 100755
index 0000000..e910e97
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__dm__info_8h_source.html b/static/docs/2.2.1/html/celix__dm__info_8h_source.html
new file mode 100755
index 0000000..fb5b391
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__info_8h_source.html
@@ -0,0 +1,180 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_dm_info.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_dm_info.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__dm__info_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_DM_INFO_H_</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_DM_INFO_H_</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160; </div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &lt;stdbool.h&gt;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160;<span class="preprocessor">#include &quot;celix_array_list.h&quot;</span></div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="structcelix__dm__interface__info__struct.html">   34</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">   35</a></span>&#160;    <span class="keywordtype">char</span>* <a class="code" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">name</a>;</div>
+<div class="line"><a name="l00036"></a><span class="lineno"><a class="line" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">   36</a></span>&#160;    celix_properties_t *<a class="code" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">properties</a>;</div>
+<div class="line"><a name="l00037"></a><span class="lineno">   37</span>&#160;};</div>
+<div class="line"><a name="l00038"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0">   38</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a>;  <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00039"></a><span class="lineno">   39</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> <a class="code" href="structcelix__dm__interface__info__struct.html">dm_interface_info_t</a>;  <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00040"></a><span class="lineno">   40</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a> <a class="code" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_t</a>;</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html">   42</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> {</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">   43</a></span>&#160;    <span class="keywordtype">char</span> *<a class="code" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">filter</a>;</div>
+<div class="line"><a name="l00044"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">   44</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">available</a>;</div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">   45</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">required</a>;</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">   46</a></span>&#160;    <span class="keywordtype">size_t</span> <a class="code" href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">count</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno">   47</span>&#160;};</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a553833e914505261622b13563c8a045e">   48</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a>;  <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00049"></a><span class="lineno">   49</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> <a class="code" href="structcelix__dm__service__dependency__info__struct.html">dm_service_dependency_info_t</a>;  <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a> <a class="code" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_t</a>;</div>
+<div class="line"><a name="l00051"></a><span class="lineno">   51</span>&#160; </div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html">   52</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> {</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5">   53</a></span>&#160;    <span class="keywordtype">char</span> <span class="keywordtype">id</span>[64];</div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">   54</a></span>&#160;    <span class="keywordtype">char</span> <a class="code" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">name</a>[128];</div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">   55</a></span>&#160;    <span class="keywordtype">bool</span> <a class="code" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">active</a>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">   56</a></span>&#160;    <span class="keywordtype">char</span> * <a class="code" href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">state</a>;</div>
+<div class="line"><a name="l00057"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">   57</a></span>&#160;    celix_array_list_t *<a class="code" href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">interfaces</a>;   <span class="comment">// type dm_interface_info_pt</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">   58</a></span>&#160;    celix_array_list_t *<a class="code" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">dependency_list</a>;  <span class="comment">// type dm_service_dependency_info_pt</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;};</div>
+<div class="line"><a name="l00060"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7">   60</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a>; <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> <a class="code" href="structcelix__dm__component__info__struct.html">dm_component_info_t</a>; <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a> <a class="code" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_t</a>;</div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160; </div>
+<div class="line"><a name="l00064"></a><span class="lineno"><a class="line" href="structcelix__dm__dependency__manager__info__struct.html">   64</a></span>&#160;<span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> {</div>
+<div class="line"><a name="l00065"></a><span class="lineno"><a class="line" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">   65</a></span>&#160;    <span class="keywordtype">long</span> <a class="code" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">bndId</a>;</div>
+<div class="line"><a name="l00066"></a><span class="lineno"><a class="line" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">   66</a></span>&#160;    celix_array_list_t *<a class="code" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">components</a>;      <span class="comment">// type dm_component_info</span></div>
+<div class="line"><a name="l00067"></a><span class="lineno">   67</span>&#160;};</div>
+<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02">   68</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> *<a class="code" href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a>; <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00069"></a><span class="lineno">   69</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> <a class="code" href="structcelix__dm__dependency__manager__info__struct.html">dm_dependency_manager_info_t</a>; <span class="comment">//deprecated</span></div>
+<div class="line"><a name="l00070"></a><span class="lineno">   70</span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a> <a class="code" href="structcelix__dm__dependency__manager__info__struct.html">celix_dependency_manager_info_t</a>;</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
+<div class="line"><a name="l00072"></a><span class="lineno">   72</span>&#160; </div>
+<div class="line"><a name="l00073"></a><span class="lineno">   73</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00074"></a><span class="lineno">   74</span>&#160;}</div>
+<div class="line"><a name="l00075"></a><span class="lineno">   75</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00076"></a><span class="lineno">   76</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160;<span class="preprocessor">#endif //CELIX_DM_INFO_H_</span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="astructcelix__dm__interface__info__struct_html_a6fb90a86fdaa6aefde5e598f5ca85e2c"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct::properties</a></div><div class="ttdeci">celix_properties_t * properties</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:36</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html_a0c64e56c05452d29efc60ac8b75f7163"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163">celix_dm_component_info_struct::state</a></div><div class="ttdeci">char * state</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:56</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__info__struct_html"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:42</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html_abb385ead04139565ed13ed34841d1bda"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct::dependency_list</a></div><div class="ttdeci">celix_array_list_t * dependency_list</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:58</div></div>
+<div class="ttc" id="acelix__dm__info_8h_html_a0a06988849c18fd4848452086f36ed6e"><div class="ttname"><a href="celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e">dm_service_dependency_info_pt</a></div><div class="ttdeci">struct celix_dm_service_dependency_info_struct * dm_service_dependency_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:48</div></div>
+<div class="ttc" id="astructcelix__dm__interface__info__struct_html_ae2306753d7867ac9dc13d0d1b00f60be"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">celix_dm_interface_info_struct::name</a></div><div class="ttdeci">char * name</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:35</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html_a293333dd64e557ab4b3d80c44d6d2499"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct::active</a></div><div class="ttdeci">bool active</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:55</div></div>
+<div class="ttc" id="acelix__dm__info_8h_html_a230d51a712bc30bd2b52126e17f63738"><div class="ttname"><a href="celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738">dm_dependency_manager_info_pt</a></div><div class="ttdeci">struct celix_dm_dependency_manager_info_struct * dm_dependency_manager_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:68</div></div>
+<div class="ttc" id="acelix__dm__info_8h_html_abb40885e5ab16c4701927d7095194ee2"><div class="ttname"><a href="celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2">dm_interface_info_pt</a></div><div class="ttdeci">struct celix_dm_interface_info_struct * dm_interface_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:38</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__info__struct_html_ad9284f87c8033a14e5ba5de8118b7f09"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09">celix_dm_service_dependency_info_struct::count</a></div><div class="ttdeci">size_t count</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:46</div></div>
+<div class="ttc" id="astructcelix__dm__dependency__manager__info__struct_html_a3d4be4557e6b124bd6b2c586fddfb75b"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct::components</a></div><div class="ttdeci">celix_array_list_t * components</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:66</div></div>
+<div class="ttc" id="acelix__dm__info_8h_html_a4325313bb7b98b6eded2212a6edd065a"><div class="ttname"><a href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">dm_component_info_pt</a></div><div class="ttdeci">struct celix_dm_component_info_struct * dm_component_info_pt</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:60</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__info__struct_html_a8ad066c5fa5d75e9fb82add72cbfc705"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705">celix_dm_service_dependency_info_struct::required</a></div><div class="ttdeci">bool required</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:45</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html_aad1da907cd6f4a75f85c8321b1f6ce7a"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">celix_dm_component_info_struct::name</a></div><div class="ttdeci">char name[128]</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:54</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html_abbbe72fb049ad5ebb5941421929ae51a"><div class="ttname"><a href="structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a">celix_dm_component_info_struct::interfaces</a></div><div class="ttdeci">celix_array_list_t * interfaces</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:57</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__info__struct_html_ac06a272ddf7c02e335be784082ba5e9f"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct::filter</a></div><div class="ttdeci">char * filter</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:43</div></div>
+<div class="ttc" id="astructcelix__dm__dependency__manager__info__struct_html"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:64</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__info__struct_html_a77659b20ca3bcc2b9282f4644bdcbe66"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66">celix_dm_service_dependency_info_struct::available</a></div><div class="ttdeci">bool available</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:44</div></div>
+<div class="ttc" id="astructcelix__dm__component__info__struct_html"><div class="ttname"><a href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:52</div></div>
+<div class="ttc" id="astructcelix__dm__dependency__manager__info__struct_html_ac51721859e70f844e4c23873aec85dfb"><div class="ttname"><a href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct::bndId</a></div><div class="ttdeci">long bndId</div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:65</div></div>
+<div class="ttc" id="astructcelix__dm__interface__info__struct_html"><div class="ttname"><a href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:34</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__dm__service__dependency_8h.html b/static/docs/2.2.1/html/celix__dm__service__dependency_8h.html
old mode 100644
new mode 100755
similarity index 79%
rename from static/docs/2.2.0/html/celix__dm__service__dependency_8h.html
rename to static/docs/2.2.1/html/celix__dm__service__dependency_8h.html
index 11211b5..cf4dd5e
--- a/static/docs/2.2.0/html/celix__dm__service__dependency_8h.html
+++ b/static/docs/2.2.1/html/celix__dm__service__dependency_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_dm_service_dependency.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -105,7 +86,14 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__dm__service__dependency_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__dm__service__dependency_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__dm__service__dependency_8h" id="libs_2framework_2include_2celix__dm__service__dependency_8h">
-<area shape="rect" id="node5" href="celix__dm__info_8h.html" title="celix_dm_info.h" alt="" coords="404,95,524,121"/>
+<area shape="rect" title=" " alt="" coords="133,5,347,47"/>
+<area shape="rect" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" title=" " alt="" coords="128,95,224,121"/>
+<area shape="rect" title=" " alt="" coords="249,95,359,121"/>
+<area shape="rect" href="celix__dm__info_8h.html" title=" " alt="" coords="383,95,497,121"/>
+<area shape="rect" title=" " alt="" coords="281,169,356,196"/>
+<area shape="rect" title=" " alt="" coords="380,169,500,196"/>
+<area shape="rect" title=" " alt="" coords="525,169,649,196"/>
 </map>
 </div>
 </div>
@@ -123,8 +111,8 @@
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a>
 Typedefs</h2></td></tr>
-<tr class="memitem:a38a2114a58286eebc673a8dc5f314e43"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a></td></tr>
-<tr class="separator:a38a2114a58286eebc673a8dc5f314e43"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a00447f0e837918fcf6e39698ef375f46"><td class="memItemLeft" align="right" valign="top">typedef enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a></td></tr>
+<tr class="separator:a00447f0e837918fcf6e39698ef375f46"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a3aab7f5d65c74eb819047e5ec1f4c05f"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a>) (void *handle, void *service)</td></tr>
 <tr class="separator:a3aab7f5d65c74eb819047e5ec1f4c05f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a8a77266cc94a0f019b29d75a8e54995d"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a>) (void *handle, void *oldService, void *newService)</td></tr>
@@ -133,8 +121,8 @@
 <tr class="separator:afb8ee50fcfc77f274578d85a70bb2b94"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a6b4b49e1cbd6865c5dc14e94086f629f"><td class="memItemLeft" align="right" valign="top">typedef int(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a>) (void *handle, void *oldService, void *newService, const celix_properties_t *newProps)</td></tr>
 <tr class="separator:a6b4b49e1cbd6865c5dc14e94086f629f"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a5dd45f27aabacee9bce3ac0b3122b661"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a></td></tr>
-<tr class="separator:a5dd45f27aabacee9bce3ac0b3122b661"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ace7f03a4e7746a8ca8218afd172752f8"><td class="memItemLeft" align="right" valign="top">typedef struct <a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency_callback_options_t</a></td></tr>
+<tr class="separator:ace7f03a4e7746a8ca8218afd172752f8"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
 Enumerations</h2></td></tr>
@@ -153,9 +141,9 @@
 <tr class="separator:a0c33bcf502f8683bce3cf382c4bdc76a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9aec79471c46aecc7412523fe839e549"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a> (celix_dm_service_dependency_t *dependency, bool addCLangFilter)</td></tr>
 <tr class="separator:a9aec79471c46aecc7412523fe839e549"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a9d833904b765bee7073ec41828ea7d2e"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a> (celix_dm_service_dependency_t *dependency, <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a> strategy)</td></tr>
+<tr class="memitem:a9d833904b765bee7073ec41828ea7d2e"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a> (celix_dm_service_dependency_t *dependency, <a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a> strategy)</td></tr>
 <tr class="separator:a9d833904b765bee7073ec41828ea7d2e"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a8365396c6363ad98b66725243f97f8ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a> (celix_dm_service_dependency_t *dependency)</td></tr>
+<tr class="memitem:a8365396c6363ad98b66725243f97f8ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a> (celix_dm_service_dependency_t *dependency)</td></tr>
 <tr class="separator:a8365396c6363ad98b66725243f97f8ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2602a6526ef6cde42d606c9ed958cec7"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a> (celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)</td></tr>
 <tr class="separator:a2602a6526ef6cde42d606c9ed958cec7"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -165,7 +153,7 @@
 <tr class="separator:a1a731a456c8e617acfa4d81a6357959c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a9bdfec7b27301bd71dd4f45fcdd11568"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a> (celix_dm_service_dependency_t *dependency, <a class="el" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> set)</td></tr>
 <tr class="separator:a9bdfec7b27301bd71dd4f45fcdd11568"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a31898ef1ad5f9695dc85a24202020ebe"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a> (celix_dm_service_dependency_t *dependency, const <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a> *opts)</td></tr>
+<tr class="memitem:a31898ef1ad5f9695dc85a24202020ebe"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a> (celix_dm_service_dependency_t *dependency, const <a class="el" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency_callback_options_t</a> *opts)</td></tr>
 <tr class="separator:a31898ef1ad5f9695dc85a24202020ebe"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:aebe0669933d37f9fd1c3fdc873127d78"><td class="memItemLeft" align="right" valign="top">celix_status_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a> (celix_dm_service_dependency_t *dependency, void *handle)</td></tr>
 <tr class="separator:aebe0669933d37f9fd1c3fdc873127d78"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -175,7 +163,9 @@
 <tr class="separator:acb96da27c0087a05d885b0f55756de8a"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Macro Definition Documentation</h2>
-<a class="anchor" id="a1b153c6b38f75362450aad5b3ad729f7"></a>
+<a id="a1b153c6b38f75362450aad5b3ad729f7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1b153c6b38f75362450aad5b3ad729f7">&#9670;&nbsp;</a></span>CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -184,35 +174,49 @@
         </tr>
       </table>
 </div><div class="memdoc">
-<b>Value:</b><div class="fragment"><div class="line">{ .set = NULL, \</div><div class="line">    .add = NULL, \</div><div class="line">    .remove = NULL, \</div><div class="line">    .swap = NULL, \</div><div class="line">    .setWithProps = NULL, \</div><div class="line">    .addWithProps = NULL, \</div><div class="line">    .removeWithProps = NULL, \</div><div class="line">    .swapWithProps = NULL }</div></div><!-- fragment -->
+<b>Value:</b><div class="fragment"><div class="line">    { .set = NULL, \</div>
+<div class="line">    .add = NULL, \</div>
+<div class="line">    .remove = NULL, \</div>
+<div class="line">    .swap = NULL, \</div>
+<div class="line">    .setWithProps = NULL, \</div>
+<div class="line">    .addWithProps = NULL, \</div>
+<div class="line">    .removeWithProps = NULL, \</div>
+<div class="line">    .swapWithProps = NULL }</div>
+</div><!-- fragment -->
 </div>
 </div>
 <h2 class="groupheader">Typedef Documentation</h2>
-<a class="anchor" id="a5dd45f27aabacee9bce3ac0b3122b661"></a>
+<a id="ace7f03a4e7746a8ca8218afd172752f8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ace7f03a4e7746a8ca8218afd172752f8">&#9670;&nbsp;</a></span>celix_dm_service_dependency_callback_options_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef struct <a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>  <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a></td>
+          <td class="memname">typedef struct <a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a> <a class="el" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency_callback_options_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a38a2114a58286eebc673a8dc5f314e43"></a>
+<a id="a00447f0e837918fcf6e39698ef375f46"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a00447f0e837918fcf6e39698ef375f46">&#9670;&nbsp;</a></span>celix_dm_service_dependency_strategy_t</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname">typedef enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a>  <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a></td>
+          <td class="memname">typedef enum <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a> <a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a></td>
         </tr>
       </table>
 </div><div class="memdoc">
 
 </div>
 </div>
-<a class="anchor" id="a8a77266cc94a0f019b29d75a8e54995d"></a>
+<a id="a8a77266cc94a0f019b29d75a8e54995d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8a77266cc94a0f019b29d75a8e54995d">&#9670;&nbsp;</a></span>celix_dm_service_swap_fp</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -224,7 +228,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a6b4b49e1cbd6865c5dc14e94086f629f"></a>
+<a id="a6b4b49e1cbd6865c5dc14e94086f629f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6b4b49e1cbd6865c5dc14e94086f629f">&#9670;&nbsp;</a></span>celix_dm_service_swap_with_props_fp</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -236,7 +242,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3aab7f5d65c74eb819047e5ec1f4c05f"></a>
+<a id="a3aab7f5d65c74eb819047e5ec1f4c05f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3aab7f5d65c74eb819047e5ec1f4c05f">&#9670;&nbsp;</a></span>celix_dm_service_update_fp</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -248,7 +256,9 @@
 
 </div>
 </div>
-<a class="anchor" id="afb8ee50fcfc77f274578d85a70bb2b94"></a>
+<a id="afb8ee50fcfc77f274578d85a70bb2b94"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afb8ee50fcfc77f274578d85a70bb2b94">&#9670;&nbsp;</a></span>celix_dm_service_update_with_props_fp</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -261,7 +271,9 @@
 </div>
 </div>
 <h2 class="groupheader">Enumeration Type Documentation</h2>
-<a class="anchor" id="a80a698d57b244ab54ffad631a41ae88c"></a>
+<a id="a80a698d57b244ab54ffad631a41ae88c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a80a698d57b244ab54ffad631a41ae88c">&#9670;&nbsp;</a></span>celix_dm_service_dependency_strategy_enum</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -271,16 +283,16 @@
       </table>
 </div><div class="memdoc">
 <table class="fieldtable">
-<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a class="anchor" id="a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1"></a>DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING&#160;</td><td class="fielddoc">
-</td></tr>
-<tr><td class="fieldname"><a class="anchor" id="a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428"></a>DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND&#160;</td><td class="fielddoc">
-</td></tr>
+<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1"></a>DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING&#160;</td><td class="fielddoc"></td></tr>
+<tr><td class="fieldname"><a id="a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428"></a>DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND&#160;</td><td class="fielddoc"></td></tr>
 </table>
 
 </div>
 </div>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="a588b147bec75a501fac3b35076fc98a3"></a>
+<a id="a588b147bec75a501fac3b35076fc98a3"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a588b147bec75a501fac3b35076fc98a3">&#9670;&nbsp;</a></span>celix_dmServiceDependency_create()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -297,7 +309,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a0b84d9164563664da40491151f7d7131"></a>
+<a id="a0b84d9164563664da40491151f7d7131"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0b84d9164563664da40491151f7d7131">&#9670;&nbsp;</a></span>celix_dmServiceDependency_createInfo()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -314,7 +328,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac282334d66c3cfc4fda1b67245172979"></a>
+<a id="ac282334d66c3cfc4fda1b67245172979"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac282334d66c3cfc4fda1b67245172979">&#9670;&nbsp;</a></span>celix_dmServiceDependency_destroy()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -331,7 +347,9 @@
 
 </div>
 </div>
-<a class="anchor" id="acb96da27c0087a05d885b0f55756de8a"></a>
+<a id="acb96da27c0087a05d885b0f55756de8a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acb96da27c0087a05d885b0f55756de8a">&#9670;&nbsp;</a></span>celix_dmServiceDependency_destroyInfo()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -358,7 +376,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a487a41d56ea2bf1aa51cd7f7e83ff844"></a>
+<a id="a487a41d56ea2bf1aa51cd7f7e83ff844"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a487a41d56ea2bf1aa51cd7f7e83ff844">&#9670;&nbsp;</a></span>celix_dmServiceDependency_getFilter()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -375,12 +395,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a8365396c6363ad98b66725243f97f8ea"></a>
+<a id="a8365396c6363ad98b66725243f97f8ea"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8365396c6363ad98b66725243f97f8ea">&#9670;&nbsp;</a></span>celix_dmServiceDependency_getStrategy()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a> celix_dmServiceDependency_getStrategy </td>
+          <td class="memname"><a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a> celix_dmServiceDependency_getStrategy </td>
           <td>(</td>
           <td class="paramtype">celix_dm_service_dependency_t *&#160;</td>
           <td class="paramname"><em>dependency</em></td><td>)</td>
@@ -392,7 +414,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a9aec79471c46aecc7412523fe839e549"></a>
+<a id="a9aec79471c46aecc7412523fe839e549"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9aec79471c46aecc7412523fe839e549">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setAddCLanguageFilter()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -419,7 +443,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a1a731a456c8e617acfa4d81a6357959c"></a>
+<a id="a1a731a456c8e617acfa4d81a6357959c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1a731a456c8e617acfa4d81a6357959c">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setCallback()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -446,7 +472,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aebe0669933d37f9fd1c3fdc873127d78"></a>
+<a id="aebe0669933d37f9fd1c3fdc873127d78"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aebe0669933d37f9fd1c3fdc873127d78">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setCallbackHandle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -473,7 +501,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a31898ef1ad5f9695dc85a24202020ebe"></a>
+<a id="a31898ef1ad5f9695dc85a24202020ebe"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a31898ef1ad5f9695dc85a24202020ebe">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setCallbacksWithOptions()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -486,7 +516,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype">const <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency_callback_options_t</a> *&#160;</td>
+          <td class="paramtype">const <a class="el" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency_callback_options_t</a> *&#160;</td>
           <td class="paramname"><em>opts</em>&#160;</td>
         </tr>
         <tr>
@@ -501,7 +531,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a9bdfec7b27301bd71dd4f45fcdd11568"></a>
+<a id="a9bdfec7b27301bd71dd4f45fcdd11568"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9bdfec7b27301bd71dd4f45fcdd11568">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setCallbackWithProperties()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -528,7 +560,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a0c33bcf502f8683bce3cf382c4bdc76a"></a>
+<a id="a0c33bcf502f8683bce3cf382c4bdc76a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c33bcf502f8683bce3cf382c4bdc76a">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setRequired()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -555,7 +589,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a2602a6526ef6cde42d606c9ed958cec7"></a>
+<a id="a2602a6526ef6cde42d606c9ed958cec7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2602a6526ef6cde42d606c9ed958cec7">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setService()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -602,7 +638,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a9d833904b765bee7073ec41828ea7d2e"></a>
+<a id="a9d833904b765bee7073ec41828ea7d2e"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9d833904b765bee7073ec41828ea7d2e">&#9670;&nbsp;</a></span>celix_dmServiceDependency_setStrategy()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -615,7 +653,7 @@
         <tr>
           <td class="paramkey"></td>
           <td></td>
-          <td class="paramtype"><a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency_strategy_t</a>&#160;</td>
+          <td class="paramtype"><a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a>&#160;</td>
           <td class="paramname"><em>strategy</em>&#160;</td>
         </tr>
         <tr>
@@ -637,7 +675,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.map b/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.map
new file mode 100755
index 0000000..179b34b
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.map
@@ -0,0 +1,10 @@
+<map id="libs/framework/include/celix_dm_service_dependency.h" name="libs/framework/include/celix_dm_service_dependency.h">
+<area shape="rect" id="node1" title=" " alt="" coords="133,5,347,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" id="node3" title=" " alt="" coords="128,95,224,121"/>
+<area shape="rect" id="node4" title=" " alt="" coords="249,95,359,121"/>
+<area shape="rect" id="node5" href="$celix__dm__info_8h.html" title=" " alt="" coords="383,95,497,121"/>
+<area shape="rect" id="node6" title=" " alt="" coords="281,169,356,196"/>
+<area shape="rect" id="node7" title=" " alt="" coords="380,169,500,196"/>
+<area shape="rect" id="node8" title=" " alt="" coords="525,169,649,196"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.md5 b/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.md5
new file mode 100755
index 0000000..f7f25bb
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.md5
@@ -0,0 +1 @@
+4d3f8aaec0ffd212e69bb33da7297143
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.png b/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.png
new file mode 100755
index 0000000..68c27e2
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__service__dependency_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__dm__service__dependency_8h_source.html b/static/docs/2.2.1/html/celix__dm__service__dependency_8h_source.html
new file mode 100755
index 0000000..1986880
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__dm__service__dependency_8h_source.html
@@ -0,0 +1,215 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_dm_service_dependency.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_dm_service_dependency.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__dm__service__dependency_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_DM_SERVICE_DEPENDENCY_H_</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_DM_SERVICE_DEPENDENCY_H_</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;celix_errno.h&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_threads.h&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#include &quot;<a class="code" href="celix__dm__info_8h.html">celix_dm_info.h</a>&quot;</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160; </div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00031"></a><span class="lineno">   31</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00032"></a><span class="lineno">   32</span>&#160; </div>
+<div class="line"><a name="l00033"></a><span class="lineno">   33</span>&#160; </div>
+<div class="line"><a name="l00034"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">   34</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a> {</div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">   35</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</a>,</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</a></div>
+<div class="line"><a name="l00037"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">   37</a></span>&#160;} <a class="code" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a>;</div>
+<div class="line"><a name="l00038"></a><span class="lineno">   38</span>&#160; </div>
+<div class="line"><a name="l00039"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">   39</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* service);</div>
+<div class="line"><a name="l00040"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">   40</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* oldService, <span class="keywordtype">void</span>* newService);</div>
+<div class="line"><a name="l00041"></a><span class="lineno">   41</span>&#160; </div>
+<div class="line"><a name="l00042"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">   42</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* service, <span class="keyword">const</span> celix_properties_t *props);</div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">   43</a></span>&#160;<span class="keyword">typedef</span> int (*<a class="code" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a>)(<span class="keywordtype">void</span> *handle, <span class="keywordtype">void</span>* oldService, <span class="keywordtype">void</span>* newService, <span class="keyword">const</span> celix_properties_t *newProps);</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
+<div class="line"><a name="l00045"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html">   45</a></span>&#160;<span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a> {</div>
+<div class="line"><a name="l00046"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b">   46</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b">set</a>;</div>
+<div class="line"><a name="l00047"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">   47</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">add</a>;</div>
+<div class="line"><a name="l00048"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">   48</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">remove</a>;</div>
+<div class="line"><a name="l00049"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">   49</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">swap</a>;</div>
+<div class="line"><a name="l00050"></a><span class="lineno">   50</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">   51</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">setWithProps</a>;</div>
+<div class="line"><a name="l00052"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">   52</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">addWithProps</a>;</div>
+<div class="line"><a name="l00053"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">   53</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">removeWithProps</a>;</div>
+<div class="line"><a name="l00054"></a><span class="lineno"><a class="line" href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">   54</a></span>&#160;    <a class="code" href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a> <a class="code" href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">swapWithProps</a>;</div>
+<div class="line"><a name="l00055"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">   55</a></span>&#160;} <a class="code" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency_callback_options_t</a>;</div>
+<div class="line"><a name="l00056"></a><span class="lineno">   56</span>&#160; </div>
+<div class="line"><a name="l00057"></a><span class="lineno">   57</span>&#160;<span class="preprocessor">#define CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS { .set = NULL, \</span></div>
+<div class="line"><a name="l00058"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7">   58</a></span>&#160;<span class="preprocessor">    .add = NULL, \</span></div>
+<div class="line"><a name="l00059"></a><span class="lineno">   59</span>&#160;<span class="preprocessor">    .remove = NULL, \</span></div>
+<div class="line"><a name="l00060"></a><span class="lineno">   60</span>&#160;<span class="preprocessor">    .swap = NULL, \</span></div>
+<div class="line"><a name="l00061"></a><span class="lineno">   61</span>&#160;<span class="preprocessor">    .setWithProps = NULL, \</span></div>
+<div class="line"><a name="l00062"></a><span class="lineno">   62</span>&#160;<span class="preprocessor">    .addWithProps = NULL, \</span></div>
+<div class="line"><a name="l00063"></a><span class="lineno">   63</span>&#160;<span class="preprocessor">    .removeWithProps = NULL, \</span></div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160;<span class="preprocessor">    .swapWithProps = NULL }</span></div>
+<div class="line"><a name="l00065"></a><span class="lineno">   65</span>&#160; </div>
+<div class="line"><a name="l00070"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">   70</a></span>&#160;celix_dm_service_dependency_t* <a class="code" href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dmServiceDependency_create</a>(<span class="keywordtype">void</span>);</div>
+<div class="line"><a name="l00071"></a><span class="lineno">   71</span>&#160; </div>
+<div class="line"><a name="l00076"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">   76</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dmServiceDependency_destroy</a>(celix_dm_service_dependency_t *dep);</div>
+<div class="line"><a name="l00077"></a><span class="lineno">   77</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">   81</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dmServiceDependency_setRequired</a>(celix_dm_service_dependency_t *dependency, <span class="keywordtype">bool</span> required);</div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160; </div>
+<div class="line"><a name="l00087"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">   87</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a>(celix_dm_service_dependency_t *dependency, <span class="keywordtype">bool</span> addCLangFilter);</div>
+<div class="line"><a name="l00088"></a><span class="lineno">   88</span>&#160; </div>
+<div class="line"><a name="l00089"></a><span class="lineno">   89</span>&#160; </div>
+<div class="line"><a name="l00103"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">  103</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a>(celix_dm_service_dependency_t *dependency, <a class="code" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a> strategy);</div>
+<div class="line"><a name="l00104"></a><span class="lineno">  104</span>&#160; </div>
+<div class="line"><a name="l00108"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">  108</a></span>&#160;<a class="code" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a> <a class="code" href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a>(celix_dm_service_dependency_t *dependency);</div>
+<div class="line"><a name="l00109"></a><span class="lineno">  109</span>&#160; </div>
+<div class="line"><a name="l00117"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">  117</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a>(celix_dm_service_dependency_t *dependency, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceName, <span class="keyword">const</span> <span class="keywordtype">char</span>* serviceVersionRange, <span class="keyword">const</span> <span class="keywordtype">char</span>* filter);</div>
+<div class="line"><a name="l00118"></a><span class="lineno">  118</span>&#160; </div>
+<div class="line"><a name="l00122"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">  122</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dmServiceDependency_getFilter</a>(celix_dm_service_dependency_t *dependency);</div>
+<div class="line"><a name="l00123"></a><span class="lineno">  123</span>&#160; </div>
+<div class="line"><a name="l00129"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">  129</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dmServiceDependency_setCallback</a>(celix_dm_service_dependency_t *dependency, <a class="code" href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a> set);</div>
+<div class="line"><a name="l00130"></a><span class="lineno">  130</span>&#160; </div>
+<div class="line"><a name="l00137"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">  137</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a>(celix_dm_service_dependency_t *dependency, <a class="code" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a> set);</div>
+<div class="line"><a name="l00138"></a><span class="lineno">  138</span>&#160; </div>
+<div class="line"><a name="l00145"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">  145</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a>(celix_dm_service_dependency_t *dependency, <span class="keyword">const</span> <a class="code" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options_t</a> *opts);</div>
+<div class="line"><a name="l00146"></a><span class="lineno">  146</span>&#160; </div>
+<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">  152</a></span>&#160;celix_status_t <a class="code" href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a>(celix_dm_service_dependency_t *dependency, <span class="keywordtype">void</span>* handle);</div>
+<div class="line"><a name="l00153"></a><span class="lineno">  153</span>&#160; </div>
+<div class="line"><a name="l00158"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">  158</a></span>&#160;<a class="code" href="structcelix__dm__service__dependency__info__struct.html">dm_service_dependency_info_t</a>* <a class="code" href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dmServiceDependency_createInfo</a>(celix_dm_service_dependency_t* dep);</div>
+<div class="line"><a name="l00159"></a><span class="lineno">  159</span>&#160; </div>
+<div class="line"><a name="l00163"></a><span class="lineno"><a class="line" href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">  163</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dmServiceDependency_destroyInfo</a>(celix_dm_service_dependency_t *dep, <a class="code" href="structcelix__dm__service__dependency__info__struct.html">dm_service_dependency_info_t</a> *info);</div>
+<div class="line"><a name="l00164"></a><span class="lineno">  164</span>&#160; </div>
+<div class="line"><a name="l00165"></a><span class="lineno">  165</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00166"></a><span class="lineno">  166</span>&#160;}</div>
+<div class="line"><a name="l00167"></a><span class="lineno">  167</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00168"></a><span class="lineno">  168</span>&#160; </div>
+<div class="line"><a name="l00169"></a><span class="lineno">  169</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_DM_SERVICE_DEPENDENCY_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a1a731a456c8e617acfa4d81a6357959c"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c">celix_dmServiceDependency_setCallback</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallback(celix_dm_service_dependency_t *dependency, celix_dm_service_update_fp set)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a2602a6526ef6cde42d606c9ed958cec7"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7">celix_dmServiceDependency_setService</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setService(celix_dm_service_dependency_t *dependency, const char *serviceName, const char *serviceVersionRange, const char *filter)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_ac282334d66c3cfc4fda1b67245172979"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979">celix_dmServiceDependency_destroy</a></div><div class="ttdeci">void celix_dmServiceDependency_destroy(celix_dm_service_dependency_t *dep)</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a1e0bfcf2034cd6d69d954256d101598d"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d">celix_dm_service_dependency_callback_options::swapWithProps</a></div><div class="ttdeci">celix_dm_service_swap_with_props_fp swapWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:54</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a54ee61c8ab040dc87de22588013316fd"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd">celix_dm_service_dependency_callback_options::removeWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp removeWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:53</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a9663db4ef079c6300f95dadfe2c03813"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813">celix_dm_service_dependency_callback_options::add</a></div><div class="ttdeci">celix_dm_service_update_fp add</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:47</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88c"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency_strategy_enum</a></div><div class="ttdeci">celix_dm_service_dependency_strategy_enum</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:34</div></div>
+<div class="ttc" id="acelix__dm__info_8h_html"><div class="ttname"><a href="celix__dm__info_8h.html">celix_dm_info.h</a></div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__info__struct_html"><div class="ttname"><a href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a></div><div class="ttdef"><b>Definition:</b> celix_dm_info.h:42</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a10fe45460fc65e1590a58477f515424b"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">celix_dm_service_dependency_callback_options::remove</a></div><div class="ttdeci">celix_dm_service_update_fp remove</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:48</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a9d833904b765bee7073ec41828ea7d2e"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e">celix_dmServiceDependency_setStrategy</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setStrategy(celix_dm_service_dependency_t *dependency, celix_dm_service_dependency_strategy_t strategy)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_ace7f03a4e7746a8ca8218afd172752f8"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency_callback_options_t</a></div><div class="ttdeci">struct celix_dm_service_dependency_callback_options celix_dm_service_dependency_callback_options_t</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a487a41d56ea2bf1aa51cd7f7e83ff844"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844">celix_dmServiceDependency_getFilter</a></div><div class="ttdeci">const char * celix_dmServiceDependency_getFilter(celix_dm_service_dependency_t *dependency)</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a35b874e6fa5a6c3af03f09e6492e8b48"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48">celix_dm_service_dependency_callback_options::swap</a></div><div class="ttdeci">celix_dm_service_swap_fp swap</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:49</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a84e8cecdb9dd19f072d1b9c28fa95c8b"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b">celix_dm_service_dependency_callback_options::set</a></div><div class="ttdeci">celix_dm_service_update_fp set</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:46</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a588b147bec75a501fac3b35076fc98a3"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3">celix_dmServiceDependency_create</a></div><div class="ttdeci">celix_dm_service_dependency_t * celix_dmServiceDependency_create(void)</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a286bb094f7e4b4a9066e9b235aa8ade9"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9">celix_dm_service_dependency_callback_options::setWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp setWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:51</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html_a5cf7a8e9026d08803798c70cb6a30330"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330">celix_dm_service_dependency_callback_options::addWithProps</a></div><div class="ttdeci">celix_dm_service_update_with_props_fp addWithProps</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:52</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a0b84d9164563664da40491151f7d7131"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131">celix_dmServiceDependency_createInfo</a></div><div class="ttdeci">dm_service_dependency_info_t * celix_dmServiceDependency_createInfo(celix_dm_service_dependency_t *dep)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1">DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</a></div><div class="ttdeci">@ DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:35</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a6b4b49e1cbd6865c5dc14e94086f629f"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f">celix_dm_service_swap_with_props_fp</a></div><div class="ttdeci">int(* celix_dm_service_swap_with_props_fp)(void *handle, void *oldService, void *newService, const celix_properties_t *newProps)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:43</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a3aab7f5d65c74eb819047e5ec1f4c05f"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f">celix_dm_service_update_fp</a></div><div class="ttdeci">int(* celix_dm_service_update_fp)(void *handle, void *service)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:39</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a0c33bcf502f8683bce3cf382c4bdc76a"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a">celix_dmServiceDependency_setRequired</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setRequired(celix_dm_service_dependency_t *dependency, bool required)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_acb96da27c0087a05d885b0f55756de8a"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a">celix_dmServiceDependency_destroyInfo</a></div><div class="ttdeci">void celix_dmServiceDependency_destroyInfo(celix_dm_service_dependency_t *dep, dm_service_dependency_info_t *info)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_afb8ee50fcfc77f274578d85a70bb2b94"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_update_with_props_fp</a></div><div class="ttdeci">int(* celix_dm_service_update_with_props_fp)(void *handle, void *service, const celix_properties_t *props)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:42</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a9aec79471c46aecc7412523fe839e549"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549">celix_dmServiceDependency_setAddCLanguageFilter</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setAddCLanguageFilter(celix_dm_service_dependency_t *dependency, bool addCLangFilter)</div></div>
+<div class="ttc" id="astructcelix__dm__service__dependency__callback__options_html"><div class="ttname"><a href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a></div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:45</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a9bdfec7b27301bd71dd4f45fcdd11568"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568">celix_dmServiceDependency_setCallbackWithProperties</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbackWithProperties(celix_dm_service_dependency_t *dependency, celix_dm_service_update_with_props_fp set)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428">DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</a></div><div class="ttdeci">@ DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:36</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a8a77266cc94a0f019b29d75a8e54995d"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_swap_fp</a></div><div class="ttdeci">int(* celix_dm_service_swap_fp)(void *handle, void *oldService, void *newService)</div><div class="ttdef"><b>Definition:</b> celix_dm_service_dependency.h:40</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a00447f0e837918fcf6e39698ef375f46"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency_strategy_t</a></div><div class="ttdeci">enum celix_dm_service_dependency_strategy_enum celix_dm_service_dependency_strategy_t</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_aebe0669933d37f9fd1c3fdc873127d78"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78">celix_dmServiceDependency_setCallbackHandle</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbackHandle(celix_dm_service_dependency_t *dependency, void *handle)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a8365396c6363ad98b66725243f97f8ea"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea">celix_dmServiceDependency_getStrategy</a></div><div class="ttdeci">celix_dm_service_dependency_strategy_t celix_dmServiceDependency_getStrategy(celix_dm_service_dependency_t *dependency)</div></div>
+<div class="ttc" id="acelix__dm__service__dependency_8h_html_a31898ef1ad5f9695dc85a24202020ebe"><div class="ttname"><a href="celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe">celix_dmServiceDependency_setCallbacksWithOptions</a></div><div class="ttdeci">celix_status_t celix_dmServiceDependency_setCallbacksWithOptions(celix_dm_service_dependency_t *dependency, const celix_dm_service_dependency_callback_options_t *opts)</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/celix__framework_8h.html b/static/docs/2.2.1/html/celix__framework_8h.html
old mode 100644
new mode 100755
similarity index 85%
rename from static/docs/2.2.0/html/celix__framework_8h.html
rename to static/docs/2.2.1/html/celix__framework_8h.html
index 46bd008..856064d
--- a/static/docs/2.2.0/html/celix__framework_8h.html
+++ b/static/docs/2.2.1/html/celix__framework_8h.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include/celix_framework.h File Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -99,6 +80,9 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__framework_8h__incl.png" border="0" usemap="#libs_2framework_2include_2celix__framework_8h" alt=""/></div>
 <map name="libs_2framework_2include_2celix__framework_8h" id="libs_2framework_2include_2celix__framework_8h">
+<area shape="rect" title=" " alt="" coords="47,5,198,47"/>
+<area shape="rect" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" title=" " alt="" coords="129,95,253,121"/>
 </map>
 </div>
 </div><div class="textblock"><div class="dynheader">
@@ -106,7 +90,8 @@
 <div class="dyncontent">
 <div class="center"><img src="celix__framework_8h__dep__incl.png" border="0" usemap="#libs_2framework_2include_2celix__framework_8hdep" alt=""/></div>
 <map name="libs_2framework_2include_2celix__framework_8hdep" id="libs_2framework_2include_2celix__framework_8hdep">
-<area shape="rect" id="node2" href="celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+<area shape="rect" title=" " alt="" coords="5,5,156,47"/>
+<area shape="rect" href="celix__api_8h.html" title=" " alt="" coords="5,95,156,136"/>
 </map>
 </div>
 </div>
@@ -126,7 +111,9 @@
 <tr class="separator:ab158bb807ea2171c5d20076cb457c8d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Function Documentation</h2>
-<a class="anchor" id="ae980ec9c8f83f8a3e65dc7da9d794f18"></a>
+<a id="ae980ec9c8f83f8a3e65dc7da9d794f18"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae980ec9c8f83f8a3e65dc7da9d794f18">&#9670;&nbsp;</a></span>celix_framework_getFrameworkBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -149,7 +136,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aa2e913753f841b3b0b22c196b39d03b1"></a>
+<a id="aa2e913753f841b3b0b22c196b39d03b1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa2e913753f841b3b0b22c196b39d03b1">&#9670;&nbsp;</a></span>celix_framework_getFrameworkContext()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -172,7 +161,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a671ba53e13abea3d4eb328a66b62802f"></a>
+<a id="a671ba53e13abea3d4eb328a66b62802f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a671ba53e13abea3d4eb328a66b62802f">&#9670;&nbsp;</a></span>celix_framework_getUUID()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -189,7 +180,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ab158bb807ea2171c5d20076cb457c8d1"></a>
+<a id="ab158bb807ea2171c5d20076cb457c8d1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ab158bb807ea2171c5d20076cb457c8d1">&#9670;&nbsp;</a></span>celix_framework_useBundle()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -245,7 +238,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a192ba45dd2a7175fd4d19c70da59f9ab"></a>
+<a id="a192ba45dd2a7175fd4d19c70da59f9ab"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a192ba45dd2a7175fd4d19c70da59f9ab">&#9670;&nbsp;</a></span>celix_framework_useBundles()</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -298,7 +293,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.map b/static/docs/2.2.1/html/celix__framework_8h__dep__incl.map
old mode 100644
new mode 100755
similarity index 62%
rename from static/docs/2.2.0/html/celix__framework_8h__dep__incl.map
rename to static/docs/2.2.1/html/celix__framework_8h__dep__incl.map
index 93572c3..a4cc95a
--- a/static/docs/2.2.0/html/celix__framework_8h__dep__incl.map
+++ b/static/docs/2.2.1/html/celix__framework_8h__dep__incl.map
@@ -1,3 +1,4 @@
 <map id="libs/framework/include/celix_framework.h" name="libs/framework/include/celix_framework.h">
-<area shape="rect" id="node2" href="$celix__api_8h.html" title="libs/framework/include\l/celix_api.h" alt="" coords="5,95,168,136"/>
+<area shape="rect" id="node1" title=" " alt="" coords="5,5,156,47"/>
+<area shape="rect" id="node2" href="$celix__api_8h.html" title=" " alt="" coords="5,95,156,136"/>
 </map>
diff --git a/static/docs/2.2.1/html/celix__framework_8h__dep__incl.md5 b/static/docs/2.2.1/html/celix__framework_8h__dep__incl.md5
new file mode 100755
index 0000000..bc85af1
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__framework_8h__dep__incl.md5
@@ -0,0 +1 @@
+d017e89d406f8664b8d75a4e4800376b
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__framework_8h__dep__incl.png b/static/docs/2.2.1/html/celix__framework_8h__dep__incl.png
new file mode 100755
index 0000000..32019bc
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__framework_8h__dep__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__framework_8h__incl.map b/static/docs/2.2.1/html/celix__framework_8h__incl.map
new file mode 100755
index 0000000..6b237cf
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__framework_8h__incl.map
@@ -0,0 +1,5 @@
+<map id="libs/framework/include/celix_framework.h" name="libs/framework/include/celix_framework.h">
+<area shape="rect" id="node1" title=" " alt="" coords="47,5,198,47"/>
+<area shape="rect" id="node2" title=" " alt="" coords="5,95,104,121"/>
+<area shape="rect" id="node3" title=" " alt="" coords="129,95,253,121"/>
+</map>
diff --git a/static/docs/2.2.1/html/celix__framework_8h__incl.md5 b/static/docs/2.2.1/html/celix__framework_8h__incl.md5
new file mode 100755
index 0000000..2e6e181
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__framework_8h__incl.md5
@@ -0,0 +1 @@
+bd9368ca7a1865a397599c887ba9dc96
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/celix__framework_8h__incl.png b/static/docs/2.2.1/html/celix__framework_8h__incl.png
new file mode 100755
index 0000000..f0b36b7
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__framework_8h__incl.png
Binary files differ
diff --git a/static/docs/2.2.1/html/celix__framework_8h_source.html b/static/docs/2.2.1/html/celix__framework_8h_source.html
new file mode 100755
index 0000000..eb8dfe2
--- /dev/null
+++ b/static/docs/2.2.1/html/celix__framework_8h_source.html
@@ -0,0 +1,134 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: libs/framework/include/celix_framework.h Source File</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div id="nav-path" class="navpath">
+  <ul>
+<li class="navelem"><a class="el" href="dir_6719ab1f1f7655efc2fa43f7eb574fd1.html">libs</a></li><li class="navelem"><a class="el" href="dir_edbb2ffdc3e165978e68de3a46f2e8a0.html">framework</a></li><li class="navelem"><a class="el" href="dir_bc286dd6b945a73064974dfd7e40f558.html">include</a></li>  </ul>
+</div>
+</div><!-- top -->
+<div class="header">
+  <div class="headertitle">
+<div class="title">celix_framework.h</div>  </div>
+</div><!--header-->
+<div class="contents">
+<a href="celix__framework_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;<span class="comment">/*</span></div>
+<div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;<span class="comment"> * Licensed to the Apache Software Foundation (ASF) under one</span></div>
+<div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;<span class="comment"> * or more contributor license agreements.  See the NOTICE file</span></div>
+<div class="line"><a name="l00004"></a><span class="lineno">    4</span>&#160;<span class="comment"> * distributed with this work for additional information</span></div>
+<div class="line"><a name="l00005"></a><span class="lineno">    5</span>&#160;<span class="comment"> * regarding copyright ownership.  The ASF licenses this file</span></div>
+<div class="line"><a name="l00006"></a><span class="lineno">    6</span>&#160;<span class="comment"> * to you under the Apache License, Version 2.0 (the</span></div>
+<div class="line"><a name="l00007"></a><span class="lineno">    7</span>&#160;<span class="comment"> * &quot;License&quot;); you may not use this file except in compliance</span></div>
+<div class="line"><a name="l00008"></a><span class="lineno">    8</span>&#160;<span class="comment"> * with the License.  You may obtain a copy of the License at</span></div>
+<div class="line"><a name="l00009"></a><span class="lineno">    9</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00010"></a><span class="lineno">   10</span>&#160;<span class="comment"> *   http://www.apache.org/licenses/LICENSE-2.0</span></div>
+<div class="line"><a name="l00011"></a><span class="lineno">   11</span>&#160;<span class="comment"> *</span></div>
+<div class="line"><a name="l00012"></a><span class="lineno">   12</span>&#160;<span class="comment"> * Unless required by applicable law or agreed to in writing,</span></div>
+<div class="line"><a name="l00013"></a><span class="lineno">   13</span>&#160;<span class="comment"> * software distributed under the License is distributed on an</span></div>
+<div class="line"><a name="l00014"></a><span class="lineno">   14</span>&#160;<span class="comment"> * &quot;AS IS&quot; BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</span></div>
+<div class="line"><a name="l00015"></a><span class="lineno">   15</span>&#160;<span class="comment"> *  KIND, either express or implied.  See the License for the</span></div>
+<div class="line"><a name="l00016"></a><span class="lineno">   16</span>&#160;<span class="comment"> * specific language governing permissions and limitations</span></div>
+<div class="line"><a name="l00017"></a><span class="lineno">   17</span>&#160;<span class="comment"> * under the License.</span></div>
+<div class="line"><a name="l00018"></a><span class="lineno">   18</span>&#160;<span class="comment"> */</span></div>
+<div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160; </div>
+<div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#ifndef CELIX_FRAMEWORK_H_</span></div>
+<div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#define CELIX_FRAMEWORK_H_</span></div>
+<div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160; </div>
+<div class="line"><a name="l00023"></a><span class="lineno">   23</span>&#160; </div>
+<div class="line"><a name="l00024"></a><span class="lineno">   24</span>&#160;<span class="preprocessor">#include &quot;celix_types.h&quot;</span></div>
+<div class="line"><a name="l00025"></a><span class="lineno">   25</span>&#160;<span class="preprocessor">#include &quot;celix_properties.h&quot;</span></div>
+<div class="line"><a name="l00026"></a><span class="lineno">   26</span>&#160; </div>
+<div class="line"><a name="l00027"></a><span class="lineno">   27</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00028"></a><span class="lineno">   28</span>&#160;<span class="keyword">extern</span> <span class="stringliteral">&quot;C&quot;</span> {</div>
+<div class="line"><a name="l00029"></a><span class="lineno">   29</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00030"></a><span class="lineno">   30</span>&#160; </div>
+<div class="line"><a name="l00035"></a><span class="lineno"><a class="line" href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">   35</a></span>&#160;<span class="keyword">const</span> <span class="keywordtype">char</span>* <a class="code" href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework_getUUID</a>(<span class="keyword">const</span> celix_framework_t *fw);</div>
+<div class="line"><a name="l00036"></a><span class="lineno">   36</span>&#160; </div>
+<div class="line"><a name="l00043"></a><span class="lineno"><a class="line" href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">   43</a></span>&#160;celix_bundle_context_t* <a class="code" href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework_getFrameworkContext</a>(<span class="keyword">const</span> celix_framework_t *fw);</div>
+<div class="line"><a name="l00044"></a><span class="lineno">   44</span>&#160; </div>
+<div class="line"><a name="l00051"></a><span class="lineno"><a class="line" href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">   51</a></span>&#160;celix_bundle_t* <a class="code" href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">celix_framework_getFrameworkBundle</a>(<span class="keyword">const</span> celix_framework_t *fw);</div>
+<div class="line"><a name="l00052"></a><span class="lineno">   52</span>&#160; </div>
+<div class="line"><a name="l00063"></a><span class="lineno"><a class="line" href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">   63</a></span>&#160;<span class="keywordtype">void</span> <a class="code" href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework_useBundles</a>(celix_framework_t *fw, <span class="keywordtype">bool</span> includeFrameworkBundle, <span class="keywordtype">void</span> *callbackHandle, <span class="keywordtype">void</span>(*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bnd));</div>
+<div class="line"><a name="l00064"></a><span class="lineno">   64</span>&#160; </div>
+<div class="line"><a name="l00077"></a><span class="lineno"><a class="line" href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">   77</a></span>&#160;<span class="keywordtype">bool</span> <a class="code" href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework_useBundle</a>(celix_framework_t *fw, <span class="keywordtype">bool</span> onlyActive, <span class="keywordtype">long</span> bndId, <span class="keywordtype">void</span> *callbackHandle, <span class="keywordtype">void</span>(*use)(<span class="keywordtype">void</span> *handle, <span class="keyword">const</span> celix_bundle_t *bnd));</div>
+<div class="line"><a name="l00078"></a><span class="lineno">   78</span>&#160; </div>
+<div class="line"><a name="l00079"></a><span class="lineno">   79</span>&#160; </div>
+<div class="line"><a name="l00080"></a><span class="lineno">   80</span>&#160; </div>
+<div class="line"><a name="l00081"></a><span class="lineno">   81</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div>
+<div class="line"><a name="l00082"></a><span class="lineno">   82</span>&#160;}</div>
+<div class="line"><a name="l00083"></a><span class="lineno">   83</span>&#160;<span class="preprocessor">#endif</span></div>
+<div class="line"><a name="l00084"></a><span class="lineno">   84</span>&#160; </div>
+<div class="line"><a name="l00085"></a><span class="lineno">   85</span>&#160;<span class="preprocessor">#endif </span><span class="comment">/* CELIX_FRAMEWORK_H_ */</span><span class="preprocessor"></span></div>
+</div><!-- fragment --></div><!-- contents -->
+<div class="ttc" id="acelix__framework_8h_html_ae980ec9c8f83f8a3e65dc7da9d794f18"><div class="ttname"><a href="celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18">celix_framework_getFrameworkBundle</a></div><div class="ttdeci">celix_bundle_t * celix_framework_getFrameworkBundle(const celix_framework_t *fw)</div></div>
+<div class="ttc" id="acelix__framework_8h_html_a671ba53e13abea3d4eb328a66b62802f"><div class="ttname"><a href="celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f">celix_framework_getUUID</a></div><div class="ttdeci">const char * celix_framework_getUUID(const celix_framework_t *fw)</div></div>
+<div class="ttc" id="acelix__framework_8h_html_a192ba45dd2a7175fd4d19c70da59f9ab"><div class="ttname"><a href="celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab">celix_framework_useBundles</a></div><div class="ttdeci">void celix_framework_useBundles(celix_framework_t *fw, bool includeFrameworkBundle, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</div></div>
+<div class="ttc" id="acelix__framework_8h_html_aa2e913753f841b3b0b22c196b39d03b1"><div class="ttname"><a href="celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1">celix_framework_getFrameworkContext</a></div><div class="ttdeci">celix_bundle_context_t * celix_framework_getFrameworkContext(const celix_framework_t *fw)</div></div>
+<div class="ttc" id="acelix__framework_8h_html_ab158bb807ea2171c5d20076cb457c8d1"><div class="ttname"><a href="celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1">celix_framework_useBundle</a></div><div class="ttdeci">bool celix_framework_useBundle(celix_framework_t *fw, bool onlyActive, long bndId, void *callbackHandle, void(*use)(void *handle, const celix_bundle_t *bnd))</div></div>
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.1/html/classes.html b/static/docs/2.2.1/html/classes.html
new file mode 100755
index 0000000..a57e2ce
--- /dev/null
+++ b/static/docs/2.2.1/html/classes.html
@@ -0,0 +1,99 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: Class Index</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Class Index</div>  </div>
+</div><!--header-->
+<div class="contents">
+<div class="qindex"><a class="qindex" href="#letter_c">c</a></div>
+<table class="classindex">
+<tr><td rowspan="2" valign="bottom"><a name="letter_c"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;c&#160;&#160;</div></td></tr></table>
+</td>
+<td valign="top"><a class="el" href="structcelix__dm__component__info__struct.html">celix_dm_component_info_struct</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__dm__service__dependency__callback__options.html">celix_dm_service_dependency_callback_options</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__service__registration__options.html">celix_service_registration_options</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__service__use__options.html">celix_service_use_options</a>&#160;&#160;&#160;</td>
+</tr>
+<tr><td valign="top"><a class="el" href="structcelix__dm__dependency__manager__info__struct.html">celix_dm_dependency_manager_info_struct</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__dm__service__dependency__info__struct.html">celix_dm_service_dependency_info_struct</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__service__tracker__info.html">celix_service_tracker_info</a>&#160;&#160;&#160;</td>
+<td></td></tr>
+<tr><td valign="top"><a class="el" href="structcelix__bundle__tracker__options.html">celix_bundle_tracker_options</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__dm__interface__info__struct.html">celix_dm_interface_info_struct</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__service__filter__options.html">celix_service_filter_options</a>&#160;&#160;&#160;</td>
+<td valign="top"><a class="el" href="structcelix__service__tracking__options.html">celix_service_tracking_options</a>&#160;&#160;&#160;</td>
+<td></td></tr>
+<tr><td></td><td></td><td></td><td></td><td></td></tr>
+</table>
+<div class="qindex"><a class="qindex" href="#letter_c">c</a></div>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/closed.png b/static/docs/2.2.1/html/closed.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/closed.png
rename to static/docs/2.2.1/html/closed.png
Binary files differ
diff --git a/static/docs/2.2.0/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html b/static/docs/2.2.1/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
old mode 100644
new mode 100755
similarity index 65%
rename from static/docs/2.2.0/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
rename to static/docs/2.2.1/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
index 010acbf..15e3c84
--- a/static/docs/2.2.0/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
+++ b/static/docs/2.2.1/html/dir_6719ab1f1f7655efc2fa43f7eb574fd1.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs Directory Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +82,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/dir_bc286dd6b945a73064974dfd7e40f558.html b/static/docs/2.2.1/html/dir_bc286dd6b945a73064974dfd7e40f558.html
old mode 100644
new mode 100755
similarity index 78%
rename from static/docs/2.2.0/html/dir_bc286dd6b945a73064974dfd7e40f558.html
rename to static/docs/2.2.1/html/dir_bc286dd6b945a73064974dfd7e40f558.html
index b17d8c9..b360ec9
--- a/static/docs/2.2.0/html/dir_bc286dd6b945a73064974dfd7e40f558.html
+++ b/static/docs/2.2.1/html/dir_bc286dd6b945a73064974dfd7e40f558.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework/include Directory Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -115,7 +96,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html b/static/docs/2.2.1/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
old mode 100644
new mode 100755
similarity index 66%
rename from static/docs/2.2.0/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
rename to static/docs/2.2.1/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
index 80f14fa..d44170b
--- a/static/docs/2.2.0/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
+++ b/static/docs/2.2.1/html/dir_edbb2ffdc3e165978e68de3a46f2e8a0.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: libs/framework Directory Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +82,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/doc.png b/static/docs/2.2.1/html/doc.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/doc.png
rename to static/docs/2.2.1/html/doc.png
Binary files differ
diff --git a/static/docs/2.2.0/html/doxygen.css b/static/docs/2.2.1/html/doxygen.css
old mode 100644
new mode 100755
similarity index 79%
rename from static/docs/2.2.0/html/doxygen.css
rename to static/docs/2.2.1/html/doxygen.css
index 1425ec5..5e35db3
--- a/static/docs/2.2.0/html/doxygen.css
+++ b/static/docs/2.2.1/html/doxygen.css
@@ -1,9 +1,13 @@
-/* The standard CSS for doxygen 1.8.11 */
+/* The standard CSS for doxygen 1.8.18 */
 
 body, table, div, p, dl {
 	font: 400 14px/22px Roboto,sans-serif;
 }
 
+p.reference, p.definition {
+	font: 400 14px/22px Roboto,sans-serif;
+}
+
 /* @group Heading Levels */
 
 h1.groupheader {
@@ -49,17 +53,24 @@
 	font-weight: bold;
 }
 
-div.multicol {
+ul.multicol {
 	-moz-column-gap: 1em;
 	-webkit-column-gap: 1em;
+	column-gap: 1em;
 	-moz-column-count: 3;
 	-webkit-column-count: 3;
+	column-count: 3;
 }
 
 p.startli, p.startdd {
 	margin-top: 2px;
 }
 
+th p.starttd, p.intertd, p.endtd {
+        font-size: 100%;
+        font-weight: 700;
+}
+
 p.starttd {
 	margin-top: 0px;
 }
@@ -76,6 +87,15 @@
 	margin-bottom: 2px;
 }
 
+p.interli {
+}
+
+p.interdd {
+}
+
+p.intertd {
+}
+
 /* @end */
 
 caption {
@@ -130,12 +150,12 @@
 a.qindexHL {
 	font-weight: bold;
 	background-color: #9CAFD4;
-	color: #ffffff;
+	color: #FFFFFF;
 	border: 1px double #869DCA;
 }
 
 .contents a.qindexHL:visited {
-        color: #ffffff;
+        color: #FFFFFF;
 }
 
 a.el {
@@ -159,6 +179,25 @@
 	margin-left: -1cm;
 }
 
+ul {
+  overflow: hidden; /*Fixed: list item bullets overlap floating elements*/
+}
+
+#side-nav ul {
+  overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */
+}
+
+#main-nav ul {
+  overflow: visible; /* reset ul rule for the navigation bar drop down lists */
+}
+
+.fragment {
+  text-align: left;
+  direction: ltr;
+  overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/
+  overflow-y: hidden;
+}
+
 pre.fragment {
         border: 1px solid #C4CFE5;
         background-color: #FBFCFD;
@@ -173,8 +212,8 @@
 }
 
 div.fragment {
-        padding: 4px 6px;
-        margin: 4px 8px 4px 2px;
+  padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/
+  margin: 4px 8px 4px 2px;
 	background-color: #FBFCFD;
 	border: 1px solid #C4CFE5;
 }
@@ -232,10 +271,19 @@
 	background-color: #C8C8C8;
 }
 
+.lineno {
+	-webkit-touch-callout: none;
+	-webkit-user-select: none;
+	-khtml-user-select: none;
+	-moz-user-select: none;
+	-ms-user-select: none;
+	user-select: none;
+}
+
 div.ah, span.ah {
 	background-color: black;
 	font-weight: bold;
-	color: #ffffff;
+	color: #FFFFFF;
 	margin-bottom: 3px;
 	margin-top: 3px;
 	padding: 0.2em;
@@ -311,7 +359,7 @@
 	
 }
 
-img.formulaInl {
+img.formulaInl, img.inline {
 	vertical-align: middle;
 }
 
@@ -389,6 +437,13 @@
         padding: 0 12px 0 16px;
 }
 
+blockquote.DocNodeRTL {
+   border-left: 0;
+   border-right: 2px solid #9CAFD4;
+   margin: 0 4px 0 24px;
+   padding: 0 16px 0 12px;
+}
+
 /* @end */
 
 /*
@@ -485,7 +540,7 @@
         white-space: nowrap;
 }
 
-.memItemRight {
+.memItemRight, .memTemplItemRight {
 	width: 100%;
 }
 
@@ -501,6 +556,29 @@
 
 /* Styles for detailed member documentation */
 
+.memtitle {
+	padding: 8px;
+	border-top: 1px solid #A8B8D9;
+	border-left: 1px solid #A8B8D9;
+	border-right: 1px solid #A8B8D9;
+	border-top-right-radius: 4px;
+	border-top-left-radius: 4px;
+	margin-bottom: -1px;
+	background-image: url('nav_f.png');
+	background-repeat: repeat-x;
+	background-color: #E2E8F2;
+	line-height: 1.25;
+	font-weight: 300;
+	float:left;
+}
+
+.permalink
+{
+        font-size: 65%;
+        display: inline-block;
+        vertical-align: middle;
+}
+
 .memtemplate {
 	font-size: 80%;
 	color: #4665A2;
@@ -539,7 +617,7 @@
 }
 
 .memname {
-        font-weight: bold;
+        font-weight: 400;
         margin-left: 6px;
 }
 
@@ -555,24 +633,24 @@
         color: #253555;
         font-weight: bold;
         text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9);
-        background-image:url('nav_f.png');
-        background-repeat:repeat-x;
-        background-color: #E2E8F2;
+        background-color: #DFE5F1;
         /* opera specific markup */
         box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
         border-top-right-radius: 4px;
-        border-top-left-radius: 4px;
         /* firefox specific markup */
         -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px;
         -moz-border-radius-topright: 4px;
-        -moz-border-radius-topleft: 4px;
         /* webkit specific markup */
         -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15);
         -webkit-border-top-right-radius: 4px;
-        -webkit-border-top-left-radius: 4px;
 
 }
 
+.overload {
+        font-family: "courier new",courier,monospace;
+	font-size: 65%;
+}
+
 .memdoc, dl.reflist dd {
         border-bottom: 1px solid #A8B8D9;      
         border-left: 1px solid #A8B8D9;      
@@ -630,17 +708,17 @@
         padding-left: 0px;
 }       
 
-.params .paramname, .retval .paramname {
+.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname {
         font-weight: bold;
         vertical-align: top;
 }
         
-.params .paramtype {
+.params .paramtype, .tparams .paramtype {
         font-style: italic;
         vertical-align: top;
 }       
         
-.params .paramdir {
+.params .paramdir, .tparams .paramdir {
         font-family: "courier new",courier,monospace;
         vertical-align: top;
 }
@@ -914,6 +992,7 @@
         padding-bottom: 4px;
         padding-top: 5px;
         text-align:left;
+        font-weight: 400;
         -moz-border-radius-topleft: 4px;
         -moz-border-radius-topright: 4px;
         -webkit-border-top-left-radius: 4px;
@@ -1044,72 +1123,143 @@
 	padding: 5px 5px 5px 10px;
 }
 
-dl
-{
-        padding: 0 0 0 10px;
+.PageDocRTL-title div.headertitle {
+  text-align: right;
+  direction: rtl;
 }
 
-/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */
-dl.section
-{
+dl {
+        padding: 0 0 0 0;
+}
+
+/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */
+dl.section {
 	margin-left: 0px;
 	padding-left: 0px;
 }
 
-dl.note
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #D0C000;
+dl.section.DocNodeRTL {
+  margin-right: 0px;
+  padding-right: 0px;
 }
 
-dl.warning, dl.attention
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #FF0000;
+dl.note {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #D0C000;
 }
 
-dl.pre, dl.post, dl.invariant
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00D000;
+dl.note.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #D0C000;
 }
 
-dl.deprecated
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #505050;
+dl.warning, dl.attention {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #FF0000;
 }
 
-dl.todo
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #00C0E0;
+dl.warning.DocNodeRTL, dl.attention.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #FF0000;
 }
 
-dl.test
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #3030E0;
+dl.pre, dl.post, dl.invariant {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00D000;
 }
 
-dl.bug
-{
-        margin-left:-7px;
-        padding-left: 3px;
-        border-left:4px solid;
-        border-color: #C08050;
+dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #00D000;
+}
+
+dl.deprecated {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #505050;
+}
+
+dl.deprecated.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #505050;
+}
+
+dl.todo {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.todo.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #00C0E0;
+}
+
+dl.test {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.test.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #3030E0;
+}
+
+dl.bug {
+  margin-left: -7px;
+  padding-left: 3px;
+  border-left: 4px solid;
+  border-color: #C08050;
+}
+
+dl.bug.DocNodeRTL {
+  margin-left: 0;
+  padding-left: 0;
+  border-left: 0;
+  margin-right: -7px;
+  padding-right: 3px;
+  border-right: 4px solid;
+  border-color: #C08050;
 }
 
 dl.section dd {
@@ -1178,6 +1328,11 @@
         text-align: center;
 }
 
+.plantumlgraph
+{
+        text-align: center;
+}
+
 .diagraph
 {
         text-align: center;
@@ -1221,6 +1376,11 @@
         width: 200px;
 }
 
+.PageDocRTL-title div.toc {
+  float: left !important;
+  text-align: right;
+}
+
 div.toc li {
         background: url("bdwn.png") no-repeat scroll 0 5px transparent;
         font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif;
@@ -1229,6 +1389,12 @@
         padding-top: 2px;
 }
 
+.PageDocRTL-title div.toc li {
+  background-position-x: right !important;
+  padding-left: 0 !important;
+  padding-right: 10px;
+}
+
 div.toc h3 {
         font: bold 12px/1.2 Arial,FreeSans,sans-serif;
 	color: #4665A2;
@@ -1258,6 +1424,26 @@
         margin-left: 45px;
 }
 
+.PageDocRTL-title div.toc li.level1 {
+  margin-left: 0 !important;
+  margin-right: 0;
+}
+
+.PageDocRTL-title div.toc li.level2 {
+  margin-left: 0 !important;
+  margin-right: 15px;
+}
+
+.PageDocRTL-title div.toc li.level3 {
+  margin-left: 0 !important;
+  margin-right: 30px;
+}
+
+.PageDocRTL-title div.toc li.level4 {
+  margin-left: 0 !important;
+  margin-right: 45px;
+}
+
 .inherit_header {
         font-weight: bold;
         color: gray;
@@ -1371,7 +1557,7 @@
 }
 
 #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after {
-	border-top-color: #ffffff;
+	border-top-color: #FFFFFF;
 	border-width: 10px;
 	margin: 0px -10px;
 }
@@ -1399,7 +1585,7 @@
 }
 
 #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after {
-	border-bottom-color: #ffffff;
+	border-bottom-color: #FFFFFF;
 	border-width: 10px;
 	margin: 0px -10px;
 }
@@ -1426,7 +1612,7 @@
 	left: 100%;
 }
 #powerTip.e:after {
-	border-left-color: #ffffff;
+	border-left-color: #FFFFFF;
 	border-width: 10px;
 	top: 50%;
 	margin-top: -10px;
@@ -1442,7 +1628,7 @@
 	right: 100%;
 }
 #powerTip.w:after {
-	border-right-color: #ffffff;
+	border-right-color: #FFFFFF;
 	border-width: 10px;
 	top: 50%;
 	margin-top: -10px;
@@ -1473,3 +1659,72 @@
   }
 }
 
+/* @group Markdown */
+
+table.markdownTable {
+	border-collapse:collapse;
+        margin-top: 4px;
+        margin-bottom: 4px;
+}
+
+table.markdownTable td, table.markdownTable th {
+	border: 1px solid #2D4068;
+	padding: 3px 7px 2px;
+}
+
+table.markdownTable tr {
+}
+
+th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone {
+	background-color: #374F7F;
+	color: #FFFFFF;
+	font-size: 110%;
+	padding-bottom: 4px;
+	padding-top: 5px;
+}
+
+th.markdownTableHeadLeft, td.markdownTableBodyLeft {
+	text-align: left
+}
+
+th.markdownTableHeadRight, td.markdownTableBodyRight {
+	text-align: right
+}
+
+th.markdownTableHeadCenter, td.markdownTableBodyCenter {
+	text-align: center
+}
+
+.DocNodeRTL {
+  text-align: right;
+  direction: rtl;
+}
+
+.DocNodeLTR {
+  text-align: left;
+  direction: ltr;
+}
+
+table.DocNodeRTL {
+   width: auto;
+   margin-right: 0;
+   margin-left: auto;
+}
+
+table.DocNodeLTR {
+   width: auto;
+   margin-right: auto;
+   margin-left: 0;
+}
+
+tt, code, kbd, samp
+{
+  display: inline-block;
+  direction:ltr; 
+}
+/* @end */
+
+u {
+	text-decoration: underline;
+}
+
diff --git a/static/docs/2.2.0/html/doxygen.png b/static/docs/2.2.1/html/doxygen.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/doxygen.png
rename to static/docs/2.2.1/html/doxygen.png
Binary files differ
diff --git a/static/docs/2.2.0/html/dynsections.js b/static/docs/2.2.1/html/dynsections.js
old mode 100644
new mode 100755
similarity index 70%
rename from static/docs/2.2.0/html/dynsections.js
rename to static/docs/2.2.1/html/dynsections.js
index 85e1836..3174bd7
--- a/static/docs/2.2.0/html/dynsections.js
+++ b/static/docs/2.2.1/html/dynsections.js
@@ -1,3 +1,27 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
 function toggleVisibility(linkObj)
 {
  var base = $(linkObj).attr('id');
@@ -15,7 +39,7 @@
    summary.hide();
    $(linkObj).removeClass('closed').addClass('opened');
    $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
- } 
+ }
  return false;
 }
 
@@ -94,4 +118,4 @@
     $(img).attr('src',src.substring(0,src.length-10)+'open.png');
   }
 }
-
+/* @license-end */
diff --git a/static/docs/2.2.0/html/files.html b/static/docs/2.2.1/html/files.html
old mode 100644
new mode 100755
similarity index 79%
rename from static/docs/2.2.0/html/files.html
rename to static/docs/2.2.1/html/files.html
index af3cc83..d8320f3
--- a/static/docs/2.2.0/html/files.html
+++ b/static/docs/2.2.1/html/files.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: File List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,39 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="files.html"><span>File&#160;List</span></a></li>
-      <li><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -106,7 +87,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/folderclosed.png b/static/docs/2.2.1/html/folderclosed.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/folderclosed.png
rename to static/docs/2.2.1/html/folderclosed.png
Binary files differ
diff --git a/static/docs/2.2.0/html/folderopen.png b/static/docs/2.2.1/html/folderopen.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/folderopen.png
rename to static/docs/2.2.1/html/folderopen.png
Binary files differ
diff --git a/static/docs/2.2.0/html/functions.html b/static/docs/2.2.1/html/functions.html
old mode 100644
new mode 100755
similarity index 74%
rename from static/docs/2.2.0/html/functions.html
rename to static/docs/2.2.1/html/functions.html
index d929ba5..59f0770
--- a/static/docs/2.2.0/html/functions.html
+++ b/static/docs/2.2.1/html/functions.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Class Members</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,62 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="functions.html"><span>All</span></a></li>
-      <li><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_b"><span>b</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li class="current"><a href="#index_u"><span>u</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -107,7 +65,7 @@
 <div class="contents">
 <div class="textblock">Here is a list of all class members with links to the classes they belong to:</div>
 
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<h3><a id="index_a"></a>- a -</h3><ul>
 <li>active
 : <a class="el" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct</a>
 </li>
@@ -130,7 +88,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<h3><a id="index_b"></a>- b -</h3><ul>
 <li>bndId
 : <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct</a>
 </li>
@@ -140,7 +98,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<h3><a id="index_c"></a>- c -</h3><ul>
 <li>components
 : <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct</a>
 </li>
@@ -150,14 +108,14 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<h3><a id="index_d"></a>- d -</h3><ul>
 <li>dependency_list
 : <a class="el" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct</a>
 </li>
 </ul>
 
 
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<h3><a id="index_f"></a>- f -</h3><ul>
 <li>filter
 : <a class="el" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct</a>
 , <a class="el" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info</a>
@@ -165,7 +123,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<h3><a id="index_i"></a>- i -</h3><ul>
 <li>id
 : <a class="el" href="structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5">celix_dm_component_info_struct</a>
 </li>
@@ -175,7 +133,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<h3><a id="index_n"></a>- n -</h3><ul>
 <li>name
 : <a class="el" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">celix_dm_component_info_struct</a>
 , <a class="el" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">celix_dm_interface_info_struct</a>
@@ -183,7 +141,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<h3><a id="index_o"></a>- o -</h3><ul>
 <li>onBundleEvent
 : <a class="el" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">celix_bundle_tracker_options</a>
 </li>
@@ -203,14 +161,14 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<h3><a id="index_p"></a>- p -</h3><ul>
 <li>properties
 : <a class="el" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct</a>
 </li>
 </ul>
 
 
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<h3><a id="index_r"></a>- r -</h3><ul>
 <li>remove
 : <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">celix_dm_service_dependency_callback_options</a>
 , <a class="el" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">celix_service_tracking_options</a>
@@ -230,7 +188,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<h3><a id="index_s"></a>- s -</h3><ul>
 <li>serviceLanguage
 : <a class="el" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info</a>
 </li>
@@ -262,7 +220,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<h3><a id="index_u"></a>- u -</h3><ul>
 <li>use
 : <a class="el" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">celix_service_use_options</a>
 </li>
@@ -278,7 +236,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/functions_vars.html b/static/docs/2.2.1/html/functions_vars.html
old mode 100644
new mode 100755
similarity index 74%
rename from static/docs/2.2.0/html/functions_vars.html
rename to static/docs/2.2.1/html/functions_vars.html
index e91a2b8..a5395f8
--- a/static/docs/2.2.0/html/functions_vars.html
+++ b/static/docs/2.2.1/html/functions_vars.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Class Members - Variables</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,62 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li class="current"><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="functions.html"><span>All</span></a></li>
-      <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_a"><span>a</span></a></li>
-      <li><a href="#index_b"><span>b</span></a></li>
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li><a href="#index_f"><span>f</span></a></li>
-      <li><a href="#index_i"><span>i</span></a></li>
-      <li><a href="#index_n"><span>n</span></a></li>
-      <li><a href="#index_o"><span>o</span></a></li>
-      <li><a href="#index_p"><span>p</span></a></li>
-      <li><a href="#index_r"><span>r</span></a></li>
-      <li><a href="#index_s"><span>s</span></a></li>
-      <li class="current"><a href="#index_u"><span>u</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -107,7 +65,7 @@
 <div class="contents">
 &#160;
 
-<h3><a class="anchor" id="index_a"></a>- a -</h3><ul>
+<h3><a id="index_a"></a>- a -</h3><ul>
 <li>active
 : <a class="el" href="structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499">celix_dm_component_info_struct</a>
 </li>
@@ -130,7 +88,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_b"></a>- b -</h3><ul>
+<h3><a id="index_b"></a>- b -</h3><ul>
 <li>bndId
 : <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb">celix_dm_dependency_manager_info_struct</a>
 </li>
@@ -140,7 +98,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<h3><a id="index_c"></a>- c -</h3><ul>
 <li>components
 : <a class="el" href="structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b">celix_dm_dependency_manager_info_struct</a>
 </li>
@@ -150,14 +108,14 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<h3><a id="index_d"></a>- d -</h3><ul>
 <li>dependency_list
 : <a class="el" href="structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda">celix_dm_component_info_struct</a>
 </li>
 </ul>
 
 
-<h3><a class="anchor" id="index_f"></a>- f -</h3><ul>
+<h3><a id="index_f"></a>- f -</h3><ul>
 <li>filter
 : <a class="el" href="structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f">celix_dm_service_dependency_info_struct</a>
 , <a class="el" href="structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4">celix_service_tracker_info</a>
@@ -165,7 +123,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_i"></a>- i -</h3><ul>
+<h3><a id="index_i"></a>- i -</h3><ul>
 <li>id
 : <a class="el" href="structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5">celix_dm_component_info_struct</a>
 </li>
@@ -175,7 +133,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_n"></a>- n -</h3><ul>
+<h3><a id="index_n"></a>- n -</h3><ul>
 <li>name
 : <a class="el" href="structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a">celix_dm_component_info_struct</a>
 , <a class="el" href="structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be">celix_dm_interface_info_struct</a>
@@ -183,7 +141,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<h3><a id="index_o"></a>- o -</h3><ul>
 <li>onBundleEvent
 : <a class="el" href="structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398">celix_bundle_tracker_options</a>
 </li>
@@ -203,14 +161,14 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_p"></a>- p -</h3><ul>
+<h3><a id="index_p"></a>- p -</h3><ul>
 <li>properties
 : <a class="el" href="structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c">celix_dm_interface_info_struct</a>
 </li>
 </ul>
 
 
-<h3><a class="anchor" id="index_r"></a>- r -</h3><ul>
+<h3><a id="index_r"></a>- r -</h3><ul>
 <li>remove
 : <a class="el" href="structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b">celix_dm_service_dependency_callback_options</a>
 , <a class="el" href="structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882">celix_service_tracking_options</a>
@@ -230,7 +188,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<h3><a id="index_s"></a>- s -</h3><ul>
 <li>serviceLanguage
 : <a class="el" href="structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65">celix_service_tracker_info</a>
 </li>
@@ -262,7 +220,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_u"></a>- u -</h3><ul>
+<h3><a id="index_u"></a>- u -</h3><ul>
 <li>use
 : <a class="el" href="structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7">celix_service_use_options</a>
 </li>
@@ -278,7 +236,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/globals.html b/static/docs/2.2.1/html/globals.html
old mode 100644
new mode 100755
similarity index 85%
rename from static/docs/2.2.0/html/globals.html
rename to static/docs/2.2.1/html/globals.html
index 5e171e9..6cf6273
--- a/static/docs/2.2.0/html/globals.html
+++ b/static/docs/2.2.1/html/globals.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: File Members</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,56 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li class="current"><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Macros</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li><a href="#index_c"><span>c</span></a></li>
-      <li><a href="#index_d"><span>d</span></a></li>
-      <li class="current"><a href="#index_o"><span>o</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -101,7 +65,7 @@
 <div class="contents">
 <div class="textblock">Here is a list of all file members with links to the files they belong to:</div>
 
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<h3><a id="index_c"></a>- c -</h3><ul>
 <li>celix_bundle_getEntry()
 : <a class="el" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle.h</a>
 </li>
@@ -118,7 +82,7 @@
 : <a class="el" href="celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545">celix_bundle.h</a>
 </li>
 <li>celix_bundle_tracking_options_t
-: <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_context.h</a>
 </li>
 <li>celix_bundleActivator_create()
 : <a class="el" href="celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6">celix_bundle_activator.h</a>
@@ -253,13 +217,13 @@
 : <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component.h</a>
 </li>
 <li>celix_dm_component_state_t
-: <a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component.h</a>
+: <a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component.h</a>
 </li>
 <li>celix_dm_interface_info_t
 : <a class="el" href="celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6">celix_dm_info.h</a>
 </li>
 <li>celix_dm_service_dependency_callback_options_t
-: <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency.h</a>
+: <a class="el" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency.h</a>
 </li>
 <li>celix_dm_service_dependency_info_t
 : <a class="el" href="celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4">celix_dm_info.h</a>
@@ -268,7 +232,7 @@
 : <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency.h</a>
 </li>
 <li>celix_dm_service_dependency_strategy_t
-: <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency.h</a>
+: <a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency.h</a>
 </li>
 <li>celix_dm_service_swap_fp
 : <a class="el" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_dependency.h</a>
@@ -415,24 +379,24 @@
 : <a class="el" href="celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2">celix_bundle_activator.h</a>
 </li>
 <li>celix_service_filter_options_t
-: <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_bundle_context.h</a>
 </li>
 <li>celix_service_registration_options_t
-: <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_bundle_context.h</a>
 </li>
 <li>celix_service_tracker_info_t
-: <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_bundle_context.h</a>
 </li>
 <li>celix_service_tracking_options_t
-: <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_bundle_context.h</a>
 </li>
 <li>celix_service_use_options_t
-: <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_bundle_context.h</a>
 </li>
 </ul>
 
 
-<h3><a class="anchor" id="index_d"></a>- d -</h3><ul>
+<h3><a id="index_d"></a>- d -</h3><ul>
 <li>DM_CMP_STATE_INACTIVE
 : <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e">celix_dm_component.h</a>
 </li>
@@ -478,7 +442,7 @@
 </ul>
 
 
-<h3><a class="anchor" id="index_o"></a>- o -</h3><ul>
+<h3><a id="index_o"></a>- o -</h3><ul>
 <li>OPTS_INIT
 : <a class="el" href="celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f">celix_bundle_context.h</a>
 </li>
@@ -488,7 +452,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/globals_defs.html b/static/docs/2.2.1/html/globals_defs.html
old mode 100644
new mode 100755
similarity index 65%
rename from static/docs/2.2.0/html/globals_defs.html
rename to static/docs/2.2.1/html/globals_defs.html
index 9abe70e..2fdd513
--- a/static/docs/2.2.0/html/globals_defs.html
+++ b/static/docs/2.2.1/html/globals_defs.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: File Members</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,49 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -132,7 +103,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/globals_enum.html b/static/docs/2.2.1/html/globals_enum.html
new file mode 100755
index 0000000..ae379ea
--- /dev/null
+++ b/static/docs/2.2.1/html/globals_enum.html
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: File Members</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="contents">
+&#160;<ul>
+<li>celix_dm_component_state_enum
+: <a class="el" href="celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4">celix_dm_component.h</a>
+</li>
+<li>celix_dm_service_dependency_strategy_enum
+: <a class="el" href="celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c">celix_dm_service_dependency.h</a>
+</li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.0/html/globals_eval.html b/static/docs/2.2.1/html/globals_eval.html
old mode 100644
new mode 100755
similarity index 61%
rename from static/docs/2.2.0/html/globals_eval.html
rename to static/docs/2.2.1/html/globals_eval.html
index feab19f..264fc0a
--- a/static/docs/2.2.0/html/globals_eval.html
+++ b/static/docs/2.2.1/html/globals_eval.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: File Members</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,49 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li class="current"><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Macros</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -117,7 +88,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/globals_func.html b/static/docs/2.2.1/html/globals_func.html
old mode 100644
new mode 100755
similarity index 86%
rename from static/docs/2.2.0/html/globals_func.html
rename to static/docs/2.2.1/html/globals_func.html
index ba9d17e..00fb922
--- a/static/docs/2.2.0/html/globals_func.html
+++ b/static/docs/2.2.1/html/globals_func.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: File Members</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,54 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li class="current"><a href="globals_func.html"><span>Functions</span></a></li>
-      <li><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Macros</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow4" class="tabs3">
-    <ul class="tablist">
-      <li class="current"><a href="#index_c"><span>c</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -99,7 +65,7 @@
 <div class="contents">
 &#160;
 
-<h3><a class="anchor" id="index_c"></a>- c -</h3><ul>
+<h3><a id="index_c"></a>- c -</h3><ul>
 <li>celix_bundle_getEntry()
 : <a class="el" href="celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5">celix_bundle.h</a>
 </li>
@@ -343,7 +309,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/globals_type.html b/static/docs/2.2.1/html/globals_type.html
old mode 100644
new mode 100755
similarity index 61%
rename from static/docs/2.2.0/html/globals_type.html
rename to static/docs/2.2.1/html/globals_type.html
index f28d92f..16bcce4
--- a/static/docs/2.2.0/html/globals_type.html
+++ b/static/docs/2.2.1/html/globals_type.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: File Members</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,49 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li class="current"><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="files.html"><span>File&#160;List</span></a></li>
-      <li class="current"><a href="globals.html"><span>File&#160;Members</span></a></li>
-    </ul>
-  </div>
-  <div id="navrow3" class="tabs2">
-    <ul class="tablist">
-      <li><a href="globals.html"><span>All</span></a></li>
-      <li><a href="globals_func.html"><span>Functions</span></a></li>
-      <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li>
-      <li><a href="globals_enum.html"><span>Enumerations</span></a></li>
-      <li><a href="globals_eval.html"><span>Enumerator</span></a></li>
-      <li><a href="globals_defs.html"><span>Macros</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -94,7 +65,7 @@
 <div class="contents">
 &#160;<ul>
 <li>celix_bundle_tracking_options_t
-: <a class="el" href="celix__bundle__context_8h.html#ae6fb701de56577ab43263b5619604e86">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a">celix_bundle_context.h</a>
 </li>
 <li>celix_dependency_manager_info_t
 : <a class="el" href="celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64">celix_dm_info.h</a>
@@ -106,19 +77,19 @@
 : <a class="el" href="celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16">celix_dm_info.h</a>
 </li>
 <li>celix_dm_component_state_t
-: <a class="el" href="celix__dm__component_8h.html#a837dbb925f543da453bd88375e26537e">celix_dm_component.h</a>
+: <a class="el" href="celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a">celix_dm_component.h</a>
 </li>
 <li>celix_dm_interface_info_t
 : <a class="el" href="celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6">celix_dm_info.h</a>
 </li>
 <li>celix_dm_service_dependency_callback_options_t
-: <a class="el" href="celix__dm__service__dependency_8h.html#a5dd45f27aabacee9bce3ac0b3122b661">celix_dm_service_dependency.h</a>
+: <a class="el" href="celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8">celix_dm_service_dependency.h</a>
 </li>
 <li>celix_dm_service_dependency_info_t
 : <a class="el" href="celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4">celix_dm_info.h</a>
 </li>
 <li>celix_dm_service_dependency_strategy_t
-: <a class="el" href="celix__dm__service__dependency_8h.html#a38a2114a58286eebc673a8dc5f314e43">celix_dm_service_dependency.h</a>
+: <a class="el" href="celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46">celix_dm_service_dependency.h</a>
 </li>
 <li>celix_dm_service_swap_fp
 : <a class="el" href="celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d">celix_dm_service_dependency.h</a>
@@ -133,19 +104,19 @@
 : <a class="el" href="celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94">celix_dm_service_dependency.h</a>
 </li>
 <li>celix_service_filter_options_t
-: <a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_bundle_context.h</a>
 </li>
 <li>celix_service_registration_options_t
-: <a class="el" href="celix__bundle__context_8h.html#a6bcc1ddc92a68053a0300553baa2e35a">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8">celix_bundle_context.h</a>
 </li>
 <li>celix_service_tracker_info_t
-: <a class="el" href="celix__bundle__context_8h.html#a69f5283bcb563038d1a8e35e2a2b028b">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a">celix_bundle_context.h</a>
 </li>
 <li>celix_service_tracking_options_t
-: <a class="el" href="celix__bundle__context_8h.html#a4e53ca7fd5a9c2b792ff0a8e048236d2">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75">celix_bundle_context.h</a>
 </li>
 <li>celix_service_use_options_t
-: <a class="el" href="celix__bundle__context_8h.html#abc6f11edf20a71cbade3668e4bc66ed6">celix_bundle_context.h</a>
+: <a class="el" href="celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130">celix_bundle_context.h</a>
 </li>
 <li>dm_component_info_pt
 : <a class="el" href="celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a">celix_dm_info.h</a>
@@ -177,7 +148,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/graph_legend.html b/static/docs/2.2.1/html/graph_legend.html
new file mode 100755
index 0000000..8cb1017
--- /dev/null
+++ b/static/docs/2.2.1/html/graph_legend.html
@@ -0,0 +1,138 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
+<meta http-equiv="X-UA-Compatible" content="IE=9"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
+<title>Celix: Graph Legend</title>
+<link href="tabs.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="jquery.js"></script>
+<script type="text/javascript" src="dynsections.js"></script>
+<link href="search/search.css" rel="stylesheet" type="text/css"/>
+<script type="text/javascript" src="search/searchdata.js"></script>
+<script type="text/javascript" src="search/search.js"></script>
+<link href="doxygen.css" rel="stylesheet" type="text/css" />
+</head>
+<body>
+<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
+<div id="titlearea">
+<table cellspacing="0" cellpadding="0">
+ <tbody>
+ <tr style="height: 56px;">
+  <td id="projectalign" style="padding-left: 0.5em;">
+   <div id="projectname">Celix
+   &#160;<span id="projectnumber">2.2.1</span>
+   </div>
+   <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
+  </td>
+ </tr>
+ </tbody>
+</table>
+</div>
+<!-- end header part -->
+<!-- Generated by Doxygen 1.8.18 -->
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
+</script>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
+</div><!-- top -->
+<!-- window showing the filter options -->
+<div id="MSearchSelectWindow"
+     onmouseover="return searchBox.OnSearchSelectShow()"
+     onmouseout="return searchBox.OnSearchSelectHide()"
+     onkeydown="return searchBox.OnSearchSelectKey(event)">
+</div>
+
+<!-- iframe showing the search results (closed by default) -->
+<div id="MSearchResultsWindow">
+<iframe src="javascript:void(0)" frameborder="0" 
+        name="MSearchResults" id="MSearchResults">
+</iframe>
+</div>
+
+<div class="header">
+  <div class="headertitle">
+<div class="title">Graph Legend</div>  </div>
+</div><!--header-->
+<div class="contents">
+<p>This page explains how to interpret the graphs that are generated by doxygen.</p>
+<p>Consider the following example: </p><div class="fragment"><div class="line"><span class="comment">/*! Invisible class because of truncation */</span></div>
+<div class="line"><span class="keyword">class </span>Invisible { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Truncated class, inheritance relation is hidden */</span></div>
+<div class="line"><span class="keyword">class </span>Truncated : <span class="keyword">public</span> Invisible { };</div>
+<div class="line"> </div>
+<div class="line"><span class="comment">/* Class not documented with doxygen comments */</span></div>
+<div class="line"><span class="keyword">class </span>Undocumented { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is inherited using public inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PublicBase : <span class="keyword">public</span> Truncated { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! A template class */</span></div>
+<div class="line"><span class="keyword">template</span>&lt;<span class="keyword">class</span> T&gt; <span class="keyword">class </span>Templ { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is inherited using protected inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>ProtectedBase { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is inherited using private inheritance */</span></div>
+<div class="line"><span class="keyword">class </span>PrivateBase { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Class that is used by the Inherited class */</span></div>
+<div class="line"><span class="keyword">class </span>Used { };</div>
+<div class="line"><span class="comment"></span> </div>
+<div class="line"><span class="comment">/*! Super class that inherits a number of other classes */</span></div>
+<div class="line"><span class="keyword">class </span>Inherited : <span class="keyword">public</span> PublicBase,</div>
+<div class="line">                  <span class="keyword">protected</span> ProtectedBase,</div>
+<div class="line">                  <span class="keyword">private</span> PrivateBase,</div>
+<div class="line">                  <span class="keyword">public</span> Undocumented,</div>
+<div class="line">                  <span class="keyword">public</span> Templ&lt;int&gt;</div>
+<div class="line">{</div>
+<div class="line">  <span class="keyword">private</span>:</div>
+<div class="line">    Used *m_usedClass;</div>
+<div class="line">};</div>
+</div><!-- fragment --><p> This will result in the following graph:</p>
+<center><img src="graph_legend.png" alt="" class="inline"/></center><p>The boxes in the above graph have the following meaning: </p>
+<ul>
+<li>
+A filled gray box represents the struct or class for which the graph is generated. </li>
+<li>
+A box with a black border denotes a documented struct or class. </li>
+<li>
+A box with a gray border denotes an undocumented struct or class. </li>
+<li>
+A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries. </li>
+</ul>
+<p>The arrows have the following meaning: </p>
+<ul>
+<li>
+A dark blue arrow is used to visualize a public inheritance relation between two classes. </li>
+<li>
+A dark green arrow is used for protected inheritance. </li>
+<li>
+A dark red arrow is used for private inheritance. </li>
+<li>
+A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible. </li>
+<li>
+A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance. </li>
+</ul>
+</div><!-- contents -->
+<!-- start footer part -->
+<hr class="footer"/><address class="footer"><small>
+Generated by &#160;<a href="http://www.doxygen.org/index.html">
+<img class="footer" src="doxygen.png" alt="doxygen"/>
+</a> 1.8.18
+</small></address>
+</body>
+</html>
diff --git a/static/docs/2.2.1/html/graph_legend.md5 b/static/docs/2.2.1/html/graph_legend.md5
new file mode 100755
index 0000000..8fcdccd
--- /dev/null
+++ b/static/docs/2.2.1/html/graph_legend.md5
@@ -0,0 +1 @@
+f51bf6e9a10430aafef59831b08dcbfe
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/graph_legend.png b/static/docs/2.2.1/html/graph_legend.png
new file mode 100755
index 0000000..471c35c
--- /dev/null
+++ b/static/docs/2.2.1/html/graph_legend.png
Binary files differ
diff --git a/static/docs/2.2.0/html/index.html b/static/docs/2.2.1/html/index.html
old mode 100644
new mode 100755
similarity index 61%
rename from static/docs/2.2.0/html/index.html
rename to static/docs/2.2.1/html/index.html
index 5904189..d7a19f6
--- a/static/docs/2.2.0/html/index.html
+++ b/static/docs/2.2.1/html/index.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Main Page</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,33 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li class="current"><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 </div><!-- top -->
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
@@ -75,25 +62,31 @@
 </iframe>
 </div>
 
-<div class="header">
+<div class="PageDoc"><div class="header">
   <div class="headertitle">
 <div class="title">Celix Documentation</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="textblock"><h1>Apache Celix <a href="https://travis-ci.org/apache/celix"></a> <a href="https://coveralls.io/github/apache/celix?branch=develop"></a> <a href="https://scan.coverity.com/projects/6685"></a></h1>
+<div class="textblock"><p><a class="anchor" id="md_README"></a></p>
+<h1><a class="anchor" id="autotoc_md0"></a>
+Apache Celix</h1>
 <p>Apache Celix is an implementation of the OSGi specification adapted to C and C++ (C++11). It is a framework to develop (dynamic) modular software applications using component and/or service-oriented programming.</p>
-<h2>Building</h2>
+<h2><a class="anchor" id="autotoc_md1"></a>
+Building</h2>
 <p>For information how to build Apache Celix see Building Apache Celix</p>
-<h2>Introduction to Apache Celix</h2>
+<h2><a class="anchor" id="autotoc_md2"></a>
+Introduction to Apache Celix</h2>
 <p>For an introduction into Apache Celix see Apache Celix Intro</p>
-<h2>Getting Started with Apache Celix</h2>
+<h2><a class="anchor" id="autotoc_md3"></a>
+Getting Started with Apache Celix</h2>
 <p>For a guide how to start writing your own bundles and services see Getting Started Guide </p>
-</div></div><!-- contents -->
+</div></div><!-- PageDoc -->
+</div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/jquery.js b/static/docs/2.2.1/html/jquery.js
new file mode 100755
index 0000000..103c32d
--- /dev/null
+++ b/static/docs/2.2.1/html/jquery.js
@@ -0,0 +1,35 @@
+/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */
+!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0<t&&t-1 in e)}k.fn=k.prototype={jquery:f,constructor:k,length:0,toArray:function(){return s.call(this)},get:function(e){return null==e?s.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=k.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return k.each(this,e)},map:function(n){return this.pushStack(k.map(this,function(e,t){return n.call(e,t,e)}))},slice:function(){return this.pushStack(s.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(0<=n&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:u,sort:t.sort,splice:t.splice},k.extend=k.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||m(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)r=e[t],"__proto__"!==t&&a!==r&&(l&&r&&(k.isPlainObject(r)||(i=Array.isArray(r)))?(n=a[t],o=i&&!Array.isArray(n)?[]:i||k.isPlainObject(n)?n:{},i=!1,a[t]=k.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},k.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==o.call(e))&&(!(t=r(e))||"function"==typeof(n=v.call(t,"constructor")&&t.constructor)&&a.call(n)===l)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e,t){b(e,{nonce:t&&t.nonce})},each:function(e,t){var n,r=0;if(d(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(p,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(d(Object(e))?k.merge(n,"string"==typeof e?[e]:e):u.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:i.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r=[],i=0,o=e.length,a=!n;i<o;i++)!t(e[i],i)!==a&&r.push(e[i]);return r},map:function(e,t,n){var r,i,o=0,a=[];if(d(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&a.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&a.push(i);return g.apply([],a)},guid:1,support:y}),"function"==typeof Symbol&&(k.fn[Symbol.iterator]=t[Symbol.iterator]),k.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){n["[object "+t+"]"]=t.toLowerCase()});var h=function(n){var e,d,b,o,i,h,f,g,w,u,l,T,C,a,E,v,s,c,y,k="sizzle"+1*new Date,m=n.document,S=0,r=0,p=ue(),x=ue(),N=ue(),A=ue(),D=function(e,t){return e===t&&(l=!0),0},j={}.hasOwnProperty,t=[],q=t.pop,L=t.push,H=t.push,O=t.slice,P=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",I="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",W="\\["+M+"*("+I+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+I+"))|)"+M+"*\\]",$=":("+I+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+W+")*)|.*)\\)|)",F=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=new RegExp("^"+M+"*,"+M+"*"),z=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="<a id='"+k+"'></a><select id='"+k+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0<se(t,C,null,[e]).length},se.contains=function(e,t){return(e.ownerDocument||e)!==C&&T(e),y(e,t)},se.attr=function(e,t){(e.ownerDocument||e)!==C&&T(e);var n=b.attrHandle[t.toLowerCase()],r=n&&j.call(b.attrHandle,t.toLowerCase())?n(e,t,!E):void 0;return void 0!==r?r:d.attributes||!E?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},se.escape=function(e){return(e+"").replace(re,ie)},se.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},se.uniqueSort=function(e){var t,n=[],r=0,i=0;if(l=!d.detectDuplicates,u=!d.sortStable&&e.slice(0),e.sort(D),l){while(t=e[i++])t===e[i]&&(r=n.push(i));while(r--)e.splice(n[r],1)}return u=null,e},o=se.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else while(t=e[r++])n+=o(t);return n},(b=se.selectors={cacheLength:50,createPseudo:le,match:G,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1<t.indexOf(i):"$="===r?i&&t.slice(-i.length)===i:"~="===r?-1<(" "+t.replace(F," ")+" ").indexOf(i):"|="===r&&(t===i||t.slice(0,i.length+1)===i+"-"))}},CHILD:function(h,e,t,g,v){var y="nth"!==h.slice(0,3),m="last"!==h.slice(-4),x="of-type"===e;return 1===g&&0===v?function(e){return!!e.parentNode}:function(e,t,n){var r,i,o,a,s,u,l=y!==m?"nextSibling":"previousSibling",c=e.parentNode,f=x&&e.nodeName.toLowerCase(),p=!n&&!x,d=!1;if(c){if(y){while(l){a=e;while(a=a[l])if(x?a.nodeName.toLowerCase()===f:1===a.nodeType)return!1;u=l="only"===h&&!u&&"nextSibling"}return!0}if(u=[m?c.firstChild:c.lastChild],m&&p){d=(s=(r=(i=(o=(a=c)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1])&&r[2],a=s&&c.childNodes[s];while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if(1===a.nodeType&&++d&&a===e){i[h]=[S,s,d];break}}else if(p&&(d=s=(r=(i=(o=(a=e)[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]||[])[0]===S&&r[1]),!1===d)while(a=++s&&a&&a[l]||(d=s=0)||u.pop())if((x?a.nodeName.toLowerCase()===f:1===a.nodeType)&&++d&&(p&&((i=(o=a[k]||(a[k]={}))[a.uniqueID]||(o[a.uniqueID]={}))[h]=[S,d]),a===e))break;return(d-=v)===g||d%g==0&&0<=d/g}}},PSEUDO:function(e,o){var t,a=b.pseudos[e]||b.setFilters[e.toLowerCase()]||se.error("unsupported pseudo: "+e);return a[k]?a(o):1<a.length?(t=[e,e,"",o],b.setFilters.hasOwnProperty(e.toLowerCase())?le(function(e,t){var n,r=a(e,o),i=r.length;while(i--)e[n=P(e,r[i])]=!(t[n]=r[i])}):function(e){return a(e,0,t)}):a}},pseudos:{not:le(function(e){var r=[],i=[],s=f(e.replace(B,"$1"));return s[k]?le(function(e,t,n,r){var i,o=s(e,null,r,[]),a=e.length;while(a--)(i=o[a])&&(e[a]=!(t[a]=i))}):function(e,t,n){return r[0]=e,s(r,null,n,i),r[0]=null,!i.pop()}}),has:le(function(t){return function(e){return 0<se(t,e).length}}),contains:le(function(t){return t=t.replace(te,ne),function(e){return-1<(e.textContent||o(e)).indexOf(t)}}),lang:le(function(n){return V.test(n||"")||se.error("unsupported lang: "+n),n=n.replace(te,ne).toLowerCase(),function(e){var t;do{if(t=E?e.lang:e.getAttribute("xml:lang")||e.getAttribute("lang"))return(t=t.toLowerCase())===n||0===t.indexOf(n+"-")}while((e=e.parentNode)&&1===e.nodeType);return!1}}),target:function(e){var t=n.location&&n.location.hash;return t&&t.slice(1)===e.id},root:function(e){return e===a},focus:function(e){return e===C.activeElement&&(!C.hasFocus||C.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:ge(!1),disabled:ge(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!b.pseudos.empty(e)},header:function(e){return J.test(e.nodeName)},input:function(e){return Q.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:ve(function(){return[0]}),last:ve(function(e,t){return[t-1]}),eq:ve(function(e,t,n){return[n<0?n+t:n]}),even:ve(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:ve(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:ve(function(e,t,n){for(var r=n<0?n+t:t<n?t:n;0<=--r;)e.push(r);return e}),gt:ve(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=b.pseudos.eq,{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})b.pseudos[e]=de(e);for(e in{submit:!0,reset:!0})b.pseudos[e]=he(e);function me(){}function xe(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function be(s,e,t){var u=e.dir,l=e.next,c=l||u,f=t&&"parentNode"===c,p=r++;return e.first?function(e,t,n){while(e=e[u])if(1===e.nodeType||f)return s(e,t,n);return!1}:function(e,t,n){var r,i,o,a=[S,p];if(n){while(e=e[u])if((1===e.nodeType||f)&&s(e,t,n))return!0}else while(e=e[u])if(1===e.nodeType||f)if(i=(o=e[k]||(e[k]={}))[e.uniqueID]||(o[e.uniqueID]={}),l&&l===e.nodeName.toLowerCase())e=e[u]||e;else{if((r=i[c])&&r[0]===S&&r[1]===p)return a[2]=r[2];if((i[c]=a)[2]=s(e,t,n))return!0}return!1}}function we(i){return 1<i.length?function(e,t,n){var r=i.length;while(r--)if(!i[r](e,t,n))return!1;return!0}:i[0]}function Te(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Ce(d,h,g,v,y,e){return v&&!v[k]&&(v=Ce(v)),y&&!y[k]&&(y=Ce(y,e)),le(function(e,t,n,r){var i,o,a,s=[],u=[],l=t.length,c=e||function(e,t,n){for(var r=0,i=t.length;r<i;r++)se(e,t[r],n);return n}(h||"*",n.nodeType?[n]:n,[]),f=!d||!e&&h?c:Te(c,s,d,n,r),p=g?y||(e?d:l||v)?[]:t:f;if(g&&g(f,p,n,r),v){i=Te(p,u),v(i,[],n,r),o=i.length;while(o--)(a=i[o])&&(p[u[o]]=!(f[u[o]]=a))}if(e){if(y||d){if(y){i=[],o=p.length;while(o--)(a=p[o])&&i.push(f[o]=a);y(null,p=[],i,r)}o=p.length;while(o--)(a=p[o])&&-1<(i=y?P(e,a):s[o])&&(e[i]=!(t[i]=a))}}else p=Te(p===t?p.splice(l,p.length):p),y?y(null,t,p,r):H.apply(t,p)})}function Ee(e){for(var i,t,n,r=e.length,o=b.relative[e[0].type],a=o||b.relative[" "],s=o?1:0,u=be(function(e){return e===i},a,!0),l=be(function(e){return-1<P(i,e)},a,!0),c=[function(e,t,n){var r=!o&&(n||t!==w)||((i=t).nodeType?u(e,t,n):l(e,t,n));return i=null,r}];s<r;s++)if(t=b.relative[e[s].type])c=[be(we(c),t)];else{if((t=b.filter[e[s].type].apply(null,e[s].matches))[k]){for(n=++s;n<r;n++)if(b.relative[e[n].type])break;return Ce(1<s&&we(c),1<s&&xe(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(B,"$1"),t,s<n&&Ee(e.slice(s,n)),n<r&&Ee(e=e.slice(n)),n<r&&xe(e))}c.push(t)}return we(c)}return me.prototype=b.filters=b.pseudos,b.setFilters=new me,h=se.tokenize=function(e,t){var n,r,i,o,a,s,u,l=x[e+" "];if(l)return t?0:l.slice(0);a=e,s=[],u=b.preFilter;while(a){for(o in n&&!(r=_.exec(a))||(r&&(a=a.slice(r[0].length)||a),s.push(i=[])),n=!1,(r=z.exec(a))&&(n=r.shift(),i.push({value:n,type:r[0].replace(B," ")}),a=a.slice(n.length)),b.filter)!(r=G[o].exec(a))||u[o]&&!(r=u[o](r))||(n=r.shift(),i.push({value:n,type:o,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?se.error(e):x(e,s).slice(0)},f=se.compile=function(e,t){var n,v,y,m,x,r,i=[],o=[],a=N[e+" "];if(!a){t||(t=h(e)),n=t.length;while(n--)(a=Ee(t[n]))[k]?i.push(a):o.push(a);(a=N(e,(v=o,m=0<(y=i).length,x=0<v.length,r=function(e,t,n,r,i){var o,a,s,u=0,l="0",c=e&&[],f=[],p=w,d=e||x&&b.find.TAG("*",i),h=S+=null==p?1:Math.random()||.1,g=d.length;for(i&&(w=t===C||t||i);l!==g&&null!=(o=d[l]);l++){if(x&&o){a=0,t||o.ownerDocument===C||(T(o),n=!E);while(s=v[a++])if(s(o,t||C,n)){r.push(o);break}i&&(S=h)}m&&((o=!s&&o)&&u--,e&&c.push(o))}if(u+=l,m&&l!==u){a=0;while(s=y[a++])s(c,f,t,n);if(e){if(0<u)while(l--)c[l]||f[l]||(f[l]=q.call(r));f=Te(f)}H.apply(r,f),i&&!e&&0<f.length&&1<u+y.length&&se.uniqueSort(r)}return i&&(S=h,w=p),c},m?le(r):r))).selector=e}return a},g=se.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,c=!r&&h(e=l.selector||e);if(n=n||[],1===c.length){if(2<(o=c[0]=c[0].slice(0)).length&&"ID"===(a=o[0]).type&&9===t.nodeType&&E&&b.relative[o[1].type]){if(!(t=(b.find.ID(a.matches[0].replace(te,ne),t)||[])[0]))return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}i=G.needsContext.test(e)?0:o.length;while(i--){if(a=o[i],b.relative[s=a.type])break;if((u=b.find[s])&&(r=u(a.matches[0].replace(te,ne),ee.test(o[0].type)&&ye(t.parentNode)||t))){if(o.splice(i,1),!(e=r.length&&xe(o)))return H.apply(n,r),n;break}}}return(l||f(e,c))(r,t,!E,n,!t||ee.test(e)&&ye(t.parentNode)||t),n},d.sortStable=k.split("").sort(D).join("")===k,d.detectDuplicates=!!l,T(),d.sortDetached=ce(function(e){return 1&e.compareDocumentPosition(C.createElement("fieldset"))}),ce(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||fe("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),d.attributes&&ce(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||fe("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ce(function(e){return null==e.getAttribute("disabled")})||fe(R,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),se}(C);k.find=h,k.expr=h.selectors,k.expr[":"]=k.expr.pseudos,k.uniqueSort=k.unique=h.uniqueSort,k.text=h.getText,k.isXMLDoc=h.isXML,k.contains=h.contains,k.escapeSelector=h.escape;var T=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&k(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},N=k.expr.match.needsContext;function A(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var D=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1<i.call(n,e)!==r}):k.filter(n,e,r)}k.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?k.find.matchesSelector(r,e)?[r]:[]:k.find.matches(e,k.grep(t,function(e){return 1===e.nodeType}))},k.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(k(e).filter(function(){for(t=0;t<r;t++)if(k.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)k.find(e,i[t],n);return 1<r?k.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&N.test(e)?k(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(k.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&k(e);if(!N.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?-1<a.index(n):1===n.nodeType&&k.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(1<o.length?k.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?i.call(k(e),this[0]):i.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(k.uniqueSort(k.merge(this.get(),k(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),k.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return T(e,"parentNode")},parentsUntil:function(e,t,n){return T(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return T(e,"nextSibling")},prevAll:function(e){return T(e,"previousSibling")},nextUntil:function(e,t,n){return T(e,"nextSibling",n)},prevUntil:function(e,t,n){return T(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return"undefined"!=typeof e.contentDocument?e.contentDocument:(A(e,"template")&&(e=e.content||e),k.merge([],e.childNodes))}},function(r,i){k.fn[r]=function(e,t){var n=k.map(this,i,e);return"Until"!==r.slice(-5)&&(t=e),t&&"string"==typeof t&&(n=k.filter(t,n)),1<this.length&&(O[r]||k.uniqueSort(n),H.test(r)&&n.reverse()),this.pushStack(n)}});var R=/[^\x20\t\r\n\f]+/g;function M(e){return e}function I(e){throw e}function W(e,t,n,r){var i;try{e&&m(i=e.promise)?i.call(e).done(t).fail(n):e&&m(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}k.Callbacks=function(r){var e,n;r="string"==typeof r?(e=r,n={},k.each(e.match(R)||[],function(e,t){n[t]=!0}),n):k.extend({},r);var i,t,o,a,s=[],u=[],l=-1,c=function(){for(a=a||r.once,o=i=!0;u.length;l=-1){t=u.shift();while(++l<s.length)!1===s[l].apply(t[0],t[1])&&r.stopOnFalse&&(l=s.length,t=!1)}r.memory||(t=!1),i=!1,a&&(s=t?[]:"")},f={add:function(){return s&&(t&&!i&&(l=s.length-1,u.push(t)),function n(e){k.each(e,function(e,t){m(t)?r.unique&&f.has(t)||s.push(t):t&&t.length&&"string"!==w(t)&&n(t)})}(arguments),t&&!i&&c()),this},remove:function(){return k.each(arguments,function(e,t){var n;while(-1<(n=k.inArray(t,s,n)))s.splice(n,1),n<=l&&l--}),this},has:function(e){return e?-1<k.inArray(e,s):0<s.length},empty:function(){return s&&(s=[]),this},disable:function(){return a=u=[],s=t="",this},disabled:function(){return!s},lock:function(){return a=u=[],t||i||(s=t=""),this},locked:function(){return!!a},fireWith:function(e,t){return a||(t=[e,(t=t||[]).slice?t.slice():t],u.push(t),i||c()),this},fire:function(){return f.fireWith(this,arguments),this},fired:function(){return!!o}};return f},k.extend({Deferred:function(e){var o=[["notify","progress",k.Callbacks("memory"),k.Callbacks("memory"),2],["resolve","done",k.Callbacks("once memory"),k.Callbacks("once memory"),0,"resolved"],["reject","fail",k.Callbacks("once memory"),k.Callbacks("once memory"),1,"rejected"]],i="pending",a={state:function(){return i},always:function(){return s.done(arguments).fail(arguments),this},"catch":function(e){return a.then(null,e)},pipe:function(){var i=arguments;return k.Deferred(function(r){k.each(o,function(e,t){var n=m(i[t[4]])&&i[t[4]];s[t[1]](function(){var e=n&&n.apply(this,arguments);e&&m(e.promise)?e.promise().progress(r.notify).done(r.resolve).fail(r.reject):r[t[0]+"With"](this,n?[e]:arguments)})}),i=null}).promise()},then:function(t,n,r){var u=0;function l(i,o,a,s){return function(){var n=this,r=arguments,e=function(){var e,t;if(!(i<u)){if((e=a.apply(n,r))===o.promise())throw new TypeError("Thenable self-resolution");t=e&&("object"==typeof e||"function"==typeof e)&&e.then,m(t)?s?t.call(e,l(u,o,M,s),l(u,o,I,s)):(u++,t.call(e,l(u,o,M,s),l(u,o,I,s),l(u,o,M,o.notifyWith))):(a!==M&&(n=void 0,r=[e]),(s||o.resolveWith)(n,r))}},t=s?e:function(){try{e()}catch(e){k.Deferred.exceptionHook&&k.Deferred.exceptionHook(e,t.stackTrace),u<=i+1&&(a!==I&&(n=void 0,r=[e]),o.rejectWith(n,r))}};i?t():(k.Deferred.getStackHook&&(t.stackTrace=k.Deferred.getStackHook()),C.setTimeout(t))}}return k.Deferred(function(e){o[0][3].add(l(0,e,m(r)?r:M,e.notifyWith)),o[1][3].add(l(0,e,m(t)?t:M)),o[2][3].add(l(0,e,m(n)?n:I))}).promise()},promise:function(e){return null!=e?k.extend(e,a):a}},s={};return k.each(o,function(e,t){var n=t[2],r=t[5];a[t[1]]=n.add,r&&n.add(function(){i=r},o[3-e][2].disable,o[3-e][3].disable,o[0][2].lock,o[0][3].lock),n.add(t[3].fire),s[t[0]]=function(){return s[t[0]+"With"](this===s?void 0:this,arguments),this},s[t[0]+"With"]=n.fireWith}),a.promise(s),e&&e.call(s,s),s},when:function(e){var n=arguments.length,t=n,r=Array(t),i=s.call(arguments),o=k.Deferred(),a=function(t){return function(e){r[t]=this,i[t]=1<arguments.length?s.call(arguments):e,--n||o.resolveWith(r,i)}};if(n<=1&&(W(e,o.done(a(t)).resolve,o.reject,!n),"pending"===o.state()||m(i[t]&&i[t].then)))return o.then();while(t--)W(i[t],a(t),o.reject);return o.promise()}});var $=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;k.Deferred.exceptionHook=function(e,t){C.console&&C.console.warn&&e&&$.test(e.name)&&C.console.warn("jQuery.Deferred exception: "+e.message,e.stack,t)},k.readyException=function(e){C.setTimeout(function(){throw e})};var F=k.Deferred();function B(){E.removeEventListener("DOMContentLoaded",B),C.removeEventListener("load",B),k.ready()}k.fn.ready=function(e){return F.then(e)["catch"](function(e){k.readyException(e)}),this},k.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--k.readyWait:k.isReady)||(k.isReady=!0)!==e&&0<--k.readyWait||F.resolveWith(E,[k])}}),k.ready.then=F.then,"complete"===E.readyState||"loading"!==E.readyState&&!E.documentElement.doScroll?C.setTimeout(k.ready):(E.addEventListener("DOMContentLoaded",B),C.addEventListener("load",B));var _=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===w(n))for(s in i=!0,n)_(e,t,s,n[s],!0,o,a);else if(void 0!==r&&(i=!0,m(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(k(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},z=/^-ms-/,U=/-([a-z])/g;function X(e,t){return t.toUpperCase()}function V(e){return e.replace(z,"ms-").replace(U,X)}var G=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Y(){this.expando=k.expando+Y.uid++}Y.uid=1,Y.prototype={cache:function(e){var t=e[this.expando];return t||(t={},G(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[V(t)]=n;else for(r in t)i[V(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][V(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(V):(t=V(t))in r?[t]:t.match(R)||[]).length;while(n--)delete r[t[n]]}(void 0===t||k.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!k.isEmptyObject(t)}};var Q=new Y,J=new Y,K=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,Z=/[A-Z]/g;function ee(e,t,n){var r,i;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(Z,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n="true"===(i=n)||"false"!==i&&("null"===i?null:i===+i+""?+i:K.test(i)?JSON.parse(i):i)}catch(e){}J.set(e,t,n)}else n=void 0;return n}k.extend({hasData:function(e){return J.hasData(e)||Q.hasData(e)},data:function(e,t,n){return J.access(e,t,n)},removeData:function(e,t){J.remove(e,t)},_data:function(e,t,n){return Q.access(e,t,n)},_removeData:function(e,t){Q.remove(e,t)}}),k.fn.extend({data:function(n,e){var t,r,i,o=this[0],a=o&&o.attributes;if(void 0===n){if(this.length&&(i=J.get(o),1===o.nodeType&&!Q.get(o,"hasDataAttrs"))){t=a.length;while(t--)a[t]&&0===(r=a[t].name).indexOf("data-")&&(r=V(r.slice(5)),ee(o,r,i[r]));Q.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof n?this.each(function(){J.set(this,n)}):_(this,function(e){var t;if(o&&void 0===e)return void 0!==(t=J.get(o,n))?t:void 0!==(t=ee(o,n))?t:void 0;this.each(function(){J.set(this,n,e)})},null,e,1<arguments.length,null,!0)},removeData:function(e){return this.each(function(){J.remove(this,e)})}}),k.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=Q.get(e,t),n&&(!r||Array.isArray(n)?r=Q.access(e,t,k.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=k.queue(e,t),r=n.length,i=n.shift(),o=k._queueHooks(e,t);"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,function(){k.dequeue(e,t)},o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return Q.get(e,n)||Q.access(e,n,{empty:k.Callbacks("once memory").add(function(){Q.remove(e,[t+"queue",n])})})}}),k.fn.extend({queue:function(t,n){var e=2;return"string"!=typeof t&&(n=t,t="fx",e--),arguments.length<e?k.queue(this[0],t):void 0===n?this:this.each(function(){var e=k.queue(this,t,n);k._queueHooks(this,t),"fx"===t&&"inprogress"!==e[0]&&k.dequeue(this,t)})},dequeue:function(e){return this.each(function(){k.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=k.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=Q.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var te=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ne=new RegExp("^(?:([+-])=|)("+te+")([a-z%]*)$","i"),re=["Top","Right","Bottom","Left"],ie=E.documentElement,oe=function(e){return k.contains(e.ownerDocument,e)},ae={composed:!0};ie.getRootNode&&(oe=function(e){return k.contains(e.ownerDocument,e)||e.getRootNode(ae)===e.ownerDocument});var se=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&oe(e)&&"none"===k.css(e,"display")},ue=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];for(o in i=n.apply(e,r||[]),t)e.style[o]=a[o];return i};function le(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return k.css(e,t,"")},u=s(),l=n&&n[3]||(k.cssNumber[t]?"":"px"),c=e.nodeType&&(k.cssNumber[t]||"px"!==l&&+u)&&ne.exec(k.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)k.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,k.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var ce={};function fe(e,t){for(var n,r,i,o,a,s,u,l=[],c=0,f=e.length;c<f;c++)(r=e[c]).style&&(n=r.style.display,t?("none"===n&&(l[c]=Q.get(r,"display")||null,l[c]||(r.style.display="")),""===r.style.display&&se(r)&&(l[c]=(u=a=o=void 0,a=(i=r).ownerDocument,s=i.nodeName,(u=ce[s])||(o=a.body.appendChild(a.createElement(s)),u=k.css(o,"display"),o.parentNode.removeChild(o),"none"===u&&(u="block"),ce[s]=u)))):"none"!==n&&(l[c]="none",Q.set(r,"display",n)));for(c=0;c<f;c++)null!=l[c]&&(e[c].style.display=l[c]);return e}k.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){se(this)?k(this).show():k(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n<r;n++)Q.set(e[n],"globalEval",!t||Q.get(t[n],"globalEval"))}ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;var me,xe,be=/<|&#?\w+;/;function we(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===w(o))k.merge(p,o.nodeType?[o]:o);else if(be.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+k.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;k.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&-1<k.inArray(o,r))i&&i.push(o);else if(l=oe(o),a=ve(f.appendChild(o),"script"),l&&ye(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}me=E.createDocumentFragment().appendChild(E.createElement("div")),(xe=E.createElement("input")).setAttribute("type","radio"),xe.setAttribute("checked","checked"),xe.setAttribute("name","t"),me.appendChild(xe),y.checkClone=me.cloneNode(!0).cloneNode(!0).lastChild.checked,me.innerHTML="<textarea>x</textarea>",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t<arguments.length;t++)u[t]=arguments[t];if(s.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,s)){a=k.event.handlers.call(this,s,l),t=0;while((i=a[t++])&&!s.isPropagationStopped()){s.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!s.isImmediatePropagationStopped())s.rnamespace&&!1!==o.namespace&&!s.rnamespace.test(o.namespace)||(s.handleObj=o,s.data=o.data,void 0!==(r=((k.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,u))&&!1===(s.result=r)&&(s.preventDefault(),s.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,s),s.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&1<=e.button))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?-1<k(i,this).index(l):k.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(t,e){Object.defineProperty(k.Event.prototype,t,{enumerable:!0,configurable:!0,get:m(e)?function(){if(this.originalEvent)return e(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[t]},set:function(e){Object.defineProperty(this,t,{enumerable:!0,configurable:!0,writable:!0,value:e})}})},fix:function(e){return e[k.expando]?e:new k.Event(e)},special:{load:{noBubble:!0},click:{setup:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click",ke),!1},trigger:function(e){var t=this||e;return pe.test(t.type)&&t.click&&A(t,"input")&&De(t,"click"),!0},_default:function(e){var t=e.target;return pe.test(t.type)&&t.click&&A(t,"input")&&Q.get(t,"click")||A(t,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},k.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},k.Event=function(e,t){if(!(this instanceof k.Event))return new k.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?ke:Se,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&k.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[k.expando]=!0},k.Event.prototype={constructor:k.Event,isDefaultPrevented:Se,isPropagationStopped:Se,isImmediatePropagationStopped:Se,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=ke,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=ke,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=ke,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},k.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,code:!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&Te.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Ce.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},k.event.addProp),k.each({focus:"focusin",blur:"focusout"},function(e,t){k.event.special[e]={setup:function(){return De(this,e,Ne),!1},trigger:function(){return De(this,e),!0},delegateType:t}}),k.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,i){k.event.special[e]={delegateType:i,bindType:i,handle:function(e){var t,n=e.relatedTarget,r=e.handleObj;return n&&(n===this||k.contains(this,n))||(e.type=r.origType,t=r.handler.apply(this,arguments),e.type=i),t}}}),k.fn.extend({on:function(e,t,n,r){return Ae(this,e,t,n,r)},one:function(e,t,n,r){return Ae(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,k(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=Se),this.each(function(){k.event.remove(this,e,n,t)})}});var je=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/<script|<style|<link/i,Le=/checked\s*(?:[^=]|=\s*.checked.)/i,He=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n<r;n++)k.event.add(t,i,l[i][n]);J.hasData(e)&&(s=J.access(e),u=k.extend({},s),J.set(t,u))}}function Ie(n,r,i,o){r=g.apply([],r);var e,t,a,s,u,l,c=0,f=n.length,p=f-1,d=r[0],h=m(d);if(h||1<f&&"string"==typeof d&&!y.checkClone&&Le.test(d))return n.each(function(e){var t=n.eq(e);h&&(r[0]=d.call(this,e,t.html())),Ie(t,r,i,o)});if(f&&(t=(e=we(r,n[0].ownerDocument,!1,n,o)).firstChild,1===e.childNodes.length&&(e=t),t||o)){for(s=(a=k.map(ve(e,"script"),Pe)).length;c<f;c++)u=e,c!==p&&(u=k.clone(u,!0,!0),s&&k.merge(a,ve(u,"script"))),i.call(n[c],u,c);if(s)for(l=a[a.length-1].ownerDocument,k.map(a,Re),c=0;c<s;c++)u=a[c],he.test(u.type||"")&&!Q.access(u,"globalEval")&&k.contains(l,u)&&(u.src&&"module"!==(u.type||"").toLowerCase()?k._evalUrl&&!u.noModule&&k._evalUrl(u.src,{nonce:u.nonce||u.getAttribute("nonce")}):b(u.textContent.replace(He,""),u,l))}return n}function We(e,t,n){for(var r,i=t?k.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||k.cleanData(ve(r)),r.parentNode&&(n&&oe(r)&&ye(ve(r,"script")),r.parentNode.removeChild(r));return e}k.extend({htmlPrefilter:function(e){return e.replace(je,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r<i;r++)s=o[r],u=a[r],void 0,"input"===(l=u.nodeName.toLowerCase())&&pe.test(s.type)?u.checked=s.checked:"input"!==l&&"textarea"!==l||(u.defaultValue=s.defaultValue);if(t)if(n)for(o=o||ve(e),a=a||ve(c),r=0,i=o.length;r<i;r++)Me(o[r],a[r]);else Me(e,c);return 0<(a=ve(c,"script")).length&&ye(a,!f&&ve(e,"script")),c},cleanData:function(e){for(var t,n,r,i=k.event.special,o=0;void 0!==(n=e[o]);o++)if(G(n)){if(t=n[Q.expando]){if(t.events)for(r in t.events)i[r]?k.event.remove(n,r):k.removeEvent(n,r,t.handle);n[Q.expando]=void 0}n[J.expando]&&(n[J.expando]=void 0)}}}),k.fn.extend({detach:function(e){return We(this,e,!0)},remove:function(e){return We(this,e)},text:function(e){return _(this,function(e){return void 0===e?k.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Ie(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Oe(this,e).appendChild(e)})},prepend:function(){return Ie(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Oe(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Ie(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(k.cleanData(ve(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return k.clone(this,e,t)})},html:function(e){return _(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!qe.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=k.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(k.cleanData(ve(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var n=[];return Ie(this,arguments,function(e){var t=this.parentNode;k.inArray(this,n)<0&&(k.cleanData(ve(this)),t&&t.replaceChild(e,this))},n)}}),k.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,a){k.fn[e]=function(e){for(var t,n=[],r=k(e),i=r.length-1,o=0;o<=i;o++)t=o===i?this:this.clone(!0),k(r[o])[a](t),u.apply(n,t.get());return this.pushStack(n)}});var $e=new RegExp("^("+te+")(?!px)[a-z%]+$","i"),Fe=function(e){var t=e.ownerDocument.defaultView;return t&&t.opener||(t=C),t.getComputedStyle(e)},Be=new RegExp(re.join("|"),"i");function _e(e,t,n){var r,i,o,a,s=e.style;return(n=n||Fe(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||oe(e)||(a=k.style(e,t)),!y.pixelBoxStyles()&&$e.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function ze(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}!function(){function e(){if(u){s.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",u.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",ie.appendChild(s).appendChild(u);var e=C.getComputedStyle(u);n="1%"!==e.top,a=12===t(e.marginLeft),u.style.right="60%",o=36===t(e.right),r=36===t(e.width),u.style.position="absolute",i=12===t(u.offsetWidth/3),ie.removeChild(s),u=null}}function t(e){return Math.round(parseFloat(e))}var n,r,i,o,a,s=E.createElement("div"),u=E.createElement("div");u.style&&(u.style.backgroundClip="content-box",u.cloneNode(!0).style.backgroundClip="",y.clearCloneStyle="content-box"===u.style.backgroundClip,k.extend(y,{boxSizingReliable:function(){return e(),r},pixelBoxStyles:function(){return e(),o},pixelPosition:function(){return e(),n},reliableMarginLeft:function(){return e(),a},scrollboxSize:function(){return e(),i}}))}();var Ue=["Webkit","Moz","ms"],Xe=E.createElement("div").style,Ve={};function Ge(e){var t=k.cssProps[e]||Ve[e];return t||(e in Xe?e:Ve[e]=function(e){var t=e[0].toUpperCase()+e.slice(1),n=Ue.length;while(n--)if((e=Ue[n]+t)in Xe)return e}(e)||e)}var Ye=/^(none|table(?!-c[ea]).+)/,Qe=/^--/,Je={position:"absolute",visibility:"hidden",display:"block"},Ke={letterSpacing:"0",fontWeight:"400"};function Ze(e,t,n){var r=ne.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function et(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=k.css(e,n+re[a],!0,i)),r?("content"===n&&(u-=k.css(e,"padding"+re[a],!0,i)),"margin"!==n&&(u-=k.css(e,"border"+re[a]+"Width",!0,i))):(u+=k.css(e,"padding"+re[a],!0,i),"padding"!==n?u+=k.css(e,"border"+re[a]+"Width",!0,i):s+=k.css(e,"border"+re[a]+"Width",!0,i));return!r&&0<=o&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))||0),u}function tt(e,t,n){var r=Fe(e),i=(!y.boxSizingReliable()||n)&&"border-box"===k.css(e,"boxSizing",!1,r),o=i,a=_e(e,t,r),s="offset"+t[0].toUpperCase()+t.slice(1);if($e.test(a)){if(!n)return a;a="auto"}return(!y.boxSizingReliable()&&i||"auto"===a||!parseFloat(a)&&"inline"===k.css(e,"display",!1,r))&&e.getClientRects().length&&(i="border-box"===k.css(e,"boxSizing",!1,r),(o=s in e)&&(a=e[s])),(a=parseFloat(a)||0)+et(e,t,n||(i?"border":"content"),o,r,a)+"px"}function nt(e,t,n,r,i){return new nt.prototype.init(e,t,n,r,i)}k.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=_e(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,gridArea:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnStart:!0,gridRow:!0,gridRowEnd:!0,gridRowStart:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=V(t),u=Qe.test(t),l=e.style;if(u||(t=Ge(s)),a=k.cssHooks[t]||k.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"===(o=typeof n)&&(i=ne.exec(n))&&i[1]&&(n=le(e,t,i),o="number"),null!=n&&n==n&&("number"!==o||u||(n+=i&&i[3]||(k.cssNumber[s]?"":"px")),y.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=V(t);return Qe.test(t)||(t=Ge(s)),(a=k.cssHooks[t]||k.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=_e(e,t,r)),"normal"===i&&t in Ke&&(i=Ke[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),k.each(["height","width"],function(e,u){k.cssHooks[u]={get:function(e,t,n){if(t)return!Ye.test(k.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?tt(e,u,n):ue(e,Je,function(){return tt(e,u,n)})},set:function(e,t,n){var r,i=Fe(e),o=!y.scrollboxSize()&&"absolute"===i.position,a=(o||n)&&"border-box"===k.css(e,"boxSizing",!1,i),s=n?et(e,u,n,a,i):0;return a&&o&&(s-=Math.ceil(e["offset"+u[0].toUpperCase()+u.slice(1)]-parseFloat(i[u])-et(e,u,"border",!1,i)-.5)),s&&(r=ne.exec(t))&&"px"!==(r[3]||"px")&&(e.style[u]=t,t=k.css(e,u)),Ze(0,t,s)}}}),k.cssHooks.marginLeft=ze(y.reliableMarginLeft,function(e,t){if(t)return(parseFloat(_e(e,"marginLeft"))||e.getBoundingClientRect().left-ue(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),k.each({margin:"",padding:"",border:"Width"},function(i,o){k.cssHooks[i+o]={expand:function(e){for(var t=0,n={},r="string"==typeof e?e.split(" "):[e];t<4;t++)n[i+re[t]+o]=r[t]||r[t-2]||r[0];return n}},"margin"!==i&&(k.cssHooks[i+o].set=Ze)}),k.fn.extend({css:function(e,t){return _(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=Fe(e),i=t.length;a<i;a++)o[t[a]]=k.css(e,t[a],!1,r);return o}return void 0!==n?k.style(e,t,n):k.css(e,t)},e,t,1<arguments.length)}}),((k.Tween=nt).prototype={constructor:nt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||k.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(k.cssNumber[n]?"":"px")},cur:function(){var e=nt.propHooks[this.prop];return e&&e.get?e.get(this):nt.propHooks._default.get(this)},run:function(e){var t,n=nt.propHooks[this.prop];return this.options.duration?this.pos=t=k.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):nt.propHooks._default.set(this),this}}).init.prototype=nt.prototype,(nt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=k.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){k.fx.step[e.prop]?k.fx.step[e.prop](e):1!==e.elem.nodeType||!k.cssHooks[e.prop]&&null==e.elem.style[Ge(e.prop)]?e.elem[e.prop]=e.now:k.style(e.elem,e.prop,e.now+e.unit)}}}).scrollTop=nt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},k.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},k.fx=nt.prototype.init,k.fx.step={};var rt,it,ot,at,st=/^(?:toggle|show|hide)$/,ut=/queueHooks$/;function lt(){it&&(!1===E.hidden&&C.requestAnimationFrame?C.requestAnimationFrame(lt):C.setTimeout(lt,k.fx.interval),k.fx.tick())}function ct(){return C.setTimeout(function(){rt=void 0}),rt=Date.now()}function ft(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=re[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function pt(e,t,n){for(var r,i=(dt.tweeners[t]||[]).concat(dt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function dt(o,e,t){var n,a,r=0,i=dt.prefilters.length,s=k.Deferred().always(function(){delete u.elem}),u=function(){if(a)return!1;for(var e=rt||ct(),t=Math.max(0,l.startTime+l.duration-e),n=1-(t/l.duration||0),r=0,i=l.tweens.length;r<i;r++)l.tweens[r].run(n);return s.notifyWith(o,[l,n,t]),n<1&&i?t:(i||s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l]),!1)},l=s.promise({elem:o,props:k.extend({},e),opts:k.extend(!0,{specialEasing:{},easing:k.easing._default},t),originalProperties:e,originalOptions:t,startTime:rt||ct(),duration:t.duration,tweens:[],createTween:function(e,t){var n=k.Tween(o,l.opts,e,t,l.opts.specialEasing[e]||l.opts.easing);return l.tweens.push(n),n},stop:function(e){var t=0,n=e?l.tweens.length:0;if(a)return this;for(a=!0;t<n;t++)l.tweens[t].run(1);return e?(s.notifyWith(o,[l,1,0]),s.resolveWith(o,[l,e])):s.rejectWith(o,[l,e]),this}}),c=l.props;for(!function(e,t){var n,r,i,o,a;for(n in e)if(i=t[r=V(n)],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=k.cssHooks[r])&&"expand"in a)for(n in o=a.expand(o),delete e[r],o)n in e||(e[n]=o[n],t[n]=i);else t[r]=i}(c,l.opts.specialEasing);r<i;r++)if(n=dt.prefilters[r].call(l,o,c,l.opts))return m(n.stop)&&(k._queueHooks(l.elem,l.opts.queue).stop=n.stop.bind(n)),n;return k.map(c,pt,l),m(l.opts.start)&&l.opts.start.call(o,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),k.fx.timer(k.extend(u,{elem:o,anim:l,queue:l.opts.queue})),l}k.Animation=k.extend(dt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return le(n.elem,e,ne.exec(t),n),n}]},tweener:function(e,t){m(e)?(t=e,e=["*"]):e=e.match(R);for(var n,r=0,i=e.length;r<i;r++)n=e[r],dt.tweeners[n]=dt.tweeners[n]||[],dt.tweeners[n].unshift(t)},prefilters:[function(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&se(e),v=Q.get(e,"fxshow");for(r in n.queue||(null==(a=k._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,k.queue(e,"fx").length||a.empty.fire()})})),t)if(i=t[r],st.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!v||void 0===v[r])continue;g=!0}d[r]=v&&v[r]||k.style(e,r)}if((u=!k.isEmptyObject(t))||!k.isEmptyObject(d))for(r in f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=v&&v.display)&&(l=Q.get(e,"display")),"none"===(c=k.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=k.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===k.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1,d)u||(v?"hidden"in v&&(g=v.hidden):v=Q.access(e,"fxshow",{display:l}),o&&(v.hidden=!g),g&&fe([e],!0),p.done(function(){for(r in g||fe([e]),Q.remove(e,"fxshow"),d)k.style(e,r,d[r])})),u=pt(g?v[r]:0,r,p),r in v||(v[r]=u.start,g&&(u.end=u.start,u.start=0))}],prefilter:function(e,t){t?dt.prefilters.unshift(e):dt.prefilters.push(e)}}),k.speed=function(e,t,n){var r=e&&"object"==typeof e?k.extend({},e):{complete:n||!n&&t||m(e)&&e,duration:e,easing:n&&t||t&&!m(t)&&t};return k.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in k.fx.speeds?r.duration=k.fx.speeds[r.duration]:r.duration=k.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){m(r.old)&&r.old.call(this),r.queue&&k.dequeue(this,r.queue)},r},k.fn.extend({fadeTo:function(e,t,n,r){return this.filter(se).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(t,e,n,r){var i=k.isEmptyObject(t),o=k.speed(e,n,r),a=function(){var e=dt(this,k.extend({},t),o);(i||Q.get(this,"finish"))&&e.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(i,e,o){var a=function(e){var t=e.stop;delete e.stop,t(o)};return"string"!=typeof i&&(o=e,e=i,i=void 0),e&&!1!==i&&this.queue(i||"fx",[]),this.each(function(){var e=!0,t=null!=i&&i+"queueHooks",n=k.timers,r=Q.get(this);if(t)r[t]&&r[t].stop&&a(r[t]);else for(t in r)r[t]&&r[t].stop&&ut.test(t)&&a(r[t]);for(t=n.length;t--;)n[t].elem!==this||null!=i&&n[t].queue!==i||(n[t].anim.stop(o),e=!1,n.splice(t,1));!e&&o||k.dequeue(this,i)})},finish:function(a){return!1!==a&&(a=a||"fx"),this.each(function(){var e,t=Q.get(this),n=t[a+"queue"],r=t[a+"queueHooks"],i=k.timers,o=n?n.length:0;for(t.finish=!0,k.queue(this,a,[]),r&&r.stop&&r.stop.call(this,!0),e=i.length;e--;)i[e].elem===this&&i[e].queue===a&&(i[e].anim.stop(!0),i.splice(e,1));for(e=0;e<o;e++)n[e]&&n[e].finish&&n[e].finish.call(this);delete t.finish})}}),k.each(["toggle","show","hide"],function(e,r){var i=k.fn[r];k.fn[r]=function(e,t,n){return null==e||"boolean"==typeof e?i.apply(this,arguments):this.animate(ft(r,!0),e,t,n)}}),k.each({slideDown:ft("show"),slideUp:ft("hide"),slideToggle:ft("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,r){k.fn[e]=function(e,t,n){return this.animate(r,e,t,n)}}),k.timers=[],k.fx.tick=function(){var e,t=0,n=k.timers;for(rt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||k.fx.stop(),rt=void 0},k.fx.timer=function(e){k.timers.push(e),k.fx.start()},k.fx.interval=13,k.fx.start=function(){it||(it=!0,lt())},k.fx.stop=function(){it=null},k.fx.speeds={slow:600,fast:200,_default:400},k.fn.delay=function(r,e){return r=k.fx&&k.fx.speeds[r]||r,e=e||"fx",this.queue(e,function(e,t){var n=C.setTimeout(e,r);t.stop=function(){C.clearTimeout(n)}})},ot=E.createElement("input"),at=E.createElement("select").appendChild(E.createElement("option")),ot.type="checkbox",y.checkOn=""!==ot.value,y.optSelected=at.selected,(ot=E.createElement("input")).value="t",ot.type="radio",y.radioValue="t"===ot.value;var ht,gt=k.expr.attrHandle;k.fn.extend({attr:function(e,t){return _(this,k.attr,e,t,1<arguments.length)},removeAttr:function(e){return this.each(function(){k.removeAttr(this,e)})}}),k.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?k.prop(e,t,n):(1===o&&k.isXMLDoc(e)||(i=k.attrHooks[t.toLowerCase()]||(k.expr.match.bool.test(t)?ht:void 0)),void 0!==n?null===n?void k.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=k.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!y.radioValue&&"radio"===t&&A(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(R);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),ht={set:function(e,t,n){return!1===t?k.removeAttr(e,n):e.setAttribute(n,n),n}},k.each(k.expr.match.bool.source.match(/\w+/g),function(e,t){var a=gt[t]||k.find.attr;gt[t]=function(e,t,n){var r,i,o=t.toLowerCase();return n||(i=gt[o],gt[o]=r,r=null!=a(e,t,n)?o:null,gt[o]=i),r}});var vt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;function mt(e){return(e.match(R)||[]).join(" ")}function xt(e){return e.getAttribute&&e.getAttribute("class")||""}function bt(e){return Array.isArray(e)?e:"string"==typeof e&&e.match(R)||[]}k.fn.extend({prop:function(e,t){return _(this,k.prop,e,t,1<arguments.length)},removeProp:function(e){return this.each(function(){delete this[k.propFix[e]||e]})}}),k.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&k.isXMLDoc(e)||(t=k.propFix[t]||t,i=k.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=k.find.attr(e,"tabindex");return t?parseInt(t,10):vt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),y.optSelected||(k.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),k.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){k.propFix[this.toLowerCase()]=this}),k.fn.extend({addClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).addClass(t.call(this,e,xt(this)))});if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},removeClass:function(t){var e,n,r,i,o,a,s,u=0;if(m(t))return this.each(function(e){k(this).removeClass(t.call(this,e,xt(this)))});if(!arguments.length)return this.attr("class","");if((e=bt(t)).length)while(n=this[u++])if(i=xt(n),r=1===n.nodeType&&" "+mt(i)+" "){a=0;while(o=e[a++])while(-1<r.indexOf(" "+o+" "))r=r.replace(" "+o+" "," ");i!==(s=mt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(i,t){var o=typeof i,a="string"===o||Array.isArray(i);return"boolean"==typeof t&&a?t?this.addClass(i):this.removeClass(i):m(i)?this.each(function(e){k(this).toggleClass(i.call(this,e,xt(this),t),t)}):this.each(function(){var e,t,n,r;if(a){t=0,n=k(this),r=bt(i);while(e=r[t++])n.hasClass(e)?n.removeClass(e):n.addClass(e)}else void 0!==i&&"boolean"!==o||((e=xt(this))&&Q.set(this,"__className__",e),this.setAttribute&&this.setAttribute("class",e||!1===i?"":Q.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&-1<(" "+mt(xt(n))+" ").indexOf(t))return!0;return!1}});var wt=/\r/g;k.fn.extend({val:function(n){var r,e,i,t=this[0];return arguments.length?(i=m(n),this.each(function(e){var t;1===this.nodeType&&(null==(t=i?n.call(this,e,k(this).val()):n)?t="":"number"==typeof t?t+="":Array.isArray(t)&&(t=k.map(t,function(e){return null==e?"":e+""})),(r=k.valHooks[this.type]||k.valHooks[this.nodeName.toLowerCase()])&&"set"in r&&void 0!==r.set(this,t,"value")||(this.value=t))})):t?(r=k.valHooks[t.type]||k.valHooks[t.nodeName.toLowerCase()])&&"get"in r&&void 0!==(e=r.get(t,"value"))?e:"string"==typeof(e=t.value)?e.replace(wt,""):null==e?"":e:void 0}}),k.extend({valHooks:{option:{get:function(e){var t=k.find.attr(e,"value");return null!=t?t:mt(k.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!A(n.parentNode,"optgroup"))){if(t=k(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=k.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=-1<k.inArray(k.valHooks.option.get(r),o))&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),k.each(["radio","checkbox"],function(){k.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=-1<k.inArray(k(e).val(),t)}},y.checkOn||(k.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),y.focusin="onfocusin"in C;var Tt=/^(?:focusinfocus|focusoutblur)$/,Ct=function(e){e.stopPropagation()};k.extend(k.event,{trigger:function(e,t,n,r){var i,o,a,s,u,l,c,f,p=[n||E],d=v.call(e,"type")?e.type:e,h=v.call(e,"namespace")?e.namespace.split("."):[];if(o=f=a=n=n||E,3!==n.nodeType&&8!==n.nodeType&&!Tt.test(d+k.event.triggered)&&(-1<d.indexOf(".")&&(d=(h=d.split(".")).shift(),h.sort()),u=d.indexOf(":")<0&&"on"+d,(e=e[k.expando]?e:new k.Event(d,"object"==typeof e&&e)).isTrigger=r?2:3,e.namespace=h.join("."),e.rnamespace=e.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,e.result=void 0,e.target||(e.target=n),t=null==t?[e]:k.makeArray(t,[e]),c=k.event.special[d]||{},r||!c.trigger||!1!==c.trigger.apply(n,t))){if(!r&&!c.noBubble&&!x(n)){for(s=c.delegateType||d,Tt.test(s+d)||(o=o.parentNode);o;o=o.parentNode)p.push(o),a=o;a===(n.ownerDocument||E)&&p.push(a.defaultView||a.parentWindow||C)}i=0;while((o=p[i++])&&!e.isPropagationStopped())f=o,e.type=1<i?s:c.bindType||d,(l=(Q.get(o,"events")||{})[e.type]&&Q.get(o,"handle"))&&l.apply(o,t),(l=u&&o[u])&&l.apply&&G(o)&&(e.result=l.apply(o,t),!1===e.result&&e.preventDefault());return e.type=d,r||e.isDefaultPrevented()||c._default&&!1!==c._default.apply(p.pop(),t)||!G(n)||u&&m(n[d])&&!x(n)&&((a=n[u])&&(n[u]=null),k.event.triggered=d,e.isPropagationStopped()&&f.addEventListener(d,Ct),n[d](),e.isPropagationStopped()&&f.removeEventListener(d,Ct),k.event.triggered=void 0,a&&(n[u]=a)),e.result}},simulate:function(e,t,n){var r=k.extend(new k.Event,n,{type:e,isSimulated:!0});k.event.trigger(r,null,t)}}),k.fn.extend({trigger:function(e,t){return this.each(function(){k.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return k.event.trigger(e,t,n,!0)}}),y.focusin||k.each({focus:"focusin",blur:"focusout"},function(n,r){var i=function(e){k.event.simulate(r,e.target,k.event.fix(e))};k.event.special[r]={setup:function(){var e=this.ownerDocument||this,t=Q.access(e,r);t||e.addEventListener(n,i,!0),Q.access(e,r,(t||0)+1)},teardown:function(){var e=this.ownerDocument||this,t=Q.access(e,r)-1;t?Q.access(e,r,t):(e.removeEventListener(n,i,!0),Q.remove(e,r))}}});var Et=C.location,kt=Date.now(),St=/\?/;k.parseXML=function(e){var t;if(!e||"string"!=typeof e)return null;try{t=(new C.DOMParser).parseFromString(e,"text/xml")}catch(e){t=void 0}return t&&!t.getElementsByTagName("parsererror").length||k.error("Invalid XML: "+e),t};var Nt=/\[\]$/,At=/\r?\n/g,Dt=/^(?:submit|button|image|reset|file)$/i,jt=/^(?:input|select|textarea|keygen)/i;function qt(n,e,r,i){var t;if(Array.isArray(e))k.each(e,function(e,t){r||Nt.test(n)?i(n,t):qt(n+"["+("object"==typeof t&&null!=t?e:"")+"]",t,r,i)});else if(r||"object"!==w(e))i(n,e);else for(t in e)qt(n+"["+t+"]",e[t],r,i)}k.param=function(e,t){var n,r=[],i=function(e,t){var n=m(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(null==e)return"";if(Array.isArray(e)||e.jquery&&!k.isPlainObject(e))k.each(e,function(){i(this.name,this.value)});else for(n in e)qt(n,e[n],t,i);return r.join("&")},k.fn.extend({serialize:function(){return k.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=k.prop(this,"elements");return e?k.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!k(this).is(":disabled")&&jt.test(this.nodeName)&&!Dt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=k(this).val();return null==n?null:Array.isArray(n)?k.map(n,function(e){return{name:t.name,value:e.replace(At,"\r\n")}}):{name:t.name,value:n.replace(At,"\r\n")}}).get()}});var Lt=/%20/g,Ht=/#.*$/,Ot=/([?&])_=[^&]*/,Pt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Rt=/^(?:GET|HEAD)$/,Mt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Ft=E.createElement("a");function Bt(o){return function(e,t){"string"!=typeof e&&(t=e,e="*");var n,r=0,i=e.toLowerCase().match(R)||[];if(m(t))while(n=i[r++])"+"===n[0]?(n=n.slice(1)||"*",(o[n]=o[n]||[]).unshift(t)):(o[n]=o[n]||[]).push(t)}}function _t(t,i,o,a){var s={},u=t===Wt;function l(e){var r;return s[e]=!0,k.each(t[e]||[],function(e,t){var n=t(i,o,a);return"string"!=typeof n||u||s[n]?u?!(r=n):void 0:(i.dataTypes.unshift(n),l(n),!1)}),r}return l(i.dataTypes[0])||!s["*"]&&l("*")}function zt(e,t){var n,r,i=k.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&k.extend(!0,e,r),e}Ft.href=Et.href,k.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Et.href,type:"GET",isLocal:/^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":k.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,k.ajaxSettings),t):zt(k.ajaxSettings,e)},ajaxPrefilter:Bt(It),ajaxTransport:Bt(Wt),ajax:function(e,t){"object"==typeof e&&(t=e,e=void 0),t=t||{};var c,f,p,n,d,r,h,g,i,o,v=k.ajaxSetup({},t),y=v.context||v,m=v.context&&(y.nodeType||y.jquery)?k(y):k.event,x=k.Deferred(),b=k.Callbacks("once memory"),w=v.statusCode||{},a={},s={},u="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(h){if(!n){n={};while(t=Pt.exec(p))n[t[1].toLowerCase()+" "]=(n[t[1].toLowerCase()+" "]||[]).concat(t[2])}t=n[e.toLowerCase()+" "]}return null==t?null:t.join(", ")},getAllResponseHeaders:function(){return h?p:null},setRequestHeader:function(e,t){return null==h&&(e=s[e.toLowerCase()]=s[e.toLowerCase()]||e,a[e]=t),this},overrideMimeType:function(e){return null==h&&(v.mimeType=e),this},statusCode:function(e){var t;if(e)if(h)T.always(e[T.status]);else for(t in e)w[t]=[w[t],e[t]];return this},abort:function(e){var t=e||u;return c&&c.abort(t),l(0,t),this}};if(x.promise(T),v.url=((e||v.url||Et.href)+"").replace(Mt,Et.protocol+"//"),v.type=t.method||t.type||v.method||v.type,v.dataTypes=(v.dataType||"*").toLowerCase().match(R)||[""],null==v.crossDomain){r=E.createElement("a");try{r.href=v.url,r.href=r.href,v.crossDomain=Ft.protocol+"//"+Ft.host!=r.protocol+"//"+r.host}catch(e){v.crossDomain=!0}}if(v.data&&v.processData&&"string"!=typeof v.data&&(v.data=k.param(v.data,v.traditional)),_t(It,v,t,T),h)return T;for(i in(g=k.event&&v.global)&&0==k.active++&&k.event.trigger("ajaxStart"),v.type=v.type.toUpperCase(),v.hasContent=!Rt.test(v.type),f=v.url.replace(Ht,""),v.hasContent?v.data&&v.processData&&0===(v.contentType||"").indexOf("application/x-www-form-urlencoded")&&(v.data=v.data.replace(Lt,"+")):(o=v.url.slice(f.length),v.data&&(v.processData||"string"==typeof v.data)&&(f+=(St.test(f)?"&":"?")+v.data,delete v.data),!1===v.cache&&(f=f.replace(Ot,"$1"),o=(St.test(f)?"&":"?")+"_="+kt+++o),v.url=f+o),v.ifModified&&(k.lastModified[f]&&T.setRequestHeader("If-Modified-Since",k.lastModified[f]),k.etag[f]&&T.setRequestHeader("If-None-Match",k.etag[f])),(v.data&&v.hasContent&&!1!==v.contentType||t.contentType)&&T.setRequestHeader("Content-Type",v.contentType),T.setRequestHeader("Accept",v.dataTypes[0]&&v.accepts[v.dataTypes[0]]?v.accepts[v.dataTypes[0]]+("*"!==v.dataTypes[0]?", "+$t+"; q=0.01":""):v.accepts["*"]),v.headers)T.setRequestHeader(i,v.headers[i]);if(v.beforeSend&&(!1===v.beforeSend.call(y,T,v)||h))return T.abort();if(u="abort",b.add(v.complete),T.done(v.success),T.fail(v.error),c=_t(Wt,v,t,T)){if(T.readyState=1,g&&m.trigger("ajaxSend",[T,v]),h)return T;v.async&&0<v.timeout&&(d=C.setTimeout(function(){T.abort("timeout")},v.timeout));try{h=!1,c.send(a,l)}catch(e){if(h)throw e;l(-1,e)}}else l(-1,"No Transport");function l(e,t,n,r){var i,o,a,s,u,l=t;h||(h=!0,d&&C.clearTimeout(d),c=void 0,p=r||"",T.readyState=0<e?4:0,i=200<=e&&e<300||304===e,n&&(s=function(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}(v,T,n)),s=function(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}(v,s,T,i),i?(v.ifModified&&((u=T.getResponseHeader("Last-Modified"))&&(k.lastModified[f]=u),(u=T.getResponseHeader("etag"))&&(k.etag[f]=u)),204===e||"HEAD"===v.type?l="nocontent":304===e?l="notmodified":(l=s.state,o=s.data,i=!(a=s.error))):(a=l,!e&&l||(l="error",e<0&&(e=0))),T.status=e,T.statusText=(t||l)+"",i?x.resolveWith(y,[o,l,T]):x.rejectWith(y,[T,l,a]),T.statusCode(w),w=void 0,g&&m.trigger(i?"ajaxSuccess":"ajaxError",[T,v,i?o:a]),b.fireWith(y,[T,l]),g&&(m.trigger("ajaxComplete",[T,v]),--k.active||k.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return k.get(e,t,n,"json")},getScript:function(e,t){return k.get(e,void 0,t,"script")}}),k.each(["get","post"],function(e,i){k[i]=function(e,t,n,r){return m(t)&&(r=r||n,n=t,t=void 0),k.ajax(k.extend({url:e,type:i,dataType:r,data:t,success:n},k.isPlainObject(e)&&e))}}),k._evalUrl=function(e,t){return k.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,converters:{"text script":function(){}},dataFilter:function(e){k.globalEval(e,t)}})},k.fn.extend({wrapAll:function(e){var t;return this[0]&&(m(e)&&(e=e.call(this[0])),t=k(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(n){return m(n)?this.each(function(e){k(this).wrapInner(n.call(this,e))}):this.each(function(){var e=k(this),t=e.contents();t.length?t.wrapAll(n):e.append(n)})},wrap:function(t){var n=m(t);return this.each(function(e){k(this).wrapAll(n?t.call(this,e):t)})},unwrap:function(e){return this.parent(e).not("body").each(function(){k(this).replaceWith(this.childNodes)}),this}}),k.expr.pseudos.hidden=function(e){return!k.expr.pseudos.visible(e)},k.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},k.ajaxSettings.xhr=function(){try{return new C.XMLHttpRequest}catch(e){}};var Ut={0:200,1223:204},Xt=k.ajaxSettings.xhr();y.cors=!!Xt&&"withCredentials"in Xt,y.ajax=Xt=!!Xt,k.ajaxTransport(function(i){var o,a;if(y.cors||Xt&&!i.crossDomain)return{send:function(e,t){var n,r=i.xhr();if(r.open(i.type,i.url,i.async,i.username,i.password),i.xhrFields)for(n in i.xhrFields)r[n]=i.xhrFields[n];for(n in i.mimeType&&r.overrideMimeType&&r.overrideMimeType(i.mimeType),i.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest"),e)r.setRequestHeader(n,e[n]);o=function(e){return function(){o&&(o=a=r.onload=r.onerror=r.onabort=r.ontimeout=r.onreadystatechange=null,"abort"===e?r.abort():"error"===e?"number"!=typeof r.status?t(0,"error"):t(r.status,r.statusText):t(Ut[r.status]||r.status,r.statusText,"text"!==(r.responseType||"text")||"string"!=typeof r.responseText?{binary:r.response}:{text:r.responseText},r.getAllResponseHeaders()))}},r.onload=o(),a=r.onerror=r.ontimeout=o("error"),void 0!==r.onabort?r.onabort=a:r.onreadystatechange=function(){4===r.readyState&&C.setTimeout(function(){o&&a()})},o=o("abort");try{r.send(i.hasContent&&i.data||null)}catch(e){if(o)throw e}},abort:function(){o&&o()}}}),k.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),k.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return k.globalEval(e),e}}}),k.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),k.ajaxTransport("script",function(n){var r,i;if(n.crossDomain||n.scriptAttrs)return{send:function(e,t){r=k("<script>").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="<form></form><form></form>",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1<s&&(r=mt(e.slice(s)),e=e.slice(0,s)),m(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),0<a.length&&k.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?k("<div>").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0<arguments.length?this.on(n,null,e,t):this.trigger(n)}}),k.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),k.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),k.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),m(e))return r=s.call(arguments,2),(i=function(){return e.apply(t||this,r.concat(s.call(arguments)))}).guid=e.guid=e.guid||k.guid++,i},k.holdReady=function(e){e?k.readyWait++:k.ready(!0)},k.isArray=Array.isArray,k.parseJSON=JSON.parse,k.nodeName=A,k.isFunction=m,k.isWindow=x,k.camelCase=V,k.type=w,k.now=Date.now,k.isNumeric=function(e){var t=k.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return k});var Qt=C.jQuery,Jt=C.$;return k.noConflict=function(e){return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k),k});
+/*! jQuery UI - v1.12.1 - 2019-01-27
+* http://jqueryui.com
+* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+
+(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}t.ui=t.ui||{},t.ui.version="1.12.1";var i=0,s=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,n,o=s.call(arguments,1),a=0,r=o.length;r>a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,m,g,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),x={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,m=_.offset,g=t.extend({},m),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),x[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?g.left+=p:"center"===n.at[0]&&(g.left+=p/2),"bottom"===n.at[1]?g.top+=f:"center"===n.at[1]&&(g.top+=f/2),u=e(x.at,p,f),g.left+=u[0],g.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),k=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},g),T=e(x.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=T[0],D.top+=T[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:k,collisionHeight:C,offset:[u[0]+T[0],u[1]+T[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=m.left-D.left,i=e+p-l,s=m.top-D.top,r=s+f-c,u={target:{element:v,left:m.left,top:m.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element
+},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/**
+ * Copyright (c) 2007 Ariel Flesler - aflesler â—‹ gmail • com | https://github.com/flesler
+ * Licensed under MIT
+ * @author Ariel Flesler
+ * @version 2.1.2
+ */
+;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1<b.axis.length;u&&(d/=2);b.offset=h(b.offset);b.over=h(b.over);return this.each(function(){function k(a){var k=$.extend({},b,{queue:!0,duration:d,complete:a&&function(){a.call(q,e,b)}});r.animate(f,k)}if(null!==a){var l=n(this),q=l?this.contentWindow||window:this,r=$(q),e=a,f={},t;switch(typeof e){case "number":case "string":if(/^([+-]=?)?\d+(\.\d+)?(px|%)?$/.test(e)){e= h(e);break}e=l?$(e):$(e,q);case "object":if(e.length===0)return;if(e.is||e.style)t=(e=$(e)).offset()}var v=$.isFunction(b.offset)&&b.offset(q,e)||b.offset;$.each(b.axis.split(""),function(a,c){var d="x"===c?"Left":"Top",m=d.toLowerCase(),g="scroll"+d,h=r[g](),n=p.max(q,c);t?(f[g]=t[m]+(l?0:h-r.offset()[m]),b.margin&&(f[g]-=parseInt(e.css("margin"+d),10)||0,f[g]-=parseInt(e.css("border"+d+"Width"),10)||0),f[g]+=v[m]||0,b.over[m]&&(f[g]+=e["x"===c?"width":"height"]()*b.over[m])):(d=e[m],f[g]=d.slice&& "%"===d.slice(-1)?parseFloat(d)/100*n:d);b.limit&&/^\d+$/.test(f[g])&&(f[g]=0>=f[g]?0:Math.min(f[g],n));!a&&1<b.axis.length&&(h===f[g]?f={}:u&&(k(b.onAfterFirst),f={}))});k(b.onAfter)}})};p.max=function(a,d){var b="x"===d?"Width":"Height",h="scroll"+b;if(!n(a))return a[h]-$(a)[b.toLowerCase()]();var b="client"+b,k=a.ownerDocument||a.document,l=k.documentElement,k=k.body;return Math.max(l[h],k[h])-Math.min(l[b],k[b])};$.Tween.propHooks.scrollLeft=$.Tween.propHooks.scrollTop={get:function(a){return $(a.elem)[a.prop]()}, set:function(a){var d=this.get(a);if(a.options.interrupt&&a._last&&a._last!==d)return $(a.elem).stop();var b=Math.round(a.now);d!==b&&($(a.elem)[a.prop](b),a._last=this.get(a))}};return p});
+/*!
+ PowerTip v1.3.1 (2018-04-15)
+ https://stevenbenner.github.io/jquery-powertip/
+ Copyright (c) 2018 Steven Benner (http://stevenbenner.com/).
+ Released under MIT license.
+ https://raw.github.com/stevenbenner/jquery-powertip/master/LICENSE.txt
+*/
+(function(root,factory){if(typeof define==="function"&&define.amd){define(["jquery"],factory)}else if(typeof module==="object"&&module.exports){module.exports=factory(require("jquery"))}else{factory(root.jQuery)}})(this,function($){var $document=$(document),$window=$(window),$body=$("body");var DATA_DISPLAYCONTROLLER="displayController",DATA_HASACTIVEHOVER="hasActiveHover",DATA_FORCEDOPEN="forcedOpen",DATA_HASMOUSEMOVE="hasMouseMove",DATA_MOUSEONTOTIP="mouseOnToPopup",DATA_ORIGINALTITLE="originalTitle",DATA_POWERTIP="powertip",DATA_POWERTIPJQ="powertipjq",DATA_POWERTIPTARGET="powertiptarget",EVENT_NAMESPACE=".powertip",RAD2DEG=180/Math.PI,MOUSE_EVENTS=["click","dblclick","mousedown","mouseup","mousemove","mouseover","mouseout","mouseenter","mouseleave","contextmenu"];var session={tooltips:null,isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,closeDelayTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var Collision={none:0,top:1,bottom:2,left:4,right:8};$.fn.powerTip=function(opts,arg){var targetElements=this,options,tipController;if(!targetElements.length){return targetElements}if($.type(opts)==="string"&&$.powerTip[opts]){return $.powerTip[opts].call(targetElements,targetElements,arg)}options=$.extend({},$.fn.powerTip.defaults,opts);tipController=new TooltipController(options);initTracking();targetElements.each(function elementSetup(){var $this=$(this),dataPowertip=$this.data(DATA_POWERTIP),dataElem=$this.data(DATA_POWERTIPJQ),dataTarget=$this.data(DATA_POWERTIPTARGET),title=$this.attr("title");if(!dataPowertip&&!dataTarget&&!dataElem&&title){$this.data(DATA_POWERTIP,title);$this.data(DATA_ORIGINALTITLE,title);$this.removeAttr("title")}$this.data(DATA_DISPLAYCONTROLLER,new DisplayController($this,options,tipController))});if(!options.manual){$.each(options.openEvents,function(idx,evt){if($.inArray(evt,options.closeEvents)>-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference<options.intentSensitivity){cancelClose();closeAnyDelayed();tipController.showTip(element)}else{session.previousX=session.currentX;session.previousY=session.currentY;openTooltip()}}function cancelTimer(stopClose){hoverTimer=clearTimeout(hoverTimer);if(session.closeDelayTimeout&&myCloseDelay===session.closeDelayTimeout||stopClose){cancelClose()}}function cancelClose(){session.closeDelayTimeout=clearTimeout(session.closeDelayTimeout);session.delayInProgress=false}function closeAnyDelayed(){if(session.delayInProgress&&session.activeHover&&!session.activeHover.is(element)){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide(true)}}function repositionTooltip(){tipController.resetPosition(element)}this.show=openTooltip;this.hide=closeTooltip;this.cancel=cancelTimer;this.resetPosition=repositionTooltip}function PlacementCalculator(){function computePlacementCoords(element,placement,tipWidth,tipHeight,offset){var placementBase=placement.split("-")[0],coords=new CSSCoordinates,position;if(isSvgElement(element)){position=getSvgPlacement(element,placementBase)}else{position=getHtmlPlacement(element,placementBase)}switch(placement){case"n":coords.set("left",position.left-tipWidth/2);coords.set("bottom",session.windowHeight-position.top+offset);break;case"e":coords.set("left",position.left+offset);coords.set("top",position.top-tipHeight/2);break;case"s":coords.set("left",position.left-tipWidth/2);coords.set("top",position.top+offset);break;case"w":coords.set("top",position.top-tipHeight/2);coords.set("right",session.windowWidth-position.left+offset);break;case"nw":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"nw-alt":coords.set("left",position.left);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne":coords.set("left",position.left-20);coords.set("bottom",session.windowHeight-position.top+offset);break;case"ne-alt":coords.set("bottom",session.windowHeight-position.top+offset);coords.set("right",session.windowWidth-position.left);break;case"sw":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left-20);break;case"sw-alt":coords.set("left",position.left);coords.set("top",position.top+offset);break;case"se":coords.set("left",position.left-20);coords.set("top",position.top+offset);break;case"se-alt":coords.set("top",position.top+offset);coords.set("right",session.windowWidth-position.left);break}return coords}function getHtmlPlacement(element,placement){var objectOffset=element.offset(),objectWidth=element.outerWidth(),objectHeight=element.outerHeight(),left,top;switch(placement){case"n":left=objectOffset.left+objectWidth/2;top=objectOffset.top;break;case"e":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight/2;break;case"s":left=objectOffset.left+objectWidth/2;top=objectOffset.top+objectHeight;break;case"w":left=objectOffset.left;top=objectOffset.top+objectHeight/2;break;case"nw":left=objectOffset.left;top=objectOffset.top;break;case"ne":left=objectOffset.left+objectWidth;top=objectOffset.top;break;case"sw":left=objectOffset.left;top=objectOffset.top+objectHeight;break;case"se":left=objectOffset.left+objectWidth;top=objectOffset.top+objectHeight;break}return{top:top,left:left}}function getSvgPlacement(element,placement){var svgElement=element.closest("svg")[0],domElement=element[0],point=svgElement.createSVGPoint(),boundingBox=domElement.getBBox(),matrix=domElement.getScreenCTM(),halfWidth=boundingBox.width/2,halfHeight=boundingBox.height/2,placements=[],placementKeys=["nw","n","ne","e","se","s","sw","w"],coords,rotation,steps,x;function pushPlacement(){placements.push(point.matrixTransform(matrix))}point.x=boundingBox.x;point.y=boundingBox.y;pushPlacement();point.x+=halfWidth;pushPlacement();point.x+=halfWidth;pushPlacement();point.y+=halfHeight;pushPlacement();point.y+=halfHeight;pushPlacement();point.x-=halfWidth;pushPlacement();point.x-=halfWidth;pushPlacement();point.y-=halfHeight;pushPlacement();if(placements[0].y!==placements[1].y||placements[0].x!==placements[7].x){rotation=Math.atan2(matrix.b,matrix.a)*RAD2DEG;steps=Math.ceil((rotation%360-22.5)/45);if(steps<1){steps+=8}while(steps--){placementKeys.push(placementKeys.shift())}}for(x=0;x<placements.length;x++){if(placementKeys[x]===placement){coords=placements[x];break}}return{top:coords.y+session.scrollTop,left:coords.x+session.scrollLeft}}this.compute=computePlacementCoords}function TooltipController(options){var placementCalculator=new PlacementCalculator,tipElement=$("#"+options.popupId);if(tipElement.length===0){tipElement=$("<div/>",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.top<viewportTop||Math.abs(coords.bottom-session.windowHeight)-elementHeight<viewportTop){collisions|=Collision.top}if(coords.top+elementHeight>viewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.left<viewportLeft||coords.right+elementWidth>viewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right<viewportLeft){collisions|=Collision.right}return collisions}function countFlags(value){var count=0;while(value){value&=value-1;count++}return count}return $.powerTip});/*!
+ * jQuery UI Touch Punch 0.2.3
+ *
+ * Copyright 2011–2014, Dave Furfero
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ *
+ * Depends:
+ *  jquery.ui.widget.js
+ *  jquery.ui.mouse.js
+ */
+!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017
+ * http://www.smartmenus.org/
+ * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("<span/>").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('<div class="sm-jquery-disable-overlay"/>').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('<span class="scroll-up"><span class="scroll-up-arrow"></span></span>')[0],$('<span class="scroll-down"><span class="scroll-down-arrow"></span></span>')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y<o.upEnd)&&a.eq(o.up?1:0).show(),o.y==n)mouse&&a.eq(o.up?0:1).hide(),this.menuScrollStop(t);else if(!e){this.opts.scrollAccelerate&&o.step<this.opts.scrollStep&&(o.step+=.2);var h=this;this.scrollTimeout=requestAnimationFrame(function(){h.menuScroll(t)})}},menuScrollMousewheel:function(t,e){if(this.getClosestMenu(e.target)==t[0]){e=e.originalEvent;var i=(e.wheelDelta||-e.detail)>0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$});
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/menu.js b/static/docs/2.2.1/html/menu.js
new file mode 100755
index 0000000..d18a2fe
--- /dev/null
+++ b/static/docs/2.2.1/html/menu.js
@@ -0,0 +1,51 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
+function initMenu(relPath,searchEnabled,serverSide,searchPage,search) {
+  function makeTree(data,relPath) {
+    var result='';
+    if ('children' in data) {
+      result+='<ul>';
+      for (var i in data.children) {
+        result+='<li><a href="'+relPath+data.children[i].url+'">'+
+                                data.children[i].text+'</a>'+
+                                makeTree(data.children[i],relPath)+'</li>';
+      }
+      result+='</ul>';
+    }
+    return result;
+  }
+
+  $('#main-nav').append(makeTree(menudata,relPath));
+  $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu');
+  if (searchEnabled) {
+    if (serverSide) {
+      $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><div class="left"><form id="FSearchBox" action="'+relPath+searchPage+'" method="get"><img id="MSearchSelect" src="'+relPath+'search/mag.png" alt=""/><input type="text" id="MSearchField" name="query" value="'+search+'" size="20" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)"></form></div><div class="right"></div></div></li>');
+    } else {
+      $('#main-menu').append('<li style="float:right"><div id="MSearchBox" class="MSearchBoxInactive"><span class="left"><img id="MSearchSelect" src="'+relPath+'search/mag_sel.png" onmouseover="return searchBox.OnSearchSelectShow()" onmouseout="return searchBox.OnSearchSelectHide()" alt=""/><input type="text" id="MSearchField" value="'+search+'" accesskey="S" onfocus="searchBox.OnSearchFieldFocus(true)" onblur="searchBox.OnSearchFieldFocus(false)" onkeyup="searchBox.OnSearchFieldChange(event)"/></span><span class="right"><a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="'+relPath+'search/close.png" alt=""/></a></span></div></li>');
+    }
+  }
+  $('#main-menu').smartmenus();
+}
+/* @license-end */
diff --git a/static/docs/2.2.1/html/menudata.js b/static/docs/2.2.1/html/menudata.js
new file mode 100755
index 0000000..beda098
--- /dev/null
+++ b/static/docs/2.2.1/html/menudata.js
@@ -0,0 +1,69 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+*/
+var menudata={children:[
+{text:"Main Page",url:"index.html"},
+{text:"Classes",url:"annotated.html",children:[
+{text:"Class List",url:"annotated.html"},
+{text:"Class Index",url:"classes.html"},
+{text:"Class Members",url:"functions.html",children:[
+{text:"All",url:"functions.html",children:[
+{text:"a",url:"functions.html#index_a"},
+{text:"b",url:"functions.html#index_b"},
+{text:"c",url:"functions.html#index_c"},
+{text:"d",url:"functions.html#index_d"},
+{text:"f",url:"functions.html#index_f"},
+{text:"i",url:"functions.html#index_i"},
+{text:"n",url:"functions.html#index_n"},
+{text:"o",url:"functions.html#index_o"},
+{text:"p",url:"functions.html#index_p"},
+{text:"r",url:"functions.html#index_r"},
+{text:"s",url:"functions.html#index_s"},
+{text:"u",url:"functions.html#index_u"}]},
+{text:"Variables",url:"functions_vars.html",children:[
+{text:"a",url:"functions_vars.html#index_a"},
+{text:"b",url:"functions_vars.html#index_b"},
+{text:"c",url:"functions_vars.html#index_c"},
+{text:"d",url:"functions_vars.html#index_d"},
+{text:"f",url:"functions_vars.html#index_f"},
+{text:"i",url:"functions_vars.html#index_i"},
+{text:"n",url:"functions_vars.html#index_n"},
+{text:"o",url:"functions_vars.html#index_o"},
+{text:"p",url:"functions_vars.html#index_p"},
+{text:"r",url:"functions_vars.html#index_r"},
+{text:"s",url:"functions_vars.html#index_s"},
+{text:"u",url:"functions_vars.html#index_u"}]}]}]},
+{text:"Files",url:"files.html",children:[
+{text:"File List",url:"files.html"},
+{text:"File Members",url:"globals.html",children:[
+{text:"All",url:"globals.html",children:[
+{text:"c",url:"globals.html#index_c"},
+{text:"d",url:"globals.html#index_d"},
+{text:"o",url:"globals.html#index_o"}]},
+{text:"Functions",url:"globals_func.html",children:[
+{text:"c",url:"globals_func.html#index_c"}]},
+{text:"Typedefs",url:"globals_type.html"},
+{text:"Enumerations",url:"globals_enum.html"},
+{text:"Enumerator",url:"globals_eval.html"},
+{text:"Macros",url:"globals_defs.html"}]}]}]}
diff --git a/static/docs/2.2.0/html/nav_f.png b/static/docs/2.2.1/html/nav_f.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/nav_f.png
rename to static/docs/2.2.1/html/nav_f.png
Binary files differ
diff --git a/static/docs/2.2.0/html/nav_g.png b/static/docs/2.2.1/html/nav_g.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/nav_g.png
rename to static/docs/2.2.1/html/nav_g.png
Binary files differ
diff --git a/static/docs/2.2.0/html/nav_h.png b/static/docs/2.2.1/html/nav_h.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/nav_h.png
rename to static/docs/2.2.1/html/nav_h.png
Binary files differ
diff --git a/static/docs/2.2.0/html/open.png b/static/docs/2.2.1/html/open.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/open.png
rename to static/docs/2.2.1/html/open.png
Binary files differ
diff --git a/static/docs/2.2.0/html/search/all_0.html b/static/docs/2.2.1/html/search/all_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_0.html
rename to static/docs/2.2.1/html/search/all_0.html
index d54e0bd..ea50fff
--- a/static/docs/2.2.0/html/search/all_0.html
+++ b/static/docs/2.2.1/html/search/all_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_0.js b/static/docs/2.2.1/html/search/all_0.js
new file mode 100755
index 0000000..a20ce75
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_0.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['active_0',['active',['../structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499',1,'celix_dm_component_info_struct']]],
+  ['add_1',['add',['../structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815',1,'celix_service_tracking_options::add()'],['../structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813',1,'celix_dm_service_dependency_callback_options::add()']]],
+  ['addwithowner_2',['addWithOwner',['../structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6',1,'celix_service_tracking_options']]],
+  ['addwithproperties_3',['addWithProperties',['../structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c',1,'celix_service_tracking_options']]],
+  ['addwithprops_4',['addWithProps',['../structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330',1,'celix_dm_service_dependency_callback_options']]],
+  ['available_5',['available',['../structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66',1,'celix_dm_service_dependency_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_1.html b/static/docs/2.2.1/html/search/all_1.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_1.html
rename to static/docs/2.2.1/html/search/all_1.html
index 8cc6a1d..86b0682
--- a/static/docs/2.2.0/html/search/all_1.html
+++ b/static/docs/2.2.1/html/search/all_1.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_1.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_1.js b/static/docs/2.2.1/html/search/all_1.js
new file mode 100755
index 0000000..c515363
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['bndid_6',['bndId',['../structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb',1,'celix_dm_dependency_manager_info_struct']]],
+  ['bundleid_7',['bundleId',['../structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8',1,'celix_service_tracker_info']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_2.html b/static/docs/2.2.1/html/search/all_2.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_2.html
rename to static/docs/2.2.1/html/search/all_2.html
index d15ac65..ffa7873
--- a/static/docs/2.2.0/html/search/all_2.html
+++ b/static/docs/2.2.1/html/search/all_2.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_2.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_2.js b/static/docs/2.2.1/html/search/all_2.js
new file mode 100755
index 0000000..dcadac9
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_2.js
@@ -0,0 +1,132 @@
+var searchData=
+[
+  ['celix_5fapi_2eh_8',['celix_api.h',['../celix__api_8h.html',1,'']]],
+  ['celix_5fbundle_2eh_9',['celix_bundle.h',['../celix__bundle_8h.html',1,'']]],
+  ['celix_5fbundle_5factivator_2eh_10',['celix_bundle_activator.h',['../celix__bundle__activator_8h.html',1,'']]],
+  ['celix_5fbundle_5fcontext_2eh_11',['celix_bundle_context.h',['../celix__bundle__context_8h.html',1,'']]],
+  ['celix_5fbundle_5fgetentry_12',['celix_bundle_getEntry',['../celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetgroup_13',['celix_bundle_getGroup',['../celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetid_14',['celix_bundle_getId',['../celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetstate_15',['celix_bundle_getState',['../celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetsymbolicname_16',['celix_bundle_getSymbolicName',['../celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5ftracker_5foptions_17',['celix_bundle_tracker_options',['../structcelix__bundle__tracker__options.html',1,'']]],
+  ['celix_5fbundle_5ftracking_5foptions_5ft_18',['celix_bundle_tracking_options_t',['../celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a',1,'celix_bundle_context.h']]],
+  ['celix_5fbundleactivator_5fcreate_19',['celix_bundleActivator_create',['../celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundleactivator_5fdestroy_20',['celix_bundleActivator_destroy',['../celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundleactivator_5fstart_21',['celix_bundleActivator_start',['../celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundleactivator_5fstop_22',['celix_bundleActivator_stop',['../celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundlecontext_5ffindservice_23',['celix_bundleContext_findService',['../celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ffindservices_24',['celix_bundleContext_findServices',['../celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ffindserviceswithoptions_25',['celix_bundleContext_findServicesWithOptions',['../celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ffindservicewithoptions_26',['celix_bundleContext_findServiceWithOptions',['../celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetbundle_27',['celix_bundleContext_getBundle',['../celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetdependencymanager_28',['celix_bundleContext_getDependencyManager',['../celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetproperty_29',['celix_bundleContext_getProperty',['../celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetpropertyasbool_30',['celix_bundleContext_getPropertyAsBool',['../celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetpropertyasdouble_31',['celix_bundleContext_getPropertyAsDouble',['../celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetpropertyaslong_32',['celix_bundleContext_getPropertyAsLong',['../celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5finstallbundle_33',['celix_bundleContext_installBundle',['../celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fisbundleinstalled_34',['celix_bundleContext_isBundleInstalled',['../celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5flistbundles_35',['celix_bundleContext_listBundles',['../celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fregisterservice_36',['celix_bundleContext_registerService',['../celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fregisterservicefactory_37',['celix_bundleContext_registerServiceFactory',['../celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fregisterservicewithoptions_38',['celix_bundleContext_registerServiceWithOptions',['../celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fstartbundle_39',['celix_bundleContext_startBundle',['../celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fstopbundle_40',['celix_bundleContext_stopBundle',['../celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fstoptracker_41',['celix_bundleContext_stopTracker',['../celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackbundles_42',['celix_bundleContext_trackBundles',['../celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackbundleswithoptions_43',['celix_bundleContext_trackBundlesWithOptions',['../celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackservice_44',['celix_bundleContext_trackService',['../celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackservices_45',['celix_bundleContext_trackServices',['../celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackserviceswithoptions_46',['celix_bundleContext_trackServicesWithOptions',['../celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackservicetrackers_47',['celix_bundleContext_trackServiceTrackers',['../celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5funinstallbundle_48',['celix_bundleContext_uninstallBundle',['../celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5funregisterservice_49',['celix_bundleContext_unregisterService',['../celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fusebundle_50',['celix_bundleContext_useBundle',['../celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fusebundles_51',['celix_bundleContext_useBundles',['../celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservice_52',['celix_bundleContext_useService',['../celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservices_53',['celix_bundleContext_useServices',['../celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseserviceswithoptions_54',['celix_bundleContext_useServicesWithOptions',['../celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservicewithid_55',['celix_bundleContext_useServiceWithId',['../celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservicewithoptions_56',['celix_bundleContext_useServiceWithOptions',['../celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055',1,'celix_bundle_context.h']]],
+  ['celix_5fdependency_5fmanager_5finfo_5ft_57',['celix_dependency_manager_info_t',['../celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fcmp_5flifecycle_5ffpt_58',['celix_dm_cmp_lifecycle_fpt',['../celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fcomponent_2eh_59',['celix_dm_component.h',['../celix__dm__component_8h.html',1,'']]],
+  ['celix_5fdm_5fcomponent_5finfo_5fstruct_60',['celix_dm_component_info_struct',['../structcelix__dm__component__info__struct.html',1,'']]],
+  ['celix_5fdm_5fcomponent_5finfo_5ft_61',['celix_dm_component_info_t',['../celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fcomponent_5fmax_5fid_5flength_62',['CELIX_DM_COMPONENT_MAX_ID_LENGTH',['../celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fcomponent_5fmax_5fname_5flength_63',['CELIX_DM_COMPONENT_MAX_NAME_LENGTH',['../celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fcomponent_5fstate_5fenum_64',['celix_dm_component_state_enum',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fcomponent_5fstate_5ft_65',['celix_dm_component_state_t',['../celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fdependency_5fmanager_5finfo_5fstruct_66',['celix_dm_dependency_manager_info_struct',['../structcelix__dm__dependency__manager__info__struct.html',1,'']]],
+  ['celix_5fdm_5finfo_2eh_67',['celix_dm_info.h',['../celix__dm__info_8h.html',1,'']]],
+  ['celix_5fdm_5finterface_5finfo_5fstruct_68',['celix_dm_interface_info_struct',['../structcelix__dm__interface__info__struct.html',1,'']]],
+  ['celix_5fdm_5finterface_5finfo_5ft_69',['celix_dm_interface_info_t',['../celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fservice_5fdependency_2eh_70',['celix_dm_service_dependency.h',['../celix__dm__service__dependency_8h.html',1,'']]],
+  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions_71',['celix_dm_service_dependency_callback_options',['../structcelix__dm__service__dependency__callback__options.html',1,'']]],
+  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions_5ft_72',['celix_dm_service_dependency_callback_options_t',['../celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5finfo_5fstruct_73',['celix_dm_service_dependency_info_struct',['../structcelix__dm__service__dependency__info__struct.html',1,'']]],
+  ['celix_5fdm_5fservice_5fdependency_5finfo_5ft_74',['celix_dm_service_dependency_info_t',['../celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5fenum_75',['celix_dm_service_dependency_strategy_enum',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5ft_76',['celix_dm_service_dependency_strategy_t',['../celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fswap_5ffp_77',['celix_dm_service_swap_fp',['../celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fswap_5fwith_5fprops_5ffp_78',['celix_dm_service_swap_with_props_fp',['../celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fupdate_5ffp_79',['celix_dm_service_update_fp',['../celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fupdate_5fwith_5fprops_5ffp_80',['celix_dm_service_update_with_props_fp',['../celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmcomponent_5faddinterface_81',['celix_dmComponent_addInterface',['../celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5faddservicedependency_82',['celix_dmComponent_addServiceDependency',['../celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fcreate_83',['celix_dmComponent_create',['../celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fcurrentstate_84',['celix_dmComponent_currentState',['../celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fdestroy_85',['celix_dmComponent_destroy',['../celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fdestroycomponentinfo_86',['celix_dmComponent_destroyComponentInfo',['../celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetbundlecontext_87',['celix_dmComponent_getBundleContext',['../celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetcomponentinfo_88',['celix_dmComponent_getComponentInfo',['../celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetimplementation_89',['celix_dmComponent_getImplementation',['../celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetinterfaces_90',['celix_dmComponent_getInterfaces',['../celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetname_91',['celix_dmComponent_getName',['../celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fisactive_92',['celix_dmComponent_isActive',['../celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fremoveinterface_93',['celix_dmComponent_removeInterface',['../celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fremoveservicedependency_94',['celix_dmComponent_removeServiceDependency',['../celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetcallbacks_95',['CELIX_DMCOMPONENT_SETCALLBACKS',['../celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452',1,'CELIX_DMCOMPONENT_SETCALLBACKS():&#160;celix_dm_component.h'],['../celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f',1,'celix_dmComponent_setCallbacks(celix_dm_component_t *component, celix_dm_cmp_lifecycle_fpt init, celix_dm_cmp_lifecycle_fpt start, celix_dm_cmp_lifecycle_fpt stop, celix_dm_cmp_lifecycle_fpt deinit):&#160;celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetclanguageproperty_96',['celix_dmComponent_setCLanguageProperty',['../celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetimplementation_97',['celix_dmComponent_setImplementation',['../celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165',1,'celix_dm_component.h']]],
+  ['celix_5fdmservicedependency_5fcreate_98',['celix_dmServiceDependency_create',['../celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fcreateinfo_99',['celix_dmServiceDependency_createInfo',['../celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fdestroy_100',['celix_dmServiceDependency_destroy',['../celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fdestroyinfo_101',['celix_dmServiceDependency_destroyInfo',['../celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fgetfilter_102',['celix_dmServiceDependency_getFilter',['../celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fgetstrategy_103',['celix_dmServiceDependency_getStrategy',['../celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetaddclanguagefilter_104',['celix_dmServiceDependency_setAddCLanguageFilter',['../celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallback_105',['celix_dmServiceDependency_setCallback',['../celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallbackhandle_106',['celix_dmServiceDependency_setCallbackHandle',['../celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallbackswithoptions_107',['celix_dmServiceDependency_setCallbacksWithOptions',['../celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallbackwithproperties_108',['celix_dmServiceDependency_setCallbackWithProperties',['../celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetrequired_109',['celix_dmServiceDependency_setRequired',['../celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetservice_110',['celix_dmServiceDependency_setService',['../celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetstrategy_111',['celix_dmServiceDependency_setStrategy',['../celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fempty_5fbundle_5ftracking_5foptions_112',['CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fdm_5fservice_5fdependency_5fcallback_5foptions_113',['CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS',['../celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fempty_5fservice_5ffilter_5foptions_114',['CELIX_EMPTY_SERVICE_FILTER_OPTIONS',['../celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fservice_5fregistration_5foptions_115',['CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS',['../celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fservice_5ftracking_5foptions_116',['CELIX_EMPTY_SERVICE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fservice_5fuse_5foptions_117',['CELIX_EMPTY_SERVICE_USE_OPTIONS',['../celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865',1,'celix_bundle_context.h']]],
+  ['celix_5fframework_2eh_118',['celix_framework.h',['../celix__framework_8h.html',1,'']]],
+  ['celix_5fframework_5fgetframeworkbundle_119',['celix_framework_getFrameworkBundle',['../celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18',1,'celix_framework.h']]],
+  ['celix_5fframework_5fgetframeworkcontext_120',['celix_framework_getFrameworkContext',['../celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1',1,'celix_framework.h']]],
+  ['celix_5fframework_5fgetuuid_121',['celix_framework_getUUID',['../celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f',1,'celix_framework.h']]],
+  ['celix_5fframework_5fusebundle_122',['celix_framework_useBundle',['../celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1',1,'celix_framework.h']]],
+  ['celix_5fframework_5fusebundles_123',['celix_framework_useBundles',['../celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab',1,'celix_framework.h']]],
+  ['celix_5fgen_5fbundle_5factivator_124',['CELIX_GEN_BUNDLE_ACTIVATOR',['../celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2',1,'celix_bundle_activator.h']]],
+  ['celix_5fservice_5ffilter_5foptions_125',['celix_service_filter_options',['../structcelix__service__filter__options.html',1,'']]],
+  ['celix_5fservice_5ffilter_5foptions_5ft_126',['celix_service_filter_options_t',['../celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5fregistration_5foptions_127',['celix_service_registration_options',['../structcelix__service__registration__options.html',1,'']]],
+  ['celix_5fservice_5fregistration_5foptions_5ft_128',['celix_service_registration_options_t',['../celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5ftracker_5finfo_129',['celix_service_tracker_info',['../structcelix__service__tracker__info.html',1,'']]],
+  ['celix_5fservice_5ftracker_5finfo_5ft_130',['celix_service_tracker_info_t',['../celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5ftracking_5foptions_131',['celix_service_tracking_options',['../structcelix__service__tracking__options.html',1,'']]],
+  ['celix_5fservice_5ftracking_5foptions_5ft_132',['celix_service_tracking_options_t',['../celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5fuse_5foptions_133',['celix_service_use_options',['../structcelix__service__use__options.html',1,'']]],
+  ['celix_5fservice_5fuse_5foptions_5ft_134',['celix_service_use_options_t',['../celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130',1,'celix_bundle_context.h']]],
+  ['components_135',['components',['../structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b',1,'celix_dm_dependency_manager_info_struct']]],
+  ['count_136',['count',['../structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09',1,'celix_dm_service_dependency_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_3.html b/static/docs/2.2.1/html/search/all_3.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_3.html
rename to static/docs/2.2.1/html/search/all_3.html
index 9f526c6..f9df19b
--- a/static/docs/2.2.0/html/search/all_3.html
+++ b/static/docs/2.2.1/html/search/all_3.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_3.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_3.js b/static/docs/2.2.1/html/search/all_3.js
new file mode 100755
index 0000000..7d921a9
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_3.js
@@ -0,0 +1,18 @@
+var searchData=
+[
+  ['dependency_5flist_137',['dependency_list',['../structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda',1,'celix_dm_component_info_struct']]],
+  ['dm_5fcmp_5fstate_5finactive_138',['DM_CMP_STATE_INACTIVE',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e',1,'celix_dm_component.h']]],
+  ['dm_5fcmp_5fstate_5finstantiated_5fand_5fwaiting_5ffor_5frequired_139',['DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e',1,'celix_dm_component.h']]],
+  ['dm_5fcmp_5fstate_5ftracking_5foptional_140',['DM_CMP_STATE_TRACKING_OPTIONAL',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46',1,'celix_dm_component.h']]],
+  ['dm_5fcmp_5fstate_5fwaiting_5ffor_5frequired_141',['DM_CMP_STATE_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc',1,'celix_dm_component.h']]],
+  ['dm_5fcomponent_5finfo_5fpt_142',['dm_component_info_pt',['../celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a',1,'celix_dm_info.h']]],
+  ['dm_5fcomponent_5finfo_5ft_143',['dm_component_info_t',['../celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7',1,'celix_dm_info.h']]],
+  ['dm_5fdependency_5fmanager_5finfo_5fpt_144',['dm_dependency_manager_info_pt',['../celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738',1,'celix_dm_info.h']]],
+  ['dm_5fdependency_5fmanager_5finfo_5ft_145',['dm_dependency_manager_info_t',['../celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02',1,'celix_dm_info.h']]],
+  ['dm_5finterface_5finfo_5fpt_146',['dm_interface_info_pt',['../celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2',1,'celix_dm_info.h']]],
+  ['dm_5finterface_5finfo_5ft_147',['dm_interface_info_t',['../celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0',1,'celix_dm_info.h']]],
+  ['dm_5fservice_5fdependency_5finfo_5fpt_148',['dm_service_dependency_info_pt',['../celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e',1,'celix_dm_info.h']]],
+  ['dm_5fservice_5fdependency_5finfo_5ft_149',['dm_service_dependency_info_t',['../celix__dm__info_8h.html#a553833e914505261622b13563c8a045e',1,'celix_dm_info.h']]],
+  ['dm_5fservice_5fdependency_5fstrategy_5flocking_150',['DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1',1,'celix_dm_service_dependency.h']]],
+  ['dm_5fservice_5fdependency_5fstrategy_5fsuspend_151',['DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428',1,'celix_dm_service_dependency.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_4.html b/static/docs/2.2.1/html/search/all_4.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_4.html
rename to static/docs/2.2.1/html/search/all_4.html
index 7b814aa..aa2c933
--- a/static/docs/2.2.0/html/search/all_4.html
+++ b/static/docs/2.2.1/html/search/all_4.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_4.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_4.js b/static/docs/2.2.1/html/search/all_4.js
new file mode 100755
index 0000000..b4c605d
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['filter_152',['filter',['../structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4',1,'celix_service_tracker_info::filter()'],['../structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f',1,'celix_dm_service_dependency_info_struct::filter()']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_5.html b/static/docs/2.2.1/html/search/all_5.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_5.html
rename to static/docs/2.2.1/html/search/all_5.html
index d8de556..71848af
--- a/static/docs/2.2.0/html/search/all_5.html
+++ b/static/docs/2.2.1/html/search/all_5.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_5.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_5.js b/static/docs/2.2.1/html/search/all_5.js
new file mode 100755
index 0000000..f316059
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['id_153',['id',['../structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5',1,'celix_dm_component_info_struct']]],
+  ['interfaces_154',['interfaces',['../structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a',1,'celix_dm_component_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_6.html b/static/docs/2.2.1/html/search/all_6.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_6.html
rename to static/docs/2.2.1/html/search/all_6.html
index 9ba0cc2..a24601b
--- a/static/docs/2.2.0/html/search/all_6.html
+++ b/static/docs/2.2.1/html/search/all_6.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_6.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_6.js b/static/docs/2.2.1/html/search/all_6.js
new file mode 100755
index 0000000..1d4970c
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['name_155',['name',['../structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be',1,'celix_dm_interface_info_struct::name()'],['../structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a',1,'celix_dm_component_info_struct::name()']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_7.html b/static/docs/2.2.1/html/search/all_7.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_7.html
rename to static/docs/2.2.1/html/search/all_7.html
index 9384ec9..e42e45b
--- a/static/docs/2.2.0/html/search/all_7.html
+++ b/static/docs/2.2.1/html/search/all_7.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_7.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_7.js b/static/docs/2.2.1/html/search/all_7.js
new file mode 100755
index 0000000..f82fff3
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_7.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['onbundleevent_156',['onBundleEvent',['../structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398',1,'celix_bundle_tracker_options']]],
+  ['onstarted_157',['onStarted',['../structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb',1,'celix_bundle_tracker_options']]],
+  ['onstopped_158',['onStopped',['../structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492',1,'celix_bundle_tracker_options']]],
+  ['opts_5finit_159',['OPTS_INIT',['../structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af',1,'celix_bundle_tracker_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212',1,'celix_bundle_tracker_options::OPTS_INIT()'],['../celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f',1,'OPTS_INIT():&#160;celix_bundle_context.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_8.html b/static/docs/2.2.1/html/search/all_8.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_8.html
rename to static/docs/2.2.1/html/search/all_8.html
index 37566c5..888e619
--- a/static/docs/2.2.0/html/search/all_8.html
+++ b/static/docs/2.2.1/html/search/all_8.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_8.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_8.js b/static/docs/2.2.1/html/search/all_8.js
new file mode 100755
index 0000000..5a14312
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_8.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['properties_160',['properties',['../structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c',1,'celix_dm_interface_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_9.html b/static/docs/2.2.1/html/search/all_9.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_9.html
rename to static/docs/2.2.1/html/search/all_9.html
index c8c5102..dc988f4
--- a/static/docs/2.2.0/html/search/all_9.html
+++ b/static/docs/2.2.1/html/search/all_9.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_9.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_9.js b/static/docs/2.2.1/html/search/all_9.js
new file mode 100755
index 0000000..6cfcdaf
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_9.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['readme_2emd_161',['README.md',['../README_8md.html',1,'']]],
+  ['remove_162',['remove',['../structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882',1,'celix_service_tracking_options::remove()'],['../structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b',1,'celix_dm_service_dependency_callback_options::remove()']]],
+  ['removewithowner_163',['removeWithOwner',['../structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1',1,'celix_service_tracking_options']]],
+  ['removewithproperties_164',['removeWithProperties',['../structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a',1,'celix_service_tracking_options']]],
+  ['removewithprops_165',['removeWithProps',['../structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd',1,'celix_dm_service_dependency_callback_options']]],
+  ['required_166',['required',['../structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705',1,'celix_dm_service_dependency_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_a.html b/static/docs/2.2.1/html/search/all_a.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_a.html
rename to static/docs/2.2.1/html/search/all_a.html
index 4cb31f0..0ce816b
--- a/static/docs/2.2.0/html/search/all_a.html
+++ b/static/docs/2.2.1/html/search/all_a.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_a.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_a.js b/static/docs/2.2.1/html/search/all_a.js
new file mode 100755
index 0000000..872a0c6
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_a.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['servicelanguage_167',['serviceLanguage',['../structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65',1,'celix_service_tracker_info']]],
+  ['servicename_168',['serviceName',['../structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546',1,'celix_service_tracker_info']]],
+  ['set_169',['set',['../structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da',1,'celix_service_tracking_options::set()'],['../structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b',1,'celix_dm_service_dependency_callback_options::set()']]],
+  ['setwithowner_170',['setWithOwner',['../structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59',1,'celix_service_tracking_options']]],
+  ['setwithproperties_171',['setWithProperties',['../structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172',1,'celix_service_tracking_options']]],
+  ['setwithprops_172',['setWithProps',['../structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9',1,'celix_dm_service_dependency_callback_options']]],
+  ['state_173',['state',['../structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163',1,'celix_dm_component_info_struct']]],
+  ['swap_174',['swap',['../structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48',1,'celix_dm_service_dependency_callback_options']]],
+  ['swapwithprops_175',['swapWithProps',['../structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d',1,'celix_dm_service_dependency_callback_options']]]
+];
diff --git a/static/docs/2.2.0/html/search/all_b.html b/static/docs/2.2.1/html/search/all_b.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/all_b.html
rename to static/docs/2.2.1/html/search/all_b.html
index d34a612..28c2413
--- a/static/docs/2.2.0/html/search/all_b.html
+++ b/static/docs/2.2.1/html/search/all_b.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="all_b.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/all_b.js b/static/docs/2.2.1/html/search/all_b.js
new file mode 100755
index 0000000..44c8fb5
--- /dev/null
+++ b/static/docs/2.2.1/html/search/all_b.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['use_176',['use',['../structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7',1,'celix_service_use_options']]],
+  ['usewithowner_177',['useWithOwner',['../structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5',1,'celix_service_use_options']]],
+  ['usewithproperties_178',['useWithProperties',['../structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867',1,'celix_service_use_options']]]
+];
diff --git a/static/docs/2.2.0/html/search/classes_0.html b/static/docs/2.2.1/html/search/classes_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/classes_0.html
rename to static/docs/2.2.1/html/search/classes_0.html
index 025587a..5b441a3
--- a/static/docs/2.2.0/html/search/classes_0.html
+++ b/static/docs/2.2.1/html/search/classes_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="classes_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/classes_0.js b/static/docs/2.2.1/html/search/classes_0.js
new file mode 100755
index 0000000..e470c55
--- /dev/null
+++ b/static/docs/2.2.1/html/search/classes_0.js
@@ -0,0 +1,14 @@
+var searchData=
+[
+  ['celix_5fbundle_5ftracker_5foptions_179',['celix_bundle_tracker_options',['../structcelix__bundle__tracker__options.html',1,'']]],
+  ['celix_5fdm_5fcomponent_5finfo_5fstruct_180',['celix_dm_component_info_struct',['../structcelix__dm__component__info__struct.html',1,'']]],
+  ['celix_5fdm_5fdependency_5fmanager_5finfo_5fstruct_181',['celix_dm_dependency_manager_info_struct',['../structcelix__dm__dependency__manager__info__struct.html',1,'']]],
+  ['celix_5fdm_5finterface_5finfo_5fstruct_182',['celix_dm_interface_info_struct',['../structcelix__dm__interface__info__struct.html',1,'']]],
+  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions_183',['celix_dm_service_dependency_callback_options',['../structcelix__dm__service__dependency__callback__options.html',1,'']]],
+  ['celix_5fdm_5fservice_5fdependency_5finfo_5fstruct_184',['celix_dm_service_dependency_info_struct',['../structcelix__dm__service__dependency__info__struct.html',1,'']]],
+  ['celix_5fservice_5ffilter_5foptions_185',['celix_service_filter_options',['../structcelix__service__filter__options.html',1,'']]],
+  ['celix_5fservice_5fregistration_5foptions_186',['celix_service_registration_options',['../structcelix__service__registration__options.html',1,'']]],
+  ['celix_5fservice_5ftracker_5finfo_187',['celix_service_tracker_info',['../structcelix__service__tracker__info.html',1,'']]],
+  ['celix_5fservice_5ftracking_5foptions_188',['celix_service_tracking_options',['../structcelix__service__tracking__options.html',1,'']]],
+  ['celix_5fservice_5fuse_5foptions_189',['celix_service_use_options',['../structcelix__service__use__options.html',1,'']]]
+];
diff --git a/static/docs/2.2.0/html/search/close.png b/static/docs/2.2.1/html/search/close.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/search/close.png
rename to static/docs/2.2.1/html/search/close.png
Binary files differ
diff --git a/static/docs/2.2.0/html/search/defines_0.html b/static/docs/2.2.1/html/search/defines_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/defines_0.html
rename to static/docs/2.2.1/html/search/defines_0.html
index 17cfaa2..54b9bc5
--- a/static/docs/2.2.0/html/search/defines_0.html
+++ b/static/docs/2.2.1/html/search/defines_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="defines_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/defines_0.js b/static/docs/2.2.1/html/search/defines_0.js
new file mode 100755
index 0000000..fbd3697
--- /dev/null
+++ b/static/docs/2.2.1/html/search/defines_0.js
@@ -0,0 +1,13 @@
+var searchData=
+[
+  ['celix_5fdm_5fcomponent_5fmax_5fid_5flength_349',['CELIX_DM_COMPONENT_MAX_ID_LENGTH',['../celix__dm__component_8h.html#aa19dcff16825fa2e91656ff136d877cf',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fcomponent_5fmax_5fname_5flength_350',['CELIX_DM_COMPONENT_MAX_NAME_LENGTH',['../celix__dm__component_8h.html#af8861849eb5e4057def1bb12a5111d00',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetcallbacks_351',['CELIX_DMCOMPONENT_SETCALLBACKS',['../celix__dm__component_8h.html#aad1f80b04be28b8e7bf495113c2fe452',1,'celix_dm_component.h']]],
+  ['celix_5fempty_5fbundle_5ftracking_5foptions_352',['CELIX_EMPTY_BUNDLE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#a3c68ea824e7268d26852785ea92c777c',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fdm_5fservice_5fdependency_5fcallback_5foptions_353',['CELIX_EMPTY_DM_SERVICE_DEPENDENCY_CALLBACK_OPTIONS',['../celix__dm__service__dependency_8h.html#a1b153c6b38f75362450aad5b3ad729f7',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fempty_5fservice_5ffilter_5foptions_354',['CELIX_EMPTY_SERVICE_FILTER_OPTIONS',['../celix__bundle__context_8h.html#a7199f710ea1c193d361e8c151a92bc6a',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fservice_5fregistration_5foptions_355',['CELIX_EMPTY_SERVICE_REGISTRATION_OPTIONS',['../celix__bundle__context_8h.html#a6020a7ba8712efd0847fdf28e74eb69c',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fservice_5ftracking_5foptions_356',['CELIX_EMPTY_SERVICE_TRACKING_OPTIONS',['../celix__bundle__context_8h.html#ae86a28f8d19f6c1e2951172335e0e909',1,'celix_bundle_context.h']]],
+  ['celix_5fempty_5fservice_5fuse_5foptions_357',['CELIX_EMPTY_SERVICE_USE_OPTIONS',['../celix__bundle__context_8h.html#a6024cf4864950551fa9df01806a69865',1,'celix_bundle_context.h']]],
+  ['celix_5fgen_5fbundle_5factivator_358',['CELIX_GEN_BUNDLE_ACTIVATOR',['../celix__bundle__activator_8h.html#a47b446e557ecaff78dafa19ba3e340c2',1,'celix_bundle_activator.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/defines_1.html b/static/docs/2.2.1/html/search/defines_1.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/defines_1.html
rename to static/docs/2.2.1/html/search/defines_1.html
index 5c0025e..024d8be
--- a/static/docs/2.2.0/html/search/defines_1.html
+++ b/static/docs/2.2.1/html/search/defines_1.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="defines_1.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/defines_1.js b/static/docs/2.2.1/html/search/defines_1.js
new file mode 100755
index 0000000..a6f45e1
--- /dev/null
+++ b/static/docs/2.2.1/html/search/defines_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['opts_5finit_359',['OPTS_INIT',['../celix__bundle__context_8h.html#a8ebbfbe80221fe8adc8c3afbdceb570f',1,'celix_bundle_context.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/enums_0.html b/static/docs/2.2.1/html/search/enums_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/enums_0.html
rename to static/docs/2.2.1/html/search/enums_0.html
index aba8d79..e99c489
--- a/static/docs/2.2.0/html/search/enums_0.html
+++ b/static/docs/2.2.1/html/search/enums_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="enums_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/enums_0.js b/static/docs/2.2.1/html/search/enums_0.js
new file mode 100755
index 0000000..10f7513
--- /dev/null
+++ b/static/docs/2.2.1/html/search/enums_0.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['celix_5fdm_5fcomponent_5fstate_5fenum_341',['celix_dm_component_state_enum',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5fenum_342',['celix_dm_service_dependency_strategy_enum',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88c',1,'celix_dm_service_dependency.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/enumvalues_0.html b/static/docs/2.2.1/html/search/enumvalues_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/enumvalues_0.html
rename to static/docs/2.2.1/html/search/enumvalues_0.html
index 83192d3..f740569
--- a/static/docs/2.2.0/html/search/enumvalues_0.html
+++ b/static/docs/2.2.1/html/search/enumvalues_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="enumvalues_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/enumvalues_0.js b/static/docs/2.2.1/html/search/enumvalues_0.js
new file mode 100755
index 0000000..b30a32f
--- /dev/null
+++ b/static/docs/2.2.1/html/search/enumvalues_0.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['dm_5fcmp_5fstate_5finactive_343',['DM_CMP_STATE_INACTIVE',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4aedd3ab4f7703955241fecb14df3fb59e',1,'celix_dm_component.h']]],
+  ['dm_5fcmp_5fstate_5finstantiated_5fand_5fwaiting_5ffor_5frequired_344',['DM_CMP_STATE_INSTANTIATED_AND_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4ad948b8a0aa722ce528335632176dac3e',1,'celix_dm_component.h']]],
+  ['dm_5fcmp_5fstate_5ftracking_5foptional_345',['DM_CMP_STATE_TRACKING_OPTIONAL',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a582ed79692df8863f9ae6b5663cf1a46',1,'celix_dm_component.h']]],
+  ['dm_5fcmp_5fstate_5fwaiting_5ffor_5frequired_346',['DM_CMP_STATE_WAITING_FOR_REQUIRED',['../celix__dm__component_8h.html#ab8b6c8d35fe5b976b8f58a6816e6c4e4a76d77f632cc37534055bb227446f5ffc',1,'celix_dm_component.h']]],
+  ['dm_5fservice_5fdependency_5fstrategy_5flocking_347',['DM_SERVICE_DEPENDENCY_STRATEGY_LOCKING',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88ca6c94c0c92189ea864b218b45d2526db1',1,'celix_dm_service_dependency.h']]],
+  ['dm_5fservice_5fdependency_5fstrategy_5fsuspend_348',['DM_SERVICE_DEPENDENCY_STRATEGY_SUSPEND',['../celix__dm__service__dependency_8h.html#a80a698d57b244ab54ffad631a41ae88caf4c6748a0a1d0e04997c11847c737428',1,'celix_dm_service_dependency.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/files_0.html b/static/docs/2.2.1/html/search/files_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/files_0.html
rename to static/docs/2.2.1/html/search/files_0.html
index 0b637cf..182d7eb
--- a/static/docs/2.2.0/html/search/files_0.html
+++ b/static/docs/2.2.1/html/search/files_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="files_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/files_0.js b/static/docs/2.2.1/html/search/files_0.js
new file mode 100755
index 0000000..034d17a
--- /dev/null
+++ b/static/docs/2.2.1/html/search/files_0.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+  ['celix_5fapi_2eh_190',['celix_api.h',['../celix__api_8h.html',1,'']]],
+  ['celix_5fbundle_2eh_191',['celix_bundle.h',['../celix__bundle_8h.html',1,'']]],
+  ['celix_5fbundle_5factivator_2eh_192',['celix_bundle_activator.h',['../celix__bundle__activator_8h.html',1,'']]],
+  ['celix_5fbundle_5fcontext_2eh_193',['celix_bundle_context.h',['../celix__bundle__context_8h.html',1,'']]],
+  ['celix_5fdm_5fcomponent_2eh_194',['celix_dm_component.h',['../celix__dm__component_8h.html',1,'']]],
+  ['celix_5fdm_5finfo_2eh_195',['celix_dm_info.h',['../celix__dm__info_8h.html',1,'']]],
+  ['celix_5fdm_5fservice_5fdependency_2eh_196',['celix_dm_service_dependency.h',['../celix__dm__service__dependency_8h.html',1,'']]],
+  ['celix_5fframework_2eh_197',['celix_framework.h',['../celix__framework_8h.html',1,'']]]
+];
diff --git a/static/docs/2.2.0/html/search/files_1.html b/static/docs/2.2.1/html/search/files_1.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/files_1.html
rename to static/docs/2.2.1/html/search/files_1.html
index 1094e74..9448113
--- a/static/docs/2.2.0/html/search/files_1.html
+++ b/static/docs/2.2.1/html/search/files_1.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="files_1.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/files_1.js b/static/docs/2.2.1/html/search/files_1.js
new file mode 100755
index 0000000..454773b
--- /dev/null
+++ b/static/docs/2.2.1/html/search/files_1.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['readme_2emd_198',['README.md',['../README_8md.html',1,'']]]
+];
diff --git a/static/docs/2.2.0/html/search/functions_0.html b/static/docs/2.2.1/html/search/functions_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/functions_0.html
rename to static/docs/2.2.1/html/search/functions_0.html
index 6bc52b6..4fcbb9c
--- a/static/docs/2.2.0/html/search/functions_0.html
+++ b/static/docs/2.2.1/html/search/functions_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="functions_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/functions_0.js b/static/docs/2.2.1/html/search/functions_0.js
new file mode 100755
index 0000000..e9f96b1
--- /dev/null
+++ b/static/docs/2.2.1/html/search/functions_0.js
@@ -0,0 +1,82 @@
+var searchData=
+[
+  ['celix_5fbundle_5fgetentry_199',['celix_bundle_getEntry',['../celix__bundle_8h.html#a5cbe24596271fc91c79c8f42c8b92bc5',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetgroup_200',['celix_bundle_getGroup',['../celix__bundle_8h.html#a5abd44b1259599d08f2312760fb32170',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetid_201',['celix_bundle_getId',['../celix__bundle_8h.html#a8a9b02c9438f05099ff2bde9fea8c3cd',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetstate_202',['celix_bundle_getState',['../celix__bundle_8h.html#a7106fcc7b06c0506dd7e1678ba024a35',1,'celix_bundle.h']]],
+  ['celix_5fbundle_5fgetsymbolicname_203',['celix_bundle_getSymbolicName',['../celix__bundle_8h.html#a391c2aa2fdf3c8d0c65fc07a07bb7545',1,'celix_bundle.h']]],
+  ['celix_5fbundleactivator_5fcreate_204',['celix_bundleActivator_create',['../celix__bundle__activator_8h.html#a57025ac322aecc8acfac832748c780e6',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundleactivator_5fdestroy_205',['celix_bundleActivator_destroy',['../celix__bundle__activator_8h.html#a8d7cd41a721060d28c6ce8d94f9f0ca9',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundleactivator_5fstart_206',['celix_bundleActivator_start',['../celix__bundle__activator_8h.html#a8ac12a9b8d321ee1c1feee5bf047b666',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundleactivator_5fstop_207',['celix_bundleActivator_stop',['../celix__bundle__activator_8h.html#ae650439680848e3e3f7fc71b9e4dd213',1,'celix_bundle_activator.h']]],
+  ['celix_5fbundlecontext_5ffindservice_208',['celix_bundleContext_findService',['../celix__bundle__context_8h.html#ac8322b5aa4adf9dcd8c288ce72a05414',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ffindservices_209',['celix_bundleContext_findServices',['../celix__bundle__context_8h.html#a96a901f0597f9d2accf073153d90344c',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ffindserviceswithoptions_210',['celix_bundleContext_findServicesWithOptions',['../celix__bundle__context_8h.html#a41c34f8165addcbd0d65b4a0c23345d0',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ffindservicewithoptions_211',['celix_bundleContext_findServiceWithOptions',['../celix__bundle__context_8h.html#a8cfbbb7e17cb4a825a525c547f72b4b0',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetbundle_212',['celix_bundleContext_getBundle',['../celix__bundle__context_8h.html#a3f7f55d1587f421f27518574a525ff63',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetdependencymanager_213',['celix_bundleContext_getDependencyManager',['../celix__bundle__context_8h.html#ac36566dcc477bb2c123e5124527090c1',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetproperty_214',['celix_bundleContext_getProperty',['../celix__bundle__context_8h.html#aa121100c5f5d03c0ccdda9c87286f7db',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetpropertyasbool_215',['celix_bundleContext_getPropertyAsBool',['../celix__bundle__context_8h.html#a41e6642ba1a739b5768911fa41e5d170',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetpropertyasdouble_216',['celix_bundleContext_getPropertyAsDouble',['../celix__bundle__context_8h.html#a92be7dd7985a890c4b92bcb8497e8b9f',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fgetpropertyaslong_217',['celix_bundleContext_getPropertyAsLong',['../celix__bundle__context_8h.html#a0ea27b2a81018583a464a10932cfae62',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5finstallbundle_218',['celix_bundleContext_installBundle',['../celix__bundle__context_8h.html#a727ee2600c19ce2fd42b3b80b695c7f6',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fisbundleinstalled_219',['celix_bundleContext_isBundleInstalled',['../celix__bundle__context_8h.html#ac7151f08ded1d7571867a44abe9f3531',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5flistbundles_220',['celix_bundleContext_listBundles',['../celix__bundle__context_8h.html#afde9ed40231b5c3bbba19559e68e77f6',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fregisterservice_221',['celix_bundleContext_registerService',['../celix__bundle__context_8h.html#a5bc54fd14871cc88ed887c8cea8f7b78',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fregisterservicefactory_222',['celix_bundleContext_registerServiceFactory',['../celix__bundle__context_8h.html#a3caa917285feaad580b61d4c0c8430a9',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fregisterservicewithoptions_223',['celix_bundleContext_registerServiceWithOptions',['../celix__bundle__context_8h.html#abcde0edf5b4969bdd67831cff3db0a43',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fstartbundle_224',['celix_bundleContext_startBundle',['../celix__bundle__context_8h.html#a8df4bfbc27c99736c0209ef130cff98f',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fstopbundle_225',['celix_bundleContext_stopBundle',['../celix__bundle__context_8h.html#ad6e1553f9507d04c7a0ad91d067d479b',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fstoptracker_226',['celix_bundleContext_stopTracker',['../celix__bundle__context_8h.html#a3b4906a9e6fb34fe3ca5118539a81fc7',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackbundles_227',['celix_bundleContext_trackBundles',['../celix__bundle__context_8h.html#a3daf88ae43bb01e104f506c3a2dc8351',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackbundleswithoptions_228',['celix_bundleContext_trackBundlesWithOptions',['../celix__bundle__context_8h.html#aa603acb136351b4135ce6a8c0b1fda71',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackservice_229',['celix_bundleContext_trackService',['../celix__bundle__context_8h.html#a612409acf5453dbc370d93b784153d51',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackservices_230',['celix_bundleContext_trackServices',['../celix__bundle__context_8h.html#a43e3bfd38ef956ffe861065e698a72e4',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackserviceswithoptions_231',['celix_bundleContext_trackServicesWithOptions',['../celix__bundle__context_8h.html#a27980e1631d4575cc45c6c6ba38c6f71',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5ftrackservicetrackers_232',['celix_bundleContext_trackServiceTrackers',['../celix__bundle__context_8h.html#a80f61dd38b9da8447cd4f931779eaf16',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5funinstallbundle_233',['celix_bundleContext_uninstallBundle',['../celix__bundle__context_8h.html#a098adf1e9f65deb166110008bd4314dd',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5funregisterservice_234',['celix_bundleContext_unregisterService',['../celix__bundle__context_8h.html#a1ebd82cb3d61aab769956d856293b9b9',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fusebundle_235',['celix_bundleContext_useBundle',['../celix__bundle__context_8h.html#abb3cedf5ffa7a326cef2af64a1094635',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fusebundles_236',['celix_bundleContext_useBundles',['../celix__bundle__context_8h.html#a03a6d1c49c91c212ad7be115e1035840',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservice_237',['celix_bundleContext_useService',['../celix__bundle__context_8h.html#ac36cdb8a06bb34f9371d7bb32953c69e',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservices_238',['celix_bundleContext_useServices',['../celix__bundle__context_8h.html#a39270507a3766afbfcc9420c7270d262',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseserviceswithoptions_239',['celix_bundleContext_useServicesWithOptions',['../celix__bundle__context_8h.html#ad1512520baedecad54a7bc307e0a6c7b',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservicewithid_240',['celix_bundleContext_useServiceWithId',['../celix__bundle__context_8h.html#aec6e03faece0f8247de19d8c1527406d',1,'celix_bundle_context.h']]],
+  ['celix_5fbundlecontext_5fuseservicewithoptions_241',['celix_bundleContext_useServiceWithOptions',['../celix__bundle__context_8h.html#a1e8a78de5f799d303231385b51085055',1,'celix_bundle_context.h']]],
+  ['celix_5fdmcomponent_5faddinterface_242',['celix_dmComponent_addInterface',['../celix__dm__component_8h.html#aafd2f2eff931784f70eb2a37e943446a',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5faddservicedependency_243',['celix_dmComponent_addServiceDependency',['../celix__dm__component_8h.html#ad7d4a85042adba432bd8d398d9c106b8',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fcreate_244',['celix_dmComponent_create',['../celix__dm__component_8h.html#adf75af7d75d2c1f7e53d78f23f97d40c',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fcurrentstate_245',['celix_dmComponent_currentState',['../celix__dm__component_8h.html#af98630b8f8980c906d5aefc5f8a82c99',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fdestroy_246',['celix_dmComponent_destroy',['../celix__dm__component_8h.html#a56a8c5019a43eb96d62fd9e98cb56ba8',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fdestroycomponentinfo_247',['celix_dmComponent_destroyComponentInfo',['../celix__dm__component_8h.html#af62df6623e978a1cc62b3ca8ab5863c3',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetbundlecontext_248',['celix_dmComponent_getBundleContext',['../celix__dm__component_8h.html#a99be995e9e94514fc4f6782dd48456ba',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetcomponentinfo_249',['celix_dmComponent_getComponentInfo',['../celix__dm__component_8h.html#a3345d3bfa11070069d745131668d02ae',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetimplementation_250',['celix_dmComponent_getImplementation',['../celix__dm__component_8h.html#a5647f75ea3a3c3755940ee42f51320a8',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetinterfaces_251',['celix_dmComponent_getInterfaces',['../celix__dm__component_8h.html#ae0312e00f51f85d8e48b18020964e21f',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fgetname_252',['celix_dmComponent_getName',['../celix__dm__component_8h.html#a30de51befa422dc65ac89ae3d9b8319f',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fisactive_253',['celix_dmComponent_isActive',['../celix__dm__component_8h.html#a7bbf1a0da294be7ba9ae8272f1b938d7',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fremoveinterface_254',['celix_dmComponent_removeInterface',['../celix__dm__component_8h.html#a3e4a6e8e87cc8d3b3655eaaa06ad261e',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fremoveservicedependency_255',['celix_dmComponent_removeServiceDependency',['../celix__dm__component_8h.html#a0ce2c610cbe3a329ea6561eb5cda0d8d',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetcallbacks_256',['celix_dmComponent_setCallbacks',['../celix__dm__component_8h.html#a017e996f6b1db5e902bf3a9cc043634f',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetclanguageproperty_257',['celix_dmComponent_setCLanguageProperty',['../celix__dm__component_8h.html#ab8bd7a13007bda2619c1764886eabeab',1,'celix_dm_component.h']]],
+  ['celix_5fdmcomponent_5fsetimplementation_258',['celix_dmComponent_setImplementation',['../celix__dm__component_8h.html#a45a01df6ed75d8530563d52f58a0b165',1,'celix_dm_component.h']]],
+  ['celix_5fdmservicedependency_5fcreate_259',['celix_dmServiceDependency_create',['../celix__dm__service__dependency_8h.html#a588b147bec75a501fac3b35076fc98a3',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fcreateinfo_260',['celix_dmServiceDependency_createInfo',['../celix__dm__service__dependency_8h.html#a0b84d9164563664da40491151f7d7131',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fdestroy_261',['celix_dmServiceDependency_destroy',['../celix__dm__service__dependency_8h.html#ac282334d66c3cfc4fda1b67245172979',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fdestroyinfo_262',['celix_dmServiceDependency_destroyInfo',['../celix__dm__service__dependency_8h.html#acb96da27c0087a05d885b0f55756de8a',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fgetfilter_263',['celix_dmServiceDependency_getFilter',['../celix__dm__service__dependency_8h.html#a487a41d56ea2bf1aa51cd7f7e83ff844',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fgetstrategy_264',['celix_dmServiceDependency_getStrategy',['../celix__dm__service__dependency_8h.html#a8365396c6363ad98b66725243f97f8ea',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetaddclanguagefilter_265',['celix_dmServiceDependency_setAddCLanguageFilter',['../celix__dm__service__dependency_8h.html#a9aec79471c46aecc7412523fe839e549',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallback_266',['celix_dmServiceDependency_setCallback',['../celix__dm__service__dependency_8h.html#a1a731a456c8e617acfa4d81a6357959c',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallbackhandle_267',['celix_dmServiceDependency_setCallbackHandle',['../celix__dm__service__dependency_8h.html#aebe0669933d37f9fd1c3fdc873127d78',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallbackswithoptions_268',['celix_dmServiceDependency_setCallbacksWithOptions',['../celix__dm__service__dependency_8h.html#a31898ef1ad5f9695dc85a24202020ebe',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetcallbackwithproperties_269',['celix_dmServiceDependency_setCallbackWithProperties',['../celix__dm__service__dependency_8h.html#a9bdfec7b27301bd71dd4f45fcdd11568',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetrequired_270',['celix_dmServiceDependency_setRequired',['../celix__dm__service__dependency_8h.html#a0c33bcf502f8683bce3cf382c4bdc76a',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetservice_271',['celix_dmServiceDependency_setService',['../celix__dm__service__dependency_8h.html#a2602a6526ef6cde42d606c9ed958cec7',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdmservicedependency_5fsetstrategy_272',['celix_dmServiceDependency_setStrategy',['../celix__dm__service__dependency_8h.html#a9d833904b765bee7073ec41828ea7d2e',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fframework_5fgetframeworkbundle_273',['celix_framework_getFrameworkBundle',['../celix__framework_8h.html#ae980ec9c8f83f8a3e65dc7da9d794f18',1,'celix_framework.h']]],
+  ['celix_5fframework_5fgetframeworkcontext_274',['celix_framework_getFrameworkContext',['../celix__framework_8h.html#aa2e913753f841b3b0b22c196b39d03b1',1,'celix_framework.h']]],
+  ['celix_5fframework_5fgetuuid_275',['celix_framework_getUUID',['../celix__framework_8h.html#a671ba53e13abea3d4eb328a66b62802f',1,'celix_framework.h']]],
+  ['celix_5fframework_5fusebundle_276',['celix_framework_useBundle',['../celix__framework_8h.html#ab158bb807ea2171c5d20076cb457c8d1',1,'celix_framework.h']]],
+  ['celix_5fframework_5fusebundles_277',['celix_framework_useBundles',['../celix__framework_8h.html#a192ba45dd2a7175fd4d19c70da59f9ab',1,'celix_framework.h']]]
+];
diff --git a/static/docs/2.2.1/html/search/mag_sel.png b/static/docs/2.2.1/html/search/mag_sel.png
new file mode 100755
index 0000000..39c0ed5
--- /dev/null
+++ b/static/docs/2.2.1/html/search/mag_sel.png
Binary files differ
diff --git a/static/docs/2.2.0/html/search/nomatches.html b/static/docs/2.2.1/html/search/nomatches.html
old mode 100644
new mode 100755
similarity index 87%
rename from static/docs/2.2.0/html/search/nomatches.html
rename to static/docs/2.2.1/html/search/nomatches.html
index b1ded27..4377320
--- a/static/docs/2.2.0/html/search/nomatches.html
+++ b/static/docs/2.2.1/html/search/nomatches.html
@@ -1,4 +1,4 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
diff --git a/static/docs/2.2.0/html/search/search.css b/static/docs/2.2.1/html/search/search.css
old mode 100644
new mode 100755
similarity index 97%
rename from static/docs/2.2.0/html/search/search.css
rename to static/docs/2.2.1/html/search/search.css
index 4d7612f..3cf9df9
--- a/static/docs/2.2.0/html/search/search.css
+++ b/static/docs/2.2.1/html/search/search.css
@@ -6,14 +6,12 @@
 
 #MSearchBox {
     white-space : nowrap;
-    position: absolute;
     float: none;
-    display: inline;
     margin-top: 8px;
     right: 0px;
     width: 170px;
+    height: 24px;
     z-index: 102;
-    background-color: white;
 }
 
 #MSearchBox .left
@@ -48,12 +46,13 @@
     height:19px;
     background:url('search_m.png') repeat-x;
     border:none;
-    width:111px;
+    width:115px;
     margin-left:20px;
     padding-left:4px;
     color: #909090;
     outline: none;
     font: 9pt Arial, Verdana, sans-serif;
+    -webkit-border-radius: 0px;
 }
 
 #FSearchBox #MSearchField {
@@ -64,7 +63,7 @@
     display:block;
     position:absolute;
     right:10px;
-    top:0px;
+    top:8px;
     width:20px;
     height:19px;
     background:url('search_r.png') no-repeat;
@@ -102,7 +101,7 @@
     left: 0; top: 0;
     border: 1px solid #90A5CE;
     background-color: #F9FAFC;
-    z-index: 1;
+    z-index: 10001;
     padding-top: 4px;
     padding-bottom: 4px;
     -moz-border-radius: 4px;
@@ -165,6 +164,7 @@
     left: 0; top: 0;
     border: 1px solid #000;
     background-color: #EEF1F7;
+    z-index:10000;
 }
 
 /* ----------------------------------- */
diff --git a/static/docs/2.2.0/html/search/search.js b/static/docs/2.2.1/html/search/search.js
old mode 100644
new mode 100755
similarity index 93%
rename from static/docs/2.2.0/html/search/search.js
rename to static/docs/2.2.1/html/search/search.js
index dedce3b..ff2b8c8
--- a/static/docs/2.2.0/html/search/search.js
+++ b/static/docs/2.2.1/html/search/search.js
@@ -1,3 +1,27 @@
+/*
+ @licstart  The following is the entire license notice for the JavaScript code in this file.
+
+ The MIT License (MIT)
+
+ Copyright (C) 1997-2020 by Dimitri van Heesch
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
+ and associated documentation files (the "Software"), to deal in the Software without restriction,
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in all copies or
+ substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ @licend  The above is the entire license notice for the JavaScript code in this file
+ */
 function convertToId(search)
 {
   var result = '';
@@ -177,10 +201,9 @@
         }
         return;
       }
-      else if (window.frames.MSearchResults.searchResults)
+      else
       {
-        var elem = window.frames.MSearchResults.searchResults.NavNext(0);
-        if (elem) elem.focus();
+        window.frames.MSearchResults.postMessage("take_focus", "*");
       }
     }
     else if (e.keyCode==27) // Escape out of the search field
@@ -788,4 +811,4 @@
   }
   searchBox.OnSelectItem(0);
 }
-
+/* @license-end */
diff --git a/static/docs/2.2.1/html/search/search_l.png b/static/docs/2.2.1/html/search/search_l.png
new file mode 100755
index 0000000..fd5f7da
--- /dev/null
+++ b/static/docs/2.2.1/html/search/search_l.png
Binary files differ
diff --git a/static/docs/2.2.0/html/search/search_m.png b/static/docs/2.2.1/html/search/search_m.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/search/search_m.png
rename to static/docs/2.2.1/html/search/search_m.png
Binary files differ
diff --git a/static/docs/2.2.1/html/search/search_r.png b/static/docs/2.2.1/html/search/search_r.png
new file mode 100755
index 0000000..1af5d21
--- /dev/null
+++ b/static/docs/2.2.1/html/search/search_r.png
Binary files differ
diff --git a/static/docs/2.2.0/html/search/searchdata.js b/static/docs/2.2.1/html/search/searchdata.js
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/search/searchdata.js
rename to static/docs/2.2.1/html/search/searchdata.js
diff --git a/static/docs/2.2.0/html/search/typedefs_0.html b/static/docs/2.2.1/html/search/typedefs_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/typedefs_0.html
rename to static/docs/2.2.1/html/search/typedefs_0.html
index fb07195..43353ee
--- a/static/docs/2.2.0/html/search/typedefs_0.html
+++ b/static/docs/2.2.1/html/search/typedefs_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="typedefs_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/typedefs_0.js b/static/docs/2.2.1/html/search/typedefs_0.js
new file mode 100755
index 0000000..6b06edc
--- /dev/null
+++ b/static/docs/2.2.1/html/search/typedefs_0.js
@@ -0,0 +1,21 @@
+var searchData=
+[
+  ['celix_5fbundle_5ftracking_5foptions_5ft_315',['celix_bundle_tracking_options_t',['../celix__bundle__context_8h.html#a1b011b5fe49a718345698eeb359d0c3a',1,'celix_bundle_context.h']]],
+  ['celix_5fdependency_5fmanager_5finfo_5ft_316',['celix_dependency_manager_info_t',['../celix__dm__info_8h.html#af06092e6852ba40f4241b4e539265e64',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fcmp_5flifecycle_5ffpt_317',['celix_dm_cmp_lifecycle_fpt',['../celix__dm__component_8h.html#a9c73a72049f39d42d66b6d9c60d185dc',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5fcomponent_5finfo_5ft_318',['celix_dm_component_info_t',['../celix__dm__info_8h.html#a57ffe4e9f51e746fdf4ae50151150b16',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fcomponent_5fstate_5ft_319',['celix_dm_component_state_t',['../celix__dm__component_8h.html#afd49054c559adbeb9627fa3d45d6c02a',1,'celix_dm_component.h']]],
+  ['celix_5fdm_5finterface_5finfo_5ft_320',['celix_dm_interface_info_t',['../celix__dm__info_8h.html#a635d8bc54edda5e7e70f7b27943196b6',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5fcallback_5foptions_5ft_321',['celix_dm_service_dependency_callback_options_t',['../celix__dm__service__dependency_8h.html#ace7f03a4e7746a8ca8218afd172752f8',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5finfo_5ft_322',['celix_dm_service_dependency_info_t',['../celix__dm__info_8h.html#a7fd4e90372051b1549c588095fb24fd4',1,'celix_dm_info.h']]],
+  ['celix_5fdm_5fservice_5fdependency_5fstrategy_5ft_323',['celix_dm_service_dependency_strategy_t',['../celix__dm__service__dependency_8h.html#a00447f0e837918fcf6e39698ef375f46',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fswap_5ffp_324',['celix_dm_service_swap_fp',['../celix__dm__service__dependency_8h.html#a8a77266cc94a0f019b29d75a8e54995d',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fswap_5fwith_5fprops_5ffp_325',['celix_dm_service_swap_with_props_fp',['../celix__dm__service__dependency_8h.html#a6b4b49e1cbd6865c5dc14e94086f629f',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fupdate_5ffp_326',['celix_dm_service_update_fp',['../celix__dm__service__dependency_8h.html#a3aab7f5d65c74eb819047e5ec1f4c05f',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fdm_5fservice_5fupdate_5fwith_5fprops_5ffp_327',['celix_dm_service_update_with_props_fp',['../celix__dm__service__dependency_8h.html#afb8ee50fcfc77f274578d85a70bb2b94',1,'celix_dm_service_dependency.h']]],
+  ['celix_5fservice_5ffilter_5foptions_5ft_328',['celix_service_filter_options_t',['../celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5fregistration_5foptions_5ft_329',['celix_service_registration_options_t',['../celix__bundle__context_8h.html#aacaeb063a21a237ac515607d689eebb8',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5ftracker_5finfo_5ft_330',['celix_service_tracker_info_t',['../celix__bundle__context_8h.html#aea7e7fcd4022db2f9f4123dd3b7a794a',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5ftracking_5foptions_5ft_331',['celix_service_tracking_options_t',['../celix__bundle__context_8h.html#a5c017c82bf57881c04f8c6f545b25a75',1,'celix_bundle_context.h']]],
+  ['celix_5fservice_5fuse_5foptions_5ft_332',['celix_service_use_options_t',['../celix__bundle__context_8h.html#ae2da28d23f5246c20c6b675b80e7d130',1,'celix_bundle_context.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/typedefs_1.html b/static/docs/2.2.1/html/search/typedefs_1.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/typedefs_1.html
rename to static/docs/2.2.1/html/search/typedefs_1.html
index 6edac96..84e9542
--- a/static/docs/2.2.0/html/search/typedefs_1.html
+++ b/static/docs/2.2.1/html/search/typedefs_1.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="typedefs_1.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/typedefs_1.js b/static/docs/2.2.1/html/search/typedefs_1.js
new file mode 100755
index 0000000..683671c
--- /dev/null
+++ b/static/docs/2.2.1/html/search/typedefs_1.js
@@ -0,0 +1,11 @@
+var searchData=
+[
+  ['dm_5fcomponent_5finfo_5fpt_333',['dm_component_info_pt',['../celix__dm__info_8h.html#a4325313bb7b98b6eded2212a6edd065a',1,'celix_dm_info.h']]],
+  ['dm_5fcomponent_5finfo_5ft_334',['dm_component_info_t',['../celix__dm__info_8h.html#a81bba27d8f869e77dd921c7cd8ac35d7',1,'celix_dm_info.h']]],
+  ['dm_5fdependency_5fmanager_5finfo_5fpt_335',['dm_dependency_manager_info_pt',['../celix__dm__info_8h.html#a230d51a712bc30bd2b52126e17f63738',1,'celix_dm_info.h']]],
+  ['dm_5fdependency_5fmanager_5finfo_5ft_336',['dm_dependency_manager_info_t',['../celix__dm__info_8h.html#aeaa11da320e45fdeef41c441bff70f02',1,'celix_dm_info.h']]],
+  ['dm_5finterface_5finfo_5fpt_337',['dm_interface_info_pt',['../celix__dm__info_8h.html#abb40885e5ab16c4701927d7095194ee2',1,'celix_dm_info.h']]],
+  ['dm_5finterface_5finfo_5ft_338',['dm_interface_info_t',['../celix__dm__info_8h.html#a3c8c9b3b3b6d6cb2853ce22f337ed7f0',1,'celix_dm_info.h']]],
+  ['dm_5fservice_5fdependency_5finfo_5fpt_339',['dm_service_dependency_info_pt',['../celix__dm__info_8h.html#a0a06988849c18fd4848452086f36ed6e',1,'celix_dm_info.h']]],
+  ['dm_5fservice_5fdependency_5finfo_5ft_340',['dm_service_dependency_info_t',['../celix__dm__info_8h.html#a553833e914505261622b13563c8a045e',1,'celix_dm_info.h']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_0.html b/static/docs/2.2.1/html/search/variables_0.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_0.html
rename to static/docs/2.2.1/html/search/variables_0.html
index 3835278..9ce246b
--- a/static/docs/2.2.0/html/search/variables_0.html
+++ b/static/docs/2.2.1/html/search/variables_0.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_0.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_0.js b/static/docs/2.2.1/html/search/variables_0.js
new file mode 100755
index 0000000..c220927
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_0.js
@@ -0,0 +1,9 @@
+var searchData=
+[
+  ['active_278',['active',['../structcelix__dm__component__info__struct.html#a293333dd64e557ab4b3d80c44d6d2499',1,'celix_dm_component_info_struct']]],
+  ['add_279',['add',['../structcelix__service__tracking__options.html#afe7fa7d7fce1c581dff6e7986e958815',1,'celix_service_tracking_options::add()'],['../structcelix__dm__service__dependency__callback__options.html#a9663db4ef079c6300f95dadfe2c03813',1,'celix_dm_service_dependency_callback_options::add()']]],
+  ['addwithowner_280',['addWithOwner',['../structcelix__service__tracking__options.html#a787fd0f4f6719fefea2ae70fe6a1a5e6',1,'celix_service_tracking_options']]],
+  ['addwithproperties_281',['addWithProperties',['../structcelix__service__tracking__options.html#a4f80c99b050b1e49663cab329848364c',1,'celix_service_tracking_options']]],
+  ['addwithprops_282',['addWithProps',['../structcelix__dm__service__dependency__callback__options.html#a5cf7a8e9026d08803798c70cb6a30330',1,'celix_dm_service_dependency_callback_options']]],
+  ['available_283',['available',['../structcelix__dm__service__dependency__info__struct.html#a77659b20ca3bcc2b9282f4644bdcbe66',1,'celix_dm_service_dependency_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_1.html b/static/docs/2.2.1/html/search/variables_1.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_1.html
rename to static/docs/2.2.1/html/search/variables_1.html
index 3c65cf2..5802cec
--- a/static/docs/2.2.0/html/search/variables_1.html
+++ b/static/docs/2.2.1/html/search/variables_1.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_1.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_1.js b/static/docs/2.2.1/html/search/variables_1.js
new file mode 100755
index 0000000..f67e849
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_1.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['bndid_284',['bndId',['../structcelix__dm__dependency__manager__info__struct.html#ac51721859e70f844e4c23873aec85dfb',1,'celix_dm_dependency_manager_info_struct']]],
+  ['bundleid_285',['bundleId',['../structcelix__service__tracker__info.html#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8',1,'celix_service_tracker_info']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_2.html b/static/docs/2.2.1/html/search/variables_2.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_2.html
rename to static/docs/2.2.1/html/search/variables_2.html
index 7b43e0a..00291e5
--- a/static/docs/2.2.0/html/search/variables_2.html
+++ b/static/docs/2.2.1/html/search/variables_2.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_2.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_2.js b/static/docs/2.2.1/html/search/variables_2.js
new file mode 100755
index 0000000..946c82f
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_2.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['components_286',['components',['../structcelix__dm__dependency__manager__info__struct.html#a3d4be4557e6b124bd6b2c586fddfb75b',1,'celix_dm_dependency_manager_info_struct']]],
+  ['count_287',['count',['../structcelix__dm__service__dependency__info__struct.html#ad9284f87c8033a14e5ba5de8118b7f09',1,'celix_dm_service_dependency_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_3.html b/static/docs/2.2.1/html/search/variables_3.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_3.html
rename to static/docs/2.2.1/html/search/variables_3.html
index ea0392d..0e5389b
--- a/static/docs/2.2.0/html/search/variables_3.html
+++ b/static/docs/2.2.1/html/search/variables_3.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_3.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_3.js b/static/docs/2.2.1/html/search/variables_3.js
new file mode 100755
index 0000000..dec653e
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_3.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['dependency_5flist_288',['dependency_list',['../structcelix__dm__component__info__struct.html#abb385ead04139565ed13ed34841d1bda',1,'celix_dm_component_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_4.html b/static/docs/2.2.1/html/search/variables_4.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_4.html
rename to static/docs/2.2.1/html/search/variables_4.html
index 1ed95cb..789a86b
--- a/static/docs/2.2.0/html/search/variables_4.html
+++ b/static/docs/2.2.1/html/search/variables_4.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_4.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_4.js b/static/docs/2.2.1/html/search/variables_4.js
new file mode 100755
index 0000000..52ef90a
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_4.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['filter_289',['filter',['../structcelix__service__tracker__info.html#a3cd52ce46875995a973fb6b65967d7e4',1,'celix_service_tracker_info::filter()'],['../structcelix__dm__service__dependency__info__struct.html#ac06a272ddf7c02e335be784082ba5e9f',1,'celix_dm_service_dependency_info_struct::filter()']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_5.html b/static/docs/2.2.1/html/search/variables_5.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_5.html
rename to static/docs/2.2.1/html/search/variables_5.html
index ecc883b..c7873eb
--- a/static/docs/2.2.0/html/search/variables_5.html
+++ b/static/docs/2.2.1/html/search/variables_5.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_5.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_5.js b/static/docs/2.2.1/html/search/variables_5.js
new file mode 100755
index 0000000..125c017
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_5.js
@@ -0,0 +1,5 @@
+var searchData=
+[
+  ['id_290',['id',['../structcelix__dm__component__info__struct.html#a08281c5b4f78ba0d025b37b18c3201b5',1,'celix_dm_component_info_struct']]],
+  ['interfaces_291',['interfaces',['../structcelix__dm__component__info__struct.html#abbbe72fb049ad5ebb5941421929ae51a',1,'celix_dm_component_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_6.html b/static/docs/2.2.1/html/search/variables_6.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_6.html
rename to static/docs/2.2.1/html/search/variables_6.html
index 0c1a66b..a588588
--- a/static/docs/2.2.0/html/search/variables_6.html
+++ b/static/docs/2.2.1/html/search/variables_6.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_6.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_6.js b/static/docs/2.2.1/html/search/variables_6.js
new file mode 100755
index 0000000..60bb85f
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_6.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['name_292',['name',['../structcelix__dm__interface__info__struct.html#ae2306753d7867ac9dc13d0d1b00f60be',1,'celix_dm_interface_info_struct::name()'],['../structcelix__dm__component__info__struct.html#aad1da907cd6f4a75f85c8321b1f6ce7a',1,'celix_dm_component_info_struct::name()']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_7.html b/static/docs/2.2.1/html/search/variables_7.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_7.html
rename to static/docs/2.2.1/html/search/variables_7.html
index e0da2ef..b09b295
--- a/static/docs/2.2.0/html/search/variables_7.html
+++ b/static/docs/2.2.1/html/search/variables_7.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_7.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_7.js b/static/docs/2.2.1/html/search/variables_7.js
new file mode 100755
index 0000000..1c0f19c
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_7.js
@@ -0,0 +1,7 @@
+var searchData=
+[
+  ['onbundleevent_293',['onBundleEvent',['../structcelix__bundle__tracker__options.html#aae47b1896e9b058f9a43d26246241398',1,'celix_bundle_tracker_options']]],
+  ['onstarted_294',['onStarted',['../structcelix__bundle__tracker__options.html#a044b58b6aa64edfd3f49921fdf6756bb',1,'celix_bundle_tracker_options']]],
+  ['onstopped_295',['onStopped',['../structcelix__bundle__tracker__options.html#aeac272edbc00cb62f7071df0699dd492',1,'celix_bundle_tracker_options']]],
+  ['opts_5finit_296',['OPTS_INIT',['../structcelix__service__registration__options.html#a9c24c1179305b68840149449b1fa6d87',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a94eb8e6e1af0cca435d99aa5d2457fca',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a86179f0c7a032f3309440a2cd8d91a61',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#a6e1274cc3b190b3dc05c7c145f57d407',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#ae44ee7cc15427e406a67b0396201700c',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__registration__options.html#af9b1a622c06a3053ed3917649241fc23',1,'celix_service_registration_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#addb2e1e8fcce127512d272383e78cbd1',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a65bea04c378ef46d841046ffbb2f805c',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#ac15f30b81e60826290a29fb12da6684a',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a9286701a4c946d1ed28afde05cd34d51',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__filter__options.html#a70cc8aee445c1a24782454393f12ff98',1,'celix_service_filter_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86',1,'celix_service_tracking_options::OPTS_INIT()'],['../structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__service__use__options.html#a31a9834b87a5c2c3ed6b8532cd85c653',1,'celix_service_use_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a80ebdcbb840fa97d81e1250fba2d20af',1,'celix_bundle_tracker_options::OPTS_INIT()'],['../structcelix__bundle__tracker__options.html#a54a11feb78bd514c95f7c9aecaa7f212',1,'celix_bundle_tracker_options::OPTS_INIT()']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_8.html b/static/docs/2.2.1/html/search/variables_8.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_8.html
rename to static/docs/2.2.1/html/search/variables_8.html
index 0c3d1df..a479f8e
--- a/static/docs/2.2.0/html/search/variables_8.html
+++ b/static/docs/2.2.1/html/search/variables_8.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_8.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_8.js b/static/docs/2.2.1/html/search/variables_8.js
new file mode 100755
index 0000000..c309239
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_8.js
@@ -0,0 +1,4 @@
+var searchData=
+[
+  ['properties_297',['properties',['../structcelix__dm__interface__info__struct.html#a6fb90a86fdaa6aefde5e598f5ca85e2c',1,'celix_dm_interface_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_9.html b/static/docs/2.2.1/html/search/variables_9.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_9.html
rename to static/docs/2.2.1/html/search/variables_9.html
index e14a107..97cc440
--- a/static/docs/2.2.0/html/search/variables_9.html
+++ b/static/docs/2.2.1/html/search/variables_9.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_9.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_9.js b/static/docs/2.2.1/html/search/variables_9.js
new file mode 100755
index 0000000..75562c8
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_9.js
@@ -0,0 +1,8 @@
+var searchData=
+[
+  ['remove_298',['remove',['../structcelix__service__tracking__options.html#a8445caaae53d71a47c0289d2e3e5f882',1,'celix_service_tracking_options::remove()'],['../structcelix__dm__service__dependency__callback__options.html#a10fe45460fc65e1590a58477f515424b',1,'celix_dm_service_dependency_callback_options::remove()']]],
+  ['removewithowner_299',['removeWithOwner',['../structcelix__service__tracking__options.html#acf6dbcde52efbed145933e8a28f3f2e1',1,'celix_service_tracking_options']]],
+  ['removewithproperties_300',['removeWithProperties',['../structcelix__service__tracking__options.html#af75c423757dcd16bf90d57a5726ac98a',1,'celix_service_tracking_options']]],
+  ['removewithprops_301',['removeWithProps',['../structcelix__dm__service__dependency__callback__options.html#a54ee61c8ab040dc87de22588013316fd',1,'celix_dm_service_dependency_callback_options']]],
+  ['required_302',['required',['../structcelix__dm__service__dependency__info__struct.html#a8ad066c5fa5d75e9fb82add72cbfc705',1,'celix_dm_service_dependency_info_struct']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_a.html b/static/docs/2.2.1/html/search/variables_a.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_a.html
rename to static/docs/2.2.1/html/search/variables_a.html
index 4e38be7..0107448
--- a/static/docs/2.2.0/html/search/variables_a.html
+++ b/static/docs/2.2.1/html/search/variables_a.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_a.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_a.js b/static/docs/2.2.1/html/search/variables_a.js
new file mode 100755
index 0000000..edbeaca
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_a.js
@@ -0,0 +1,12 @@
+var searchData=
+[
+  ['servicelanguage_303',['serviceLanguage',['../structcelix__service__tracker__info.html#a5baca60295d208fe0581a564c3627f65',1,'celix_service_tracker_info']]],
+  ['servicename_304',['serviceName',['../structcelix__service__tracker__info.html#a5f695cf6d8cd69e0c419298ded657546',1,'celix_service_tracker_info']]],
+  ['set_305',['set',['../structcelix__service__tracking__options.html#aa9e8b9cae7ea59ddb796a6bc904f57da',1,'celix_service_tracking_options::set()'],['../structcelix__dm__service__dependency__callback__options.html#a84e8cecdb9dd19f072d1b9c28fa95c8b',1,'celix_dm_service_dependency_callback_options::set()']]],
+  ['setwithowner_306',['setWithOwner',['../structcelix__service__tracking__options.html#a12a988b8f1f3bd3a2e61c65d82f14d59',1,'celix_service_tracking_options']]],
+  ['setwithproperties_307',['setWithProperties',['../structcelix__service__tracking__options.html#a256f8db1eecb89a8b71e4ef03ab11172',1,'celix_service_tracking_options']]],
+  ['setwithprops_308',['setWithProps',['../structcelix__dm__service__dependency__callback__options.html#a286bb094f7e4b4a9066e9b235aa8ade9',1,'celix_dm_service_dependency_callback_options']]],
+  ['state_309',['state',['../structcelix__dm__component__info__struct.html#a0c64e56c05452d29efc60ac8b75f7163',1,'celix_dm_component_info_struct']]],
+  ['swap_310',['swap',['../structcelix__dm__service__dependency__callback__options.html#a35b874e6fa5a6c3af03f09e6492e8b48',1,'celix_dm_service_dependency_callback_options']]],
+  ['swapwithprops_311',['swapWithProps',['../structcelix__dm__service__dependency__callback__options.html#a1e0bfcf2034cd6d69d954256d101598d',1,'celix_dm_service_dependency_callback_options']]]
+];
diff --git a/static/docs/2.2.0/html/search/variables_b.html b/static/docs/2.2.1/html/search/variables_b.html
old mode 100644
new mode 100755
similarity index 63%
rename from static/docs/2.2.0/html/search/variables_b.html
rename to static/docs/2.2.1/html/search/variables_b.html
index c98ef41..e5b2fd9
--- a/static/docs/2.2.0/html/search/variables_b.html
+++ b/static/docs/2.2.1/html/search/variables_b.html
@@ -1,7 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html><head><title></title>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
 <link rel="stylesheet" type="text/css" href="search.css"/>
 <script type="text/javascript" src="variables_b.js"></script>
 <script type="text/javascript" src="search.js"></script>
@@ -11,15 +11,25 @@
 <div class="SRStatus" id="Loading">Loading...</div>
 <div id="SRResults"></div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 createResults();
+/* @license-end */
 --></script>
 <div class="SRStatus" id="Searching">Searching...</div>
 <div class="SRStatus" id="NoMatches">No Matches</div>
 <script type="text/javascript"><!--
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 document.getElementById("Loading").style.display="none";
 document.getElementById("NoMatches").style.display="none";
 var searchResults = new SearchResults("searchResults");
 searchResults.Search();
+window.addEventListener("message", function(event) {
+  if (event.data == "take_focus") {
+    var elem = searchResults.NavNext(0);
+    if (elem) elem.focus();
+  }
+});
+/* @license-end */
 --></script>
 </div>
 </body>
diff --git a/static/docs/2.2.1/html/search/variables_b.js b/static/docs/2.2.1/html/search/variables_b.js
new file mode 100755
index 0000000..879c2f9
--- /dev/null
+++ b/static/docs/2.2.1/html/search/variables_b.js
@@ -0,0 +1,6 @@
+var searchData=
+[
+  ['use_312',['use',['../structcelix__service__use__options.html#ac7efa464a614a3faf6970a4917c596a7',1,'celix_service_use_options']]],
+  ['usewithowner_313',['useWithOwner',['../structcelix__service__use__options.html#a2ba3552bfc25500084bfaf2dbb0f46c5',1,'celix_service_use_options']]],
+  ['usewithproperties_314',['useWithProperties',['../structcelix__service__use__options.html#a8192eb7aa470178f78ea8c09c4574867',1,'celix_service_use_options']]]
+];
diff --git a/static/docs/2.2.0/html/splitbar.png b/static/docs/2.2.1/html/splitbar.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/splitbar.png
rename to static/docs/2.2.1/html/splitbar.png
Binary files differ
diff --git a/static/docs/2.2.0/html/structcelix__bundle__tracker__options-members.html b/static/docs/2.2.1/html/structcelix__bundle__tracker__options-members.html
old mode 100644
new mode 100755
similarity index 71%
rename from static/docs/2.2.0/html/structcelix__bundle__tracker__options-members.html
rename to static/docs/2.2.1/html/structcelix__bundle__tracker__options-members.html
index 49c1331..346e1d2
--- a/static/docs/2.2.0/html/structcelix__bundle__tracker__options-members.html
+++ b/static/docs/2.2.1/html/structcelix__bundle__tracker__options-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -100,7 +80,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__bundle__tracker__options.html b/static/docs/2.2.1/html/structcelix__bundle__tracker__options.html
old mode 100644
new mode 100755
similarity index 82%
rename from static/docs/2.2.0/html/structcelix__bundle__tracker__options.html
rename to static/docs/2.2.1/html/structcelix__bundle__tracker__options.html
index be871c3..f973862
--- a/static/docs/2.2.0/html/structcelix__bundle__tracker__options.html
+++ b/static/docs/2.2.1/html/structcelix__bundle__tracker__options.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_bundle_tracker_options Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -109,7 +89,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>The Service Bundle Tracking options can be used to fine tune the requested bundle tracker options. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="aae47b1896e9b058f9a43d26246241398"></a>
+<a id="aae47b1896e9b058f9a43d26246241398"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aae47b1896e9b058f9a43d26246241398">&#9670;&nbsp;</a></span>onBundleEvent</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -128,7 +110,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a044b58b6aa64edfd3f49921fdf6756bb"></a>
+<a id="a044b58b6aa64edfd3f49921fdf6756bb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a044b58b6aa64edfd3f49921fdf6756bb">&#9670;&nbsp;</a></span>onStarted</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -147,7 +131,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aeac272edbc00cb62f7071df0699dd492"></a>
+<a id="aeac272edbc00cb62f7071df0699dd492"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aeac272edbc00cb62f7071df0699dd492">&#9670;&nbsp;</a></span>onStopped</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -166,7 +152,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a80ebdcbb840fa97d81e1250fba2d20af"></a>
+<a id="a80ebdcbb840fa97d81e1250fba2d20af"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a80ebdcbb840fa97d81e1250fba2d20af">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[1/2]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -179,7 +167,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a54a11feb78bd514c95f7c9aecaa7f212"></a>
+<a id="a54a11feb78bd514c95f7c9aecaa7f212"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a54a11feb78bd514c95f7c9aecaa7f212">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[2/2]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -200,7 +190,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__component__info__struct-members.html b/static/docs/2.2.1/html/structcelix__dm__component__info__struct-members.html
old mode 100644
new mode 100755
similarity index 72%
rename from static/docs/2.2.0/html/structcelix__dm__component__info__struct-members.html
rename to static/docs/2.2.1/html/structcelix__dm__component__info__struct-members.html
index 19c5a96..f7e87a3
--- a/static/docs/2.2.0/html/structcelix__dm__component__info__struct-members.html
+++ b/static/docs/2.2.1/html/structcelix__dm__component__info__struct-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +81,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__component__info__struct.html b/static/docs/2.2.1/html/structcelix__dm__component__info__struct.html
old mode 100644
new mode 100755
similarity index 77%
rename from static/docs/2.2.0/html/structcelix__dm__component__info__struct.html
rename to static/docs/2.2.1/html/structcelix__dm__component__info__struct.html
index 3464234..b0ead2c
--- a/static/docs/2.2.0/html/structcelix__dm__component__info__struct.html
+++ b/static/docs/2.2.1/html/structcelix__dm__component__info__struct.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_dm_component_info_struct Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -109,7 +89,9 @@
 <tr class="separator:abb385ead04139565ed13ed34841d1bda"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a293333dd64e557ab4b3d80c44d6d2499"></a>
+<a id="a293333dd64e557ab4b3d80c44d6d2499"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a293333dd64e557ab4b3d80c44d6d2499">&#9670;&nbsp;</a></span>active</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -121,7 +103,9 @@
 
 </div>
 </div>
-<a class="anchor" id="abb385ead04139565ed13ed34841d1bda"></a>
+<a id="abb385ead04139565ed13ed34841d1bda"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abb385ead04139565ed13ed34841d1bda">&#9670;&nbsp;</a></span>dependency_list</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -133,7 +117,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a08281c5b4f78ba0d025b37b18c3201b5"></a>
+<a id="a08281c5b4f78ba0d025b37b18c3201b5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a08281c5b4f78ba0d025b37b18c3201b5">&#9670;&nbsp;</a></span>id</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -145,7 +131,9 @@
 
 </div>
 </div>
-<a class="anchor" id="abbbe72fb049ad5ebb5941421929ae51a"></a>
+<a id="abbbe72fb049ad5ebb5941421929ae51a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#abbbe72fb049ad5ebb5941421929ae51a">&#9670;&nbsp;</a></span>interfaces</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -157,7 +145,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aad1da907cd6f4a75f85c8321b1f6ce7a"></a>
+<a id="aad1da907cd6f4a75f85c8321b1f6ce7a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aad1da907cd6f4a75f85c8321b1f6ce7a">&#9670;&nbsp;</a></span>name</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -169,7 +159,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a0c64e56c05452d29efc60ac8b75f7163"></a>
+<a id="a0c64e56c05452d29efc60ac8b75f7163"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a0c64e56c05452d29efc60ac8b75f7163">&#9670;&nbsp;</a></span>state</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -189,7 +181,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__dependency__manager__info__struct-members.html b/static/docs/2.2.1/html/structcelix__dm__dependency__manager__info__struct-members.html
old mode 100644
new mode 100755
similarity index 66%
rename from static/docs/2.2.0/html/structcelix__dm__dependency__manager__info__struct-members.html
rename to static/docs/2.2.1/html/structcelix__dm__dependency__manager__info__struct-members.html
index de5b46f..37ff452
--- a/static/docs/2.2.0/html/structcelix__dm__dependency__manager__info__struct-members.html
+++ b/static/docs/2.2.1/html/structcelix__dm__dependency__manager__info__struct-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -97,7 +77,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__dependency__manager__info__struct.html b/static/docs/2.2.1/html/structcelix__dm__dependency__manager__info__struct.html
old mode 100644
new mode 100755
similarity index 71%
rename from static/docs/2.2.0/html/structcelix__dm__dependency__manager__info__struct.html
rename to static/docs/2.2.1/html/structcelix__dm__dependency__manager__info__struct.html
index 62d5987..b49be71
--- a/static/docs/2.2.0/html/structcelix__dm__dependency__manager__info__struct.html
+++ b/static/docs/2.2.1/html/structcelix__dm__dependency__manager__info__struct.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_dm_dependency_manager_info_struct Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +81,9 @@
 <tr class="separator:a3d4be4557e6b124bd6b2c586fddfb75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="ac51721859e70f844e4c23873aec85dfb"></a>
+<a id="ac51721859e70f844e4c23873aec85dfb"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac51721859e70f844e4c23873aec85dfb">&#9670;&nbsp;</a></span>bndId</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -113,7 +95,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3d4be4557e6b124bd6b2c586fddfb75b"></a>
+<a id="a3d4be4557e6b124bd6b2c586fddfb75b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3d4be4557e6b124bd6b2c586fddfb75b">&#9670;&nbsp;</a></span>components</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -133,7 +117,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__interface__info__struct-members.html b/static/docs/2.2.1/html/structcelix__dm__interface__info__struct-members.html
old mode 100644
new mode 100755
similarity index 65%
rename from static/docs/2.2.0/html/structcelix__dm__interface__info__struct-members.html
rename to static/docs/2.2.1/html/structcelix__dm__interface__info__struct-members.html
index 72537af..53b6d61
--- a/static/docs/2.2.0/html/structcelix__dm__interface__info__struct-members.html
+++ b/static/docs/2.2.1/html/structcelix__dm__interface__info__struct-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -97,7 +77,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__interface__info__struct.html b/static/docs/2.2.1/html/structcelix__dm__interface__info__struct.html
old mode 100644
new mode 100755
similarity index 71%
rename from static/docs/2.2.0/html/structcelix__dm__interface__info__struct.html
rename to static/docs/2.2.1/html/structcelix__dm__interface__info__struct.html
index 97654fb..ff2d87f
--- a/static/docs/2.2.0/html/structcelix__dm__interface__info__struct.html
+++ b/static/docs/2.2.1/html/structcelix__dm__interface__info__struct.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_dm_interface_info_struct Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +81,9 @@
 <tr class="separator:a6fb90a86fdaa6aefde5e598f5ca85e2c"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="ae2306753d7867ac9dc13d0d1b00f60be"></a>
+<a id="ae2306753d7867ac9dc13d0d1b00f60be"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae2306753d7867ac9dc13d0d1b00f60be">&#9670;&nbsp;</a></span>name</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -113,7 +95,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a6fb90a86fdaa6aefde5e598f5ca85e2c"></a>
+<a id="a6fb90a86fdaa6aefde5e598f5ca85e2c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6fb90a86fdaa6aefde5e598f5ca85e2c">&#9670;&nbsp;</a></span>properties</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -133,7 +117,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__service__dependency__callback__options-members.html b/static/docs/2.2.1/html/structcelix__dm__service__dependency__callback__options-members.html
old mode 100644
new mode 100755
similarity index 76%
rename from static/docs/2.2.0/html/structcelix__dm__service__dependency__callback__options-members.html
rename to static/docs/2.2.1/html/structcelix__dm__service__dependency__callback__options-members.html
index 306d1dd..18af876
--- a/static/docs/2.2.0/html/structcelix__dm__service__dependency__callback__options-members.html
+++ b/static/docs/2.2.1/html/structcelix__dm__service__dependency__callback__options-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -103,7 +83,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__service__dependency__callback__options.html b/static/docs/2.2.1/html/structcelix__dm__service__dependency__callback__options.html
old mode 100644
new mode 100755
similarity index 82%
rename from static/docs/2.2.0/html/structcelix__dm__service__dependency__callback__options.html
rename to static/docs/2.2.1/html/structcelix__dm__service__dependency__callback__options.html
index ae4441d..67d7d68
--- a/static/docs/2.2.0/html/structcelix__dm__service__dependency__callback__options.html
+++ b/static/docs/2.2.1/html/structcelix__dm__service__dependency__callback__options.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_dm_service_dependency_callback_options Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -113,7 +93,9 @@
 <tr class="separator:a1e0bfcf2034cd6d69d954256d101598d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a9663db4ef079c6300f95dadfe2c03813"></a>
+<a id="a9663db4ef079c6300f95dadfe2c03813"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9663db4ef079c6300f95dadfe2c03813">&#9670;&nbsp;</a></span>add</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -125,7 +107,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a5cf7a8e9026d08803798c70cb6a30330"></a>
+<a id="a5cf7a8e9026d08803798c70cb6a30330"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5cf7a8e9026d08803798c70cb6a30330">&#9670;&nbsp;</a></span>addWithProps</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -137,7 +121,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a10fe45460fc65e1590a58477f515424b"></a>
+<a id="a10fe45460fc65e1590a58477f515424b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a10fe45460fc65e1590a58477f515424b">&#9670;&nbsp;</a></span>remove</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -149,7 +135,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a54ee61c8ab040dc87de22588013316fd"></a>
+<a id="a54ee61c8ab040dc87de22588013316fd"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a54ee61c8ab040dc87de22588013316fd">&#9670;&nbsp;</a></span>removeWithProps</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -161,7 +149,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a84e8cecdb9dd19f072d1b9c28fa95c8b"></a>
+<a id="a84e8cecdb9dd19f072d1b9c28fa95c8b"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a84e8cecdb9dd19f072d1b9c28fa95c8b">&#9670;&nbsp;</a></span>set</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -173,7 +163,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a286bb094f7e4b4a9066e9b235aa8ade9"></a>
+<a id="a286bb094f7e4b4a9066e9b235aa8ade9"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a286bb094f7e4b4a9066e9b235aa8ade9">&#9670;&nbsp;</a></span>setWithProps</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -185,7 +177,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a35b874e6fa5a6c3af03f09e6492e8b48"></a>
+<a id="a35b874e6fa5a6c3af03f09e6492e8b48"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a35b874e6fa5a6c3af03f09e6492e8b48">&#9670;&nbsp;</a></span>swap</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -197,7 +191,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a1e0bfcf2034cd6d69d954256d101598d"></a>
+<a id="a1e0bfcf2034cd6d69d954256d101598d"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a1e0bfcf2034cd6d69d954256d101598d">&#9670;&nbsp;</a></span>swapWithProps</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -217,7 +213,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__service__dependency__info__struct-members.html b/static/docs/2.2.1/html/structcelix__dm__service__dependency__info__struct-members.html
old mode 100644
new mode 100755
similarity index 70%
rename from static/docs/2.2.0/html/structcelix__dm__service__dependency__info__struct-members.html
rename to static/docs/2.2.1/html/structcelix__dm__service__dependency__info__struct-members.html
index 4ed777c..f2da99a
--- a/static/docs/2.2.0/html/structcelix__dm__service__dependency__info__struct-members.html
+++ b/static/docs/2.2.1/html/structcelix__dm__service__dependency__info__struct-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -99,7 +79,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__dm__service__dependency__info__struct.html b/static/docs/2.2.1/html/structcelix__dm__service__dependency__info__struct.html
old mode 100644
new mode 100755
similarity index 75%
rename from static/docs/2.2.0/html/structcelix__dm__service__dependency__info__struct.html
rename to static/docs/2.2.1/html/structcelix__dm__service__dependency__info__struct.html
index 6f2104a..acb098b
--- a/static/docs/2.2.0/html/structcelix__dm__service__dependency__info__struct.html
+++ b/static/docs/2.2.1/html/structcelix__dm__service__dependency__info__struct.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_dm_service_dependency_info_struct Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -105,7 +85,9 @@
 <tr class="separator:ad9284f87c8033a14e5ba5de8118b7f09"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
 <h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a77659b20ca3bcc2b9282f4644bdcbe66"></a>
+<a id="a77659b20ca3bcc2b9282f4644bdcbe66"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a77659b20ca3bcc2b9282f4644bdcbe66">&#9670;&nbsp;</a></span>available</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -117,7 +99,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ad9284f87c8033a14e5ba5de8118b7f09"></a>
+<a id="ad9284f87c8033a14e5ba5de8118b7f09"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ad9284f87c8033a14e5ba5de8118b7f09">&#9670;&nbsp;</a></span>count</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -129,7 +113,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac06a272ddf7c02e335be784082ba5e9f"></a>
+<a id="ac06a272ddf7c02e335be784082ba5e9f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac06a272ddf7c02e335be784082ba5e9f">&#9670;&nbsp;</a></span>filter</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -141,7 +127,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8ad066c5fa5d75e9fb82add72cbfc705"></a>
+<a id="a8ad066c5fa5d75e9fb82add72cbfc705"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8ad066c5fa5d75e9fb82add72cbfc705">&#9670;&nbsp;</a></span>required</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -161,7 +149,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__filter__options-members.html b/static/docs/2.2.1/html/structcelix__service__filter__options-members.html
old mode 100644
new mode 100755
similarity index 71%
rename from static/docs/2.2.0/html/structcelix__service__filter__options-members.html
rename to static/docs/2.2.1/html/structcelix__service__filter__options-members.html
index 2540992..bbf4837
--- a/static/docs/2.2.0/html/structcelix__service__filter__options-members.html
+++ b/static/docs/2.2.1/html/structcelix__service__filter__options-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -100,7 +80,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__filter__options.html b/static/docs/2.2.1/html/structcelix__service__filter__options.html
old mode 100644
new mode 100755
similarity index 79%
rename from static/docs/2.2.0/html/structcelix__service__filter__options.html
rename to static/docs/2.2.1/html/structcelix__service__filter__options.html
index 2d604e5..c30e19a
--- a/static/docs/2.2.0/html/structcelix__service__filter__options.html
+++ b/static/docs/2.2.1/html/structcelix__service__filter__options.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_service_filter_options Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -109,7 +89,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Service filter options which can be used to query for certain services. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="addb2e1e8fcce127512d272383e78cbd1"></a>
+<a id="addb2e1e8fcce127512d272383e78cbd1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#addb2e1e8fcce127512d272383e78cbd1">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[1/5]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -122,7 +104,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a65bea04c378ef46d841046ffbb2f805c"></a>
+<a id="a65bea04c378ef46d841046ffbb2f805c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a65bea04c378ef46d841046ffbb2f805c">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[2/5]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -135,7 +119,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac15f30b81e60826290a29fb12da6684a"></a>
+<a id="ac15f30b81e60826290a29fb12da6684a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac15f30b81e60826290a29fb12da6684a">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[3/5]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -148,7 +134,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a9286701a4c946d1ed28afde05cd34d51"></a>
+<a id="a9286701a4c946d1ed28afde05cd34d51"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9286701a4c946d1ed28afde05cd34d51">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[4/5]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -161,7 +149,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a70cc8aee445c1a24782454393f12ff98"></a>
+<a id="a70cc8aee445c1a24782454393f12ff98"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a70cc8aee445c1a24782454393f12ff98">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[5/5]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -182,7 +172,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__registration__options-members.html b/static/docs/2.2.1/html/structcelix__service__registration__options-members.html
old mode 100644
new mode 100755
similarity index 73%
rename from static/docs/2.2.0/html/structcelix__service__registration__options-members.html
rename to static/docs/2.2.1/html/structcelix__service__registration__options-members.html
index 7aad110..215e514
--- a/static/docs/2.2.0/html/structcelix__service__registration__options-members.html
+++ b/static/docs/2.2.1/html/structcelix__service__registration__options-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +81,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__registration__options.html b/static/docs/2.2.1/html/structcelix__service__registration__options.html
old mode 100644
new mode 100755
similarity index 82%
rename from static/docs/2.2.0/html/structcelix__service__registration__options.html
rename to static/docs/2.2.1/html/structcelix__service__registration__options.html
index bced0ce..689f92d
--- a/static/docs/2.2.0/html/structcelix__service__registration__options.html
+++ b/static/docs/2.2.1/html/structcelix__service__registration__options.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_service_registration_options Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -111,7 +91,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Service Registration Options when registering services to the Celix framework. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a9c24c1179305b68840149449b1fa6d87"></a>
+<a id="a9c24c1179305b68840149449b1fa6d87"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9c24c1179305b68840149449b1fa6d87">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[1/6]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -125,7 +107,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a94eb8e6e1af0cca435d99aa5d2457fca"></a>
+<a id="a94eb8e6e1af0cca435d99aa5d2457fca"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a94eb8e6e1af0cca435d99aa5d2457fca">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[2/6]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -141,7 +125,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a86179f0c7a032f3309440a2cd8d91a61"></a>
+<a id="a86179f0c7a032f3309440a2cd8d91a61"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a86179f0c7a032f3309440a2cd8d91a61">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[3/6]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -154,7 +140,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a6e1274cc3b190b3dc05c7c145f57d407"></a>
+<a id="a6e1274cc3b190b3dc05c7c145f57d407"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6e1274cc3b190b3dc05c7c145f57d407">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[4/6]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -168,7 +156,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ae44ee7cc15427e406a67b0396201700c"></a>
+<a id="ae44ee7cc15427e406a67b0396201700c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae44ee7cc15427e406a67b0396201700c">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[5/6]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -181,7 +171,9 @@
 
 </div>
 </div>
-<a class="anchor" id="af9b1a622c06a3053ed3917649241fc23"></a>
+<a id="af9b1a622c06a3053ed3917649241fc23"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af9b1a622c06a3053ed3917649241fc23">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[6/6]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -202,7 +194,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__tracker__info-members.html b/static/docs/2.2.1/html/structcelix__service__tracker__info-members.html
old mode 100644
new mode 100755
similarity index 69%
rename from static/docs/2.2.0/html/structcelix__service__tracker__info-members.html
rename to static/docs/2.2.1/html/structcelix__service__tracker__info-members.html
index cb31828..6371072
--- a/static/docs/2.2.0/html/structcelix__service__tracker__info-members.html
+++ b/static/docs/2.2.1/html/structcelix__service__tracker__info-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -99,7 +79,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__tracker__info.html b/static/docs/2.2.1/html/structcelix__service__tracker__info.html
old mode 100644
new mode 100755
similarity index 76%
rename from static/docs/2.2.0/html/structcelix__service__tracker__info.html
rename to static/docs/2.2.1/html/structcelix__service__tracker__info.html
index d24d41e..39a5449
--- a/static/docs/2.2.0/html/structcelix__service__tracker__info.html
+++ b/static/docs/2.2.1/html/structcelix__service__tracker__info.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_service_tracker_info Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -107,7 +87,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Service Tracker Info provided to the service tracker tracker callbacks. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="a6978e4b5f2fcc2d42a42f0e7ed3bb7c8"></a>
+<a id="a6978e4b5f2fcc2d42a42f0e7ed3bb7c8"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a6978e4b5f2fcc2d42a42f0e7ed3bb7c8">&#9670;&nbsp;</a></span>bundleId</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -120,7 +102,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a3cd52ce46875995a973fb6b65967d7e4"></a>
+<a id="a3cd52ce46875995a973fb6b65967d7e4"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a3cd52ce46875995a973fb6b65967d7e4">&#9670;&nbsp;</a></span>filter</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -133,7 +117,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a5baca60295d208fe0581a564c3627f65"></a>
+<a id="a5baca60295d208fe0581a564c3627f65"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5baca60295d208fe0581a564c3627f65">&#9670;&nbsp;</a></span>serviceLanguage</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -146,7 +132,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a5f695cf6d8cd69e0c419298ded657546"></a>
+<a id="a5f695cf6d8cd69e0c419298ded657546"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a5f695cf6d8cd69e0c419298ded657546">&#9670;&nbsp;</a></span>serviceName</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -167,7 +155,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__tracking__options-members.html b/static/docs/2.2.1/html/structcelix__service__tracking__options-members.html
old mode 100644
new mode 100755
similarity index 78%
rename from static/docs/2.2.0/html/structcelix__service__tracking__options-members.html
rename to static/docs/2.2.1/html/structcelix__service__tracking__options-members.html
index 33c4721..3f3b94f
--- a/static/docs/2.2.0/html/structcelix__service__tracking__options-members.html
+++ b/static/docs/2.2.1/html/structcelix__service__tracking__options-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -106,7 +86,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__tracking__options.html b/static/docs/2.2.1/html/structcelix__service__tracking__options.html
old mode 100644
new mode 100755
similarity index 84%
rename from static/docs/2.2.0/html/structcelix__service__tracking__options.html
rename to static/docs/2.2.1/html/structcelix__service__tracking__options.html
index 4898fda..bcd17a2
--- a/static/docs/2.2.0/html/structcelix__service__tracking__options.html
+++ b/static/docs/2.2.1/html/structcelix__service__tracking__options.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_service_tracking_options Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -97,13 +77,14 @@
 <div class="dyncontent">
 <div class="center"><img src="structcelix__service__tracking__options__coll__graph.png" border="0" usemap="#celix__service__tracking__options_coll__map" alt="Collaboration graph"/></div>
 <map name="celix__service__tracking__options_coll__map" id="celix__service__tracking__options_coll__map">
-<area shape="rect" id="node2" href="structcelix__service__filter__options.html" title="celix_service_filter\l_options" alt="" coords="17,5,154,47"/>
+<area shape="rect" title=" " alt="" coords="5,109,156,151"/>
+<area shape="rect" href="structcelix__service__filter__options.html" title=" " alt="" coords="15,5,146,47"/>
 </map>
 <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:a9272f1870b544b28329545b84f3425c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> filter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a></td></tr>
+<tr class="memitem:a9272f1870b544b28329545b84f3425c2"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> filter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__tracking__options.html#a9272f1870b544b28329545b84f3425c2">OPTS_INIT</a></td></tr>
 <tr class="separator:a9272f1870b544b28329545b84f3425c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a2fcaf1b7274379695cc9a4bb1c719d86"><td class="memItemLeft" align="right" valign="top">void *callbackHandle&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__tracking__options.html#a2fcaf1b7274379695cc9a4bb1c719d86">OPTS_INIT</a></td></tr>
 <tr class="separator:a2fcaf1b7274379695cc9a4bb1c719d86"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -129,7 +110,9 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Service Tracker Options used to fine tune which services to track and the callback to be used for the tracked services. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="afe7fa7d7fce1c581dff6e7986e958815"></a>
+<a id="afe7fa7d7fce1c581dff6e7986e958815"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#afe7fa7d7fce1c581dff6e7986e958815">&#9670;&nbsp;</a></span>add</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -148,7 +131,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a787fd0f4f6719fefea2ae70fe6a1a5e6"></a>
+<a id="a787fd0f4f6719fefea2ae70fe6a1a5e6"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a787fd0f4f6719fefea2ae70fe6a1a5e6">&#9670;&nbsp;</a></span>addWithOwner</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -161,7 +146,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a4f80c99b050b1e49663cab329848364c"></a>
+<a id="a4f80c99b050b1e49663cab329848364c"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a4f80c99b050b1e49663cab329848364c">&#9670;&nbsp;</a></span>addWithProperties</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -174,12 +161,14 @@
 
 </div>
 </div>
-<a class="anchor" id="a9272f1870b544b28329545b84f3425c2"></a>
+<a id="a9272f1870b544b28329545b84f3425c2"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a9272f1870b544b28329545b84f3425c2">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[1/2]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> filter celix_service_tracking_options::OPTS_INIT</td>
+          <td class="memname"><a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> filter celix_service_tracking_options::OPTS_INIT</td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -187,7 +176,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a2fcaf1b7274379695cc9a4bb1c719d86"></a>
+<a id="a2fcaf1b7274379695cc9a4bb1c719d86"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2fcaf1b7274379695cc9a4bb1c719d86">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[2/2]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -200,7 +191,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8445caaae53d71a47c0289d2e3e5f882"></a>
+<a id="a8445caaae53d71a47c0289d2e3e5f882"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8445caaae53d71a47c0289d2e3e5f882">&#9670;&nbsp;</a></span>remove</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -220,7 +213,9 @@
 
 </div>
 </div>
-<a class="anchor" id="acf6dbcde52efbed145933e8a28f3f2e1"></a>
+<a id="acf6dbcde52efbed145933e8a28f3f2e1"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#acf6dbcde52efbed145933e8a28f3f2e1">&#9670;&nbsp;</a></span>removeWithOwner</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -233,7 +228,9 @@
 
 </div>
 </div>
-<a class="anchor" id="af75c423757dcd16bf90d57a5726ac98a"></a>
+<a id="af75c423757dcd16bf90d57a5726ac98a"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#af75c423757dcd16bf90d57a5726ac98a">&#9670;&nbsp;</a></span>removeWithProperties</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -246,7 +243,9 @@
 
 </div>
 </div>
-<a class="anchor" id="aa9e8b9cae7ea59ddb796a6bc904f57da"></a>
+<a id="aa9e8b9cae7ea59ddb796a6bc904f57da"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#aa9e8b9cae7ea59ddb796a6bc904f57da">&#9670;&nbsp;</a></span>set</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -265,7 +264,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a12a988b8f1f3bd3a2e61c65d82f14d59"></a>
+<a id="a12a988b8f1f3bd3a2e61c65d82f14d59"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a12a988b8f1f3bd3a2e61c65d82f14d59">&#9670;&nbsp;</a></span>setWithOwner</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -278,7 +279,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a256f8db1eecb89a8b71e4ef03ab11172"></a>
+<a id="a256f8db1eecb89a8b71e4ef03ab11172"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a256f8db1eecb89a8b71e4ef03ab11172">&#9670;&nbsp;</a></span>setWithProperties</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -299,7 +302,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.map b/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.map
new file mode 100755
index 0000000..190d876
--- /dev/null
+++ b/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.map
@@ -0,0 +1,4 @@
+<map id="celix_service_tracking_options" name="celix_service_tracking_options">
+<area shape="rect" id="node1" title=" " alt="" coords="5,109,156,151"/>
+<area shape="rect" id="node2" href="$structcelix__service__filter__options.html" title=" " alt="" coords="15,5,146,47"/>
+</map>
diff --git a/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.md5 b/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.md5
new file mode 100755
index 0000000..9e13c94
--- /dev/null
+++ b/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.md5
@@ -0,0 +1 @@
+676ad69a7aa6ae372c23369f1416c295
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.png b/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.png
new file mode 100755
index 0000000..423f5d4
--- /dev/null
+++ b/static/docs/2.2.1/html/structcelix__service__tracking__options__coll__graph.png
Binary files differ
diff --git a/static/docs/2.2.0/html/structcelix__service__use__options-members.html b/static/docs/2.2.1/html/structcelix__service__use__options-members.html
old mode 100644
new mode 100755
similarity index 72%
rename from static/docs/2.2.0/html/structcelix__service__use__options-members.html
rename to static/docs/2.2.1/html/structcelix__service__use__options-members.html
index bbf2e77..3cb105b
--- a/static/docs/2.2.0/html/structcelix__service__use__options-members.html
+++ b/static/docs/2.2.1/html/structcelix__service__use__options-members.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: Member List</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -101,7 +81,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.0/html/structcelix__service__use__options.html b/static/docs/2.2.1/html/structcelix__service__use__options.html
old mode 100644
new mode 100755
similarity index 81%
rename from static/docs/2.2.0/html/structcelix__service__use__options.html
rename to static/docs/2.2.1/html/structcelix__service__use__options.html
index 0dae3bd..0d58cd8
--- a/static/docs/2.2.0/html/structcelix__service__use__options.html
+++ b/static/docs/2.2.1/html/structcelix__service__use__options.html
@@ -1,9 +1,10 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
-<meta name="generator" content="Doxygen 1.8.11"/>
+<meta name="generator" content="Doxygen 1.8.18"/>
+<meta name="viewport" content="width=device-width, initial-scale=1"/>
 <title>Celix: celix_service_use_options Struct Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
@@ -11,9 +12,6 @@
 <link href="search/search.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="search/searchdata.js"></script>
 <script type="text/javascript" src="search/search.js"></script>
-<script type="text/javascript">
-  $(document).ready(function() { init_search(); });
-</script>
 <link href="doxygen.css" rel="stylesheet" type="text/css" />
 </head>
 <body>
@@ -24,7 +22,7 @@
  <tr style="height: 56px;">
   <td id="projectalign" style="padding-left: 0.5em;">
    <div id="projectname">Celix
-   &#160;<span id="projectnumber">2.2.0</span>
+   &#160;<span id="projectnumber">2.2.1</span>
    </div>
    <div id="projectbrief">An implementation of the OSGi specification adapted to C and C++</div>
   </td>
@@ -33,40 +31,22 @@
 </table>
 </div>
 <!-- end header part -->
-<!-- Generated by Doxygen 1.8.11 -->
+<!-- Generated by Doxygen 1.8.18 -->
 <script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
 var searchBox = new SearchBox("searchBox", "search",false,'Search');
+/* @license-end */
 </script>
-  <div id="navrow1" class="tabs">
-    <ul class="tablist">
-      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
-      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
-      <li><a href="files.html"><span>Files</span></a></li>
-      <li>
-        <div id="MSearchBox" class="MSearchBoxInactive">
-        <span class="left">
-          <img id="MSearchSelect" src="search/mag_sel.png"
-               onmouseover="return searchBox.OnSearchSelectShow()"
-               onmouseout="return searchBox.OnSearchSelectHide()"
-               alt=""/>
-          <input type="text" id="MSearchField" value="Search" accesskey="S"
-               onfocus="searchBox.OnSearchFieldFocus(true)" 
-               onblur="searchBox.OnSearchFieldFocus(false)" 
-               onkeyup="searchBox.OnSearchFieldChange(event)"/>
-          </span><span class="right">
-            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
-          </span>
-        </div>
-      </li>
-    </ul>
-  </div>
-  <div id="navrow2" class="tabs2">
-    <ul class="tablist">
-      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
-      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
-      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
-    </ul>
-  </div>
+<script type="text/javascript" src="menudata.js"></script>
+<script type="text/javascript" src="menu.js"></script>
+<script type="text/javascript">
+/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
+$(function() {
+  initMenu('',true,false,'search.php','Search');
+  $(document).ready(function() { init_search(); });
+});
+/* @license-end */</script>
+<div id="main-nav"></div>
 <!-- window showing the filter options -->
 <div id="MSearchSelectWindow"
      onmouseover="return searchBox.OnSearchSelectShow()"
@@ -97,13 +77,14 @@
 <div class="dyncontent">
 <div class="center"><img src="structcelix__service__use__options__coll__graph.png" border="0" usemap="#celix__service__use__options_coll__map" alt="Collaboration graph"/></div>
 <map name="celix__service__use__options_coll__map" id="celix__service__use__options_coll__map">
-<area shape="rect" id="node2" href="structcelix__service__filter__options.html" title="celix_service_filter\l_options" alt="" coords="30,5,167,47"/>
+<area shape="rect" title=" " alt="" coords="5,109,180,136"/>
+<area shape="rect" href="structcelix__service__filter__options.html" title=" " alt="" coords="27,5,158,47"/>
 </map>
 <center><span class="legend">[<a href="graph_legend.html">legend</a>]</span></center></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-attribs"></a>
 Public Attributes</h2></td></tr>
-<tr class="memitem:addad49a12179fff8b2dbf5313d70952f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> filter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a></td></tr>
+<tr class="memitem:addad49a12179fff8b2dbf5313d70952f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> filter&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__use__options.html#addad49a12179fff8b2dbf5313d70952f">OPTS_INIT</a></td></tr>
 <tr class="separator:addad49a12179fff8b2dbf5313d70952f"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:ae24e3e35d7d92d5b41d58b53506bcca0"><td class="memItemLeft" align="right" valign="top">double waitTimeoutInSeconds&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structcelix__service__use__options.html#ae24e3e35d7d92d5b41d58b53506bcca0">OPTS_INIT</a></td></tr>
 <tr class="separator:ae24e3e35d7d92d5b41d58b53506bcca0"><td class="memSeparator" colspan="2">&#160;</td></tr>
@@ -119,12 +100,14 @@
 <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
 <div class="textblock"><p>Service Use Options used to fine tune which services to use and which callbacks to use. </p>
 </div><h2 class="groupheader">Member Data Documentation</h2>
-<a class="anchor" id="addad49a12179fff8b2dbf5313d70952f"></a>
+<a id="addad49a12179fff8b2dbf5313d70952f"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#addad49a12179fff8b2dbf5313d70952f">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[1/3]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
         <tr>
-          <td class="memname"><a class="el" href="celix__bundle__context_8h.html#a54e95a32f444f0124896a4d193e3be22">celix_service_filter_options_t</a> filter celix_service_use_options::OPTS_INIT</td>
+          <td class="memname"><a class="el" href="celix__bundle__context_8h.html#a7eab80d54386fb32b91dd414846c2d45">celix_service_filter_options_t</a> filter celix_service_use_options::OPTS_INIT</td>
         </tr>
       </table>
 </div><div class="memdoc">
@@ -132,7 +115,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ae24e3e35d7d92d5b41d58b53506bcca0"></a>
+<a id="ae24e3e35d7d92d5b41d58b53506bcca0"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ae24e3e35d7d92d5b41d58b53506bcca0">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[2/3]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -145,7 +130,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a31a9834b87a5c2c3ed6b8532cd85c653"></a>
+<a id="a31a9834b87a5c2c3ed6b8532cd85c653"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a31a9834b87a5c2c3ed6b8532cd85c653">&#9670;&nbsp;</a></span>OPTS_INIT <span class="overload">[3/3]</span></h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -158,7 +145,9 @@
 
 </div>
 </div>
-<a class="anchor" id="ac7efa464a614a3faf6970a4917c596a7"></a>
+<a id="ac7efa464a614a3faf6970a4917c596a7"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#ac7efa464a614a3faf6970a4917c596a7">&#9670;&nbsp;</a></span>use</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -180,7 +169,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a2ba3552bfc25500084bfaf2dbb0f46c5"></a>
+<a id="a2ba3552bfc25500084bfaf2dbb0f46c5"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a2ba3552bfc25500084bfaf2dbb0f46c5">&#9670;&nbsp;</a></span>useWithOwner</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -193,7 +184,9 @@
 
 </div>
 </div>
-<a class="anchor" id="a8192eb7aa470178f78ea8c09c4574867"></a>
+<a id="a8192eb7aa470178f78ea8c09c4574867"></a>
+<h2 class="memtitle"><span class="permalink"><a href="#a8192eb7aa470178f78ea8c09c4574867">&#9670;&nbsp;</a></span>useWithProperties</h2>
+
 <div class="memitem">
 <div class="memproto">
       <table class="memname">
@@ -214,7 +207,7 @@
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
 <img class="footer" src="doxygen.png" alt="doxygen"/>
-</a> 1.8.11
+</a> 1.8.18
 </small></address>
 </body>
 </html>
diff --git a/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.map b/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.map
new file mode 100755
index 0000000..c37c7f1
--- /dev/null
+++ b/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.map
@@ -0,0 +1,4 @@
+<map id="celix_service_use_options" name="celix_service_use_options">
+<area shape="rect" id="node1" title=" " alt="" coords="5,109,180,136"/>
+<area shape="rect" id="node2" href="$structcelix__service__filter__options.html" title=" " alt="" coords="27,5,158,47"/>
+</map>
diff --git a/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.md5 b/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.md5
new file mode 100755
index 0000000..f43dba2
--- /dev/null
+++ b/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.md5
@@ -0,0 +1 @@
+adcc6d4cf84c2e54a8d55f03a72fad5d
\ No newline at end of file
diff --git a/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.png b/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.png
new file mode 100755
index 0000000..b2addac
--- /dev/null
+++ b/static/docs/2.2.1/html/structcelix__service__use__options__coll__graph.png
Binary files differ
diff --git a/static/docs/2.2.0/html/sync_off.png b/static/docs/2.2.1/html/sync_off.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/sync_off.png
rename to static/docs/2.2.1/html/sync_off.png
Binary files differ
diff --git a/static/docs/2.2.0/html/sync_on.png b/static/docs/2.2.1/html/sync_on.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/sync_on.png
rename to static/docs/2.2.1/html/sync_on.png
Binary files differ
diff --git a/static/docs/2.2.0/html/tab_a.png b/static/docs/2.2.1/html/tab_a.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/tab_a.png
rename to static/docs/2.2.1/html/tab_a.png
Binary files differ
diff --git a/static/docs/2.2.0/html/tab_b.png b/static/docs/2.2.1/html/tab_b.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/tab_b.png
rename to static/docs/2.2.1/html/tab_b.png
Binary files differ
diff --git a/static/docs/2.2.0/html/tab_h.png b/static/docs/2.2.1/html/tab_h.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/tab_h.png
rename to static/docs/2.2.1/html/tab_h.png
Binary files differ
diff --git a/static/docs/2.2.0/html/tab_s.png b/static/docs/2.2.1/html/tab_s.png
old mode 100644
new mode 100755
similarity index 100%
rename from static/docs/2.2.0/html/tab_s.png
rename to static/docs/2.2.1/html/tab_s.png
Binary files differ
diff --git a/static/docs/2.2.1/html/tabs.css b/static/docs/2.2.1/html/tabs.css
new file mode 100755
index 0000000..85a0cd5
--- /dev/null
+++ b/static/docs/2.2.1/html/tabs.css
@@ -0,0 +1 @@
+.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}}
\ No newline at end of file