Merge lp:~veebers/juju-ci-tools/add-dumm-storage-charm into lp:juju-ci-tools

Proposed by Christopher Lee
Status: Superseded
Proposed branch: lp:~veebers/juju-ci-tools/add-dumm-storage-charm
Merge into: lp:juju-ci-tools
Diff against target: 60660 lines (+56124/-0)
815 files modified
bundles-lxc.yaml (+56/-0)
bundles-lxd.yaml (+56/-0)
centos7/dummy-sink/README (+1/-0)
centos7/dummy-sink/config.yaml (+5/-0)
centos7/dummy-sink/copyright (+1/-0)
centos7/dummy-sink/hooks/source-relation-changed (+3/-0)
centos7/dummy-sink/metadata.yaml (+10/-0)
centos7/dummy-source/README (+1/-0)
centos7/dummy-source/config.yaml (+5/-0)
centos7/dummy-source/copyright (+1/-0)
centos7/dummy-source/hooks/config-changed (+6/-0)
centos7/dummy-source/metadata.yaml (+10/-0)
charms-centos/dummy-sink/README (+1/-0)
charms-centos/dummy-sink/config.yaml (+5/-0)
charms-centos/dummy-sink/copyright (+1/-0)
charms-centos/dummy-sink/hooks/install (+4/-0)
charms-centos/dummy-sink/hooks/source-relation-changed (+13/-0)
charms-centos/dummy-sink/hooks/start (+4/-0)
charms-centos/dummy-sink/metadata.yaml (+12/-0)
charms-centos/dummy-source/README (+1/-0)
charms-centos/dummy-source/config.yaml (+5/-0)
charms-centos/dummy-source/copyright (+1/-0)
charms-centos/dummy-source/hooks/config-changed (+16/-0)
charms-centos/dummy-source/hooks/install (+4/-0)
charms-centos/dummy-source/hooks/start (+4/-0)
charms-centos/dummy-source/metadata.yaml (+12/-0)
charms-win/dummy-sink/README (+1/-0)
charms-win/dummy-sink/config.yaml (+5/-0)
charms-win/dummy-sink/copyright (+1/-0)
charms-win/dummy-sink/hooks/install.ps1 (+2/-0)
charms-win/dummy-sink/hooks/source-relation-changed.ps1 (+8/-0)
charms-win/dummy-sink/hooks/start.ps1 (+2/-0)
charms-win/dummy-sink/metadata.yaml (+21/-0)
charms-win/dummy-source/README (+1/-0)
charms-win/dummy-source/config.yaml (+5/-0)
charms-win/dummy-source/copyright (+1/-0)
charms-win/dummy-source/hooks/config-changed.ps1 (+7/-0)
charms-win/dummy-source/hooks/install.ps1 (+2/-0)
charms-win/dummy-source/hooks/sink-relation-joined.ps1 (+2/-0)
charms-win/dummy-source/hooks/start.ps1 (+2/-0)
charms-win/dummy-source/metadata.yaml (+21/-0)
charms/chaos-monkey/README (+43/-0)
charms/chaos-monkey/actions.yaml (+51/-0)
charms/chaos-monkey/actions/show-logs (+20/-0)
charms/chaos-monkey/actions/show-monkey-ids (+13/-0)
charms/chaos-monkey/actions/start (+63/-0)
charms/chaos-monkey/config.yaml (+15/-0)
charms/chaos-monkey/copyright (+1/-0)
charms/chaos-monkey/hooks/config-changed (+1/-0)
charms/chaos-monkey/hooks/extract_chaos_monkey.bash (+9/-0)
charms/chaos-monkey/hooks/install (+5/-0)
charms/chaos-monkey/hooks/start (+1/-0)
charms/chaos-monkey/hooks/stop (+1/-0)
charms/chaos-monkey/hooks/upgrade-charm (+2/-0)
charms/chaos-monkey/icon.svg (+425/-0)
charms/chaos-monkey/metadata.yaml (+20/-0)
charms/client-forwardproxy/Makefile (+24/-0)
charms/client-forwardproxy/README (+21/-0)
charms/client-forwardproxy/config.yaml (+13/-0)
charms/client-forwardproxy/copyright (+1/-0)
charms/client-forwardproxy/hooks/config-changed (+61/-0)
charms/client-forwardproxy/hooks/install (+22/-0)
charms/client-forwardproxy/hooks/stop (+6/-0)
charms/client-forwardproxy/icon.svg (+1163/-0)
charms/client-forwardproxy/metadata.yaml (+16/-0)
charms/client-forwardproxy/revision (+1/-0)
charms/client-forwardproxy/scripts/setup-lxd.sh (+29/-0)
charms/dummy-resource/bar.txt (+1/-0)
charms/dummy-resource/baz.txt (+1/-0)
charms/dummy-resource/config.yaml (+5/-0)
charms/dummy-resource/foo.txt (+1/-0)
charms/dummy-resource/hooks/config-changed (+16/-0)
charms/dummy-resource/hooks/install (+17/-0)
charms/dummy-resource/metadata.yaml (+23/-0)
charms/dummy-resource/revision (+1/-0)
charms/dummy-sink/README (+3/-0)
charms/dummy-sink/config.yaml (+5/-0)
charms/dummy-sink/copyright (+1/-0)
charms/dummy-sink/hooks/config-changed (+1/-0)
charms/dummy-sink/hooks/install (+3/-0)
charms/dummy-sink/hooks/source-relation-changed (+13/-0)
charms/dummy-sink/hooks/start (+3/-0)
charms/dummy-sink/metadata.yaml (+18/-0)
charms/dummy-source/README (+3/-0)
charms/dummy-source/config.yaml (+5/-0)
charms/dummy-source/copyright (+1/-0)
charms/dummy-source/hooks/config-changed (+16/-0)
charms/dummy-source/hooks/install (+3/-0)
charms/dummy-source/hooks/start (+3/-0)
charms/dummy-source/metadata.yaml (+19/-0)
charms/dummy-storage/config.yaml (+10/-0)
charms/dummy-storage/hooks/config-changed (+59/-0)
charms/dummy-storage/hooks/install (+13/-0)
charms/dummy-storage/hooks/multi-fs-storage-attached (+7/-0)
charms/dummy-storage/hooks/single-fs-storage-attached (+5/-0)
charms/dummy-storage/hooks/start (+5/-0)
charms/dummy-storage/metadata.yaml (+26/-0)
charms/dummy-storage/revision (+1/-0)
charms/fill-logs/README.md (+3/-0)
charms/fill-logs/actions.yaml (+25/-0)
charms/fill-logs/actions/actions.go (+149/-0)
charms/fill-logs/actions/fill-machine (+3/-0)
charms/fill-logs/actions/fill-unit (+3/-0)
charms/fill-logs/actions/machine-size (+3/-0)
charms/fill-logs/actions/unit-size (+3/-0)
charms/fill-logs/config.yaml (+1/-0)
charms/fill-logs/hooks/install (+5/-0)
charms/fill-logs/metadata.yaml (+13/-0)
charms/jenkins-juju-ci/README.md (+16/-0)
charms/jenkins-juju-ci/config.yaml (+10/-0)
charms/jenkins-juju-ci/copyright (+17/-0)
charms/jenkins-juju-ci/hooks/config-changed (+141/-0)
charms/jenkins-juju-ci/hooks/install (+61/-0)
charms/jenkins-juju-ci/hooks/upgrade-charm (+20/-0)
charms/jenkins-juju-ci/icon.svg (+596/-0)
charms/jenkins-juju-ci/metadata.yaml (+21/-0)
charms/jenkins-juju-ci/scripts/place-slave.sh (+30/-0)
charms/jenkins-juju-ci/scripts/start-jenkins-slave.sh (+9/-0)
charms/jenkins-slave/README.md (+24/-0)
charms/jenkins-slave/config.yaml (+20/-0)
charms/jenkins-slave/copyright (+17/-0)
charms/jenkins-slave/files/default/jenkins-slave (+51/-0)
charms/jenkins-slave/files/init/jenkins-slave.conf (+19/-0)
charms/jenkins-slave/files/logrotate.d/jenkins-slave (+9/-0)
charms/jenkins-slave/files/systemd/system/jenkins-slave.service (+10/-0)
charms/jenkins-slave/hooks/config-changed (+64/-0)
charms/jenkins-slave/hooks/install (+20/-0)
charms/jenkins-slave/hooks/slave-relation-joined (+20/-0)
charms/jenkins-slave/hooks/start (+3/-0)
charms/jenkins-slave/hooks/stop (+3/-0)
charms/jenkins-slave/icon.svg (+596/-0)
charms/jenkins-slave/metadata.yaml (+18/-0)
charms/jenkins-slave/scripts/place-slave.sh (+30/-0)
charms/jenkins-slave/scripts/start-jenkins-slave.sh (+9/-0)
charms/mysql/README.md (+99/-0)
charms/mysql/config.yaml (+70/-0)
charms/mysql/copyright (+17/-0)
charms/mysql/exec.d/charm-helper/charm-pre-install (+5/-0)
charms/mysql/hooks/common.py (+121/-0)
charms/mysql/hooks/config-changed (+356/-0)
charms/mysql/hooks/db-relation-broken (+21/-0)
charms/mysql/hooks/db-relation-joined (+87/-0)
charms/mysql/hooks/ha_relations.py (+146/-0)
charms/mysql/hooks/install (+29/-0)
charms/mysql/hooks/lib/ceph_utils.py (+268/-0)
charms/mysql/hooks/lib/cluster_utils.py (+130/-0)
charms/mysql/hooks/lib/utils.py (+283/-0)
charms/mysql/hooks/master-relation-changed (+86/-0)
charms/mysql/hooks/monitors-relation-broken (+8/-0)
charms/mysql/hooks/monitors-relation-departed (+3/-0)
charms/mysql/hooks/monitors-relation-joined (+7/-0)
charms/mysql/hooks/monitors.common.bash (+8/-0)
charms/mysql/hooks/munin-relation-changed (+26/-0)
charms/mysql/hooks/munin-relation-joined (+6/-0)
charms/mysql/hooks/shared_db_relations.py (+140/-0)
charms/mysql/hooks/slave-relation-broken (+9/-0)
charms/mysql/hooks/slave-relation-changed (+89/-0)
charms/mysql/hooks/slave-relation-joined (+2/-0)
charms/mysql/hooks/start (+1/-0)
charms/mysql/hooks/stop (+3/-0)
charms/mysql/hooks/upgrade-charm (+27/-0)
charms/mysql/icon.svg (+335/-0)
charms/mysql/keys/repo.percona.com (+30/-0)
charms/mysql/metadata.yaml (+45/-0)
charms/mysql/monitors.yaml (+13/-0)
charms/mysql/revision (+1/-0)
charms/mysql/scripts/add_to_cluster (+13/-0)
charms/mysql/scripts/remove_from_cluster (+4/-0)
charms/peer-xplod/README (+32/-0)
charms/peer-xplod/config.yaml (+18/-0)
charms/peer-xplod/copyright (+19/-0)
charms/peer-xplod/hooks/config-changed (+7/-0)
charms/peer-xplod/hooks/install (+4/-0)
charms/peer-xplod/hooks/output-relation-changed (+7/-0)
charms/peer-xplod/hooks/start (+6/-0)
charms/peer-xplod/hooks/stop (+7/-0)
charms/peer-xplod/hooks/update.py (+156/-0)
charms/peer-xplod/hooks/upgrade-charm (+6/-0)
charms/peer-xplod/hooks/xplod-relation-changed (+6/-0)
charms/peer-xplod/metadata.yaml (+16/-0)
charms/simple-resource-http/README (+1/-0)
charms/simple-resource-http/config.yaml (+5/-0)
charms/simple-resource-http/copyright (+1/-0)
charms/simple-resource-http/files/default-file.txt (+1/-0)
charms/simple-resource-http/hooks/config-changed (+21/-0)
charms/simple-resource-http/hooks/install (+3/-0)
charms/simple-resource-http/hooks/start (+3/-0)
charms/simple-resource-http/metadata.yaml (+21/-0)
charms/simple-resource-http/scripts/simple-server.py (+38/-0)
charms/squid-forwardproxy/Makefile (+24/-0)
charms/squid-forwardproxy/README (+24/-0)
charms/squid-forwardproxy/config.yaml (+11/-0)
charms/squid-forwardproxy/copyright (+1/-0)
charms/squid-forwardproxy/hooks/config-changed (+40/-0)
charms/squid-forwardproxy/hooks/install (+14/-0)
charms/squid-forwardproxy/hooks/start (+6/-0)
charms/squid-forwardproxy/hooks/stop (+6/-0)
charms/squid-forwardproxy/icon.svg (+1163/-0)
charms/squid-forwardproxy/metadata.yaml (+16/-0)
charms/squid-forwardproxy/revision (+1/-0)
charms/statusstresser/README.md (+52/-0)
charms/statusstresser/copyright (+17/-0)
charms/statusstresser/hooks/config-changed (+2/-0)
charms/statusstresser/hooks/install (+3/-0)
charms/statusstresser/icon.svg (+279/-0)
charms/statusstresser/metadata.yaml (+15/-0)
charms/statusstresser/revision (+1/-0)
charms/statusstresser/tests/00-setup.sh (+7/-0)
charms/statusstresser/tests/10-deploy-test.py (+71/-0)
charms/ubuntu/README.md (+52/-0)
charms/ubuntu/copyright (+17/-0)
charms/ubuntu/hooks/install (+2/-0)
charms/ubuntu/icon.svg (+279/-0)
charms/ubuntu/metadata.yaml (+14/-0)
charms/ubuntu/revision (+1/-0)
charms/ubuntu/tests/00-setup.sh (+7/-0)
charms/ubuntu/tests/10-deploy-test.py (+71/-0)
charms/wordpress/README.md (+199/-0)
charms/wordpress/config.yaml (+20/-0)
charms/wordpress/copyright (+17/-0)
charms/wordpress/exec.d/charm-helper/charm-pre-install (+5/-0)
charms/wordpress/files/_debug/apc.php (+1364/-0)
charms/wordpress/files/_debug/info.php (+3/-0)
charms/wordpress/files/charm/apache/etc_apache2_conf-d_php5-fpm.conf (+6/-0)
charms/wordpress/files/charm/apache/etc_apache2_sites-enabled_loadbalancer (+21/-0)
charms/wordpress/files/charm/apache/etc_apache2_sites-enabled_wordpress (+20/-0)
charms/wordpress/files/charm/nginx/etc_nginx_nginx.conf (+58/-0)
charms/wordpress/files/charm/nginx/etc_nginx_sites-enabled_loadbalancer (+51/-0)
charms/wordpress/files/charm/nginx/etc_nginx_sites-enabled_wordpress (+82/-0)
charms/wordpress/files/charm/php/php5-fpm_pool.d_www.conf (+42/-0)
charms/wordpress/files/charm/php/php5_conf.d_apc.ini (+13/-0)
charms/wordpress/files/charm/wordpress/advanced-cache.php (+28/-0)
charms/wordpress/hooks/cache-relation-changed (+16/-0)
charms/wordpress/hooks/cache-relation-departed (+16/-0)
charms/wordpress/hooks/config-changed (+170/-0)
charms/wordpress/hooks/db-relation-changed (+102/-0)
charms/wordpress/hooks/db-relation-departed (+5/-0)
charms/wordpress/hooks/install (+65/-0)
charms/wordpress/hooks/loadbalancer-relation-changed (+37/-0)
charms/wordpress/hooks/loadbalancer-relation-joined (+173/-0)
charms/wordpress/hooks/nfs-relation-changed (+32/-0)
charms/wordpress/hooks/nfs-relation-departed (+20/-0)
charms/wordpress/hooks/restart (+4/-0)
charms/wordpress/hooks/start (+5/-0)
charms/wordpress/hooks/stop (+5/-0)
charms/wordpress/hooks/upgrade-charm (+23/-0)
charms/wordpress/hooks/website-relation-joined (+4/-0)
charms/wordpress/icon.svg (+301/-0)
charms/wordpress/inc/common (+215/-0)
charms/wordpress/metadata.yaml (+28/-0)
charms/wordpress/revision (+1/-0)
landscape-scalable.yaml (+48/-0)
mediawiki-scalable.yaml (+121/-0)
openstack-baremetal-7-default.yaml (+335/-0)
openstack-base-lxc.yaml (+262/-0)
openstack-base-lxd.yaml (+262/-0)
precise/dummy-sink/README (+3/-0)
precise/dummy-sink/config.yaml (+5/-0)
precise/dummy-sink/copyright (+1/-0)
precise/dummy-sink/hooks/config-changed (+1/-0)
precise/dummy-sink/hooks/install (+3/-0)
precise/dummy-sink/hooks/source-relation-changed (+13/-0)
precise/dummy-sink/hooks/start (+3/-0)
precise/dummy-sink/hooks/stop (+1/-0)
precise/dummy-sink/metadata.yaml (+10/-0)
precise/dummy-source/README (+3/-0)
precise/dummy-source/config.yaml (+5/-0)
precise/dummy-source/copyright (+1/-0)
precise/dummy-source/hooks/config-changed (+16/-0)
precise/dummy-source/hooks/install (+3/-0)
precise/dummy-source/hooks/start (+3/-0)
precise/dummy-source/hooks/stop (+1/-0)
precise/dummy-source/metadata.yaml (+10/-0)
precise/mysql/README.md (+99/-0)
precise/mysql/config.yaml (+80/-0)
precise/mysql/copyright (+17/-0)
precise/mysql/hooks/common.py (+119/-0)
precise/mysql/hooks/config-changed (+356/-0)
precise/mysql/hooks/db-relation-broken (+21/-0)
precise/mysql/hooks/db-relation-joined (+87/-0)
precise/mysql/hooks/ha_relations.py (+148/-0)
precise/mysql/hooks/install (+27/-0)
precise/mysql/hooks/lib/ceph_utils.py (+316/-0)
precise/mysql/hooks/lib/cluster_utils.py (+130/-0)
precise/mysql/hooks/lib/utils.py (+283/-0)
precise/mysql/hooks/master-relation-changed (+86/-0)
precise/mysql/hooks/monitors-relation-broken (+8/-0)
precise/mysql/hooks/monitors-relation-departed (+3/-0)
precise/mysql/hooks/monitors-relation-joined (+7/-0)
precise/mysql/hooks/monitors.common.bash (+8/-0)
precise/mysql/hooks/munin-relation-changed (+26/-0)
precise/mysql/hooks/munin-relation-joined (+6/-0)
precise/mysql/hooks/shared_db_relations.py (+140/-0)
precise/mysql/hooks/slave-relation-broken (+9/-0)
precise/mysql/hooks/slave-relation-changed (+89/-0)
precise/mysql/hooks/slave-relation-joined (+2/-0)
precise/mysql/hooks/start (+1/-0)
precise/mysql/hooks/stop (+3/-0)
precise/mysql/hooks/upgrade-charm (+27/-0)
precise/mysql/icon.svg (+335/-0)
precise/mysql/keys/repo.percona.com (+30/-0)
precise/mysql/metadata.yaml (+37/-0)
precise/mysql/monitors.yaml (+13/-0)
precise/mysql/revision (+1/-0)
precise/mysql/scripts/add_to_cluster (+13/-0)
precise/mysql/scripts/remove_from_cluster (+4/-0)
precise/ubuntu/README.md (+52/-0)
precise/ubuntu/copyright (+17/-0)
precise/ubuntu/hooks/install (+2/-0)
precise/ubuntu/icon.svg (+279/-0)
precise/ubuntu/metadata.yaml (+7/-0)
precise/ubuntu/revision (+1/-0)
precise/ubuntu/tests/00-setup.sh (+7/-0)
precise/ubuntu/tests/10-deploy-test.py (+71/-0)
precise/wordpress/README.md (+199/-0)
precise/wordpress/config.yaml (+20/-0)
precise/wordpress/copyright (+17/-0)
precise/wordpress/files/_debug/apc.php (+1364/-0)
precise/wordpress/files/_debug/info.php (+3/-0)
precise/wordpress/files/charm/apache/etc_apache2_conf-d_php5-fpm.conf (+6/-0)
precise/wordpress/files/charm/apache/etc_apache2_sites-enabled_loadbalancer (+21/-0)
precise/wordpress/files/charm/apache/etc_apache2_sites-enabled_wordpress (+20/-0)
precise/wordpress/files/charm/nginx/etc_nginx_nginx.conf (+58/-0)
precise/wordpress/files/charm/nginx/etc_nginx_sites-enabled_loadbalancer (+51/-0)
precise/wordpress/files/charm/nginx/etc_nginx_sites-enabled_wordpress (+82/-0)
precise/wordpress/files/charm/php/php5-fpm_pool.d_www.conf (+42/-0)
precise/wordpress/files/charm/php/php5_conf.d_apc.ini (+13/-0)
precise/wordpress/files/charm/wordpress/advanced-cache.php (+28/-0)
precise/wordpress/hooks/cache-relation-changed (+16/-0)
precise/wordpress/hooks/cache-relation-departed (+16/-0)
precise/wordpress/hooks/config-changed (+164/-0)
precise/wordpress/hooks/db-relation-changed (+100/-0)
precise/wordpress/hooks/db-relation-departed (+5/-0)
precise/wordpress/hooks/install (+51/-0)
precise/wordpress/hooks/loadbalancer-relation-changed (+37/-0)
precise/wordpress/hooks/loadbalancer-relation-joined (+173/-0)
precise/wordpress/hooks/nfs-relation-changed (+32/-0)
precise/wordpress/hooks/nfs-relation-departed (+20/-0)
precise/wordpress/hooks/restart (+4/-0)
precise/wordpress/hooks/start (+5/-0)
precise/wordpress/hooks/stop (+5/-0)
precise/wordpress/hooks/upgrade-charm (+23/-0)
precise/wordpress/hooks/website-relation-joined (+4/-0)
precise/wordpress/icon.svg (+301/-0)
precise/wordpress/inc/common (+215/-0)
precise/wordpress/metadata.yaml (+20/-0)
precise/wordpress/revision (+1/-0)
scale-lxc.yaml (+31/-0)
scale-lxd.yaml (+31/-0)
scale2-lxc.yaml (+38/-0)
scale2-lxd.yaml (+38/-0)
scale2lxd.yaml (+38/-0)
simple-scale-bundle-lxc.yaml (+198/-0)
simple-scale-bundle-lxd.yaml (+198/-0)
trusty/chaos-monkey/README (+43/-0)
trusty/chaos-monkey/actions.yaml (+51/-0)
trusty/chaos-monkey/actions/show-logs (+20/-0)
trusty/chaos-monkey/actions/show-monkey-ids (+13/-0)
trusty/chaos-monkey/actions/start (+63/-0)
trusty/chaos-monkey/config.yaml (+15/-0)
trusty/chaos-monkey/copyright (+1/-0)
trusty/chaos-monkey/hooks/config-changed (+1/-0)
trusty/chaos-monkey/hooks/extract_chaos_monkey.bash (+9/-0)
trusty/chaos-monkey/hooks/install (+5/-0)
trusty/chaos-monkey/hooks/start (+1/-0)
trusty/chaos-monkey/hooks/stop (+1/-0)
trusty/chaos-monkey/hooks/upgrade-charm (+2/-0)
trusty/chaos-monkey/icon.svg (+425/-0)
trusty/chaos-monkey/metadata.yaml (+12/-0)
trusty/dummy-sink/README (+3/-0)
trusty/dummy-sink/config.yaml (+5/-0)
trusty/dummy-sink/copyright (+1/-0)
trusty/dummy-sink/hooks/config-changed (+1/-0)
trusty/dummy-sink/hooks/install (+3/-0)
trusty/dummy-sink/hooks/source-relation-changed (+13/-0)
trusty/dummy-sink/hooks/start (+3/-0)
trusty/dummy-sink/hooks/stop (+1/-0)
trusty/dummy-sink/metadata.yaml (+10/-0)
trusty/dummy-source/README (+3/-0)
trusty/dummy-source/config.yaml (+5/-0)
trusty/dummy-source/copyright (+1/-0)
trusty/dummy-source/hooks/config-changed (+16/-0)
trusty/dummy-source/hooks/install (+3/-0)
trusty/dummy-source/hooks/start (+3/-0)
trusty/dummy-source/hooks/stop (+1/-0)
trusty/dummy-source/metadata.yaml (+10/-0)
trusty/fill-logs/README.md (+3/-0)
trusty/fill-logs/actions.yaml (+25/-0)
trusty/fill-logs/actions/actions.go (+149/-0)
trusty/fill-logs/actions/fill-machine (+3/-0)
trusty/fill-logs/actions/fill-unit (+3/-0)
trusty/fill-logs/actions/machine-size (+3/-0)
trusty/fill-logs/actions/unit-size (+3/-0)
trusty/fill-logs/config.yaml (+1/-0)
trusty/fill-logs/hooks/install (+5/-0)
trusty/fill-logs/metadata.yaml (+6/-0)
trusty/haproxy/.bzrignore (+10/-0)
trusty/haproxy/Makefile (+40/-0)
trusty/haproxy/README.md (+241/-0)
trusty/haproxy/charm-helpers.yaml (+4/-0)
trusty/haproxy/cm.py (+193/-0)
trusty/haproxy/config-manager.txt (+6/-0)
trusty/haproxy/config.yaml (+226/-0)
trusty/haproxy/copyright (+17/-0)
trusty/haproxy/data/openssl.cnf (+20/-0)
trusty/haproxy/files/metrics/haproxy_to_statsd.sh (+27/-0)
trusty/haproxy/files/nrpe/check_haproxy.sh (+39/-0)
trusty/haproxy/files/nrpe/check_haproxy_queue_depth.sh (+30/-0)
trusty/haproxy/hooks/charmhelpers/__init__.py (+38/-0)
trusty/haproxy/hooks/charmhelpers/contrib/__init__.py (+15/-0)
trusty/haproxy/hooks/charmhelpers/contrib/charmsupport/__init__.py (+15/-0)
trusty/haproxy/hooks/charmhelpers/contrib/charmsupport/nrpe.py (+360/-0)
trusty/haproxy/hooks/charmhelpers/contrib/charmsupport/volumes.py (+175/-0)
trusty/haproxy/hooks/charmhelpers/core/__init__.py (+15/-0)
trusty/haproxy/hooks/charmhelpers/core/decorators.py (+57/-0)
trusty/haproxy/hooks/charmhelpers/core/fstab.py (+134/-0)
trusty/haproxy/hooks/charmhelpers/core/hookenv.py (+683/-0)
trusty/haproxy/hooks/charmhelpers/core/host.py (+450/-0)
trusty/haproxy/hooks/charmhelpers/core/services/__init__.py (+18/-0)
trusty/haproxy/hooks/charmhelpers/core/services/base.py (+329/-0)
trusty/haproxy/hooks/charmhelpers/core/services/helpers.py (+267/-0)
trusty/haproxy/hooks/charmhelpers/core/strutils.py (+42/-0)
trusty/haproxy/hooks/charmhelpers/core/sysctl.py (+56/-0)
trusty/haproxy/hooks/charmhelpers/core/templating.py (+68/-0)
trusty/haproxy/hooks/charmhelpers/core/unitdata.py (+477/-0)
trusty/haproxy/hooks/charmhelpers/fetch/__init__.py (+447/-0)
trusty/haproxy/hooks/charmhelpers/fetch/archiveurl.py (+161/-0)
trusty/haproxy/hooks/charmhelpers/fetch/bzrurl.py (+78/-0)
trusty/haproxy/hooks/charmhelpers/fetch/giturl.py (+71/-0)
trusty/haproxy/hooks/hooks.py (+1362/-0)
trusty/haproxy/hooks/install (+17/-0)
trusty/haproxy/hooks/munin-relation-changed (+29/-0)
trusty/haproxy/hooks/tests/test_config_changed_hooks.py (+189/-0)
trusty/haproxy/hooks/tests/test_helpers.py (+1023/-0)
trusty/haproxy/hooks/tests/test_install.py (+89/-0)
trusty/haproxy/hooks/tests/test_metrics.py (+75/-0)
trusty/haproxy/hooks/tests/test_nrpe_hooks.py (+24/-0)
trusty/haproxy/hooks/tests/test_peer_hooks.py (+292/-0)
trusty/haproxy/hooks/tests/test_reverseproxy_hooks.py (+650/-0)
trusty/haproxy/hooks/tests/test_statistics_hooks.py (+60/-0)
trusty/haproxy/hooks/tests/test_upgrade_charm.py (+22/-0)
trusty/haproxy/hooks/tests/test_website_hooks.py (+149/-0)
trusty/haproxy/hooks/tests/utils_for_tests.py (+21/-0)
trusty/haproxy/icon.svg (+402/-0)
trusty/haproxy/metadata.yaml (+30/-0)
trusty/haproxy/setup.cfg (+4/-0)
trusty/haproxy/tarmac_tests.sh (+6/-0)
trusty/haproxy/templates/metrics_cronjob.template (+3/-0)
trusty/haproxy/templates/nrpe_service.tmpl (+10/-0)
trusty/haproxy/tests/00_setup.sh (+14/-0)
trusty/haproxy/tests/10_deploy_test.py (+182/-0)
trusty/haproxy/tests/default_apache.tmpl (+41/-0)
trusty/jenkins-slave/README.md (+23/-0)
trusty/jenkins-slave/config.yaml (+9/-0)
trusty/jenkins-slave/copyright (+17/-0)
trusty/jenkins-slave/hooks/install (+55/-0)
trusty/jenkins-slave/hooks/install.d/README.md (+7/-0)
trusty/jenkins-slave/hooks/slave-relation-changed (+28/-0)
trusty/jenkins-slave/hooks/slave-relation-departed (+3/-0)
trusty/jenkins-slave/hooks/slave-relation-joined (+20/-0)
trusty/jenkins-slave/hooks/start (+3/-0)
trusty/jenkins-slave/hooks/stop (+3/-0)
trusty/jenkins-slave/icon.svg (+596/-0)
trusty/jenkins-slave/metadata.yaml (+14/-0)
trusty/jenkins-slave/revision (+1/-0)
trusty/mysql/README.md (+99/-0)
trusty/mysql/config.yaml (+70/-0)
trusty/mysql/copyright (+17/-0)
trusty/mysql/exec.d/charm-helper/charm-pre-install (+5/-0)
trusty/mysql/hooks/common.py (+121/-0)
trusty/mysql/hooks/config-changed (+356/-0)
trusty/mysql/hooks/db-relation-broken (+21/-0)
trusty/mysql/hooks/db-relation-joined (+87/-0)
trusty/mysql/hooks/ha_relations.py (+146/-0)
trusty/mysql/hooks/install (+29/-0)
trusty/mysql/hooks/lib/ceph_utils.py (+268/-0)
trusty/mysql/hooks/lib/cluster_utils.py (+130/-0)
trusty/mysql/hooks/lib/utils.py (+283/-0)
trusty/mysql/hooks/master-relation-changed (+86/-0)
trusty/mysql/hooks/monitors-relation-broken (+8/-0)
trusty/mysql/hooks/monitors-relation-departed (+3/-0)
trusty/mysql/hooks/monitors-relation-joined (+7/-0)
trusty/mysql/hooks/monitors.common.bash (+8/-0)
trusty/mysql/hooks/munin-relation-changed (+26/-0)
trusty/mysql/hooks/munin-relation-joined (+6/-0)
trusty/mysql/hooks/shared_db_relations.py (+140/-0)
trusty/mysql/hooks/slave-relation-broken (+9/-0)
trusty/mysql/hooks/slave-relation-changed (+89/-0)
trusty/mysql/hooks/slave-relation-joined (+2/-0)
trusty/mysql/hooks/start (+1/-0)
trusty/mysql/hooks/stop (+3/-0)
trusty/mysql/hooks/upgrade-charm (+27/-0)
trusty/mysql/icon.svg (+335/-0)
trusty/mysql/keys/repo.percona.com (+30/-0)
trusty/mysql/metadata.yaml (+37/-0)
trusty/mysql/monitors.yaml (+13/-0)
trusty/mysql/revision (+1/-0)
trusty/mysql/scripts/add_to_cluster (+13/-0)
trusty/mysql/scripts/remove_from_cluster (+4/-0)
trusty/statusstresser/README.md (+52/-0)
trusty/statusstresser/copyright (+17/-0)
trusty/statusstresser/hooks/config-changed (+2/-0)
trusty/statusstresser/hooks/install (+3/-0)
trusty/statusstresser/icon.svg (+279/-0)
trusty/statusstresser/metadata.yaml (+7/-0)
trusty/statusstresser/revision (+1/-0)
trusty/statusstresser/tests/00-setup.sh (+7/-0)
trusty/statusstresser/tests/10-deploy-test.py (+71/-0)
trusty/ubuntu/README.md (+52/-0)
trusty/ubuntu/copyright (+17/-0)
trusty/ubuntu/hooks/install (+2/-0)
trusty/ubuntu/icon.svg (+279/-0)
trusty/ubuntu/metadata.yaml (+7/-0)
trusty/ubuntu/revision (+1/-0)
trusty/ubuntu/tests/00-setup.sh (+7/-0)
trusty/ubuntu/tests/10-deploy-test.py (+71/-0)
trusty/wordpress/README.md (+199/-0)
trusty/wordpress/config.yaml (+20/-0)
trusty/wordpress/copyright (+17/-0)
trusty/wordpress/exec.d/charm-helper/charm-pre-install (+5/-0)
trusty/wordpress/files/_debug/apc.php (+1364/-0)
trusty/wordpress/files/_debug/info.php (+3/-0)
trusty/wordpress/files/charm/apache/etc_apache2_conf-d_php5-fpm.conf (+6/-0)
trusty/wordpress/files/charm/apache/etc_apache2_sites-enabled_loadbalancer (+21/-0)
trusty/wordpress/files/charm/apache/etc_apache2_sites-enabled_wordpress (+20/-0)
trusty/wordpress/files/charm/nginx/etc_nginx_nginx.conf (+58/-0)
trusty/wordpress/files/charm/nginx/etc_nginx_sites-enabled_loadbalancer (+51/-0)
trusty/wordpress/files/charm/nginx/etc_nginx_sites-enabled_wordpress (+82/-0)
trusty/wordpress/files/charm/php/php5-fpm_pool.d_www.conf (+42/-0)
trusty/wordpress/files/charm/php/php5_conf.d_apc.ini (+13/-0)
trusty/wordpress/files/charm/wordpress/advanced-cache.php (+28/-0)
trusty/wordpress/hooks/cache-relation-changed (+16/-0)
trusty/wordpress/hooks/cache-relation-departed (+16/-0)
trusty/wordpress/hooks/config-changed (+170/-0)
trusty/wordpress/hooks/db-relation-changed (+102/-0)
trusty/wordpress/hooks/db-relation-departed (+5/-0)
trusty/wordpress/hooks/install (+65/-0)
trusty/wordpress/hooks/loadbalancer-relation-changed (+37/-0)
trusty/wordpress/hooks/loadbalancer-relation-joined (+173/-0)
trusty/wordpress/hooks/nfs-relation-changed (+32/-0)
trusty/wordpress/hooks/nfs-relation-departed (+20/-0)
trusty/wordpress/hooks/restart (+4/-0)
trusty/wordpress/hooks/start (+5/-0)
trusty/wordpress/hooks/stop (+5/-0)
trusty/wordpress/hooks/upgrade-charm (+23/-0)
trusty/wordpress/hooks/website-relation-joined (+4/-0)
trusty/wordpress/icon.svg (+301/-0)
trusty/wordpress/inc/common (+215/-0)
trusty/wordpress/metadata.yaml (+20/-0)
trusty/wordpress/revision (+1/-0)
win2012hvr2/dummy-sink/README (+1/-0)
win2012hvr2/dummy-sink/config.yaml (+5/-0)
win2012hvr2/dummy-sink/copyright (+1/-0)
win2012hvr2/dummy-sink/hooks/source-relation-changed.ps1 (+4/-0)
win2012hvr2/dummy-sink/metadata.yaml (+10/-0)
win2012hvr2/dummy-source/README (+1/-0)
win2012hvr2/dummy-source/config.yaml (+5/-0)
win2012hvr2/dummy-source/copyright (+1/-0)
win2012hvr2/dummy-source/hooks/config-changed.ps1 (+5/-0)
win2012hvr2/dummy-source/hooks/sink-relation-joined.ps1 (+2/-0)
win2012hvr2/dummy-source/metadata.yaml (+10/-0)
xenial/dummy-sink/README (+3/-0)
xenial/dummy-sink/config.yaml (+5/-0)
xenial/dummy-sink/copyright (+1/-0)
xenial/dummy-sink/hooks/config-changed (+1/-0)
xenial/dummy-sink/hooks/install (+3/-0)
xenial/dummy-sink/hooks/source-relation-changed (+13/-0)
xenial/dummy-sink/hooks/start (+3/-0)
xenial/dummy-sink/hooks/stop (+1/-0)
xenial/dummy-sink/metadata.yaml (+10/-0)
xenial/dummy-source/README (+3/-0)
xenial/dummy-source/config.yaml (+5/-0)
xenial/dummy-source/copyright (+1/-0)
xenial/dummy-source/hooks/config-changed (+16/-0)
xenial/dummy-source/hooks/install (+3/-0)
xenial/dummy-source/hooks/sink-relation-joined (+16/-0)
xenial/dummy-source/hooks/start (+3/-0)
xenial/dummy-source/hooks/stop (+1/-0)
xenial/dummy-source/metadata.yaml (+10/-0)
xenial/jenkins-slave/README.md (+23/-0)
xenial/jenkins-slave/config.yaml (+9/-0)
xenial/jenkins-slave/copyright (+17/-0)
xenial/jenkins-slave/hooks/config-changed (+55/-0)
xenial/jenkins-slave/hooks/install (+55/-0)
xenial/jenkins-slave/hooks/install.d/README.md (+7/-0)
xenial/jenkins-slave/hooks/slave-relation-broken (+3/-0)
xenial/jenkins-slave/hooks/slave-relation-changed (+28/-0)
xenial/jenkins-slave/hooks/slave-relation-departed (+3/-0)
xenial/jenkins-slave/hooks/slave-relation-joined (+20/-0)
xenial/jenkins-slave/hooks/start (+3/-0)
xenial/jenkins-slave/hooks/stop (+3/-0)
xenial/jenkins-slave/hooks/upgrade-charm (+55/-0)
xenial/jenkins-slave/icon.svg (+596/-0)
xenial/jenkins-slave/metadata.yaml (+14/-0)
xenial/jenkins-slave/revision (+1/-0)
xenial/mysql/README.md (+99/-0)
xenial/mysql/config.yaml (+70/-0)
xenial/mysql/copyright (+17/-0)
xenial/mysql/exec.d/charm-helper/charm-pre-install (+5/-0)
xenial/mysql/hooks/ceph-relation-changed (+146/-0)
xenial/mysql/hooks/ceph-relation-joined (+146/-0)
xenial/mysql/hooks/cluster-relation-changed (+146/-0)
xenial/mysql/hooks/common.py (+119/-0)
xenial/mysql/hooks/config-changed (+356/-0)
xenial/mysql/hooks/db-admin-relation-joined (+87/-0)
xenial/mysql/hooks/db-relation-broken (+21/-0)
xenial/mysql/hooks/db-relation-joined (+87/-0)
xenial/mysql/hooks/ha-relation-changed (+146/-0)
xenial/mysql/hooks/ha-relation-joined (+146/-0)
xenial/mysql/hooks/ha_relations.py (+146/-0)
xenial/mysql/hooks/install (+27/-0)
xenial/mysql/hooks/lib/ceph_utils.py (+268/-0)
xenial/mysql/hooks/lib/cluster_utils.py (+130/-0)
xenial/mysql/hooks/lib/utils.py (+283/-0)
xenial/mysql/hooks/local-monitors-relation-joined (+7/-0)
xenial/mysql/hooks/master-relation-broken (+86/-0)
xenial/mysql/hooks/master-relation-changed (+86/-0)
xenial/mysql/hooks/master-relation-departed (+86/-0)
xenial/mysql/hooks/monitors-relation-broken (+8/-0)
xenial/mysql/hooks/monitors-relation-departed (+3/-0)
xenial/mysql/hooks/monitors-relation-joined (+7/-0)
xenial/mysql/hooks/monitors.common.bash (+8/-0)
xenial/mysql/hooks/munin-relation-changed (+26/-0)
xenial/mysql/hooks/munin-relation-joined (+6/-0)
xenial/mysql/hooks/shared-db-relation-changed (+140/-0)
xenial/mysql/hooks/shared-db-relation-joined (+140/-0)
xenial/mysql/hooks/shared_db_relations.py (+140/-0)
xenial/mysql/hooks/slave-relation-broken (+9/-0)
xenial/mysql/hooks/slave-relation-changed (+89/-0)
xenial/mysql/hooks/slave-relation-departed (+9/-0)
xenial/mysql/hooks/slave-relation-joined (+2/-0)
xenial/mysql/hooks/start (+1/-0)
xenial/mysql/hooks/stop (+3/-0)
xenial/mysql/hooks/upgrade-charm (+27/-0)
xenial/mysql/icon.svg (+335/-0)
xenial/mysql/metadata.yaml (+37/-0)
xenial/mysql/monitors.yaml (+13/-0)
xenial/mysql/revision (+1/-0)
xenial/mysql/scripts/add_to_cluster (+13/-0)
xenial/mysql/scripts/remove_from_cluster (+4/-0)
xenial/ubuntu/README.md (+52/-0)
xenial/ubuntu/copyright (+17/-0)
xenial/ubuntu/hooks/install (+2/-0)
xenial/ubuntu/icon.svg (+279/-0)
xenial/ubuntu/metadata.yaml (+7/-0)
xenial/ubuntu/revision (+1/-0)
xenial/ubuntu/tests/00-setup.sh (+7/-0)
xenial/ubuntu/tests/10-deploy-test.py (+71/-0)
xenial/wordpress/README.md (+199/-0)
xenial/wordpress/config.yaml (+20/-0)
xenial/wordpress/copyright (+17/-0)
xenial/wordpress/exec.d/charm-helper/charm-pre-install (+5/-0)
xenial/wordpress/files/_debug/apc.php (+1364/-0)
xenial/wordpress/files/_debug/info.php (+3/-0)
xenial/wordpress/files/charm/apache/etc_apache2_conf-d_php5-fpm.conf (+6/-0)
xenial/wordpress/files/charm/apache/etc_apache2_sites-enabled_loadbalancer (+21/-0)
xenial/wordpress/files/charm/apache/etc_apache2_sites-enabled_wordpress (+20/-0)
xenial/wordpress/files/charm/nginx/etc_nginx_nginx.conf (+58/-0)
xenial/wordpress/files/charm/nginx/etc_nginx_sites-enabled_loadbalancer (+51/-0)
xenial/wordpress/files/charm/nginx/etc_nginx_sites-enabled_wordpress (+82/-0)
xenial/wordpress/files/charm/php/php5-fpm_pool.d_www.conf (+42/-0)
xenial/wordpress/files/charm/php/php5_conf.d_apc.ini (+13/-0)
xenial/wordpress/files/charm/wordpress/advanced-cache.php (+28/-0)
xenial/wordpress/hooks/cache-relation-broken (+16/-0)
xenial/wordpress/hooks/cache-relation-changed (+16/-0)
xenial/wordpress/hooks/cache-relation-departed (+16/-0)
xenial/wordpress/hooks/config-changed (+164/-0)
xenial/wordpress/hooks/db-relation-broken (+5/-0)
xenial/wordpress/hooks/db-relation-changed (+100/-0)
xenial/wordpress/hooks/db-relation-departed (+5/-0)
xenial/wordpress/hooks/install (+63/-0)
xenial/wordpress/hooks/loadbalancer-rebuild (+173/-0)
xenial/wordpress/hooks/loadbalancer-relation-broken (+173/-0)
xenial/wordpress/hooks/loadbalancer-relation-changed (+37/-0)
xenial/wordpress/hooks/loadbalancer-relation-departed (+173/-0)
xenial/wordpress/hooks/loadbalancer-relation-joined (+173/-0)
xenial/wordpress/hooks/nfs-relation-broken (+20/-0)
xenial/wordpress/hooks/nfs-relation-changed (+32/-0)
xenial/wordpress/hooks/nfs-relation-departed (+20/-0)
xenial/wordpress/hooks/restart (+4/-0)
xenial/wordpress/hooks/start (+5/-0)
xenial/wordpress/hooks/stop (+5/-0)
xenial/wordpress/hooks/upgrade-charm (+23/-0)
xenial/wordpress/hooks/website-relation-joined (+4/-0)
xenial/wordpress/icon.svg (+301/-0)
xenial/wordpress/inc/common (+215/-0)
xenial/wordpress/metadata.yaml (+20/-0)
xenial/wordpress/revision (+1/-0)
yakkety/dummy-sink/README (+3/-0)
yakkety/dummy-sink/config.yaml (+5/-0)
yakkety/dummy-sink/copyright (+1/-0)
yakkety/dummy-sink/hooks/config-changed (+1/-0)
yakkety/dummy-sink/hooks/install (+3/-0)
yakkety/dummy-sink/hooks/source-relation-changed (+13/-0)
yakkety/dummy-sink/hooks/start (+3/-0)
yakkety/dummy-sink/hooks/stop (+1/-0)
yakkety/dummy-sink/metadata.yaml (+10/-0)
yakkety/dummy-source/README (+3/-0)
yakkety/dummy-source/config.yaml (+5/-0)
yakkety/dummy-source/copyright (+1/-0)
yakkety/dummy-source/hooks/config-changed (+16/-0)
yakkety/dummy-source/hooks/install (+3/-0)
yakkety/dummy-source/hooks/sink-relation-joined (+16/-0)
yakkety/dummy-source/hooks/start (+3/-0)
yakkety/dummy-source/hooks/stop (+1/-0)
yakkety/dummy-source/metadata.yaml (+10/-0)
yakkety/jenkins-slave/README.md (+23/-0)
yakkety/jenkins-slave/config.yaml (+9/-0)
yakkety/jenkins-slave/copyright (+17/-0)
yakkety/jenkins-slave/hooks/config-changed (+55/-0)
yakkety/jenkins-slave/hooks/install (+55/-0)
yakkety/jenkins-slave/hooks/install.d/README.md (+7/-0)
yakkety/jenkins-slave/hooks/slave-relation-broken (+3/-0)
yakkety/jenkins-slave/hooks/slave-relation-changed (+28/-0)
yakkety/jenkins-slave/hooks/slave-relation-departed (+3/-0)
yakkety/jenkins-slave/hooks/slave-relation-joined (+20/-0)
yakkety/jenkins-slave/hooks/start (+3/-0)
yakkety/jenkins-slave/hooks/stop (+3/-0)
yakkety/jenkins-slave/hooks/upgrade-charm (+55/-0)
yakkety/jenkins-slave/icon.svg (+596/-0)
yakkety/jenkins-slave/metadata.yaml (+14/-0)
yakkety/jenkins-slave/revision (+1/-0)
yakkety/mysql/README.md (+99/-0)
yakkety/mysql/config.yaml (+70/-0)
yakkety/mysql/copyright (+17/-0)
yakkety/mysql/exec.d/charm-helper/charm-pre-install (+5/-0)
yakkety/mysql/hooks/ceph-relation-changed (+146/-0)
yakkety/mysql/hooks/ceph-relation-joined (+146/-0)
yakkety/mysql/hooks/cluster-relation-changed (+146/-0)
yakkety/mysql/hooks/common.py (+119/-0)
yakkety/mysql/hooks/config-changed (+356/-0)
yakkety/mysql/hooks/db-admin-relation-joined (+87/-0)
yakkety/mysql/hooks/db-relation-broken (+21/-0)
yakkety/mysql/hooks/db-relation-joined (+87/-0)
yakkety/mysql/hooks/ha-relation-changed (+146/-0)
yakkety/mysql/hooks/ha-relation-joined (+146/-0)
yakkety/mysql/hooks/ha_relations.py (+146/-0)
yakkety/mysql/hooks/install (+27/-0)
yakkety/mysql/hooks/lib/ceph_utils.py (+268/-0)
yakkety/mysql/hooks/lib/cluster_utils.py (+130/-0)
yakkety/mysql/hooks/lib/utils.py (+283/-0)
yakkety/mysql/hooks/local-monitors-relation-joined (+7/-0)
yakkety/mysql/hooks/master-relation-broken (+86/-0)
yakkety/mysql/hooks/master-relation-changed (+86/-0)
yakkety/mysql/hooks/master-relation-departed (+86/-0)
yakkety/mysql/hooks/monitors-relation-broken (+8/-0)
yakkety/mysql/hooks/monitors-relation-departed (+3/-0)
yakkety/mysql/hooks/monitors-relation-joined (+7/-0)
yakkety/mysql/hooks/monitors.common.bash (+8/-0)
yakkety/mysql/hooks/munin-relation-changed (+26/-0)
yakkety/mysql/hooks/munin-relation-joined (+6/-0)
yakkety/mysql/hooks/shared-db-relation-changed (+140/-0)
yakkety/mysql/hooks/shared-db-relation-joined (+140/-0)
yakkety/mysql/hooks/shared_db_relations.py (+140/-0)
yakkety/mysql/hooks/slave-relation-broken (+9/-0)
yakkety/mysql/hooks/slave-relation-changed (+89/-0)
yakkety/mysql/hooks/slave-relation-departed (+9/-0)
yakkety/mysql/hooks/slave-relation-joined (+2/-0)
yakkety/mysql/hooks/start (+1/-0)
yakkety/mysql/hooks/stop (+3/-0)
yakkety/mysql/hooks/upgrade-charm (+27/-0)
yakkety/mysql/icon.svg (+335/-0)
yakkety/mysql/metadata.yaml (+37/-0)
yakkety/mysql/monitors.yaml (+13/-0)
yakkety/mysql/revision (+1/-0)
yakkety/mysql/scripts/add_to_cluster (+13/-0)
yakkety/mysql/scripts/remove_from_cluster (+4/-0)
yakkety/ubuntu/README.md (+52/-0)
yakkety/ubuntu/copyright (+17/-0)
yakkety/ubuntu/hooks/install (+2/-0)
yakkety/ubuntu/icon.svg (+279/-0)
yakkety/ubuntu/metadata.yaml (+7/-0)
yakkety/ubuntu/revision (+1/-0)
yakkety/ubuntu/tests/00-setup.sh (+7/-0)
yakkety/ubuntu/tests/10-deploy-test.py (+71/-0)
yakkety/wordpress/README.md (+199/-0)
yakkety/wordpress/config.yaml (+20/-0)
yakkety/wordpress/copyright (+17/-0)
yakkety/wordpress/exec.d/charm-helper/charm-pre-install (+5/-0)
yakkety/wordpress/files/_debug/apc.php (+1364/-0)
yakkety/wordpress/files/_debug/info.php (+3/-0)
yakkety/wordpress/files/charm/apache/etc_apache2_conf-d_php5-fpm.conf (+6/-0)
yakkety/wordpress/files/charm/apache/etc_apache2_sites-enabled_loadbalancer (+21/-0)
yakkety/wordpress/files/charm/apache/etc_apache2_sites-enabled_wordpress (+20/-0)
yakkety/wordpress/files/charm/nginx/etc_nginx_nginx.conf (+58/-0)
yakkety/wordpress/files/charm/nginx/etc_nginx_sites-enabled_loadbalancer (+51/-0)
yakkety/wordpress/files/charm/nginx/etc_nginx_sites-enabled_wordpress (+82/-0)
yakkety/wordpress/files/charm/php/php5-fpm_pool.d_www.conf (+42/-0)
yakkety/wordpress/files/charm/php/php5_conf.d_apc.ini (+13/-0)
yakkety/wordpress/files/charm/wordpress/advanced-cache.php (+28/-0)
yakkety/wordpress/hooks/cache-relation-broken (+16/-0)
yakkety/wordpress/hooks/cache-relation-changed (+16/-0)
yakkety/wordpress/hooks/cache-relation-departed (+16/-0)
yakkety/wordpress/hooks/config-changed (+164/-0)
yakkety/wordpress/hooks/db-relation-broken (+5/-0)
yakkety/wordpress/hooks/db-relation-changed (+100/-0)
yakkety/wordpress/hooks/db-relation-departed (+5/-0)
yakkety/wordpress/hooks/install (+63/-0)
yakkety/wordpress/hooks/loadbalancer-rebuild (+173/-0)
yakkety/wordpress/hooks/loadbalancer-relation-broken (+173/-0)
yakkety/wordpress/hooks/loadbalancer-relation-changed (+37/-0)
yakkety/wordpress/hooks/loadbalancer-relation-departed (+173/-0)
yakkety/wordpress/hooks/loadbalancer-relation-joined (+173/-0)
yakkety/wordpress/hooks/nfs-relation-broken (+20/-0)
yakkety/wordpress/hooks/nfs-relation-changed (+32/-0)
yakkety/wordpress/hooks/nfs-relation-departed (+20/-0)
yakkety/wordpress/hooks/restart (+4/-0)
yakkety/wordpress/hooks/start (+5/-0)
yakkety/wordpress/hooks/stop (+5/-0)
yakkety/wordpress/hooks/upgrade-charm (+23/-0)
yakkety/wordpress/hooks/website-relation-joined (+4/-0)
yakkety/wordpress/icon.svg (+301/-0)
yakkety/wordpress/inc/common (+215/-0)
yakkety/wordpress/metadata.yaml (+20/-0)
yakkety/wordpress/revision (+1/-0)
To merge this branch: bzr merge lp:~veebers/juju-ci-tools/add-dumm-storage-charm
Reviewer Review Type Date Requested Status
Juju Release Engineering Pending
Review via email: mp+319882@code.launchpad.net

This proposal has been superseded by a proposal from 2017-03-15.

Commit message

Dummy charm that allows storing a token value to storage.

Description of the change

Dummy charm that allows storing a token value to storage.

This is an attempt at making a charm that we can use to test persistent storage.
It will be used to make sure that data persists when detached (either directly or through application removal) and re-attached to an application.

e.g.
  - deploy and set token for the single filesystem.
  - check token value in the file stored on disk
  - remove application
  - deploy again, this time using the existing storage unit
  - check token values etc.

To post a comment you must log in.
78. By Christopher Lee

Remove missleading 'blocked' term from status.

79. By Christopher Lee

Remove and shuffle series.

80. By Christopher Lee

Remove revision file.

Unmerged revisions

80. By Christopher Lee

Remove revision file.

79. By Christopher Lee

Remove and shuffle series.

78. By Christopher Lee

Remove missleading 'blocked' term from status.

77. By Christopher Lee

Change multi-fs limit.

76. By Christopher Lee

Now able to update the config file.

75. By Christopher Lee

WIP

74. By Christopher Lee

First rough pass.

73. By Christopher Lee

Sets active/maintenance status.

72. By Christopher Lee

Charm that provides a simple http server that serves a file provided as a charm resouce.

71. By Christopher Lee

Added peer-xplod charm.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file 'bundles-lxc.yaml'
2--- bundles-lxc.yaml 1970-01-01 00:00:00 +0000
3+++ bundles-lxc.yaml 2017-03-14 23:38:01 +0000
4@@ -0,0 +1,56 @@
5+dense-scaled:
6+ services:
7+ juju-gui:
8+ charm: "cs:trusty/juju-gui-16"
9+ num_units: 1
10+ options:
11+ "login-help": "null"
12+ password: "null"
13+ "ssl-cert-contents": "null"
14+ "ssl-key-contents": "null"
15+ annotations:
16+ "gui-x": "425.87542724609375"
17+ "gui-y": "25.871253967285156"
18+ to:
19+ - "0"
20+ apache2:
21+ charm: "cs:trusty/apache2-1"
22+ constraints: mem=2G
23+ num_units: 1
24+ annotations:
25+ "gui-x": "742.5529174804688"
26+ "gui-y": "28.562591552734375"
27+ "apache2-reverseproxy":
28+ charm: "cs:~abentley/trusty/apache2-reverseproxy-4"
29+ num_units: 0
30+ annotations:
31+ "gui-x": "737.6683349609375"
32+ "gui-y": "318.2304229736328"
33+ haproxy:
34+ charm: "cs:trusty/haproxy-2"
35+ constraints: mem=2G
36+ num_units: 1
37+ annotations:
38+ "gui-x": "1152.2492065429688"
39+ "gui-y": "321.7662353515625"
40+ "python-django":
41+ charm: "cs:trusty/python-django-12"
42+ num_units: 2
43+ options:
44+ django_allowed_hosts: "null"
45+ django_extra_settings: "null"
46+ "unit-config": "null"
47+ annotations:
48+ "gui-x": "1164.0284423828125"
49+ "gui-y": "660.1253356933594"
50+ to:
51+ - "lxc:haproxy=0"
52+ - "lxc:haproxy=0"
53+ relations:
54+ - - "haproxy:reverseproxy"
55+ - "python-django:website"
56+ - - "apache2-reverseproxy:website"
57+ - "apache2:website"
58+ - - "apache2-reverseproxy:website"
59+ - "haproxy:website"
60+ series: trusty
61
62=== added file 'bundles-lxd.yaml'
63--- bundles-lxd.yaml 1970-01-01 00:00:00 +0000
64+++ bundles-lxd.yaml 2017-03-14 23:38:01 +0000
65@@ -0,0 +1,56 @@
66+dense-scaled:
67+ services:
68+ juju-gui:
69+ charm: "cs:trusty/juju-gui-16"
70+ num_units: 1
71+ options:
72+ "login-help": "null"
73+ password: "null"
74+ "ssl-cert-contents": "null"
75+ "ssl-key-contents": "null"
76+ annotations:
77+ "gui-x": "425.87542724609375"
78+ "gui-y": "25.871253967285156"
79+ to:
80+ - "0"
81+ apache2:
82+ charm: "cs:trusty/apache2-1"
83+ constraints: mem=2G
84+ num_units: 1
85+ annotations:
86+ "gui-x": "742.5529174804688"
87+ "gui-y": "28.562591552734375"
88+ "apache2-reverseproxy":
89+ charm: "cs:~abentley/trusty/apache2-reverseproxy-4"
90+ num_units: 0
91+ annotations:
92+ "gui-x": "737.6683349609375"
93+ "gui-y": "318.2304229736328"
94+ haproxy:
95+ charm: "cs:trusty/haproxy-2"
96+ constraints: mem=2G
97+ num_units: 1
98+ annotations:
99+ "gui-x": "1152.2492065429688"
100+ "gui-y": "321.7662353515625"
101+ "python-django":
102+ charm: "cs:trusty/python-django-12"
103+ num_units: 2
104+ options:
105+ django_allowed_hosts: "null"
106+ django_extra_settings: "null"
107+ "unit-config": "null"
108+ annotations:
109+ "gui-x": "1164.0284423828125"
110+ "gui-y": "660.1253356933594"
111+ to:
112+ - "lxd:haproxy=0"
113+ - "lxd:haproxy=0"
114+ relations:
115+ - - "haproxy:reverseproxy"
116+ - "python-django:website"
117+ - - "apache2-reverseproxy:website"
118+ - "apache2:website"
119+ - - "apache2-reverseproxy:website"
120+ - "haproxy:website"
121+ series: trusty
122
123=== added directory 'centos7'
124=== added directory 'centos7/dummy-sink'
125=== added file 'centos7/dummy-sink/README'
126--- centos7/dummy-sink/README 1970-01-01 00:00:00 +0000
127+++ centos7/dummy-sink/README 2017-03-14 23:38:01 +0000
128@@ -0,0 +1,1 @@
129+CentOS version of basic dummy-sink testing charm.
130
131=== added file 'centos7/dummy-sink/config.yaml'
132--- centos7/dummy-sink/config.yaml 1970-01-01 00:00:00 +0000
133+++ centos7/dummy-sink/config.yaml 2017-03-14 23:38:01 +0000
134@@ -0,0 +1,5 @@
135+options:
136+ token:
137+ type: string
138+ default: ''
139+ description: Token used to prove that the relation is working
140
141=== added file 'centos7/dummy-sink/copyright'
142--- centos7/dummy-sink/copyright 1970-01-01 00:00:00 +0000
143+++ centos7/dummy-sink/copyright 2017-03-14 23:38:01 +0000
144@@ -0,0 +1,1 @@
145+Copyright 2014 Canonical Ltd.
146
147=== added directory 'centos7/dummy-sink/hooks'
148=== added file 'centos7/dummy-sink/hooks/source-relation-changed'
149--- centos7/dummy-sink/hooks/source-relation-changed 1970-01-01 00:00:00 +0000
150+++ centos7/dummy-sink/hooks/source-relation-changed 2017-03-14 23:38:01 +0000
151@@ -0,0 +1,3 @@
152+#!/bin/bash
153+mkdir -p /var/run/dummy-sink
154+relation-get token > /var/run/dummy-sink/token
155
156=== added file 'centos7/dummy-sink/metadata.yaml'
157--- centos7/dummy-sink/metadata.yaml 1970-01-01 00:00:00 +0000
158+++ centos7/dummy-sink/metadata.yaml 2017-03-14 23:38:01 +0000
159@@ -0,0 +1,10 @@
160+name: dummy-sink
161+maintainer: Martin Packman <martin.packman@canonical.com>
162+summary: Dummy charm that accepts data
163+description: |
164+ This dummy charm is used to verify that a relationship is created correctly
165+provides:
166+ source:
167+ interface: dummy-token
168+categories:
169+ - misc
170
171=== added directory 'centos7/dummy-source'
172=== added file 'centos7/dummy-source/README'
173--- centos7/dummy-source/README 1970-01-01 00:00:00 +0000
174+++ centos7/dummy-source/README 2017-03-14 23:38:01 +0000
175@@ -0,0 +1,1 @@
176+CentOS version of basic dummy-source testing charm.
177
178=== added file 'centos7/dummy-source/config.yaml'
179--- centos7/dummy-source/config.yaml 1970-01-01 00:00:00 +0000
180+++ centos7/dummy-source/config.yaml 2017-03-14 23:38:01 +0000
181@@ -0,0 +1,5 @@
182+options:
183+ token:
184+ type: string
185+ default: ''
186+ description: Token used to prove that the relation is working
187
188=== added file 'centos7/dummy-source/copyright'
189--- centos7/dummy-source/copyright 1970-01-01 00:00:00 +0000
190+++ centos7/dummy-source/copyright 2017-03-14 23:38:01 +0000
191@@ -0,0 +1,1 @@
192+Copyright 2014 Canonical Ltd.
193
194=== added directory 'centos7/dummy-source/hooks'
195=== added file 'centos7/dummy-source/hooks/config-changed'
196--- centos7/dummy-source/hooks/config-changed 1970-01-01 00:00:00 +0000
197+++ centos7/dummy-source/hooks/config-changed 2017-03-14 23:38:01 +0000
198@@ -0,0 +1,6 @@
199+#!/bin/bash
200+set -eux
201+token="$(config-get token)"
202+for relation_id in $(relation-ids sink); do
203+ relation-set -r $relation_id token="$token"
204+done
205
206=== added symlink 'centos7/dummy-source/hooks/sink-relation-joined'
207=== target is u'config-changed'
208=== added file 'centos7/dummy-source/metadata.yaml'
209--- centos7/dummy-source/metadata.yaml 1970-01-01 00:00:00 +0000
210+++ centos7/dummy-source/metadata.yaml 2017-03-14 23:38:01 +0000
211@@ -0,0 +1,10 @@
212+name: dummy-source
213+maintainer: Martin Packman <martin.packman@canonical.com>
214+summary: Dummy charm that provides data
215+description: |
216+ This dummy charm is used to verify that a relationship is created correctly
217+requires:
218+ sink:
219+ interface: dummy-token
220+categories:
221+ - misc
222
223=== added directory 'charms'
224=== added directory 'charms-centos'
225=== added directory 'charms-centos/dummy-sink'
226=== added file 'charms-centos/dummy-sink/README'
227--- charms-centos/dummy-sink/README 1970-01-01 00:00:00 +0000
228+++ charms-centos/dummy-sink/README 2017-03-14 23:38:01 +0000
229@@ -0,0 +1,1 @@
230+CentOS version of basic dummy-sink testing charm.
231
232=== added file 'charms-centos/dummy-sink/config.yaml'
233--- charms-centos/dummy-sink/config.yaml 1970-01-01 00:00:00 +0000
234+++ charms-centos/dummy-sink/config.yaml 2017-03-14 23:38:01 +0000
235@@ -0,0 +1,5 @@
236+options:
237+ token:
238+ type: string
239+ default: ''
240+ description: Token used to prove that the relation is working
241
242=== added file 'charms-centos/dummy-sink/copyright'
243--- charms-centos/dummy-sink/copyright 1970-01-01 00:00:00 +0000
244+++ charms-centos/dummy-sink/copyright 2017-03-14 23:38:01 +0000
245@@ -0,0 +1,1 @@
246+Copyright 2014 Canonical Ltd.
247
248=== added directory 'charms-centos/dummy-sink/hooks'
249=== added file 'charms-centos/dummy-sink/hooks/install'
250--- charms-centos/dummy-sink/hooks/install 1970-01-01 00:00:00 +0000
251+++ charms-centos/dummy-sink/hooks/install 2017-03-14 23:38:01 +0000
252@@ -0,0 +1,4 @@
253+#!/bin/bash
254+set -eux
255+
256+status-set maintenance "Installed" || true
257
258=== added file 'charms-centos/dummy-sink/hooks/source-relation-changed'
259--- charms-centos/dummy-sink/hooks/source-relation-changed 1970-01-01 00:00:00 +0000
260+++ charms-centos/dummy-sink/hooks/source-relation-changed 2017-03-14 23:38:01 +0000
261@@ -0,0 +1,13 @@
262+#!/bin/bash
263+set -eux
264+
265+mkdir -p /var/run/dummy-sink
266+token=$(relation-get token)
267+echo "$token" > /var/run/dummy-sink/token
268+if [[ -z $token ]]; then
269+ juju-log -l INFO "Waiting for token"
270+ status-set waiting "Waiting for token" || true
271+else
272+ juju-log -l INFO "Token is $token"
273+ status-set active "Token is $token" || true
274+fi
275
276=== added file 'charms-centos/dummy-sink/hooks/start'
277--- charms-centos/dummy-sink/hooks/start 1970-01-01 00:00:00 +0000
278+++ charms-centos/dummy-sink/hooks/start 2017-03-14 23:38:01 +0000
279@@ -0,0 +1,4 @@
280+#!/bin/bash
281+set -eux
282+
283+status-set maintenance "Started" || true
284
285=== added file 'charms-centos/dummy-sink/metadata.yaml'
286--- charms-centos/dummy-sink/metadata.yaml 1970-01-01 00:00:00 +0000
287+++ charms-centos/dummy-sink/metadata.yaml 2017-03-14 23:38:01 +0000
288@@ -0,0 +1,12 @@
289+name: dummy-sink
290+maintainer: Martin Packman <martin.packman@canonical.com>
291+summary: Dummy charm that accepts data
292+description: |
293+ This dummy charm is used to verify that a relationship is created correctly
294+provides:
295+ source:
296+ interface: dummy-token
297+categories:
298+ - misc
299+series:
300+ - centos7
301
302=== added directory 'charms-centos/dummy-source'
303=== added file 'charms-centos/dummy-source/README'
304--- charms-centos/dummy-source/README 1970-01-01 00:00:00 +0000
305+++ charms-centos/dummy-source/README 2017-03-14 23:38:01 +0000
306@@ -0,0 +1,1 @@
307+CentOS version of basic dummy-source testing charm.
308
309=== added file 'charms-centos/dummy-source/config.yaml'
310--- charms-centos/dummy-source/config.yaml 1970-01-01 00:00:00 +0000
311+++ charms-centos/dummy-source/config.yaml 2017-03-14 23:38:01 +0000
312@@ -0,0 +1,5 @@
313+options:
314+ token:
315+ type: string
316+ default: ''
317+ description: Token used to prove that the relation is working
318
319=== added file 'charms-centos/dummy-source/copyright'
320--- charms-centos/dummy-source/copyright 1970-01-01 00:00:00 +0000
321+++ charms-centos/dummy-source/copyright 2017-03-14 23:38:01 +0000
322@@ -0,0 +1,1 @@
323+Copyright 2014 Canonical Ltd.
324
325=== added directory 'charms-centos/dummy-source/hooks'
326=== added file 'charms-centos/dummy-source/hooks/config-changed'
327--- charms-centos/dummy-source/hooks/config-changed 1970-01-01 00:00:00 +0000
328+++ charms-centos/dummy-source/hooks/config-changed 2017-03-14 23:38:01 +0000
329@@ -0,0 +1,16 @@
330+#!/bin/bash
331+set -eux
332+
333+juju-log -l INFO "Getting token"
334+status-set maintenance "Getting token" || true
335+token="$(config-get token)"
336+for relation_id in $(relation-ids sink); do
337+ relation-set -r $relation_id token="$token"
338+done
339+if [[ -z $token ]]; then
340+ juju-log -l WARNING "Blocked: set the token"
341+ status-set blocked "Set the token" || true
342+else
343+ juju-log -l INFO "Token is $token"
344+ status-set active "Token is $token" || true
345+fi
346
347=== added file 'charms-centos/dummy-source/hooks/install'
348--- charms-centos/dummy-source/hooks/install 1970-01-01 00:00:00 +0000
349+++ charms-centos/dummy-source/hooks/install 2017-03-14 23:38:01 +0000
350@@ -0,0 +1,4 @@
351+#!/bin/bash
352+set -eux
353+
354+status-set maintenance "Installed" || true
355
356=== added symlink 'charms-centos/dummy-source/hooks/sink-relation-joined'
357=== target is u'config-changed'
358=== added file 'charms-centos/dummy-source/hooks/start'
359--- charms-centos/dummy-source/hooks/start 1970-01-01 00:00:00 +0000
360+++ charms-centos/dummy-source/hooks/start 2017-03-14 23:38:01 +0000
361@@ -0,0 +1,4 @@
362+#!/bin/bash
363+set -eux
364+
365+status-set maintenance "Started" || true
366
367=== added file 'charms-centos/dummy-source/metadata.yaml'
368--- charms-centos/dummy-source/metadata.yaml 1970-01-01 00:00:00 +0000
369+++ charms-centos/dummy-source/metadata.yaml 2017-03-14 23:38:01 +0000
370@@ -0,0 +1,12 @@
371+name: dummy-source
372+maintainer: Martin Packman <martin.packman@canonical.com>
373+summary: Dummy charm that provides data
374+description: |
375+ This dummy charm is used to verify that a relationship is created correctly
376+requires:
377+ sink:
378+ interface: dummy-token
379+categories:
380+ - misc
381+series:
382+ - centos7
383
384=== added directory 'charms-win'
385=== added directory 'charms-win/dummy-sink'
386=== added file 'charms-win/dummy-sink/README'
387--- charms-win/dummy-sink/README 1970-01-01 00:00:00 +0000
388+++ charms-win/dummy-sink/README 2017-03-14 23:38:01 +0000
389@@ -0,0 +1,1 @@
390+Windows version of basic dummy-sink testing charm.
391
392=== added file 'charms-win/dummy-sink/config.yaml'
393--- charms-win/dummy-sink/config.yaml 1970-01-01 00:00:00 +0000
394+++ charms-win/dummy-sink/config.yaml 2017-03-14 23:38:01 +0000
395@@ -0,0 +1,5 @@
396+options:
397+ token:
398+ type: string
399+ default: ''
400+ description: Token used to prove that the relation is working
401
402=== added file 'charms-win/dummy-sink/copyright'
403--- charms-win/dummy-sink/copyright 1970-01-01 00:00:00 +0000
404+++ charms-win/dummy-sink/copyright 2017-03-14 23:38:01 +0000
405@@ -0,0 +1,1 @@
406+Copyright 2015 Canonical Ltd.
407
408=== added directory 'charms-win/dummy-sink/hooks'
409=== added file 'charms-win/dummy-sink/hooks/install.ps1'
410--- charms-win/dummy-sink/hooks/install.ps1 1970-01-01 00:00:00 +0000
411+++ charms-win/dummy-sink/hooks/install.ps1 2017-03-14 23:38:01 +0000
412@@ -0,0 +1,2 @@
413+juju-log.exe "Installed"
414+status-set.exe "waiting" "Installed"
415
416=== added file 'charms-win/dummy-sink/hooks/source-relation-changed.ps1'
417--- charms-win/dummy-sink/hooks/source-relation-changed.ps1 1970-01-01 00:00:00 +0000
418+++ charms-win/dummy-sink/hooks/source-relation-changed.ps1 2017-03-14 23:38:01 +0000
419@@ -0,0 +1,8 @@
420+status-set.exe "maintenance" "Updating token"
421+$path = join-path $ENV:ProgramData dummy-sink
422+mkdir $path
423+$tokenpath = join-path $path token
424+relation-get token > $tokenpath
425+$current_token = relation-get token
426+juju-log.exe "Token is $current_token"
427+status-set.exe "active" "Token is $current_token"
428
429=== added file 'charms-win/dummy-sink/hooks/start.ps1'
430--- charms-win/dummy-sink/hooks/start.ps1 1970-01-01 00:00:00 +0000
431+++ charms-win/dummy-sink/hooks/start.ps1 2017-03-14 23:38:01 +0000
432@@ -0,0 +1,2 @@
433+juju-log.exe "Started"
434+status-set.exe "waiting" "Started"
435
436=== added file 'charms-win/dummy-sink/metadata.yaml'
437--- charms-win/dummy-sink/metadata.yaml 1970-01-01 00:00:00 +0000
438+++ charms-win/dummy-sink/metadata.yaml 2017-03-14 23:38:01 +0000
439@@ -0,0 +1,21 @@
440+name: dummy-sink
441+maintainer: Martin Packman <martin.packman@canonical.com>
442+summary: Dummy charm that accepts data
443+description: |
444+ This dummy charm is used to verify that a relationship is created correctly
445+provides:
446+ source:
447+ interface: dummy-token
448+categories:
449+ - misc
450+series:
451+ - win2012hvr2
452+ - win2012hv
453+ - win2012r2
454+ - win2012
455+ - win2016
456+ - win2016nano
457+ - win10
458+ - win8
459+ - win81
460+ - win7
461
462=== added directory 'charms-win/dummy-source'
463=== added file 'charms-win/dummy-source/README'
464--- charms-win/dummy-source/README 1970-01-01 00:00:00 +0000
465+++ charms-win/dummy-source/README 2017-03-14 23:38:01 +0000
466@@ -0,0 +1,1 @@
467+Windows version of basic dummy-source testing charm.
468
469=== added file 'charms-win/dummy-source/config.yaml'
470--- charms-win/dummy-source/config.yaml 1970-01-01 00:00:00 +0000
471+++ charms-win/dummy-source/config.yaml 2017-03-14 23:38:01 +0000
472@@ -0,0 +1,5 @@
473+options:
474+ token:
475+ type: string
476+ default: ''
477+ description: Token used to prove that the relation is working
478
479=== added file 'charms-win/dummy-source/copyright'
480--- charms-win/dummy-source/copyright 1970-01-01 00:00:00 +0000
481+++ charms-win/dummy-source/copyright 2017-03-14 23:38:01 +0000
482@@ -0,0 +1,1 @@
483+Copyright 2015 Canonical Ltd.
484
485=== added directory 'charms-win/dummy-source/hooks'
486=== added file 'charms-win/dummy-source/hooks/config-changed.ps1'
487--- charms-win/dummy-source/hooks/config-changed.ps1 1970-01-01 00:00:00 +0000
488+++ charms-win/dummy-source/hooks/config-changed.ps1 2017-03-14 23:38:01 +0000
489@@ -0,0 +1,7 @@
490+$token = config-get token
491+$relations = relation-ids sink
492+foreach ($relation_id in $relations.split()) {
493+ relation-set -r $relation_id token="$token"
494+}
495+juju-log.exe "Token is $token"
496+status-set.exe "active" "Token is $token"
497
498=== added file 'charms-win/dummy-source/hooks/install.ps1'
499--- charms-win/dummy-source/hooks/install.ps1 1970-01-01 00:00:00 +0000
500+++ charms-win/dummy-source/hooks/install.ps1 2017-03-14 23:38:01 +0000
501@@ -0,0 +1,2 @@
502+juju-log.exe "Installed"
503+status-set.exe "waiting" "Installed"
504
505=== added file 'charms-win/dummy-source/hooks/sink-relation-joined.ps1'
506--- charms-win/dummy-source/hooks/sink-relation-joined.ps1 1970-01-01 00:00:00 +0000
507+++ charms-win/dummy-source/hooks/sink-relation-joined.ps1 2017-03-14 23:38:01 +0000
508@@ -0,0 +1,2 @@
509+$script = join-path $PSScriptRoot config-changed.ps1
510+& $script
511
512=== added file 'charms-win/dummy-source/hooks/start.ps1'
513--- charms-win/dummy-source/hooks/start.ps1 1970-01-01 00:00:00 +0000
514+++ charms-win/dummy-source/hooks/start.ps1 2017-03-14 23:38:01 +0000
515@@ -0,0 +1,2 @@
516+juju-log.exe Started"
517+status-set.exe "waiting" "Started"
518
519=== added file 'charms-win/dummy-source/metadata.yaml'
520--- charms-win/dummy-source/metadata.yaml 1970-01-01 00:00:00 +0000
521+++ charms-win/dummy-source/metadata.yaml 2017-03-14 23:38:01 +0000
522@@ -0,0 +1,21 @@
523+name: dummy-source
524+maintainer: Martin Packman <martin.packman@canonical.com>
525+summary: Dummy charm that provides data
526+description: |
527+ This dummy charm is used to verify that a relationship is created correctly
528+requires:
529+ sink:
530+ interface: dummy-token
531+categories:
532+ - misc
533+series:
534+ - win2012hvr2
535+ - win2012hv
536+ - win2012r2
537+ - win2012
538+ - win2016
539+ - win2016nano
540+ - win10
541+ - win8
542+ - win81
543+ - win7
544
545=== added directory 'charms/chaos-monkey'
546=== added file 'charms/chaos-monkey/README'
547--- charms/chaos-monkey/README 1970-01-01 00:00:00 +0000
548+++ charms/chaos-monkey/README 2017-03-14 23:38:01 +0000
549@@ -0,0 +1,43 @@
550+Overview
551+========
552+This charm provides tooling for injecting errors, instrumenting degraded
553+conditions or causing outages, in a Juju environment. Once deployed this
554+charm can be put into a relation with any service. Juju actions are used
555+to start a single chaos operation or a series of operations, for a
556+specified time period. Chaos operations can be selected randomly by the
557+tooling or specific operations can be specified when the action is started.
558+
559+Usage
560+=====
561+1. Deploy the charm into an existing Juju environment.
562+
563+2. Add a relation between Chaos Monkey and the service to be affected.
564+
565+3. Call the start action (e.g. juju action do <unit name> start [options])
566+ Run 'juju action defined --schema chaos-monkey' to see the full list of
567+ available actions and action parameters.
568+
569+4. Use the show-monkey-ids action to list the identifiers for the Chaos
570+ Monkeys that have been run and the location of the logs.
571+ For example:
572+ 'juju action do chaos-monkey/0 show-monkey-ids'
573+ Action queued with id: a7ee2b06-1d75-4a8c-8f4b-aeb27009ce59
574+
575+ 'juju action fetch a7ee2b06-1d75-4a8c-8f4b-aeb27009ce59'
576+
577+5. Use the show-logs action to print the log of operations that were run.
578+ 'juju action do chaos-monkey/0 show-logs monkey-id=<ID String>'
579+
580+ 'juju action fetch <Action ID>
581+
582+Replay
583+======
584+Each time Chaos Monkey runs, a replay log is generated and saved in the
585+units log directory. This replay log can be used to reproduce the Chaos
586+operations. For example:
587+ /home/ubuntu/chaos-monkey/chaos_monkey.<ID String>/logs/chaos_run_list.log
588+
589+Currently the replay needs to be run from a root shell on the unit itself.
590+ 1. 'juju ssh chaos-monkey/0'
591+ 2. 'mkdir /home/ubuntu/chaos-monkey/replay_space'
592+ 3. python /home/ubuntu/chaos-monkey/chaos_monkey.<ID String>/chaos-monkey/runner.py --replay /home/ubuntu/chaos-monkey/chaos_monkey.<ID String>/log/chaos_run_list.log /home/ubuntu/chaos-monkey/replay_space
593
594=== added directory 'charms/chaos-monkey/actions'
595=== added file 'charms/chaos-monkey/actions.yaml'
596--- charms/chaos-monkey/actions.yaml 1970-01-01 00:00:00 +0000
597+++ charms/chaos-monkey/actions.yaml 2017-03-14 23:38:01 +0000
598@@ -0,0 +1,51 @@
599+show-logs:
600+ description: Stage chaos monkey logs for viewing with 'juju action fetch'
601+ params:
602+ chaos-dir:
603+ type: string
604+ description: The base directory in which to search for logs.
605+ monkey-id:
606+ type: string
607+ description: The ID of the monkey-id for which logs should be shown.
608+show-monkey-ids:
609+ description: List the monkey-ids that have been run on the service unit.
610+ params:
611+ chaos-dir:
612+ type: string
613+ description: The base directory to search for evidence of monkeys.
614+start:
615+ description: Start the chaos monkey.
616+ params:
617+ exclude-command:
618+ type: string
619+ enum: [deny-all, deny-incoming, deny-outgoing, deny-state-server,
620+ deny-api-server, deny-sys-log, kill-jujud, kill-mongod,
621+ restart-unit, delay, delay-long, drop, corrupt, duplicate]
622+ description: Exclude commands from the test list.
623+ exclude-group:
624+ type: string
625+ enum: [net, kill]
626+ description: Exclude groups from the test list.
627+ include-command:
628+ type: string
629+ enum: [deny-all, deny-incoming, deny-outgoing, deny-state-server,
630+ deny-api-server, deny-sys-log, kill-jujud, kill-mongod,
631+ restart-unit, delay, delay-long, drop, corrupt, duplicate]
632+ description: Include only these commands in the test list.
633+ include-group:
634+ type: string
635+ enum: [net, kill]
636+ description: Include only these groups in the test list.
637+ total-timeout:
638+ type: integer
639+ description: Timeout in seconds for which the monkey should run.
640+ enablement-timeout:
641+ type: integer
642+ description: Timeout in seconds to run each chaos operation.
643+ mode:
644+ type: string
645+ enum: [single, continuous]
646+ description: Execution mode either single or continuous.
647+ monkey-id:
648+ type: string
649+ description: Identifier to track this monkeys actions.
650
651=== added file 'charms/chaos-monkey/actions/show-logs'
652--- charms/chaos-monkey/actions/show-logs 1970-01-01 00:00:00 +0000
653+++ charms/chaos-monkey/actions/show-logs 2017-03-14 23:38:01 +0000
654@@ -0,0 +1,20 @@
655+#!/bin/bash -eux
656+monkey_id='*'
657+chaos_dir="$(config-get chaos-dir)"
658+action_chaos_dir="$(action-get chaos-dir)"
659+action_monkey_id="$(action-get monkey-id)"
660+[[ -n ${action_chaos_dir:-} ]] && chaos_dir=${action_chaos_dir}
661+[[ -n ${action_monkey_id:-} ]] && monkey_id=${action_monkey_id}
662+action-set action-parameters.chaos-dir="${chaos_dir}"
663+action-set action-parameters.monkey-id="${monkey_id}"
664+
665+target_dir="${chaos_dir}/chaos_monkey.${monkey_id}"
666+for dir in ${target_dir}; do
667+ log="${dir}/log/results.log"
668+ key=${dir##*\/chaos_monkey\.}
669+ count=1
670+ while read line; do
671+ action-set ${key}-run-log.${count}="${line}"
672+ count=$((count + 1))
673+ done < ${log}
674+done
675
676=== added file 'charms/chaos-monkey/actions/show-monkey-ids'
677--- charms/chaos-monkey/actions/show-monkey-ids 1970-01-01 00:00:00 +0000
678+++ charms/chaos-monkey/actions/show-monkey-ids 2017-03-14 23:38:01 +0000
679@@ -0,0 +1,13 @@
680+#!/bin/bash -eux
681+monkey_id='*'
682+chaos_dir="$(config-get chaos-dir)"
683+action_chaos_dir="$(action-get chaos-dir)"
684+[[ -n ${action_chaos_dir:-} ]] && chaos_dir=${action_chaos_dir}
685+action-set action-parameters.chaos-dir="${chaos_dir}"
686+
687+target_dir="${chaos_dir}/chaos_monkey.${monkey_id}"
688+
689+for dir in ${target_dir}; do
690+ key=${dir##*\/chaos_monkey\.}
691+ [[ -d $dir ]] && action-set monkey-ids.${key}=${dir}
692+done
693
694=== added file 'charms/chaos-monkey/actions/start'
695--- charms/chaos-monkey/actions/start 1970-01-01 00:00:00 +0000
696+++ charms/chaos-monkey/actions/start 2017-03-14 23:38:01 +0000
697@@ -0,0 +1,63 @@
698+#!/bin/bash -eux
699+dry_run="$(config-get dry-run)"
700+chaos_dir="$(config-get chaos-dir)"
701+exclude_command="$(action-get exclude-command)"
702+exclude_group="$(action-get exclude-group)"
703+enablement_timeout="$(action-get enablement-timeout)"
704+include_command="$(action-get include-command)"
705+include_group="$(action-get include-group)"
706+total_timeout="$(action-get total-timeout)"
707+monkey_id="$(action-get monkey-id)"
708+mode="$(action-get mode)"
709+monkey_id=${monkey_id:-${JUJU_ACTION_TAG#action-}}
710+action-set action-parameters.dry-run="${dry_run}"
711+action-set action-parameters.chaos-dir="${chaos_dir}"
712+action-set action-parameters.charm-dir="${CHARM_DIR}"
713+action-set action-parameters.exclude-command="${exclude_command}"
714+action-set action-parameters.exclude-group="${exclude_group}"
715+action-set action-parameters.enablement-timeout="${enablement_timeout}"
716+action-set action-parameters.include-command="${include_command}"
717+action-set action-parameters.include-group="${include_group}"
718+action-set action-parameters.monkey-id=${monkey_id}
719+action-set action-parameters.total-timeout="${total_timeout}"
720+action-set action-parameters.mode="${mode}"
721+
722+# Create a unique directory to run and log this monkeys actions.
723+target_dir=${chaos_dir}/chaos_monkey.${monkey_id}
724+mkdir -p ${target_dir}/log
725+if [[ -d ${CHARM_DIR}/chaos-monkey ]]; then
726+ cp -a ${CHARM_DIR}/chaos-monkey ${target_dir}
727+fi
728+
729+# Run the Chaos Monkey
730+cmd="python ${target_dir}/chaos-monkey/runner.py"
731+cmd+=" ${target_dir}"
732+if [[ -n ${exclude_command:-} ]]; then
733+ cmd+=" --exclude-command ${exclude_command}"
734+fi
735+if [[ -n ${exclude_group:-} ]]; then
736+ cmd+=" --exclude-group ${exclude_group}"
737+fi
738+if [[ -n ${include_command:-} ]]; then
739+ cmd+=" --include-command ${include_command}"
740+fi
741+if [[ -n ${include_group:-} ]]; then
742+ cmd+=" --include-group ${include_group}"
743+fi
744+if [[ -n ${total_timeout:-} ]]; then
745+ cmd+=" --total-timeout ${total_timeout}"
746+fi
747+if [[ -n ${enablement_timeout:-} ]]; then
748+ cmd+=" --enablement-timeout ${enablement_timeout}"
749+fi
750+if [[ -n ${mode:-} && "single" == "$mode" ]]; then
751+ cmd+=" --run-once"
752+fi
753+action-set action-info.runner-cmd="${cmd}"
754+action-set action-info.runner-log="${target_dir}/log/results.log"
755+if [[ ${dry_run-} != True ]]; then
756+ # Start the Chaos runner in a subprocess with nohup and in the background.
757+ # In this way it's PPID becomes init and further juju actions are not
758+ # blocked.
759+ (nohup ${cmd} >> ${target_dir}/log/nohup.out 2>&1 &)
760+fi
761
762=== added file 'charms/chaos-monkey/config.yaml'
763--- charms/chaos-monkey/config.yaml 1970-01-01 00:00:00 +0000
764+++ charms/chaos-monkey/config.yaml 2017-03-14 23:38:01 +0000
765@@ -0,0 +1,15 @@
766+options:
767+ chaos-dir:
768+ type: string
769+ default: /home/ubuntu/chaos-monkey
770+ description: |
771+ The top level directory for storing runtime files and logs.
772+ chaos-source:
773+ type: string
774+ default: https://github.com/juju/chaos-monkey/archive/master.tar.gz
775+ description: |
776+ The URL to Chaos Monkey source as a gzip'd compressed tar archive.
777+ dry-run:
778+ type: boolean
779+ default: false
780+ description: If set to true only log what would happen.
781
782=== added file 'charms/chaos-monkey/copyright'
783--- charms/chaos-monkey/copyright 1970-01-01 00:00:00 +0000
784+++ charms/chaos-monkey/copyright 2017-03-14 23:38:01 +0000
785@@ -0,0 +1,1 @@
786+Copyright 2015 Canonical Ltd.
787
788=== added directory 'charms/chaos-monkey/hooks'
789=== added file 'charms/chaos-monkey/hooks/config-changed'
790--- charms/chaos-monkey/hooks/config-changed 1970-01-01 00:00:00 +0000
791+++ charms/chaos-monkey/hooks/config-changed 2017-03-14 23:38:01 +0000
792@@ -0,0 +1,1 @@
793+#!/bin/sh
794
795=== added file 'charms/chaos-monkey/hooks/extract_chaos_monkey.bash'
796--- charms/chaos-monkey/hooks/extract_chaos_monkey.bash 1970-01-01 00:00:00 +0000
797+++ charms/chaos-monkey/hooks/extract_chaos_monkey.bash 2017-03-14 23:38:01 +0000
798@@ -0,0 +1,9 @@
799+#!/bin/bash -eux
800+cd ${CHARM_DIR}
801+chaos_source="$(config-get chaos-source)"
802+wget ${chaos_source} --output-document chaos-monkey.tar.gz
803+# Delete any existing Chaos Monkey directory.
804+[[ -d chaos-monkey ]] && rm -rf chaos-monkey
805+# Extract and rename chaos-monkey-master to chaos-monkey
806+[[ -f chaos-monkey.tar.gz ]] && tar -zxf chaos-monkey.tar.gz && \
807+ mv chaos-monkey-master chaos-monkey
808
809=== added file 'charms/chaos-monkey/hooks/install'
810--- charms/chaos-monkey/hooks/install 1970-01-01 00:00:00 +0000
811+++ charms/chaos-monkey/hooks/install 2017-03-14 23:38:01 +0000
812@@ -0,0 +1,5 @@
813+#!/bin/bash -eux
814+
815+apt-get update
816+apt-get install -y python bzr
817+${CHARM_DIR}/hooks/extract_chaos_monkey.bash
818
819=== added file 'charms/chaos-monkey/hooks/start'
820--- charms/chaos-monkey/hooks/start 1970-01-01 00:00:00 +0000
821+++ charms/chaos-monkey/hooks/start 2017-03-14 23:38:01 +0000
822@@ -0,0 +1,1 @@
823+#!/bin/sh
824
825=== added file 'charms/chaos-monkey/hooks/stop'
826--- charms/chaos-monkey/hooks/stop 1970-01-01 00:00:00 +0000
827+++ charms/chaos-monkey/hooks/stop 2017-03-14 23:38:01 +0000
828@@ -0,0 +1,1 @@
829+#!/bin/sh
830
831=== added file 'charms/chaos-monkey/hooks/upgrade-charm'
832--- charms/chaos-monkey/hooks/upgrade-charm 1970-01-01 00:00:00 +0000
833+++ charms/chaos-monkey/hooks/upgrade-charm 2017-03-14 23:38:01 +0000
834@@ -0,0 +1,2 @@
835+#!/bin/bash -eux
836+${CHARM_DIR}/hooks/extract_chaos_monkey.bash
837
838=== added file 'charms/chaos-monkey/icon.svg'
839--- charms/chaos-monkey/icon.svg 1970-01-01 00:00:00 +0000
840+++ charms/chaos-monkey/icon.svg 2017-03-14 23:38:01 +0000
841@@ -0,0 +1,425 @@
842+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
843+<!-- Created with Inkscape (http://www.inkscape.org/) -->
844+
845+<svg
846+ xmlns:dc="http://purl.org/dc/elements/1.1/"
847+ xmlns:cc="http://creativecommons.org/ns#"
848+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
849+ xmlns:svg="http://www.w3.org/2000/svg"
850+ xmlns="http://www.w3.org/2000/svg"
851+ xmlns:xlink="http://www.w3.org/1999/xlink"
852+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
853+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
854+ width="25.4mm"
855+ height="25.4mm"
856+ viewBox="0 0 25.4 25.4"
857+ id="svg4249"
858+ version="1.1"
859+ inkscape:version="0.91+devel r"
860+ sodipodi:docname="chaos-monkey_colours_squircle.svg">
861+ <defs
862+ id="defs4251">
863+ <linearGradient
864+ inkscape:collect="always"
865+ id="linearGradient4210">
866+ <stop
867+ style="stop-color:#000000;stop-opacity:1;"
868+ offset="0"
869+ id="stop4212" />
870+ <stop
871+ style="stop-color:#000000;stop-opacity:0;"
872+ offset="1"
873+ id="stop4214" />
874+ </linearGradient>
875+ <linearGradient
876+ inkscape:collect="always"
877+ id="linearGradient4173">
878+ <stop
879+ style="stop-color:#6b3c2b;stop-opacity:1"
880+ offset="0"
881+ id="stop4175" />
882+ <stop
883+ style="stop-color:#a95d40;stop-opacity:1"
884+ offset="1"
885+ id="stop4177" />
886+ </linearGradient>
887+ <filter
888+ style="color-interpolation-filters:sRGB"
889+ inkscape:label="Inner Shadow"
890+ id="filter1121">
891+ <feFlood
892+ flood-opacity="0.59999999999999998"
893+ flood-color="rgb(0,0,0)"
894+ result="flood"
895+ id="feFlood1123" />
896+ <feComposite
897+ in="flood"
898+ in2="SourceGraphic"
899+ operator="out"
900+ result="composite1"
901+ id="feComposite1125" />
902+ <feGaussianBlur
903+ in="composite1"
904+ stdDeviation="1"
905+ result="blur"
906+ id="feGaussianBlur1127" />
907+ <feOffset
908+ dx="0"
909+ dy="2"
910+ result="offset"
911+ id="feOffset1129" />
912+ <feComposite
913+ in="offset"
914+ in2="SourceGraphic"
915+ operator="atop"
916+ result="composite2"
917+ id="feComposite1131" />
918+ </filter>
919+ <filter
920+ inkscape:collect="always"
921+ style="color-interpolation-filters:sRGB"
922+ id="filter4200"
923+ x="-0.024"
924+ width="1.048"
925+ y="-0.024"
926+ height="1.048">
927+ <feGaussianBlur
928+ inkscape:collect="always"
929+ stdDeviation="0.087974405"
930+ id="feGaussianBlur4202" />
931+ </filter>
932+ <filter
933+ inkscape:collect="always"
934+ style="color-interpolation-filters:sRGB"
935+ id="filter4206"
936+ x="-0.096"
937+ width="1.192"
938+ y="-0.096"
939+ height="1.192">
940+ <feGaussianBlur
941+ inkscape:collect="always"
942+ stdDeviation="0.35189762"
943+ id="feGaussianBlur4208" />
944+ </filter>
945+ <linearGradient
946+ inkscape:collect="always"
947+ xlink:href="#linearGradient4210"
948+ id="linearGradient4216"
949+ x1="-421.12213"
950+ y1="82.231171"
951+ x2="-416.4339"
952+ y2="82.231171"
953+ gradientUnits="userSpaceOnUse"
954+ spreadMethod="reflect"
955+ gradientTransform="translate(-0.03059077,0.36458333)" />
956+ <linearGradient
957+ inkscape:collect="always"
958+ xlink:href="#linearGradient4173"
959+ id="linearGradient4219"
960+ x1="-423.16037"
961+ y1="65.24778"
962+ x2="-416.58374"
963+ y2="90.473808"
964+ gradientUnits="userSpaceOnUse" />
965+ <filter
966+ inkscape:collect="always"
967+ style="color-interpolation-filters:sRGB"
968+ id="filter4309"
969+ x="-0.024"
970+ width="1.048"
971+ y="-0.024"
972+ height="1.048">
973+ <feGaussianBlur
974+ inkscape:collect="always"
975+ stdDeviation="0.087974405"
976+ id="feGaussianBlur4311" />
977+ </filter>
978+ <linearGradient
979+ inkscape:collect="always"
980+ id="linearGradient4173-9">
981+ <stop
982+ style="stop-color:#7843ad;stop-opacity:1"
983+ offset="0"
984+ id="stop4175-2" />
985+ <stop
986+ style="stop-color:#937fdb;stop-opacity:1"
987+ offset="1"
988+ id="stop4177-7" />
989+ </linearGradient>
990+ <linearGradient
991+ gradientTransform="translate(277.6,-625.69077)"
992+ inkscape:collect="always"
993+ xlink:href="#linearGradient4173-9"
994+ id="linearGradient908"
995+ x1="-229.44118"
996+ y1="636.22839"
997+ x2="-229.44118"
998+ y2="731.29077"
999+ gradientUnits="userSpaceOnUse" />
1000+ <filter
1001+ style="color-interpolation-filters:sRGB"
1002+ inkscape:label="Inner Shadow"
1003+ id="filter1121-5">
1004+ <feFlood
1005+ flood-opacity="0.59999999999999998"
1006+ flood-color="rgb(0,0,0)"
1007+ result="flood"
1008+ id="feFlood1123-0" />
1009+ <feComposite
1010+ in="flood"
1011+ in2="SourceGraphic"
1012+ operator="out"
1013+ result="composite1"
1014+ id="feComposite1125-8" />
1015+ <feGaussianBlur
1016+ in="composite1"
1017+ stdDeviation="1"
1018+ result="blur"
1019+ id="feGaussianBlur1127-6" />
1020+ <feOffset
1021+ dx="0"
1022+ dy="2"
1023+ result="offset"
1024+ id="feOffset1129-5" />
1025+ <feComposite
1026+ in="offset"
1027+ in2="SourceGraphic"
1028+ operator="atop"
1029+ result="composite2"
1030+ id="feComposite1131-1" />
1031+ </filter>
1032+ </defs>
1033+ <sodipodi:namedview
1034+ id="base"
1035+ pagecolor="#ffffff"
1036+ bordercolor="#666666"
1037+ borderopacity="1.0"
1038+ inkscape:pageopacity="0.0"
1039+ inkscape:pageshadow="2"
1040+ inkscape:zoom="2.6077032"
1041+ inkscape:cx="29.574735"
1042+ inkscape:cy="54.068567"
1043+ inkscape:document-units="mm"
1044+ inkscape:current-layer="layer1"
1045+ showgrid="false"
1046+ fit-margin-top="0"
1047+ fit-margin-left="0"
1048+ fit-margin-right="0"
1049+ fit-margin-bottom="0"
1050+ inkscape:snap-bbox="true"
1051+ inkscape:bbox-paths="true"
1052+ inkscape:bbox-nodes="true"
1053+ inkscape:snap-bbox-edge-midpoints="true"
1054+ inkscape:snap-bbox-midpoints="true"
1055+ inkscape:object-paths="true"
1056+ inkscape:snap-intersection-paths="true"
1057+ inkscape:snap-smooth-nodes="true"
1058+ inkscape:snap-midpoints="true"
1059+ inkscape:snap-object-midpoints="true"
1060+ inkscape:snap-center="true"
1061+ inkscape:snap-global="true"
1062+ inkscape:snap-page="true"
1063+ showguides="false"
1064+ inkscape:guide-bbox="true">
1065+ <inkscape:grid
1066+ type="xygrid"
1067+ id="grid4206" />
1068+ <sodipodi:guide
1069+ position="12.7,8.5462876"
1070+ orientation="1,0"
1071+ id="guide4249"
1072+ inkscape:label=""
1073+ inkscape:color="rgb(0,0,255)" />
1074+ </sodipodi:namedview>
1075+ <metadata
1076+ id="metadata4254">
1077+ <rdf:RDF>
1078+ <cc:Work
1079+ rdf:about="">
1080+ <dc:format>image/svg+xml</dc:format>
1081+ <dc:type
1082+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
1083+ <dc:title></dc:title>
1084+ </cc:Work>
1085+ </rdf:RDF>
1086+ </metadata>
1087+ <g
1088+ inkscape:label="Layer 1"
1089+ inkscape:groupmode="layer"
1090+ id="layer1"
1091+ transform="translate(433.76548,-65.073809)">
1092+ <path
1093+ style="display:inline;fill:url(#linearGradient908);fill-opacity:1;stroke:none;filter:url(#filter1121-5)"
1094+ d="M 9.6000004,74.46486 V 40.73513 C 9.6000004,13.49189 13.48785,9.6000004 40.70302,9.6000004 H 74.4971 c 27.21507,0 31.1029,3.8918896 31.1029,31.1351296 V 74.46486 C 105.6,101.70811 101.71217,105.6 74.4971,105.6 H 40.70302 C 13.48785,105.6 9.6000004,101.70811 9.6000004,74.46486 Z"
1095+ id="path6455"
1096+ inkscape:connector-curvature="0"
1097+ sodipodi:nodetypes="sssssssss"
1098+ transform="matrix(0.26458333,0,0,0.26458333,-436.30548,62.533811)" />
1099+ <g
1100+ id="g4211">
1101+ <circle
1102+ transform="rotate(-120)"
1103+ inkscape:transform-center-x="-3.7735543"
1104+ inkscape:transform-center-y="-2.17872"
1105+ cy="-399.44754"
1106+ cx="142.7204"
1107+ id="circle4258"
1108+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b5baea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1109+ r="4.3987203" />
1110+ <path
1111+ id="ellipse4298"
1112+ d="m -411.74667,75.235464 a 5.6223427,5.6223427 0 0 1 -1.76268,5.038968 2.6723602,2.6723605 60 0 0 2.2288,-0.201021 2.6723602,2.6723605 60 0 0 0.97824,-3.650423 2.6723602,2.6723605 60 0 0 -1.44436,-1.187524 z"
1113+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b5baea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1114+ inkscape:connector-curvature="0" />
1115+ <path
1116+ id="ellipse4300"
1117+ d="m -430.41736,75.242698 a 2.6723602,2.6723605 60 0 0 -0.44184,0.202055 2.6723602,2.6723605 60 0 0 -0.97823,3.650423 2.6723602,2.6723605 60 0 0 3.18378,1.189592 5.6488129,5.6488129 0 0 1 -1.76371,-5.04207 z"
1118+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b5baea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1119+ inkscape:connector-curvature="0" />
1120+ <circle
1121+ transform="rotate(120)"
1122+ cy="329.85925"
1123+ cx="278.34512"
1124+ id="circle4302"
1125+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#b5baea;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1126+ r="4.3987203" />
1127+ <circle
1128+ r="4.3987203"
1129+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1130+ id="circle4260"
1131+ cx="278.34512"
1132+ cy="329.85925"
1133+ inkscape:transform-center-y="-2.1786389"
1134+ inkscape:transform-center-x="3.7735878"
1135+ transform="rotate(120)" />
1136+ <g
1137+ id="g4251">
1138+ <ellipse
1139+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e93549;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1140+ id="path4214"
1141+ cx="-424.09668"
1142+ cy="77.69136"
1143+ rx="2.873404"
1144+ ry="2.6078522" />
1145+ <path
1146+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fac82e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.62029862;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
1147+ d="m -421.07726,76.865803 c -0.51742,-1.228148 -1.71184,-2.130204 -3.12526,-2.110596 -1.63008,0.02261 -3.05795,1.348806 -3.03003,3.021432 0.024,1.440786 1.1986,2.702933 2.67943,2.673759 1.2701,-0.02502 2.38123,-1.062332 2.35124,-2.370197 -0.0256,-1.116744 -0.9395,-2.093655 -2.09196,-2.063225 -0.97951,0.02586 -1.8356,0.8293 -1.80505,1.842692 0.0258,0.857219 0.73098,1.605876 1.62046,1.57546 0.74873,-0.0256 1.40179,-0.642389 1.37171,-1.421981 -0.0252,-0.652969 -0.56437,-1.222818 -1.247,-1.193218 -0.56888,0.02467 -1.0655,0.496438 -1.03647,1.093998 0.0241,0.495457 0.43689,0.92689 0.96027,0.898468 0.42566,-0.02311 0.78988,-0.376833 0.77361,-0.826698 0.002,0.01802 0.0202,0.02969 0.0209,0.04797 0.0181,0.468213 -0.39328,0.856542 -0.86149,0.872553 -0.57877,0.01979 -1.05524,-0.486317 -1.07261,-1.062464 -0.0212,-0.703303 0.59201,-1.279668 1.28994,-1.298097 0.84295,-0.02226 1.52947,0.711494 1.54861,1.546186 0.0229,0.998886 -0.84498,1.809475 -1.83259,1.828933 -1.17235,0.0231 -2.12042,-0.994455 -2.13975,-2.152344 -0.0228,-1.364615 1.16138,-2.465655 2.50819,-2.48434 1.57699,-0.02188 2.84624,1.346793 2.86372,2.902457 0.0177,1.573924 -1.18694,2.933664 -2.72277,3.221011 l 0.0967,0.519959 c 1.7824,-0.33348 3.17562,-1.901645 3.15489,-3.746914 -0.005,-0.459824 -0.10216,-0.90542 -0.27464,-1.314802 z m -3.34606,1.01309 0.0586,0.185969 c -0.0645,0.0068 -0.1024,-0.03159 -0.10651,-0.07541 -0.003,-0.0356 0.0118,-0.05013 0.0291,-0.05158 0.001,-9.2e-5 -0.0128,-0.01359 -0.0139,-0.02874 -10e-4,-0.01334 0.0241,-0.0173 0.0328,-0.03024 z"
1148+ id="path4250"
1149+ inkscape:connector-curvature="0" />
1150+ <ellipse
1151+ ry="2.6078522"
1152+ rx="2.8529768"
1153+ cy="77.69136"
1154+ cx="-418.05707"
1155+ id="ellipse4216"
1156+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#e93549;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52916664;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate" />
1157+ <path
1158+ style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;fill:#fac82e;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.62029862;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
1159+ d="m -421.05722,76.865803 c 0.51742,-1.228148 1.71184,-2.130204 3.12526,-2.110596 1.63008,0.02261 3.05795,1.348806 3.03003,3.021432 -0.024,1.440786 -1.1986,2.702933 -2.67943,2.673759 -1.2701,-0.02502 -2.38123,-1.062332 -2.35124,-2.370197 0.0256,-1.116744 0.9395,-2.093655 2.09196,-2.063225 0.97951,0.02586 1.8356,0.8293 1.80505,1.842692 -0.0258,0.857219 -0.73098,1.605876 -1.62046,1.57546 -0.74873,-0.0256 -1.40179,-0.642389 -1.37171,-1.421981 0.0252,-0.652969 0.56437,-1.222818 1.247,-1.193218 0.56888,0.02467 1.0655,0.496438 1.03647,1.093998 -0.0241,0.495457 -0.43689,0.92689 -0.96027,0.898468 -0.42566,-0.02311 -0.78988,-0.376833 -0.77361,-0.826698 -0.002,0.01802 -0.0202,0.02969 -0.0209,0.04797 -0.0181,0.468213 0.39328,0.856542 0.86149,0.872553 0.57877,0.01979 1.05524,-0.486317 1.07261,-1.062464 0.0212,-0.703303 -0.59201,-1.279668 -1.28994,-1.298097 -0.84295,-0.02226 -1.52947,0.711494 -1.54861,1.546186 -0.0229,0.998886 0.84498,1.809475 1.83259,1.828933 1.17235,0.0231 2.12042,-0.994455 2.13975,-2.152344 0.0228,-1.364615 -1.16138,-2.465655 -2.50819,-2.48434 -1.57699,-0.02188 -2.84624,1.346793 -2.86372,2.902457 -0.0177,1.573924 1.18694,2.933664 2.72277,3.221011 l -0.0967,0.519959 c -1.7824,-0.33348 -3.17562,-1.901645 -3.15489,-3.746914 0.005,-0.459824 0.10216,-0.90542 0.27464,-1.314802 z m 3.34606,1.01309 -0.0586,0.185969 c 0.0645,0.0068 0.1024,-0.03159 0.10651,-0.07541 0.003,-0.0356 -0.0118,-0.05013 -0.0291,-0.05158 -0.001,-9.2e-5 0.0128,-0.01359 0.0139,-0.02874 10e-4,-0.01334 -0.0241,-0.0173 -0.0328,-0.03024 z"
1160+ id="path4273"
1161+ inkscape:connector-curvature="0" />
1162+ <circle
1163+ r="0.49922371"
1164+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1165+ id="path4275"
1166+ cx="-424.49808"
1167+ cy="77.942444" />
1168+ <circle
1169+ r="0.49922371"
1170+ cy="77.942444"
1171+ cx="-417.63455"
1172+ id="ellipse4279"
1173+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.52916682;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate" />
1174+ </g>
1175+ </g>
1176+ <path
1177+ cx="-421.06549"
1178+ cy="77.773811"
1179+ r="12.7"
1180+ id="path4221"
1181+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient4219);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.00264583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate" />
1182+ <path
1183+ cx="-421.06549"
1184+ cy="77.773811"
1185+ r="12.7"
1186+ id="path4223"
1187+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:url(#linearGradient4219);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.00264583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate" />
1188+ <path
1189+ style="display:inline;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;opacity:0.07"
1190+ d="m -421.06548,65.073809 v 25.4 h 4.47053 c 7.20066,0 8.22947,-1.029631 8.22947,-8.23774 v -8.92452 c 0,-7.208107 -1.02881,-8.23774 -8.22947,-8.23774 z"
1191+ id="path4245"
1192+ inkscape:connector-curvature="0" />
1193+ <g
1194+ id="g4254">
1195+ <circle
1196+ r="4.3987203"
1197+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13229169;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;filter:url(#filter4200);enable-background:accumulate"
1198+ id="circle4186"
1199+ cx="-421.06543"
1200+ cy="82.924911"
1201+ inkscape:transform-center-y="16.625081"
1202+ inkscape:transform-center-x="-1.5613089e-05" />
1203+ <circle
1204+ inkscape:transform-center-x="-1.5613089e-05"
1205+ inkscape:transform-center-y="16.625081"
1206+ cy="82.595749"
1207+ cx="-421.09598"
1208+ id="circle4204"
1209+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.4;fill:url(#linearGradient4216);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13229169;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;filter:url(#filter4206);enable-background:accumulate"
1210+ r="4.3987203" />
1211+ <circle
1212+ inkscape:transform-center-x="-5.0312501e-05"
1213+ inkscape:transform-center-y="4.3573636"
1214+ cy="82.824913"
1215+ cx="-421.06543"
1216+ id="circle4295"
1217+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;filter:url(#filter4309);enable-background:accumulate"
1218+ r="4.3987203" />
1219+ <circle
1220+ r="4.3987203"
1221+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#dcdef5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1222+ id="circle4256"
1223+ cx="-421.06543"
1224+ cy="82.660332"
1225+ inkscape:transform-center-y="4.3573636"
1226+ inkscape:transform-center-x="-5.0312501e-05" />
1227+ <path
1228+ d="m -386.09785,186.03619 a 0.72313833,0.72313839 0 0 1 -0.36156,0.62626 0.72313833,0.72313839 0 0 1 -0.72314,0 0.72313833,0.72313839 0 0 1 -0.36157,-0.62626 l 0.72314,0 z"
1229+ sodipodi:end="3.1415927"
1230+ sodipodi:start="0"
1231+ sodipodi:ry="0.72313839"
1232+ sodipodi:rx="0.72313833"
1233+ sodipodi:cy="186.03619"
1234+ sodipodi:cx="-386.82098"
1235+ sodipodi:type="arc"
1236+ transform="rotate(15)"
1237+ id="ellipse4289"
1238+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#8866c8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate" />
1239+ <path
1240+ d="m 427.33816,-31.923328 a 0.72313833,0.72313839 0 0 1 -0.36157,0.626256 0.72313833,0.72313839 0 0 1 -0.72314,0 0.72313833,0.72313839 0 0 1 -0.36157,-0.626256 l 0.72314,0 z"
1241+ sodipodi:end="3.1415927"
1242+ sodipodi:start="0"
1243+ sodipodi:ry="0.72313839"
1244+ sodipodi:rx="0.72313833"
1245+ sodipodi:cy="-31.923328"
1246+ sodipodi:cx="426.61502"
1247+ sodipodi:type="arc"
1248+ transform="matrix(-0.96592583,0.25881905,0.25881905,0.96592583,0,0)"
1249+ id="ellipse4293"
1250+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#8866c8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate" />
1251+ <path
1252+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:0.3;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.13229167;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1253+ d="m -421.06536,78.24321 a 4.3987201,4.3987201 0 0 0 -4.39869,4.398698 4.3987201,4.3987201 0 0 0 0.004,0.118339 4.3987201,4.3987201 0 0 1 4.39456,-4.31705 4.3987201,4.3987201 0 0 1 4.39457,4.281393 4.3987201,4.3987201 0 0 0 0.004,-0.08268 4.3987201,4.3987201 0 0 0 -4.3987,-4.398698 z"
1254+ id="path4293"
1255+ inkscape:connector-curvature="0" />
1256+ <circle
1257+ inkscape:transform-center-x="-1.5613089e-05"
1258+ style="color:#000000;display:inline;overflow:visible;visibility:visible;opacity:1;fill:#333333;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.06614583;stroke-linecap:butt;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:1;stroke-opacity:1;marker:none;enable-background:accumulate"
1259+ id="ellipse4197"
1260+ cx="-421.06543"
1261+ cy="84.693413"
1262+ inkscape:transform-center-y="4.1562601"
1263+ r="1.0996777" />
1264+ </g>
1265+ </g>
1266+</svg>
1267
1268=== added file 'charms/chaos-monkey/metadata.yaml'
1269--- charms/chaos-monkey/metadata.yaml 1970-01-01 00:00:00 +0000
1270+++ charms/chaos-monkey/metadata.yaml 2017-03-14 23:38:01 +0000
1271@@ -0,0 +1,20 @@
1272+name: chaos-monkey
1273+maintainer: John George <john.george@canonical.com>
1274+summary: Chaos Monkey
1275+description: |
1276+ This charm is used to deploy and run the chaos monkey.
1277+requires:
1278+ juju-info:
1279+ interface: juju-info
1280+ scope: container
1281+tags:
1282+ - misc
1283+subordinate: true
1284+series:
1285+ - trusty
1286+ - precise
1287+ - utopic
1288+ - vivid
1289+ - wily
1290+ - xenial
1291+
1292
1293=== added directory 'charms/client-forwardproxy'
1294=== added file 'charms/client-forwardproxy/Makefile'
1295--- charms/client-forwardproxy/Makefile 1970-01-01 00:00:00 +0000
1296+++ charms/client-forwardproxy/Makefile 2017-03-14 23:38:01 +0000
1297@@ -0,0 +1,24 @@
1298+PWD := $(shell pwd)
1299+HOOKS_DIR := $(PWD)/hooks
1300+TEST_DIR := $(PWD)/hooks/tests
1301+CHARM_DIR := $(PWD)
1302+
1303+
1304+build: test proof
1305+
1306+revision:
1307+ @test -f revision || echo 0 > revision
1308+
1309+proof: revision
1310+ @echo Proofing charm...
1311+ @(charm proof $(PWD) || [ $$? -eq 100 ]) && echo OK
1312+ @test `cat revision` = 0 && rm revision
1313+
1314+test:
1315+ @echo no tests yet...
1316+
1317+clean:
1318+ rm -rf .venv
1319+
1320+
1321+.PHONY: revision proof test lint sourcedeps charm-payload
1322
1323=== added file 'charms/client-forwardproxy/README'
1324--- charms/client-forwardproxy/README 1970-01-01 00:00:00 +0000
1325+++ charms/client-forwardproxy/README 2017-03-14 23:38:01 +0000
1326@@ -0,0 +1,21 @@
1327+A simple proxy client use for testing closed or restricted network
1328+conditions.
1329+
1330+This client-forwardproxy works in tandem with the squid-forwardproxy
1331+charm, or any charm that provides forwardproxy. Any Juju application or
1332+provisioned machine can be set up to use the forward proxy like so:
1333+
1334+ juju deploy squid-forwardproxy
1335+ juju deploy xenial/ubuntu x1
1336+ juju deploy client-forwardproxy --to 1
1337+ juju add-relation client-forwardproxy:forwardproxy squid-forwardproxy:forwardproxy
1338+
1339+The local host and containers on the lxdbr0 are automatically in the
1340+no_proxy list. You can configure additional sites to not proxy.
1341+
1342+ juju config client-forwardproxy extra-no-proxy="ubuntu.com canonical.com"
1343+
1344+This charm also adds the Ubuntu proposed archive to install and test
1345+optional packages.
1346+
1347+ juju config client-forwardproxy proposed-packages="python-boto s3cmd"
1348
1349=== added file 'charms/client-forwardproxy/config.yaml'
1350--- charms/client-forwardproxy/config.yaml 1970-01-01 00:00:00 +0000
1351+++ charms/client-forwardproxy/config.yaml 2017-03-14 23:38:01 +0000
1352@@ -0,0 +1,13 @@
1353+options:
1354+ proposed-packages:
1355+ type: string
1356+ default: ''
1357+ description: |
1358+ A space-separated list of packages to install from the proposed archive.
1359+ they will be installed using apt-get install -r.
1360+ extra-no-proxy:
1361+ type: string
1362+ default: ''
1363+ description: |
1364+ A space-separated list of extra sites to not proxy. localhost and the
1365+ lxd bridge are always in the no-proxy list.
1366
1367=== added file 'charms/client-forwardproxy/copyright'
1368--- charms/client-forwardproxy/copyright 1970-01-01 00:00:00 +0000
1369+++ charms/client-forwardproxy/copyright 2017-03-14 23:38:01 +0000
1370@@ -0,0 +1,1 @@
1371+Copyright 2016 Canonical Ltd.
1372
1373=== added directory 'charms/client-forwardproxy/hooks'
1374=== added file 'charms/client-forwardproxy/hooks/config-changed'
1375--- charms/client-forwardproxy/hooks/config-changed 1970-01-01 00:00:00 +0000
1376+++ charms/client-forwardproxy/hooks/config-changed 2017-03-14 23:38:01 +0000
1377@@ -0,0 +1,61 @@
1378+#!/bin/bash
1379+set -eux
1380+
1381+PROXY_IP=""
1382+PROXY_PORT=""
1383+
1384+
1385+status-set maintenance "Checking config" || true
1386+PROPOSED_PACKAGES="$(config-get proposed-packages)"
1387+if [[ "$PROPOSED_PACKAGES" != "" ]]; then
1388+ status-set maintenance "Disabling firewall to install packages" || true
1389+ UFW_STATUS=$(ufw status | cut -d ' ' -f2)
1390+ ufw disable
1391+ status-set maintenance "Installing packages from the proposed archive" || true
1392+ RELEASE=$(lsb_release -sc)
1393+ apt-get update
1394+ apt-get install -y -t $RELEASE-proposed $PROPOSED_PACKAGES
1395+ status-set maintenance "Packages installed" || true
1396+ if [[ $UFW_STATUS == "active" ]]; then
1397+ status-set maintenance "Enabling the firewall" || true
1398+ ufw --force enable
1399+ fi
1400+fi
1401+
1402+status-set maintenance "Checking proxy." || true
1403+set +e
1404+# This is a hack. We don't want to iterate, but we need to
1405+# because we need the state of relations and config to know
1406+# if this charm is active or something else.
1407+for app in $(relation-ids forwardproxy); do
1408+ for unit in $(relation-list -r $app); do
1409+ PROXY_IP="$(relation-get -r $app ip $unit)"
1410+ PROXY_PORT="$(relation-get -r $app port $unit)"
1411+ done
1412+done
1413+set -e
1414+
1415+if [[ "$PROXY_IP" == "" || "$PROXY_PORT" == "" ]]; then
1416+ status-set maintenance "Removing firewall rules" || true
1417+ echo "PATH="$PATH"" > /etc/environment
1418+ status-set waiting "Waiting for forwardproxy" || true
1419+ exit 0
1420+fi
1421+
1422+# LXD was given the 10.0.8.* by scripts/setup-lxd.sh
1423+LXD_ADDRESSES="$(echo 10.0.8.{1..255} | sed 's/ /,/g')"
1424+EXTRA_NO_PROXY="$(config-get extra-no-proxy | sed -e 's/ /,/g')"
1425+NO_PROXY="localhost,127.0.0.1,$EXTRA_NO_PROXY,$LXD_ADDRESSES"
1426+status-set maintenance "Updating proxy rules." || true
1427+cat > /etc/environment << EOF
1428+PATH="$PATH"
1429+http_proxy=http://$PROXY_IP:$PROXY_PORT/
1430+https_proxy=http://$PROXY_IP:$PROXY_PORT/
1431+ftp_proxy=http://$PROXY_IP:$PROXY_PORT/
1432+no_proxy=$NO_PROXY
1433+HTTP_PROXY=http://$PROXY_IP:$PROXY_PORT/
1434+HTTPS_PROXY=http://$PROXY_IP:$PROXY_PORT/
1435+FTP_PROXY=http://$PROXY_IP:$PROXY_PORT/
1436+NO_PROXY=$NO_PROXY
1437+EOF
1438+status-set active "Updated proxy rules" || true
1439
1440=== added symlink 'charms/client-forwardproxy/hooks/forwardproxy-relation-changed'
1441=== target is u'config-changed'
1442=== added symlink 'charms/client-forwardproxy/hooks/forwardproxy-relation-departed'
1443=== target is u'config-changed'
1444=== added symlink 'charms/client-forwardproxy/hooks/forwardproxy-relation-joined'
1445=== target is u'config-changed'
1446=== added file 'charms/client-forwardproxy/hooks/install'
1447--- charms/client-forwardproxy/hooks/install 1970-01-01 00:00:00 +0000
1448+++ charms/client-forwardproxy/hooks/install 2017-03-14 23:38:01 +0000
1449@@ -0,0 +1,22 @@
1450+#!/bin/bash
1451+set -eux
1452+
1453+status-set maintenance "Installing" || true
1454+if ifconfig lxdbr0 2>&1 | grep -q "HWaddr"; then
1455+ status-set maintenance "Configuring LXD" || true
1456+ $JUJU_CHARM_DIR/scripts/setup-lxd.sh
1457+fi
1458+
1459+RELEASE=$(lsb_release -sc)
1460+
1461+status-set maintenance "Adding /etc/apt/preferences.d/proposed-updates" || true
1462+cat > /etc/apt/preferences.d/proposed-updates << EOF
1463+Package: *
1464+Pin: release a=$RELEASE-proposed
1465+Pin-Priority: 400
1466+EOF
1467+
1468+status-set maintenance "installing firewall packages" || true
1469+apt-get update
1470+apt-get install -y ufw
1471+status-set maintenance "Installed" || true
1472
1473=== added symlink 'charms/client-forwardproxy/hooks/start'
1474=== target is u'config-changed'
1475=== added file 'charms/client-forwardproxy/hooks/stop'
1476--- charms/client-forwardproxy/hooks/stop 1970-01-01 00:00:00 +0000
1477+++ charms/client-forwardproxy/hooks/stop 2017-03-14 23:38:01 +0000
1478@@ -0,0 +1,6 @@
1479+#!/bin/bash
1480+set -eux
1481+
1482+status-set maintenance "Stopping" || true
1483+service ufw disable || true
1484+status-set maintenance "Stopped" || true
1485
1486=== added file 'charms/client-forwardproxy/icon.svg'
1487--- charms/client-forwardproxy/icon.svg 1970-01-01 00:00:00 +0000
1488+++ charms/client-forwardproxy/icon.svg 2017-03-14 23:38:01 +0000
1489@@ -0,0 +1,1163 @@
1490+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
1491+<!-- Created with Inkscape (http://www.inkscape.org/) -->
1492+
1493+<svg
1494+ xmlns:dc="http://purl.org/dc/elements/1.1/"
1495+ xmlns:cc="http://creativecommons.org/ns#"
1496+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
1497+ xmlns:svg="http://www.w3.org/2000/svg"
1498+ xmlns="http://www.w3.org/2000/svg"
1499+ xmlns:xlink="http://www.w3.org/1999/xlink"
1500+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
1501+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
1502+ width="96"
1503+ height="96"
1504+ id="svg6517"
1505+ version="1.1"
1506+ inkscape:version="0.48+devel r12505"
1507+ sodipodi:docname="squid-cache.svg">
1508+ <defs
1509+ id="defs6519">
1510+ <filter
1511+ style="color-interpolation-filters:sRGB;"
1512+ inkscape:label="Inner Shadow"
1513+ id="filter1121">
1514+ <feFlood
1515+ flood-opacity="0.59999999999999998"
1516+ flood-color="rgb(0,0,0)"
1517+ result="flood"
1518+ id="feFlood1123" />
1519+ <feComposite
1520+ in="flood"
1521+ in2="SourceGraphic"
1522+ operator="out"
1523+ result="composite1"
1524+ id="feComposite1125" />
1525+ <feGaussianBlur
1526+ in="composite1"
1527+ stdDeviation="1"
1528+ result="blur"
1529+ id="feGaussianBlur1127" />
1530+ <feOffset
1531+ dx="0"
1532+ dy="2"
1533+ result="offset"
1534+ id="feOffset1129" />
1535+ <feComposite
1536+ in="offset"
1537+ in2="SourceGraphic"
1538+ operator="atop"
1539+ result="composite2"
1540+ id="feComposite1131" />
1541+ </filter>
1542+ <filter
1543+ style="color-interpolation-filters:sRGB;"
1544+ inkscape:label="Drop Shadow"
1545+ id="filter950">
1546+ <feFlood
1547+ flood-opacity="0.25"
1548+ flood-color="rgb(0,0,0)"
1549+ result="flood"
1550+ id="feFlood952" />
1551+ <feComposite
1552+ in="flood"
1553+ in2="SourceGraphic"
1554+ operator="in"
1555+ result="composite1"
1556+ id="feComposite954" />
1557+ <feGaussianBlur
1558+ in="composite1"
1559+ stdDeviation="1"
1560+ result="blur"
1561+ id="feGaussianBlur956" />
1562+ <feOffset
1563+ dx="0"
1564+ dy="1"
1565+ result="offset"
1566+ id="feOffset958" />
1567+ <feComposite
1568+ in="SourceGraphic"
1569+ in2="offset"
1570+ operator="over"
1571+ result="composite2"
1572+ id="feComposite960" />
1573+ </filter>
1574+ <filter
1575+ inkscape:collect="always"
1576+ id="filter891"
1577+ inkscape:label="Badge Shadow">
1578+ <feGaussianBlur
1579+ inkscape:collect="always"
1580+ stdDeviation="0.71999962"
1581+ id="feGaussianBlur893" />
1582+ </filter>
1583+ <filter
1584+ height="1.6591635"
1585+ y="-0.32958177"
1586+ width="1.7932079"
1587+ x="-0.39660394"
1588+ id="filter4316"
1589+ inkscape:collect="always">
1590+ <feGaussianBlur
1591+ id="feGaussianBlur4318"
1592+ stdDeviation="1.591987"
1593+ inkscape:collect="always" />
1594+ </filter>
1595+ <filter
1596+ height="1.192"
1597+ y="-0.096000001"
1598+ width="1.192"
1599+ x="-0.096000001"
1600+ id="filter4355"
1601+ inkscape:collect="always">
1602+ <feGaussianBlur
1603+ id="feGaussianBlur4357"
1604+ stdDeviation="0.58895659"
1605+ inkscape:collect="always" />
1606+ </filter>
1607+ <filter
1608+ height="1.3296711"
1609+ y="-0.16483553"
1610+ width="1.188679"
1611+ x="-0.094339505"
1612+ id="filter4423"
1613+ inkscape:collect="always">
1614+ <feGaussianBlur
1615+ id="feGaussianBlur4425"
1616+ stdDeviation="0.6575494"
1617+ inkscape:collect="always" />
1618+ </filter>
1619+ <filter
1620+ height="1.2081455"
1621+ y="-0.10407273"
1622+ width="1.1100769"
1623+ x="-0.055038461"
1624+ id="filter4727"
1625+ inkscape:collect="always">
1626+ <feGaussianBlur
1627+ id="feGaussianBlur4729"
1628+ stdDeviation="1.9449577"
1629+ inkscape:collect="always" />
1630+ </filter>
1631+ <filter
1632+ height="1.2229152"
1633+ y="-0.1114576"
1634+ width="1.1347936"
1635+ x="-0.067396788"
1636+ id="filter4756"
1637+ inkscape:collect="always">
1638+ <feGaussianBlur
1639+ id="feGaussianBlur4758"
1640+ stdDeviation="2.4366067"
1641+ inkscape:collect="always" />
1642+ </filter>
1643+ <filter
1644+ height="1.2339238"
1645+ y="-0.11696188"
1646+ width="1.1310639"
1647+ x="-0.065531962"
1648+ id="filter4762"
1649+ inkscape:collect="always">
1650+ <feGaussianBlur
1651+ id="feGaussianBlur4764"
1652+ stdDeviation="2.204443"
1653+ inkscape:collect="always" />
1654+ </filter>
1655+ <filter
1656+ height="1.2938571"
1657+ y="-0.14692857"
1658+ width="1.2396505"
1659+ x="-0.11982524"
1660+ id="filter4842"
1661+ inkscape:collect="always">
1662+ <feGaussianBlur
1663+ id="feGaussianBlur4844"
1664+ stdDeviation="0.67099002"
1665+ inkscape:collect="always" />
1666+ </filter>
1667+ <filter
1668+ height="1.267661"
1669+ y="-0.13383051"
1670+ width="1.1496872"
1671+ x="-0.074843602"
1672+ id="filter4878"
1673+ inkscape:collect="always">
1674+ <feGaussianBlur
1675+ id="feGaussianBlur4880"
1676+ stdDeviation="1.3414907"
1677+ inkscape:collect="always" />
1678+ </filter>
1679+ <filter
1680+ height="1.1367442"
1681+ y="-0.068372093"
1682+ width="1.0739623"
1683+ x="-0.036981132"
1684+ id="filter4884"
1685+ inkscape:collect="always">
1686+ <feGaussianBlur
1687+ id="feGaussianBlur4886"
1688+ stdDeviation="0.99898246"
1689+ inkscape:collect="always" />
1690+ </filter>
1691+ <filter
1692+ height="1.2074345"
1693+ y="-0.10371727"
1694+ width="1.1102768"
1695+ x="-0.055138398"
1696+ id="filter4928"
1697+ inkscape:collect="always">
1698+ <feGaussianBlur
1699+ id="feGaussianBlur4930"
1700+ stdDeviation="1.8313925"
1701+ inkscape:collect="always" />
1702+ </filter>
1703+ <filter
1704+ height="1.1822857"
1705+ y="-0.091142852"
1706+ width="1.0894393"
1707+ x="-0.044719627"
1708+ id="filter4962"
1709+ inkscape:collect="always">
1710+ <feGaussianBlur
1711+ id="feGaussianBlur4964"
1712+ stdDeviation="0.81294741"
1713+ inkscape:collect="always" />
1714+ </filter>
1715+ <filter
1716+ height="1.0684771"
1717+ y="-0.034238532"
1718+ width="1.0369505"
1719+ x="-0.018475248"
1720+ id="filter4980"
1721+ inkscape:collect="always">
1722+ <feGaussianBlur
1723+ id="feGaussianBlur4982"
1724+ stdDeviation="0.63404806"
1725+ inkscape:collect="always" />
1726+ </filter>
1727+ <filter
1728+ height="1.1421972"
1729+ y="-0.071098591"
1730+ width="1.0724593"
1731+ x="-0.036229665"
1732+ id="filter5014"
1733+ inkscape:collect="always">
1734+ <feGaussianBlur
1735+ id="feGaussianBlur5016"
1736+ stdDeviation="1.2864448"
1737+ inkscape:collect="always" />
1738+ </filter>
1739+ <filter
1740+ height="1.2166729"
1741+ y="-0.10833645"
1742+ width="1.1078326"
1743+ x="-0.053916279"
1744+ id="filter5052"
1745+ inkscape:collect="always">
1746+ <feGaussianBlur
1747+ id="feGaussianBlur5054"
1748+ stdDeviation="0.98471128"
1749+ inkscape:collect="always" />
1750+ </filter>
1751+ <filter
1752+ height="1.1101202"
1753+ y="-0.055060109"
1754+ width="1.0534851"
1755+ x="-0.026742554"
1756+ id="filter5066"
1757+ inkscape:collect="always">
1758+ <feGaussianBlur
1759+ id="feGaussianBlur5068"
1760+ stdDeviation="0.61627025"
1761+ inkscape:collect="always" />
1762+ </filter>
1763+ <filter
1764+ height="1.3084375"
1765+ y="-0.15421875"
1766+ width="1.1154386"
1767+ x="-0.057719299"
1768+ id="filter5128"
1769+ inkscape:collect="always">
1770+ <feGaussianBlur
1771+ id="feGaussianBlur5130"
1772+ stdDeviation="0.34342163"
1773+ inkscape:collect="always" />
1774+ </filter>
1775+ <filter
1776+ height="1.271688"
1777+ y="-0.135844"
1778+ width="1.1215943"
1779+ x="-0.060797153"
1780+ id="filter5254"
1781+ inkscape:collect="always">
1782+ <feGaussianBlur
1783+ id="feGaussianBlur5256"
1784+ stdDeviation="0.89657"
1785+ inkscape:collect="always" />
1786+ </filter>
1787+ <filter
1788+ height="1.2861023"
1789+ y="-0.14305117"
1790+ width="1.2066935"
1791+ x="-0.10334677"
1792+ id="filter5260"
1793+ inkscape:collect="always">
1794+ <feGaussianBlur
1795+ id="feGaussianBlur5262"
1796+ stdDeviation="1.1813088"
1797+ inkscape:collect="always" />
1798+ </filter>
1799+ <filter
1800+ height="1.1678395"
1801+ y="-0.083919731"
1802+ width="1.1260905"
1803+ x="-0.063045227"
1804+ id="filter5314"
1805+ inkscape:collect="always">
1806+ <feGaussianBlur
1807+ id="feGaussianBlur5316"
1808+ stdDeviation="1.0913292"
1809+ inkscape:collect="always" />
1810+ </filter>
1811+ <filter
1812+ height="1.1512575"
1813+ y="-0.075628747"
1814+ width="1.0994488"
1815+ x="-0.049724408"
1816+ id="filter5361"
1817+ inkscape:collect="always">
1818+ <feGaussianBlur
1819+ id="feGaussianBlur5363"
1820+ stdDeviation="0.85830939"
1821+ inkscape:collect="always" />
1822+ </filter>
1823+ <filter
1824+ height="1.2177609"
1825+ y="-0.10888045"
1826+ width="1.4251246"
1827+ x="-0.21256228"
1828+ id="filter5418"
1829+ inkscape:collect="always">
1830+ <feGaussianBlur
1831+ id="feGaussianBlur5420"
1832+ stdDeviation="1.0803968"
1833+ inkscape:collect="always" />
1834+ </filter>
1835+ <linearGradient
1836+ inkscape:collect="always"
1837+ id="linearGradient902">
1838+ <stop
1839+ style="stop-color:#ff9200;stop-opacity:1"
1840+ offset="0"
1841+ id="stop904" />
1842+ <stop
1843+ style="stop-color:#ffcc00;stop-opacity:1"
1844+ offset="1"
1845+ id="stop906" />
1846+ </linearGradient>
1847+ <linearGradient
1848+ id="Background">
1849+ <stop
1850+ id="stop4178"
1851+ offset="0"
1852+ style="stop-color:#22779e;stop-opacity:1" />
1853+ <stop
1854+ id="stop4180"
1855+ offset="1"
1856+ style="stop-color:#2991c0;stop-opacity:1" />
1857+ </linearGradient>
1858+ <clipPath
1859+ clipPathUnits="userSpaceOnUse"
1860+ id="clipPath873">
1861+ <g
1862+ transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
1863+ id="g875"
1864+ inkscape:label="Layer 1"
1865+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
1866+ <path
1867+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
1868+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
1869+ id="path877"
1870+ inkscape:connector-curvature="0"
1871+ sodipodi:nodetypes="sssssssss" />
1872+ </g>
1873+ </clipPath>
1874+ <style
1875+ id="style867"
1876+ type="text/css"><![CDATA[
1877+ .fil0 {fill:#1F1A17}
1878+ ]]></style>
1879+ <linearGradient
1880+ inkscape:collect="always"
1881+ xlink:href="#linearGradient902"
1882+ id="linearGradient908"
1883+ x1="-220"
1884+ y1="731.29077"
1885+ x2="-220"
1886+ y2="635.29077"
1887+ gradientUnits="userSpaceOnUse" />
1888+ <clipPath
1889+ id="clipPath16">
1890+ <path
1891+ id="path18"
1892+ d="m -9,-9 614,0 0,231 -614,0 0,-231 z" />
1893+ </clipPath>
1894+ <clipPath
1895+ id="clipPath116">
1896+ <path
1897+ id="path118"
1898+ d="m 91.7368,146.3253 -9.7039,-1.577 -8.8548,-3.8814 -7.5206,-4.7308 -7.1566,-8.7335 -4.0431,-4.282 -3.9093,-1.4409 -1.034,2.5271 1.8079,2.6096 0.4062,3.6802 1.211,-0.0488 1.3232,-1.2069 -0.3569,3.7488 -1.4667,0.9839 0.0445,1.4286 -3.4744,-1.9655 -3.1462,-3.712 -0.6559,-3.3176 1.3453,-2.6567 1.2549,-4.5133 2.5521,-1.2084 2.6847,0.1318 2.5455,1.4791 -1.698,-8.6122 1.698,-9.5825 -1.8692,-4.4246 -6.1223,-6.5965 1.0885,-3.941 2.9002,-4.5669 5.4688,-3.8486 2.9007,-0.3969 3.225,-0.1094 -2.012,-8.2601 7.3993,-3.0326 9.2188,-1.2129 3.1535,2.0619 0.2427,5.5797 3.5178,5.8224 0.2426,4.6094 8.4909,-0.6066 7.8843,0.7279 -7.8843,-4.7307 1.3343,-5.701 4.9731,-7.763 4.8521,-2.0622 3.8814,1.5769 1.577,3.1538 8.1269,6.1861 1.5769,-1.3343 12.7363,-0.485 2.5473,2.0619 0.2426,3.6391 -0.849,1.5767 -0.6066,9.8251 -4.2454,8.4909 0.7276,3.7605 2.5475,-1.3343 7.1566,-6.6716 3.5175,-0.2424 3.8815,1.5769 3.8818,2.9109 1.9406,6.3077 11.4021,-0.7277 6.914,2.6686 5.5797,5.2157 4.0028,7.5206 0.9706,8.8546 -0.8493,10.3105 -2.1832,9.2185 -2.1836,2.9112 -3.0322,0.9706 -5.3373,-5.8224 -4.8518,-1.6982 -4.2455,7.0353 -4.2454,3.8815 -2.3049,1.4556 -9.2185,7.6419 -7.3993,4.0028 -7.3993,0.6066 -8.6119,-1.4556 -7.5206,-2.7899 -5.2158,-4.2454 -4.1241,-4.9734 -4.2454,-1.2129" />
1899+ </clipPath>
1900+ <clipPath
1901+ id="clipPath128">
1902+ <path
1903+ id="path130"
1904+ d="m 91.7368,146.3253 -9.7039,-1.577 -8.8548,-3.8814 -7.5206,-4.7308 -7.1566,-8.7335 -4.0431,-4.282 -3.9093,-1.4409 -1.034,2.5271 1.8079,2.6096 0.4062,3.6802 1.211,-0.0488 1.3232,-1.2069 -0.3569,3.7488 -1.4667,0.9839 0.0445,1.4286 -3.4744,-1.9655 -3.1462,-3.712 -0.6559,-3.3176 1.3453,-2.6567 1.2549,-4.5133 2.5521,-1.2084 2.6847,0.1318 2.5455,1.4791 -1.698,-8.6122 1.698,-9.5825 -1.8692,-4.4246 -6.1223,-6.5965 1.0885,-3.941 2.9002,-4.5669 5.4688,-3.8486 2.9007,-0.3969 3.225,-0.1094 -2.012,-8.2601 7.3993,-3.0326 9.2188,-1.2129 3.1535,2.0619 0.2427,5.5797 3.5178,5.8224 0.2426,4.6094 8.4909,-0.6066 7.8843,0.7279 -7.8843,-4.7307 1.3343,-5.701 4.9731,-7.763 4.8521,-2.0622 3.8814,1.5769 1.577,3.1538 8.1269,6.1861 1.5769,-1.3343 12.7363,-0.485 2.5473,2.0619 0.2426,3.6391 -0.849,1.5767 -0.6066,9.8251 -4.2454,8.4909 0.7276,3.7605 2.5475,-1.3343 7.1566,-6.6716 3.5175,-0.2424 3.8815,1.5769 3.8818,2.9109 1.9406,6.3077 11.4021,-0.7277 6.914,2.6686 5.5797,5.2157 4.0028,7.5206 0.9706,8.8546 -0.8493,10.3105 -2.1832,9.2185 -2.1836,2.9112 -3.0322,0.9706 -5.3373,-5.8224 -4.8518,-1.6982 -4.2455,7.0353 -4.2454,3.8815 -2.3049,1.4556 -9.2185,7.6419 -7.3993,4.0028 -7.3993,0.6066 -8.6119,-1.4556 -7.5206,-2.7899 -5.2158,-4.2454 -4.1241,-4.9734 -4.2454,-1.2129" />
1905+ </clipPath>
1906+ <filter
1907+ height="1.1953982"
1908+ y="-0.097699106"
1909+ width="1.310986"
1910+ x="-0.15549298"
1911+ id="filter5476"
1912+ inkscape:collect="always">
1913+ <feGaussianBlur
1914+ id="feGaussianBlur5478"
1915+ stdDeviation="0.48016408"
1916+ inkscape:collect="always" />
1917+ </filter>
1918+ <linearGradient
1919+ id="linearGradient5318"
1920+ inkscape:collect="always">
1921+ <stop
1922+ id="stop5320"
1923+ offset="0"
1924+ style="stop-color:#ffffff;stop-opacity:1;" />
1925+ <stop
1926+ id="stop5322"
1927+ offset="1"
1928+ style="stop-color:#ffffff;stop-opacity:0;" />
1929+ </linearGradient>
1930+ <linearGradient
1931+ id="linearGradient4888"
1932+ inkscape:collect="always">
1933+ <stop
1934+ id="stop4890"
1935+ offset="0"
1936+ style="stop-color:#e4ffff;stop-opacity:1;" />
1937+ <stop
1938+ style="stop-color:#ffffff;stop-opacity:1"
1939+ offset="0.27682471"
1940+ id="stop4896" />
1941+ <stop
1942+ id="stop4892"
1943+ offset="1"
1944+ style="stop-color:#3ad3ff;stop-opacity:0.66975307" />
1945+ </linearGradient>
1946+ <linearGradient
1947+ id="linearGradient4605"
1948+ inkscape:collect="always">
1949+ <stop
1950+ id="stop4607"
1951+ offset="0"
1952+ style="stop-color:#00a6ae;stop-opacity:1;" />
1953+ <stop
1954+ id="stop4609"
1955+ offset="1"
1956+ style="stop-color:#30bed6;stop-opacity:1" />
1957+ </linearGradient>
1958+ <linearGradient
1959+ id="linearGradient4595"
1960+ inkscape:collect="always">
1961+ <stop
1962+ id="stop4597"
1963+ offset="0"
1964+ style="stop-color:#fde20a;stop-opacity:1" />
1965+ <stop
1966+ style="stop-color:#faac16;stop-opacity:1"
1967+ offset="0.478598"
1968+ id="stop4603" />
1969+ <stop
1970+ id="stop4599"
1971+ offset="1"
1972+ style="stop-color:#f8921a;stop-opacity:1" />
1973+ </linearGradient>
1974+ <clipPath
1975+ id="clipPath4296"
1976+ clipPathUnits="userSpaceOnUse">
1977+ <path
1978+ transform="matrix(1.6953846,0,0,1.6953846,-95.06997,-43.304227)"
1979+ d="m 54.179198,62.984692 a 4.3423524,4.3423524 0 1 1 -8.684705,0 4.3423524,4.3423524 0 1 1 8.684705,0 z"
1980+ sodipodi:ry="4.3423524"
1981+ sodipodi:rx="4.3423524"
1982+ sodipodi:cy="62.984692"
1983+ sodipodi:cx="49.836845"
1984+ id="path4298"
1985+ style="color:#000000;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
1986+ sodipodi:type="arc" />
1987+ </clipPath>
1988+ <clipPath
1989+ id="clipPath4327"
1990+ clipPathUnits="userSpaceOnUse">
1991+ <path
1992+ transform="matrix(1.6953846,0,0,1.6953846,-95.06997,-43.304227)"
1993+ d="m 54.179198,62.984692 a 4.3423524,4.3423524 0 1 1 -8.684705,0 4.3423524,4.3423524 0 1 1 8.684705,0 z"
1994+ sodipodi:ry="4.3423524"
1995+ sodipodi:rx="4.3423524"
1996+ sodipodi:cy="62.984692"
1997+ sodipodi:cx="49.836845"
1998+ id="path4329"
1999+ style="color:#000000;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2000+ sodipodi:type="arc" />
2001+ </clipPath>
2002+ <clipPath
2003+ id="clipPath4375"
2004+ clipPathUnits="userSpaceOnUse">
2005+ <path
2006+ sodipodi:type="arc"
2007+ style="color:#000000;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1.84735239;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2008+ id="path4377"
2009+ sodipodi:cx="46.179249"
2010+ sodipodi:cy="63.803059"
2011+ sodipodi:rx="11.440429"
2012+ sodipodi:ry="11.440429"
2013+ d="m 57.619678,63.803059 a 11.440429,11.440429 0 1 1 -22.880858,0 11.440429,11.440429 0 1 1 22.880858,0 z"
2014+ transform="matrix(1.0826305,0,0,1.0826305,-71.853406,-3.5601908)" />
2015+ </clipPath>
2016+ <clipPath
2017+ id="clipPath4296-4"
2018+ clipPathUnits="userSpaceOnUse">
2019+ <path
2020+ transform="matrix(1.6953846,0,0,1.6953846,-95.06997,-43.304227)"
2021+ d="m 54.179198,62.984692 a 4.3423524,4.3423524 0 1 1 -8.684705,0 4.3423524,4.3423524 0 1 1 8.684705,0 z"
2022+ sodipodi:ry="4.3423524"
2023+ sodipodi:rx="4.3423524"
2024+ sodipodi:cy="62.984692"
2025+ sodipodi:cx="49.836845"
2026+ id="path4298-0"
2027+ style="color:#000000;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2028+ sodipodi:type="arc" />
2029+ </clipPath>
2030+ <clipPath
2031+ id="clipPath4327-6"
2032+ clipPathUnits="userSpaceOnUse">
2033+ <path
2034+ transform="matrix(1.6953846,0,0,1.6953846,-95.06997,-43.304227)"
2035+ d="m 54.179198,62.984692 a 4.3423524,4.3423524 0 1 1 -8.684705,0 4.3423524,4.3423524 0 1 1 8.684705,0 z"
2036+ sodipodi:ry="4.3423524"
2037+ sodipodi:rx="4.3423524"
2038+ sodipodi:cy="62.984692"
2039+ sodipodi:cx="49.836845"
2040+ id="path4329-2"
2041+ style="color:#000000;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2042+ sodipodi:type="arc" />
2043+ </clipPath>
2044+ <clipPath
2045+ id="clipPath4375-1"
2046+ clipPathUnits="userSpaceOnUse">
2047+ <path
2048+ sodipodi:type="arc"
2049+ style="color:#000000;fill:#ff00ff;fill-opacity:1;stroke:none;stroke-width:1.84735239;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2050+ id="path4377-3"
2051+ sodipodi:cx="46.179249"
2052+ sodipodi:cy="63.803059"
2053+ sodipodi:rx="11.440429"
2054+ sodipodi:ry="11.440429"
2055+ d="m 57.619678,63.803059 a 11.440429,11.440429 0 1 1 -22.880858,0 11.440429,11.440429 0 1 1 22.880858,0 z"
2056+ transform="matrix(1.0826305,0,0,1.0826305,-71.853406,-3.5601908)" />
2057+ </clipPath>
2058+ <linearGradient
2059+ gradientTransform="translate(10,0)"
2060+ gradientUnits="userSpaceOnUse"
2061+ y2="9.8841219"
2062+ x2="142.27451"
2063+ y1="61.489723"
2064+ x1="66.734573"
2065+ id="linearGradient4611"
2066+ xlink:href="#linearGradient4605"
2067+ inkscape:collect="always" />
2068+ <linearGradient
2069+ gradientTransform="translate(-100,50)"
2070+ gradientUnits="userSpaceOnUse"
2071+ y2="104.79355"
2072+ x2="89.565689"
2073+ y1="90.777214"
2074+ x1="56.214554"
2075+ id="linearGradient4619"
2076+ xlink:href="#linearGradient4605"
2077+ inkscape:collect="always" />
2078+ <linearGradient
2079+ gradientTransform="translate(10,0)"
2080+ gradientUnits="userSpaceOnUse"
2081+ y2="105.84206"
2082+ x2="66.504166"
2083+ y1="92.78138"
2084+ x1="42.143345"
2085+ id="linearGradient4627"
2086+ xlink:href="#linearGradient4605"
2087+ inkscape:collect="always" />
2088+ <clipPath
2089+ id="clipPath4744"
2090+ clipPathUnits="userSpaceOnUse">
2091+ <path
2092+ style="color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2093+ d="m -61.36328,5.5722656 c -1.39719,0 -2.5293,1.1321042 -2.5293,2.5292969 0,1.3971927 1.13211,2.5312495 2.5293,2.5312495 1.39719,0 2.5293,-1.1340568 2.5293,-2.5312495 0,-1.3971927 -1.13211,-2.5292969 -2.5293,-2.5292969 z M -70.8125,7.625 c -1.65694,0 -3,1.3430621 -3,3 0,1.656938 1.34306,3 3,3 1.65694,0 3,-1.343062 3,-3 0,-1.6569379 -1.34306,-3 -3,-3 z m -10.304688,2.3085938 c -1.916683,0 -3.470703,1.5540202 -3.470703,3.4707032 0,1.916683 1.55402,3.470703 3.470703,3.470703 1.916688,0 3.470708,-1.55402 3.470708,-3.470703 0,-1.916683 -1.55402,-3.4707032 -3.470708,-3.4707032 z m -11.902343,4.8261722 c -2.325487,0 -4.208985,1.885451 -4.208985,4.210937 0,2.325487 1.883498,4.210938 4.208985,4.210938 2.325486,0 4.210937,-1.885451 4.210937,-4.210938 0,-2.325486 -1.885451,-4.210937 -4.210937,-4.210937 z m 42.087891,0.77539 c -1.09022,0 -1.97266,0.882435 -1.97266,1.972656 0,1.090222 0.88244,1.97461 1.97266,1.97461 1.09022,0 1.97461,-0.884388 1.97461,-1.97461 0,-1.090221 -0.88439,-1.972656 -1.97461,-1.972656 z m -7.35352,3.078125 c -1.65693,0 -3,1.343062 -3,3 0,1.656938 1.34307,3 3,3 1.65694,0 3,-1.343062 3,-3 0,-1.656938 -1.34306,-3 -3,-3 z m -45.5,2.435547 c -2.30464,0 -4.17187,1.867227 -4.17187,4.171875 0,2.304648 1.86723,4.173828 4.17187,4.173828 2.30465,0 4.173832,-1.86918 4.173832,-4.173828 0,-2.304648 -1.869182,-4.171875 -4.173832,-4.171875 z m 35.02539,2.181641 c -2.24726,0 -4.07031,1.821091 -4.07031,4.068359 0,2.247268 1.82305,4.070313 4.07031,4.070313 2.24727,0 4.06836,-1.823045 4.06836,-4.070313 0,-2.247268 -1.82109,-4.068359 -4.06836,-4.068359 z m 14.72852,5.503906 c -0.97216,0 -1.75977,0.789563 -1.75977,1.761719 0,0.972155 0.78761,1.759765 1.75977,1.759765 0.97216,0 1.75977,-0.78761 1.75977,-1.759765 0,-0.972156 -0.78761,-1.761719 -1.75977,-1.761719 z m -27.681641,0.07227 c -2.758021,0 -4.99414,2.236119 -4.99414,4.99414 0,2.758021 2.236119,4.994141 4.99414,4.994141 2.758021,0 4.994141,-2.23612 4.994141,-4.994141 0,-2.758021 -2.23612,-4.99414 -4.994141,-4.99414 z m -32.175779,0.01367 c -1.90795,0 -3.45508,1.545179 -3.45508,3.453126 0,1.907946 1.54713,3.455078 3.45508,3.455078 1.90794,0 3.45312,-1.547132 3.45312,-3.455078 0,-1.907947 -1.54518,-3.453126 -3.45312,-3.453126 z m 53.62695,5.238282 c -1.92259,0 -3.48242,1.557882 -3.48242,3.480468 0,1.922587 1.55983,3.482422 3.48242,3.482422 1.92259,0 3.48047,-1.559835 3.48047,-3.482422 0,-1.922586 -1.55788,-3.480468 -3.48047,-3.480468 z m -61.21484,2.214844 c -1.30345,0 -2.35938,1.055926 -2.35938,2.359374 0,1.303449 1.05593,2.359376 2.35938,2.359376 1.30345,0 2.36133,-1.055927 2.36133,-2.359376 0,-1.303448 -1.05788,-2.359374 -2.36133,-2.359374 z m 26.376951,0.652343 c -2.436882,0 -4.41211,1.975228 -4.41211,4.41211 0,2.436881 1.975228,4.412109 4.41211,4.412109 2.436881,0 4.412109,-1.975228 4.412109,-4.412109 0,-2.436882 -1.975228,-4.41211 -4.412109,-4.41211 z m 27.195309,4.347657 c -2.3063,0 -4.17773,1.86948 -4.17773,4.175781 0,2.3063 1.87143,4.175781 4.17773,4.175781 2.3063,0 4.17578,-1.869481 4.17578,-4.175781 0,-2.306301 -1.86948,-4.175781 -4.17578,-4.175781 z m -38.55273,3.158203 c -1.77193,0 -3.20899,1.435097 -3.20899,3.207031 0,1.771934 1.43706,3.208984 3.20899,3.208984 1.77193,0 3.20898,-1.43705 3.20898,-3.208984 0,-1.771934 -1.43705,-3.207031 -3.20898,-3.207031 z m 27.91797,4.167968 c -2.342431,0 -4.24219,1.897806 -4.24219,4.240235 0,2.342429 1.899759,4.242187 4.24219,4.242187 2.34243,0 4.24023,-1.899758 4.24023,-4.242187 0,-2.342429 -1.8978,-4.240235 -4.24023,-4.240235 z m -36.4043,2.140625 c -1.07676,0 -1.94922,0.874411 -1.94922,1.951172 0,1.076762 0.87246,1.949219 1.94922,1.949219 1.07676,0 1.94922,-0.872457 1.94922,-1.949219 0,-1.076761 -0.87246,-1.951172 -1.94922,-1.951172 z m 25.388672,3.638672 c -2.040179,0 -3.693359,1.655133 -3.693359,3.695313 0,2.04018 1.65318,3.693359 3.693359,3.693359 2.04018,0 3.695313,-1.653179 3.695313,-3.693359 0,-2.04018 -1.655133,-3.695313 -3.695313,-3.695313 z M -100.54297,58.5293 c -1.62081,0 -2.93359,1.314737 -2.93359,2.935547 0,1.620809 1.31278,2.935547 2.93359,2.935547 1.620811,0 2.935548,-1.314738 2.935548,-2.935547 0,-1.62081 -1.314737,-2.935547 -2.935548,-2.935547 z m -8.55078,1.617187 c -1.03898,0 -1.88086,0.843832 -1.88086,1.882813 0,1.03898 0.84188,1.880859 1.88086,1.880859 1.03898,0 1.88086,-0.841879 1.88086,-1.880859 0,-1.038981 -0.84188,-1.882813 -1.88086,-1.882813 z"
2094+ id="path4746"
2095+ inkscape:connector-curvature="0" />
2096+ </clipPath>
2097+ <linearGradient
2098+ gradientUnits="userSpaceOnUse"
2099+ y2="39.94598"
2100+ x2="1.4735259"
2101+ y1="30.160028"
2102+ x1="-4.2457867"
2103+ id="linearGradient4894"
2104+ xlink:href="#linearGradient4888"
2105+ inkscape:collect="always" />
2106+ <linearGradient
2107+ gradientTransform="translate(-1.0193699,-0.40774795)"
2108+ gradientUnits="userSpaceOnUse"
2109+ y2="13.163922"
2110+ x2="-14.111487"
2111+ y1="23.304689"
2112+ x1="-8.2567129"
2113+ id="linearGradient4906"
2114+ xlink:href="#linearGradient4888"
2115+ inkscape:collect="always" />
2116+ <clipPath
2117+ id="clipPath5210"
2118+ clipPathUnits="userSpaceOnUse">
2119+ <path
2120+ style="color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2121+ d="m -10.183594,74.130859 c -1.322339,0 -2.394531,1.072193 -2.394531,2.394532 0,1.322339 1.072192,2.394531 2.394531,2.394531 1.322339,0 2.394532,-1.072192 2.394532,-2.394531 0,-1.322339 -1.072193,-2.394532 -2.394532,-2.394532 z m 30.886719,6.5 c -0.604498,0 -1.095703,0.489253 -1.095703,1.09375 0,0.604498 0.491205,1.09375 1.095703,1.09375 0.604498,0 1.09375,-0.489252 1.09375,-1.09375 0,-0.604497 -0.489252,-1.09375 -1.09375,-1.09375 z m -26.474609,0.478516 c -1.246777,0 -2.257813,1.011036 -2.257813,2.257813 0,1.246776 1.011036,2.255859 2.257813,2.255859 1.246776,0 2.257812,-1.009083 2.257812,-2.255859 0,-1.246777 -1.011036,-2.257813 -2.257812,-2.257813 z m 22.916015,0.238281 c -0.736731,0 -1.333984,0.597253 -1.333984,1.333985 0,0.736731 0.597253,1.333984 1.333984,1.333984 0.736732,0 1.333985,-0.597253 1.333985,-1.333984 0,-0.736732 -0.597253,-1.333985 -1.333985,-1.333985 z m -4.34375,1.984375 c -0.736731,0 -1.333984,0.597253 -1.333984,1.333985 0,0.736731 0.597253,1.333984 1.333984,1.333984 0.736732,0 1.333985,-0.597253 1.333985,-1.333984 0,-0.736732 -0.597253,-1.333985 -1.333985,-1.333985 z m -6.052734,2.121094 c -0.963419,0 -1.746094,0.780722 -1.746094,1.744141 0,0.963418 0.782675,1.74414 1.746094,1.74414 0.963418,0 1.744141,-0.780722 1.744141,-1.74414 0,-0.963419 -0.780723,-1.744141 -1.744141,-1.744141 z m -6.5,0.410156 c -1.246777,0 -2.257813,1.011036 -2.257813,2.257813 0,1.246776 1.011036,2.257812 2.257813,2.257812 1.246777,0 2.257812,-1.011036 2.257812,-2.257812 0,-1.246777 -1.011035,-2.257813 -2.257812,-2.257813 z"
2122+ id="path5212"
2123+ inkscape:connector-curvature="0" />
2124+ </clipPath>
2125+ <linearGradient
2126+ gradientTransform="translate(0,50)"
2127+ gradientUnits="userSpaceOnUse"
2128+ y2="70.557083"
2129+ x2="-49.200706"
2130+ y1="97.305344"
2131+ x1="-26.779074"
2132+ id="linearGradient5324"
2133+ xlink:href="#linearGradient5318"
2134+ inkscape:collect="always" />
2135+ <clipPath
2136+ id="clipPath5333"
2137+ clipPathUnits="userSpaceOnUse">
2138+ <path
2139+ style="color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2140+ d="m -50.017578,118.13867 c -1.322339,0 -2.394531,1.07219 -2.394531,2.39453 0,1.32234 1.072192,2.39453 2.394531,2.39453 1.322339,0 2.394531,-1.07219 2.394531,-2.39453 0,-1.32234 -1.072192,-2.39453 -2.394531,-2.39453 z m 4.542969,8.125 c -1.440405,0 -2.609375,1.16702 -2.609375,2.60742 0,1.44041 1.16897,2.60743 2.609375,2.60743 1.440404,0 2.607421,-1.16702 2.607421,-2.60743 0,-1.4404 -1.167017,-2.60742 -2.607421,-2.60742 z m 7.214843,4.8086 c -1.263306,0 -2.287109,1.0238 -2.287109,2.28711 0,1.2633 1.023803,2.28906 2.287109,2.28906 1.263306,0 2.28711,-1.02576 2.28711,-2.28906 0,-1.26331 -1.023804,-2.28711 -2.28711,-2.28711 z m 6.894532,3.04687 c -1.115724,0 -2.021485,0.90381 -2.021485,2.01953 0,1.11573 0.905761,2.02149 2.021485,2.02149 1.115723,0 2.019531,-0.90576 2.019531,-2.02149 0,-1.11572 -0.903808,-2.01953 -2.019531,-2.01953 z m 6.925781,0.68359 c -1.115724,0 -2.019531,0.90577 -2.019531,2.02149 0,1.11572 0.903807,2.01953 2.019531,2.01953 1.115723,0 2.019531,-0.90381 2.019531,-2.01953 0,-1.11572 -0.903808,-2.02149 -2.019531,-2.02149 z m 6.242187,2.00977 c -0.974044,0 -1.763672,0.78963 -1.763672,1.76367 0,0.97405 0.789628,1.76367 1.763672,1.76367 0.974045,0 1.763672,-0.78962 1.763672,-1.76367 0,-0.97404 -0.789627,-1.76367 -1.763672,-1.76367 z m 4.533204,3.03516 c -0.903205,0 -1.636719,0.73351 -1.636719,1.63672 0,0.9032 0.733514,1.63476 1.636719,1.63476 0.903204,0 1.634765,-0.73156 1.634765,-1.63476 0,-0.90321 -0.731561,-1.63672 -1.634765,-1.63672 z"
2141+ id="path5335"
2142+ inkscape:connector-curvature="0" />
2143+ </clipPath>
2144+ <clipPath
2145+ id="clipPath5487"
2146+ clipPathUnits="userSpaceOnUse">
2147+ <path
2148+ style="color:#000000;fill:#ff00ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2149+ d="m -90.226562,77.787109 c -1.322339,0 -2.392579,1.072193 -2.392579,2.394532 0,1.322339 1.07024,2.394531 2.392579,2.394531 1.322338,0 2.394531,-1.072192 2.394531,-2.394531 0,-1.322339 -1.072193,-2.394532 -2.394531,-2.394532 z m -0.08008,7.75 c -1.248547,0 -2.259765,1.011218 -2.259765,2.259766 0,1.248548 1.011218,2.261719 2.259765,2.261719 1.248548,0 2.261719,-1.013171 2.261719,-2.261719 0,-1.248548 -1.013171,-2.259766 -2.261719,-2.259766 z m 3.955079,7.427735 c -1.041933,0 -1.886719,0.844786 -1.886719,1.886718 0,1.041933 0.844786,1.886719 1.886719,1.886719 1.041932,0 1.886718,-0.844786 1.886718,-1.886719 0,-1.041932 -0.844786,-1.886718 -1.886718,-1.886718 z m 6.363281,4.001953 c -0.909699,0 -1.648438,0.736786 -1.648438,1.646484 0,0.909699 0.738739,1.648439 1.648438,1.648439 0.909698,0 1.646484,-0.73874 1.646484,-1.648439 0,-0.909698 -0.736786,-1.646484 -1.646484,-1.646484 z m 6.429687,1.710937 c -0.739683,0 -1.339844,0.600161 -1.339844,1.339846 0,0.73968 0.600161,1.33789 1.339844,1.33789 0.739684,0 1.339844,-0.59821 1.339844,-1.33789 0,-0.739685 -0.60016,-1.339846 -1.339844,-1.339846 z m 5.986328,2.179686 c -0.692457,0 -1.253906,0.56145 -1.253906,1.25391 0,0.69246 0.561449,1.2539 1.253906,1.2539 0.692457,0 1.253907,-0.56144 1.253907,-1.2539 0,-0.69246 -0.56145,-1.25391 -1.253907,-1.25391 z m 4.488282,5.08789 c -0.574391,0 -1.039063,0.46663 -1.039063,1.04102 0,0.57439 0.464672,1.03906 1.039063,1.03906 0.574391,0 1.041015,-0.46467 1.041015,-1.03906 0,-0.57439 -0.466624,-1.04102 -1.041015,-1.04102 z"
2150+ id="path5489"
2151+ inkscape:connector-curvature="0" />
2152+ </clipPath>
2153+ <filter
2154+ height="1.1303784"
2155+ y="-0.065189186"
2156+ width="1.1608"
2157+ x="-0.080400006"
2158+ id="filter5535"
2159+ inkscape:collect="always">
2160+ <feGaussianBlur
2161+ id="feGaussianBlur5537"
2162+ stdDeviation="0.91792224"
2163+ inkscape:collect="always" />
2164+ </filter>
2165+ <linearGradient
2166+ inkscape:collect="always"
2167+ xlink:href="#linearGradient4595"
2168+ id="linearGradient4403"
2169+ gradientUnits="userSpaceOnUse"
2170+ gradientTransform="translate(-80,0)"
2171+ x1="177.78296"
2172+ y1="111.87411"
2173+ x2="177.78296"
2174+ y2="2.3937817" />
2175+ </defs>
2176+ <sodipodi:namedview
2177+ id="base"
2178+ pagecolor="#ffffff"
2179+ bordercolor="#666666"
2180+ borderopacity="1.0"
2181+ inkscape:pageopacity="0.0"
2182+ inkscape:pageshadow="2"
2183+ inkscape:zoom="4.0745361"
2184+ inkscape:cx="44.456273"
2185+ inkscape:cy="35.801941"
2186+ inkscape:document-units="px"
2187+ inkscape:current-layer="layer1"
2188+ showgrid="false"
2189+ fit-margin-top="0"
2190+ fit-margin-left="0"
2191+ fit-margin-right="0"
2192+ fit-margin-bottom="0"
2193+ inkscape:window-width="1920"
2194+ inkscape:window-height="1029"
2195+ inkscape:window-x="0"
2196+ inkscape:window-y="24"
2197+ inkscape:window-maximized="1"
2198+ showborder="true"
2199+ showguides="false"
2200+ inkscape:guide-bbox="true"
2201+ inkscape:showpageshadow="false"
2202+ inkscape:snap-global="true"
2203+ inkscape:snap-bbox="true"
2204+ inkscape:bbox-paths="true"
2205+ inkscape:bbox-nodes="true"
2206+ inkscape:snap-bbox-edge-midpoints="true"
2207+ inkscape:snap-bbox-midpoints="true"
2208+ inkscape:object-paths="true"
2209+ inkscape:snap-intersection-paths="true"
2210+ inkscape:object-nodes="true"
2211+ inkscape:snap-smooth-nodes="true"
2212+ inkscape:snap-midpoints="true"
2213+ inkscape:snap-object-midpoints="true"
2214+ inkscape:snap-center="true">
2215+ <inkscape:grid
2216+ type="xygrid"
2217+ id="grid821" />
2218+ <sodipodi:guide
2219+ orientation="1,0"
2220+ position="16,48"
2221+ id="guide823" />
2222+ <sodipodi:guide
2223+ orientation="1,0"
2224+ position="80,40"
2225+ id="guide827" />
2226+ <sodipodi:guide
2227+ orientation="0,1"
2228+ position="64,16"
2229+ id="guide829" />
2230+ </sodipodi:namedview>
2231+ <metadata
2232+ id="metadata6522">
2233+ <rdf:RDF>
2234+ <cc:Work
2235+ rdf:about="">
2236+ <dc:format>image/svg+xml</dc:format>
2237+ <dc:type
2238+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
2239+ <dc:title></dc:title>
2240+ </cc:Work>
2241+ </rdf:RDF>
2242+ </metadata>
2243+ <g
2244+ inkscape:label="BACKGROUND"
2245+ inkscape:groupmode="layer"
2246+ id="layer1"
2247+ transform="translate(268,-635.29076)"
2248+ style="display:inline">
2249+ <path
2250+ style="fill:url(#linearGradient908);fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
2251+ d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
2252+ id="path6455"
2253+ inkscape:connector-curvature="0"
2254+ sodipodi:nodetypes="sssssssss" />
2255+ <g
2256+ inkscape:label="Logo"
2257+ id="layer2-4"
2258+ transform="matrix(0.65921639,0,0,0.65921639,-285.17077,646.98506)">
2259+ <path
2260+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:url(#linearGradient4403);fill-opacity:1;stroke:none;stroke-width:6.06781054;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;font-family:sans-serif;-inkscape-font-specification:sans-serif"
2261+ d="m 144.16602,0.71484375 -0.082,0.009766 C 124.47315,0.62670457 77.566329,5.6465838 52.412109,51.40625 c -5.634232,2.301038 -9.689453,7.679423 -9.689453,14.109375 0,0.744447 0.169938,1.414661 0.273438,2.117187 -1.542835,2.235236 -8.654821,13.531536 -3.615235,27.511719 1.63498,4.535585 5.363033,7.667559 9.791016,9.421879 4.427983,1.75431 9.638639,2.31325 15.105469,2.01562 5.087139,-0.27696 7.466013,1.36697 8.9375,2.96289 1.471487,1.59592 1.80664,3.05469 1.80664,3.05469 l 2.457032,10.38672 3.375,-10.125 c 0.506658,-1.51998 0.63387,-3.20365 0.318359,-5.73047 -0.09743,-0.78031 -0.400357,-1.66813 -0.638672,-2.52734 3.756387,0.42183 7.188308,0.61794 9.744141,1.0957 1.278075,0.23891 3.606927,1.2614 5.414062,2.25 1.807135,0.9886 3.142578,1.88281 3.142578,1.88281 l 7.150396,4.78516 -2.56641,-8.21094 c -1.90763,-6.10443 -6.284455,-9.847229 -10.089845,-11.96875 -0.262926,-0.146582 -0.441607,-0.169951 -0.699219,-0.302734 3.080219,-2.227846 5.603602,-4.947983 8.033204,-7.207032 0.93862,-0.872731 3.82227,-1.564453 3.82227,-1.564453 l 4.58203,-0.621093 -2.39453,-3.957032 c -3.06052,-5.053898 -9.75963,-5.669659 -13.998052,-2.416015 -2.738247,2.102028 -4.835056,3.856047 -6.785156,4.003906 -4.847276,0.367525 -9.973684,-3.660787 -9.699219,-9.554688 0.08948,-1.921461 1.237174,-4.051685 2.357422,-5.078125 0.210945,0.04827 0.344535,0.07628 0.599609,0.134766 1.186656,0.272104 2.805107,0.633606 4.660157,0.916016 3.710099,0.564818 8.402471,0.885427 12.902343,-0.658204 10.777676,-3.697158 23.753576,-8.988346 32.507816,-17.986328 3.65797,-3.759825 5.48801,-8.201166 6.92382,-11.49414 0.71791,-1.646487 1.35371,-3.014466 1.87305,-3.796875 0.19042,-0.286876 0.15457,-0.176324 0.26367,-0.294922 0.002,0.0024 0.002,0.0015 0.004,0.0039 0.4262,0.430509 1.01226,1.038229 1.98828,1.537109 0.97602,0.498881 2.44322,0.73998 3.75,0.382813 2.71662,-0.7425 4.48419,-2.807757 5.57813,-4.923828 1.09393,-2.116071 1.62454,-4.422196 1.61328,-6.628906 -0.007,-1.402807 -0.32454,-2.335518 -0.45313,-2.876953 0.2441,-0.185975 0.77541,-0.384506 2.38477,-0.5 0.89766,-0.06442 1.92502,-0.08441 3.16601,-0.486329 1.241,-0.401916 2.8783,-1.633112 3.38868,-3.34375 0.54076,-1.81248 0.48278,-3.670806 -0.10352,-5.169921 -0.5863,-1.499116 -1.55309,-2.546265 -2.41016,-3.3437505 -1.44976,-1.3489889 -2.1819,-2.0078233 -2.56836,-2.4980469 0.0233,-0.02067 0.10157,-0.1035156 0.10157,-0.1035156 l 5.86132,-4.4804688 -7.3164,-0.9394531 c 0,0 -3.41499,-0.43275576 -8.88477,-0.47265622 l -0.21093,-0.001953 z m 0.16796,6.06835935 c 2.45329,0.017896 2.48219,0.1047834 3.86524,0.2011719 0.0219,0.453197 0.0822,0.922243 0.27148,1.421875 1.14177,3.013503 3.48917,4.232835 4.57813,5.246094 0.54448,0.506629 0.80126,0.874803 0.89453,1.113281 0.0451,0.115236 -0.034,0.423707 -0.0293,0.591797 -0.30654,0.04795 -0.57497,0.09917 -1.20703,0.144531 -1.8123,0.130059 -5.04605,0.202992 -7.11523,3.021485 -1.12027,1.525941 -1.02691,3.464875 -0.82032,4.490234 0.2066,1.025359 0.37113,1.589026 0.37305,1.949219 0.006,1.105581 -0.3465,2.667349 -0.9375,3.810547 -0.48083,0.930102 -1.01878,1.407488 -1.4707,1.654296 -0.0724,-0.06359 -0.0393,-0.0285 -0.14258,-0.132812 -0.31573,-0.318918 -0.72416,-0.811142 -1.47852,-1.353516 -0.75435,-0.542373 -2.17232,-1.125028 -3.59375,-0.835937 -2.12365,0.431911 -3.5949,1.933877 -4.56445,3.394531 -0.96954,1.460654 -1.65089,3.056888 -2.37891,4.726562 -1.45603,3.339349 -3.03433,6.940329 -5.70898,9.689454 -7.45417,7.661718 -19.65382,12.885156 -30.128906,16.478515 -2.950677,1.012197 -6.79113,0.889923 -10.019531,0.398438 -1.6142,-0.245743 -3.066757,-0.568324 -4.216797,-0.832031 -0.57502,-0.131854 -1.070712,-0.248912 -1.517578,-0.341797 -0.446866,-0.09289 -0.540916,-0.272276 -1.701172,-0.15625 l -0.603515,0.06055 -0.535157,0.289062 c -4.088046,2.207542 -5.830275,6.660659 -6.019531,10.724609 -0.442975,9.512512 7.742806,16.529374 16.21875,15.886719 2.886564,-0.218863 5.01154,-1.474359 6.873047,-2.839844 -2.887511,2.761789 -5.614655,5.209809 -8.855469,6.035157 l 0.201172,5.923828 c 0.127549,0.02341 2.686456,0.578191 5.460938,2.044922 C 85.465946,98.927736 80.917236,99.04558 76.041016,97.8125 l -8.554688,-2.162109 0.462891,-1.253907 C 67.517878,94.133765 67.143617,93.908647 66.800781,93.679688 60.464652,89.448077 58.641838,84.117874 58.042969,80.761719 l -5.933594,-0.1875 c -0.743318,3.039843 -1.297857,6.194123 -0.546875,9.253906 0.938666,3.824511 3.486628,6.469289 6.232422,7.882813 2.745794,1.413523 5.641439,1.878253 8.09375,2.273437 l 1.457031,-3.953125 4.833985,5.73242 c -2.254895,-0.88999 -4.984225,-1.41697 -8.230469,-1.24023 -4.824711,0.26267 -9.253737,-0.2945 -12.542969,-1.597659 -3.289232,-1.303154 -5.355939,-3.170001 -6.318359,-5.839843 -3.501947,-9.714657 0.40912,-17.924216 2.320312,-21.121094 L 50.3125,72.578125 49.097656,67.84375 c -0.198444,-0.773142 -0.308594,-1.544271 -0.308594,-2.328125 0,-4.31675 2.896092,-7.894786 6.826172,-8.996094 l 2.716797,-0.761719 -0.36914,-1.816406 C 81.834285,10.990201 125.98495,6.6493519 144.33398,6.7832031 Z"
2262+ id="path4055-4"
2263+ inkscape:connector-curvature="0" />
2264+ <path
2265+ style="color:#000000;fill:url(#linearGradient4627);fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2266+ d="m 45.99142,68.562948 c 0,0 -8.79736,11.572938 -3.7578,25.553075 2.59741,7.205427 11.58723,9.996567 21.87877,9.436267 11.73633,-0.63896 13.86213,8.35067 13.86213,8.35067 0,0 1.4903,-10.21824 -5.92898,-13.611599 -4.5917,-2.100104 -15.38867,-0.434916 -17.53643,-9.185745 -1.45661,-5.934837 4.09184,-17.870451 4.09184,-17.870451 z"
2267+ id="path4446"
2268+ inkscape:connector-curvature="0"
2269+ sodipodi:nodetypes="csscsscc" />
2270+ <g
2271+ transform="translate(110,0)"
2272+ id="g5539">
2273+ <path
2274+ style="opacity:0.85;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#00f1ff;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5418);enable-background:accumulate"
2275+ d="m -59.388305,73.158428 c -10.438347,24.530116 9.133554,23.81248 9.133554,23.81248 0,0 -13.987385,-0.358818 -4.175338,-22.279347 z"
2276+ id="path5365"
2277+ inkscape:connector-curvature="0"
2278+ sodipodi:nodetypes="cccc" />
2279+ <path
2280+ style="opacity:0.85;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5476);enable-background:accumulate"
2281+ d="m -39.35257,99.397824 c 5.010407,4.175336 7.306843,11.795336 7.306843,11.795336 l 0.104384,-5.11479 -2.296437,-5.42794 c 0,0 -3.653421,-0.62631 -5.11479,-1.252606 z"
2282+ id="path5422"
2283+ inkscape:connector-curvature="0"
2284+ sodipodi:nodetypes="ccccc" />
2285+ <path
2286+ style="color:#000000;fill:#0070ba;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2287+ d="m -60.226562,77.787109 c -1.322339,0 -2.392579,1.072193 -2.392579,2.394532 0,1.322339 1.07024,2.394531 2.392579,2.394531 1.322338,0 2.394531,-1.072192 2.394531,-2.394531 0,-1.322339 -1.072193,-2.394532 -2.394531,-2.394532 z m -0.08008,7.75 c -1.248547,0 -2.259765,1.011218 -2.259765,2.259766 0,1.248548 1.011218,2.261719 2.259765,2.261719 1.248548,0 2.261719,-1.013171 2.261719,-2.261719 0,-1.248548 -1.013171,-2.259766 -2.261719,-2.259766 z m 3.955079,7.427735 c -1.041933,0 -1.886719,0.844786 -1.886719,1.886718 0,1.041933 0.844786,1.886719 1.886719,1.886719 1.041932,0 1.886718,-0.844786 1.886718,-1.886719 0,-1.041932 -0.844786,-1.886718 -1.886718,-1.886718 z m 6.363281,4.001953 c -0.909699,0 -1.648438,0.736786 -1.648438,1.646484 0,0.909699 0.738739,1.648439 1.648438,1.648439 0.909698,0 1.646484,-0.73874 1.646484,-1.648439 0,-0.909698 -0.736786,-1.646484 -1.646484,-1.646484 z m 6.429687,1.710937 c -0.739683,0 -1.339844,0.600161 -1.339844,1.339846 0,0.73968 0.600161,1.33789 1.339844,1.33789 0.739684,0 1.339844,-0.59821 1.339844,-1.33789 0,-0.739685 -0.60016,-1.339846 -1.339844,-1.339846 z m 5.986328,2.179686 c -0.692457,0 -1.253906,0.56145 -1.253906,1.25391 0,0.69246 0.561449,1.2539 1.253906,1.2539 0.692457,0 1.253907,-0.56144 1.253907,-1.2539 0,-0.69246 -0.56145,-1.25391 -1.253907,-1.25391 z m 4.488282,5.08789 c -0.574391,0 -1.039063,0.46663 -1.039063,1.04102 0,0.57439 0.464672,1.03906 1.039063,1.03906 0.574391,0 1.041015,-0.46467 1.041015,-1.03906 0,-0.57439 -0.466624,-1.04102 -1.041015,-1.04102 z"
2288+ id="path4685"
2289+ inkscape:connector-curvature="0" />
2290+ <g
2291+ inkscape:groupmode="maskhelper"
2292+ id="g5484"
2293+ clip-path="url(#clipPath5487)"
2294+ transform="translate(30,0)"
2295+ style="stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;filter:url(#filter5535)">
2296+ <path
2297+ inkscape:connector-curvature="0"
2298+ id="path5480"
2299+ d="m -87.54139,73.615106 -1.95719,14.744166 10.046909,9.655471 6.393488,-1.370032 6.393488,4.371059 4.566777,6.39349"
2300+ style="color:#000000;fill:none;stroke:#ffa4d9;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2301+ sodipodi:nodetypes="cccccc" />
2302+ </g>
2303+ </g>
2304+ <path
2305+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;font-family:sans-serif;-inkscape-font-specification:sans-serif"
2306+ d="m 45.578125,67.453125 -0.382813,0.503906 c 0,0 -9.127517,12.00301 -3.902343,26.498047 1.409552,3.910206 4.580702,6.617932 8.626953,8.220702 4.046251,1.60277 8.994538,2.16091 14.246094,1.875 5.610702,-0.30546 8.718098,1.636 10.542968,3.61524 1.824871,1.97923 2.292969,3.96679 2.292969,3.96679 l 0.857422,3.63086 1.072266,-3.57422 c 0.144913,-0.48304 0.253693,-1.2227 0.294921,-2.34961 0.04123,-1.1269 -0.01765,-2.55398 -0.335937,-4.07617 -0.636583,-3.04437 -2.392824,-6.534516 -6.429687,-8.380858 -2.65637,-1.214944 -6.457153,-1.257342 -9.84375,-2.15625 -3.386598,-0.898907 -6.158801,-2.374947 -7.136719,-6.359374 -0.621258,-2.531253 0.296471,-6.954521 1.480469,-10.615235 1.183997,-3.660713 2.546875,-6.595703 2.546874,-6.595703 l 0.529297,-1.138672 -14.458984,-3.064453 z m 0.878906,2.230469 10.789063,2.287109 c -0.359113,0.799547 -1.171201,2.517758 -2.189453,5.666016 -1.226073,3.790803 -2.35489,8.303447 -1.519532,11.707031 1.169843,4.766401 4.869656,6.833221 8.566407,7.814453 3.696751,0.981232 7.590066,1.157809 9.52539,2.042969 3.382416,1.547018 4.751434,4.326798 5.304688,6.972658 0.155682,0.74453 0.125974,1.34888 0.164062,2.02148 -0.325053,-0.48095 -0.464348,-0.89277 -0.917968,-1.38476 -2.172109,-2.35585 -5.995465,-4.58936 -12.121094,-4.25586 -5.039988,0.27439 -9.731446,-0.2842 -13.402344,-1.73828 -3.670898,-1.454089 -6.29456,-3.743846 -7.482422,-7.039066 -4.533049,-12.575031 2.326607,-22.753738 3.283203,-24.09375 z"
2307+ id="path4440"
2308+ inkscape:connector-curvature="0" />
2309+ <g
2310+ transform="translate(110,-50)"
2311+ id="g5367">
2312+ <path
2313+ sodipodi:nodetypes="ccccssc"
2314+ inkscape:connector-curvature="0"
2315+ id="path4444"
2316+ d="m -9.47865,157.31009 c -3.34027,-10.68887 -15.53226,-12.77653 -15.53226,-12.77653 l -24.88502,-25.38606 -5.34444,8.43418 c 0,0 -0.80955,11.16583 10.35484,18.62201 10.18833,6.80431 18.86212,5.23159 25.72009,6.51353 3.91995,0.73275 9.68679,4.59287 9.68679,4.59287 z"
2317+ style="color:#000000;fill:url(#linearGradient4619);fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
2318+ <path
2319+ style="color:#000000;fill:url(#linearGradient5324);fill-opacity:1;stroke:#00ffff;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5314);enable-background:accumulate"
2320+ d="m -50.835384,127.79045 c 0,0 0.02797,10.578 9.890335,16.36211 9.630227,5.64796 21.946625,2.21815 31.654288,13.49156 -3.653422,-9.70766 -15.761904,-13.46547 -15.761904,-13.46547 l -21.398613,-17.74519 z"
2321+ id="path5272"
2322+ inkscape:connector-curvature="0"
2323+ sodipodi:nodetypes="cscccc" />
2324+ <path
2325+ style="color:#000000;fill:#0070ba;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2326+ d="m -50.017578,128.13867 c -1.322339,0 -2.394531,1.07219 -2.394531,2.39453 0,1.32234 1.072192,2.39453 2.394531,2.39453 1.322339,0 2.394531,-1.07219 2.394531,-2.39453 0,-1.32234 -1.072192,-2.39453 -2.394531,-2.39453 z m 4.542969,8.125 c -1.440405,0 -2.609375,1.16702 -2.609375,2.60742 0,1.44041 1.16897,2.60743 2.609375,2.60743 1.440404,0 2.607421,-1.16702 2.607421,-2.60743 0,-1.4404 -1.167017,-2.60742 -2.607421,-2.60742 z m 7.214843,4.8086 c -1.263306,0 -2.287109,1.0238 -2.287109,2.28711 0,1.2633 1.023803,2.28906 2.287109,2.28906 1.263306,0 2.28711,-1.02576 2.28711,-2.28906 0,-1.26331 -1.023804,-2.28711 -2.28711,-2.28711 z m 6.894532,3.04687 c -1.115724,0 -2.021485,0.90381 -2.021485,2.01953 0,1.11573 0.905761,2.02149 2.021485,2.02149 1.115723,0 2.019531,-0.90576 2.019531,-2.02149 0,-1.11572 -0.903808,-2.01953 -2.019531,-2.01953 z m 6.925781,0.68359 c -1.115724,0 -2.019531,0.90577 -2.019531,2.02149 0,1.11572 0.903807,2.01953 2.019531,2.01953 1.115723,0 2.019531,-0.90381 2.019531,-2.01953 0,-1.11572 -0.903808,-2.02149 -2.019531,-2.02149 z m 6.242187,2.00977 c -0.974044,0 -1.763672,0.78963 -1.763672,1.76367 0,0.97405 0.789628,1.76367 1.763672,1.76367 0.974045,0 1.763672,-0.78962 1.763672,-1.76367 0,-0.97404 -0.789627,-1.76367 -1.763672,-1.76367 z m 4.533204,3.03516 c -0.903205,0 -1.636719,0.73351 -1.636719,1.63672 0,0.9032 0.733514,1.63476 1.636719,1.63476 0.903204,0 1.634765,-0.73156 1.634765,-1.63476 0,-0.90321 -0.731561,-1.63672 -1.634765,-1.63672 z"
2327+ id="path4699"
2328+ inkscape:connector-curvature="0" />
2329+ <g
2330+ inkscape:groupmode="maskhelper"
2331+ id="g5330"
2332+ clip-path="url(#clipPath5333)"
2333+ style="filter:url(#filter5361)"
2334+ transform="translate(0,10)">
2335+ <path
2336+ inkscape:connector-curvature="0"
2337+ id="path5326"
2338+ d="m -53.431291,114.03917 7.95924,11.64528 18.071389,9.32927 15.657521,7.82876"
2339+ style="color:#000000;fill:none;stroke:#f686c0;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2340+ sodipodi:nodetypes="cccc" />
2341+ </g>
2342+ </g>
2343+ <path
2344+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;font-family:sans-serif;-inkscape-font-specification:sans-serif"
2345+ d="m 53.761719,77.509766 c 0,0 -0.769526,11.800727 10.796875,19.52539 10.465494,6.989414 19.528728,5.437244 26.091797,6.664064 1.735275,0.32437 4.126992,1.43266 6.017578,2.4668 1.890586,1.03413 3.296875,1.9746 3.296875,1.9746 l 2.357426,1.57813 -0.84571,-2.70703 C 97.940712,95.697012 85.158203,93.548828 85.158203,93.548828 l -0.337891,1.970703 c 0,0 9.302866,1.685281 13.490235,9.300779 -0.344321,-0.19973 -0.292709,-0.19634 -0.683594,-0.41015 -1.97282,-1.07912 -4.4247,-2.26741 -6.609375,-2.67578 -7.152883,-1.33707 -15.436501,0.25787 -25.347656,-6.361333 -10.762384,-7.187697 -9.91211,-17.71875 -9.91211,-17.71875 l -1.996093,-0.144531 z"
2346+ id="path4438"
2347+ inkscape:connector-curvature="0" />
2348+ <path
2349+ sodipodi:nodetypes="csssssssscssscssscc"
2350+ inkscape:connector-curvature="0"
2351+ id="path4053"
2352+ d="m 152.87488,4.2000979 c 0,0 -2.13429,1.630933 -1.56575,3.1315042 1.29782,3.4253679 7.02934,4.3325019 5.48013,9.5249919 -0.85439,2.863655 -6.53246,0.439774 -8.75151,3.462399 -0.95373,1.299096 0.13029,2.748166 0.13987,4.62732 0.0169,3.312292 -1.76307,7.738348 -4.95821,8.611637 -2.43745,0.666199 -3.28108,-2.847381 -5.09183,-2.479108 -4.2679,0.868011 -4.75185,10.44397 -11.08448,16.95292 -8.1042,8.32985 -20.69179,13.587409 -31.31817,17.232668 -7.45055,2.555827 -17.06774,-0.889765 -18.13663,-0.782876 -2.67222,1.442997 -4.28398,5.060216 -4.43004,8.196608 -0.35872,7.703206 6.29677,13.226095 12.95838,12.721005 3.29716,-0.249995 5.84482,-2.658318 8.4046,-4.623345 2.81552,-2.161347 7.50879,-1.796509 9.55437,1.581402 0,0 -3.46053,0.470799 -5.48014,2.348628 C 91.95765,90.877707 86.66529,98.612984 72.76056,93.187009 62.91599,89.345408 60.94115,77.8611 60.94115,77.8611 57.60632,67.538505 54.75441,53.39081 54.75441,53.39081 86.06946,-4.4115389 152.87488,4.2000979 152.87488,4.2000979 Z"
2353+ style="color:#000000;fill:url(#linearGradient4611);fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
2354+ <g
2355+ transform="translate(110,0)"
2356+ id="g5070">
2357+ <path
2358+ style="color:#000000;fill:url(#linearGradient4894);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4727);enable-background:accumulate"
2359+ d="m -43.404585,56.033015 c 0,0 14.064566,-13.998006 29.969474,-23.608606 C 2.4698001,22.813808 41.40699,11.18074 41.40699,11.18074 c 0,0 -27.109157,21.273679 -43.2212844,30.059179 -16.1121306,8.7855 -41.5902906,14.793096 -41.5902906,14.793096 z"
2360+ id="path4717"
2361+ inkscape:connector-curvature="0"
2362+ sodipodi:nodetypes="czczc" />
2363+ <path
2364+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4962);enable-background:accumulate"
2365+ d="M -34.352581,36.950411 C -13.149688,23.290855 16.20816,12.485534 16.20816,12.485534 c 0,0 -14.66692,0.939698 -25.688116,7.339463 -11.021201,6.399765 -24.872625,17.125414 -24.872625,17.125414 z"
2366+ id="path4932"
2367+ inkscape:connector-curvature="0"
2368+ sodipodi:nodetypes="cczc" />
2369+ <path
2370+ style="opacity:0.7;color:#000000;fill:#029dff;fill-opacity:1;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5014);enable-background:accumulate"
2371+ d="m -47.502636,51.425463 c 0,0 3.033516,-4.331961 22.833885,-18.144784 C -4.8683818,19.467856 37.716685,8.0003065 37.716685,8.0003065 c 0,0 -44.7698895,18.9515775 -58.919578,27.9307345 -14.149688,8.979158 -26.299743,15.494422 -26.299743,15.494422 z"
2372+ id="path4984"
2373+ inkscape:connector-curvature="0"
2374+ sodipodi:nodetypes="czczc" />
2375+ <path
2376+ style="color:#000000;fill:#e4ffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4762);enable-background:accumulate"
2377+ d="m -42.589089,62.067684 c 0,0 16.602204,-2.855673 43.058179,-17.288513 C 14.1162,37.3341 33.57822,18.520204 38.145,16.889212 c 0,0 -6.96879,5.873304 -9.94905,9.296653 -7.81416,8.975931 -3.019552,13.047524 -22.1814818,28.175383 -11.299691,8.920819 -48.6035572,7.706436 -48.6035572,7.706436 z"
2378+ id="path4760"
2379+ inkscape:connector-curvature="0"
2380+ sodipodi:nodetypes="cscssc" />
2381+ <path
2382+ style="color:#000000;fill:url(#linearGradient4906);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4928);enable-background:accumulate"
2383+ d="M -46.788893,48.163479 C -24.566629,29.203199 10.09194,13.912652 32.92583,6.7770627 c 0,0 -24.6953999,-5.3921657 -50.152997,8.9704543 -25.457601,14.36262 -29.561726,32.415962 -29.561726,32.415962 z"
2384+ id="path4898"
2385+ inkscape:connector-curvature="0"
2386+ sodipodi:nodetypes="cczc" />
2387+ <path
2388+ style="color:#000000;fill:#0070ba;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2389+ d="m 18.63672,5.5722656 c -1.39719,0 -2.5293,1.1321042 -2.5293,2.5292969 0,1.3971927 1.13211,2.5312495 2.5293,2.5312495 1.39719,0 2.5293,-1.1340568 2.5293,-2.5312495 0,-1.3971927 -1.13211,-2.5292969 -2.5293,-2.5292969 z M 9.1875,7.625 c -1.65694,0 -3,1.3430621 -3,3 0,1.656938 1.34306,3 3,3 1.65694,0 3,-1.343062 3,-3 0,-1.6569379 -1.34306,-3 -3,-3 z M -1.117188,9.9335938 c -1.916683,0 -3.470703,1.5540202 -3.470703,3.4707032 0,1.916683 1.55402,3.470703 3.470703,3.470703 1.916688,0 3.470708,-1.55402 3.470708,-3.470703 0,-1.916683 -1.55402,-3.4707032 -3.470708,-3.4707032 z m -11.902343,4.8261722 c -2.325487,0 -4.208985,1.885451 -4.208985,4.210937 0,2.325487 1.883498,4.210938 4.208985,4.210938 2.325486,0 4.210937,-1.885451 4.210937,-4.210938 0,-2.325486 -1.885451,-4.210937 -4.210937,-4.210937 z m 42.087891,0.77539 c -1.09022,0 -1.97266,0.882435 -1.97266,1.972656 0,1.090222 0.88244,1.97461 1.97266,1.97461 1.09022,0 1.97461,-0.884388 1.97461,-1.97461 0,-1.090221 -0.88439,-1.972656 -1.97461,-1.972656 z m -7.35352,3.078125 c -1.65693,0 -3,1.343062 -3,3 0,1.656938 1.34307,3 3,3 1.65694,0 3,-1.343062 3,-3 0,-1.656938 -1.34306,-3 -3,-3 z m -45.499996,2.435547 c -2.304648,0 -4.171875,1.867227 -4.171875,4.171875 0,2.304648 1.867227,4.173828 4.171875,4.173828 2.304648,0 4.173828,-1.86918 4.173828,-4.173828 0,-2.304648 -1.86918,-4.171875 -4.173828,-4.171875 z m 35.025386,2.181641 c -2.24726,0 -4.07031,1.821091 -4.07031,4.068359 0,2.247268 1.82305,4.070313 4.07031,4.070313 2.24727,0 4.06836,-1.823045 4.06836,-4.070313 0,-2.247268 -1.82109,-4.068359 -4.06836,-4.068359 z m 14.72852,5.503906 c -0.97216,0 -1.75977,0.789563 -1.75977,1.761719 0,0.972155 0.78761,1.759765 1.75977,1.759765 0.97216,0 1.75977,-0.78761 1.75977,-1.759765 0,-0.972156 -0.78761,-1.761719 -1.75977,-1.761719 z m -27.681641,0.07227 c -2.758021,0 -4.99414,2.236119 -4.99414,4.99414 0,2.758021 2.236119,4.994141 4.99414,4.994141 2.758021,0 4.994141,-2.23612 4.994141,-4.994141 0,-2.758021 -2.23612,-4.99414 -4.994141,-4.99414 z m -32.175781,0.01367 c -1.907946,0 -3.455078,1.545179 -3.455078,3.453126 0,1.907946 1.547132,3.455078 3.455078,3.455078 1.907946,0 3.453125,-1.547132 3.453125,-3.455078 0,-1.907947 -1.545179,-3.453126 -3.453125,-3.453126 z m 53.626952,5.238282 c -1.92259,0 -3.48242,1.557882 -3.48242,3.480468 0,1.922587 1.55983,3.482422 3.48242,3.482422 1.92259,0 3.48047,-1.559835 3.48047,-3.482422 0,-1.922586 -1.55788,-3.480468 -3.48047,-3.480468 z m -61.214842,2.214844 c -1.303449,0 -2.359376,1.055926 -2.359376,2.359374 0,1.303449 1.055927,2.359376 2.359376,2.359376 1.303448,0 2.361328,-1.055927 2.361328,-2.359376 0,-1.303448 -1.05788,-2.359374 -2.361328,-2.359374 z m 26.376953,0.652343 c -2.436882,0 -4.41211,1.975228 -4.41211,4.41211 0,2.436881 1.975228,4.412109 4.41211,4.412109 2.436881,0 4.412109,-1.975228 4.412109,-4.412109 0,-2.436882 -1.975228,-4.41211 -4.412109,-4.41211 z M 12.0957,41.273441 c -2.3063,0 -4.17773,1.86948 -4.17773,4.175781 0,2.3063 1.87143,4.175781 4.17773,4.175781 2.3063,0 4.17578,-1.869481 4.17578,-4.175781 0,-2.306301 -1.86948,-4.175781 -4.17578,-4.175781 z m -38.552731,3.158203 c -1.771934,0 -3.208985,1.435097 -3.208985,3.207031 0,1.771934 1.437051,3.208984 3.208985,3.208984 1.771934,0 3.208984,-1.43705 3.208984,-3.208984 0,-1.771934 -1.43705,-3.207031 -3.208984,-3.207031 z M 1.46094,48.599612 c -2.342431,0 -4.24219,1.897806 -4.24219,4.240235 0,2.342429 1.899759,4.242187 4.24219,4.242187 2.34243,0 4.24023,-1.899758 4.24023,-4.242187 0,-2.342429 -1.8978,-4.240235 -4.24023,-4.240235 z m -36.404299,2.140625 c -1.076762,0 -1.949219,0.874411 -1.949219,1.951172 0,1.076762 0.872457,1.949219 1.949219,1.949219 1.076761,0 1.949218,-0.872457 1.949218,-1.949219 0,-1.076761 -0.872457,-1.951172 -1.949218,-1.951172 z m 25.388671,3.638672 c -2.040179,0 -3.693359,1.655133 -3.693359,3.695313 0,2.04018 1.65318,3.693359 3.693359,3.693359 2.04018,0 3.695313,-1.653179 3.695313,-3.693359 0,-2.04018 -1.655133,-3.695313 -3.695313,-3.695313 z M -20.542969,58.5293 c -1.620809,0 -2.933593,1.314737 -2.933593,2.935547 0,1.620809 1.312784,2.935547 2.933593,2.935547 1.62081,0 2.935547,-1.314738 2.935547,-2.935547 0,-1.62081 -1.314737,-2.935547 -2.935547,-2.935547 z m -8.550781,1.617187 c -1.038981,0 -1.880859,0.843832 -1.880859,1.882813 0,1.03898 0.841878,1.880859 1.880859,1.880859 1.038981,0 1.880859,-0.841879 1.880859,-1.880859 0,-1.038981 -0.841878,-1.882813 -1.880859,-1.882813 z"
2390+ id="path4629"
2391+ inkscape:connector-curvature="0" />
2392+ <g
2393+ inkscape:groupmode="maskhelper"
2394+ id="g4741"
2395+ clip-path="url(#clipPath4744)"
2396+ transform="translate(80,0)">
2397+ <path
2398+ id="path4731"
2399+ d="m -52.292969,6.9394531 c 0,0 -24.700615,1.7547487 -43.546875,12.2324219 -18.846266,10.477673 -29.521486,28.869141 -29.521486,28.869141 z m 13.699219,4.2421879 c 0,0 -37.338187,12.039334 -53.243098,21.649935 -15.904902,9.6106 -31.567452,23.201627 -31.567452,23.201627 0,0 23.11294,-8.98387 39.225068,-17.76937 16.112128,-8.7855 45.585482,-27.082192 45.585482,-27.082192 z m -18.878906,17.001953 -49.132814,31.193359 c 0,0 19.119354,0.92316 32.619142,-7.542969 13.49979,-8.466129 16.513672,-23.65039 16.513672,-23.65039 z"
2400+ style="color:#000000;fill:#f08cc0;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4756);enable-background:accumulate"
2401+ inkscape:connector-curvature="0"
2402+ sodipodi:nodetypes="cscccscscccsc" />
2403+ </g>
2404+ <path
2405+ style="opacity:0.6;color:#000000;fill:none;stroke:#00b0c2;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4842);enable-background:accumulate"
2406+ d="M 15.005125,32.775071 41.75339,12.289814"
2407+ id="path4788"
2408+ inkscape:connector-curvature="0"
2409+ sodipodi:nodetypes="cc" />
2410+ <path
2411+ style="opacity:0.6;color:#000000;fill:#00b1fc;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4884);enable-background:accumulate"
2412+ d="M -36.289567,57.541682 C 7.0132649,40.783242 28.542356,22.475359 28.542356,22.475359 c 0,0 -18.117591,16.415533 -28.74622997,22.222263 C -11.408537,50.81905 -36.289567,57.541682 -36.289567,57.541682 Z"
2413+ id="path4766"
2414+ inkscape:connector-curvature="0"
2415+ sodipodi:nodetypes="ccsc" />
2416+ <path
2417+ sodipodi:nodetypes="cc"
2418+ inkscape:connector-curvature="0"
2419+ id="path4846"
2420+ d="M 29.749291,31.470278 35.88182,20.640492"
2421+ style="opacity:0.6;color:#000000;fill:none;stroke:#00b0c2;stroke-width:1;stroke-opacity:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4842);enable-background:accumulate" />
2422+ <path
2423+ style="opacity:0.4;color:#000000;fill:#ffbae3;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4878);enable-background:accumulate"
2424+ d="M -23.853255,58.153304 C 1.2232437,50.609967 19.164153,34.096175 19.164153,34.096175 c 0,0 -8.76337,11.213185 -18.34865711,16.717666 -6.57480369,3.710588 -24.66875089,7.339463 -24.66875089,7.339463 z"
2425+ id="path4848"
2426+ inkscape:connector-curvature="0"
2427+ sodipodi:nodetypes="cccc" />
2428+ <path
2429+ sodipodi:nodetypes="cccc"
2430+ inkscape:connector-curvature="0"
2431+ id="path4882"
2432+ d="m -60.523278,20.654449 c 15.257142,-7.442748 45.028856,-31.0028 45.028856,-31.0028 0,0 -9.055275,12.4691209 -18.640563,17.9736019 -6.460736,4.9285021 -26.388293,13.0291981 -26.388293,13.0291981 z"
2433+ style="opacity:0.4;color:#000000;fill:#fff7fc;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4878);enable-background:accumulate"
2434+ transform="matrix(-0.9956428,-0.09324919,0.09324919,-0.9956428,-42.60511,36.192161)" />
2435+ <path
2436+ style="opacity:0.7;color:#000000;fill:none;stroke:#ffffff;stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter4980);enable-background:accumulate"
2437+ d="M -50.76462,52.648707 C -23.037759,22.067611 39.959298,5.7576928 39.959298,5.7576928"
2438+ id="path4966"
2439+ inkscape:connector-curvature="0"
2440+ sodipodi:nodetypes="cc" />
2441+ <path
2442+ style="opacity:0.1;color:#000000;fill:#0236ff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5052);enable-background:accumulate"
2443+ d="M -28.950104,38.581402 14.8828,16.766887 -9.5820767,26.960586 Z"
2444+ id="path5018"
2445+ inkscape:connector-curvature="0" />
2446+ <path
2447+ style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5066);enable-background:accumulate"
2448+ d="m -33.084669,38.736347 c 21.993925,-15.575972 55.306932,-26.862435 55.306932,-26.862435 0,0 -24.0884747,6.584066 -33.313007,11.286463 -9.224533,4.702397 -21.993925,15.575972 -21.993925,15.575972 z"
2449+ id="path5056"
2450+ inkscape:connector-curvature="0"
2451+ sodipodi:nodetypes="cczc" />
2452+ </g>
2453+ <g
2454+ transform="translate(110,0)"
2455+ id="g5264">
2456+ <path
2457+ style="color:#000000;fill:#e6ffff;fill-opacity:1;fill-rule:nonzero;stroke:#00ecff;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5260);enable-background:accumulate"
2458+ d="m -42.42599,71.527437 c 4.892975,20.713596 27.433282,15.135603 27.433282,15.135603 0,0 -9.884691,7.57503 -18.625927,3.457703 -8.741235,-4.117326 -8.807355,-18.593306 -8.807355,-18.593306 z"
2459+ id="path5088"
2460+ inkscape:connector-curvature="0"
2461+ sodipodi:nodetypes="cczc" />
2462+ <path
2463+ style="color:#000000;fill:#0070ba;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:5;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2464+ d="m -40.183594,74.130859 c -1.322339,0 -2.394531,1.072193 -2.394531,2.394532 0,1.322339 1.072192,2.394531 2.394531,2.394531 1.322339,0 2.394532,-1.072192 2.394532,-2.394531 0,-1.322339 -1.072193,-2.394532 -2.394532,-2.394532 z m 30.886719,6.5 c -0.604498,0 -1.095703,0.489253 -1.095703,1.09375 0,0.604498 0.491205,1.09375 1.095703,1.09375 0.604498,0 1.09375,-0.489252 1.09375,-1.09375 0,-0.604497 -0.489252,-1.09375 -1.09375,-1.09375 z m -26.474609,0.478516 c -1.246777,0 -2.257813,1.011036 -2.257813,2.257813 0,1.246776 1.011036,2.255859 2.257813,2.255859 1.246776,0 2.257812,-1.009083 2.257812,-2.255859 0,-1.246777 -1.011036,-2.257813 -2.257812,-2.257813 z m 22.916015,0.238281 c -0.736731,0 -1.333984,0.597253 -1.333984,1.333985 0,0.736731 0.597253,1.333984 1.333984,1.333984 0.736732,0 1.333985,-0.597253 1.333985,-1.333984 0,-0.736732 -0.597253,-1.333985 -1.333985,-1.333985 z m -4.34375,1.984375 c -0.736731,0 -1.333984,0.597253 -1.333984,1.333985 0,0.736731 0.597253,1.333984 1.333984,1.333984 0.736732,0 1.333985,-0.597253 1.333985,-1.333984 0,-0.736732 -0.597253,-1.333985 -1.333985,-1.333985 z m -6.052734,2.121094 c -0.963419,0 -1.746094,0.780722 -1.746094,1.744141 0,0.963418 0.782675,1.74414 1.746094,1.74414 0.963418,0 1.744141,-0.780722 1.744141,-1.74414 0,-0.963419 -0.780723,-1.744141 -1.744141,-1.744141 z m -6.5,0.410156 c -1.246777,0 -2.257813,1.011036 -2.257813,2.257813 0,1.246776 1.011036,2.257812 2.257813,2.257812 1.246777,0 2.257812,-1.011036 2.257812,-2.257812 0,-1.246777 -1.011035,-2.257813 -2.257812,-2.257813 z"
2465+ id="path4671"
2466+ inkscape:connector-curvature="0" />
2467+ <g
2468+ inkscape:groupmode="maskhelper"
2469+ id="g5207"
2470+ clip-path="url(#clipPath5210)"
2471+ transform="translate(-30,0)"
2472+ style="filter:url(#filter5254)">
2473+ <path
2474+ inkscape:connector-curvature="0"
2475+ id="path5196"
2476+ d="m -16.243318,68.721853 c 0,0 5.039812,16.466678 13.928865,20.094553 C 2.5509961,90.802134 10.082031,88 10.082031,88 -5.0535728,86.956165 -11.650445,76.159176 -16.243318,68.721853 Z m 35.895662,11.491038 c -2.340359,-10e-7 -5.599605,0.779208 -9.279297,3.765625 l 0.630859,1.688745 c 3.522768,-2.859058 6.656882,-3.932453 8.778917,-3.932453 2.122035,0 3.191786,0.148004 3.191786,0.148004 l 0.480469,-0.876953 c 0,0 -1.462376,-0.792968 -3.802734,-0.792968 z"
2477+ style="opacity:0.8;color:#000000;fill:#f695c8;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2478+ sodipodi:nodetypes="csccsccsccs" />
2479+ <path
2480+ style="color:#000000;fill:none;stroke:#ffa4d9;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2481+ d="m -40.318117,80.400032 c 7.176364,10.699306 19.049984,8.350678 19.049984,8.350678"
2482+ id="path5258"
2483+ inkscape:connector-curvature="0"
2484+ transform="translate(30,0)"
2485+ sodipodi:nodetypes="cc" />
2486+ </g>
2487+ <path
2488+ style="opacity:0.8;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.5;marker:none;visibility:visible;display:inline;overflow:visible;filter:url(#filter5128);enable-background:accumulate"
2489+ d="m -20.167519,84.930275 c 7.599117,-3.841312 9.185745,-4.843393 14.279659,-2.755724 -1.920656,-1.503122 -3.08975,-2.58871 -3.08975,-2.58871 l -4.342353,0.417534 z"
2490+ id="path5090"
2491+ inkscape:connector-curvature="0"
2492+ sodipodi:nodetypes="ccccc" />
2493+ </g>
2494+ <path
2495+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;font-family:sans-serif;-inkscape-font-specification:sans-serif"
2496+ d="M 141.96094,2.7675781 C 121.49192,3.0686835 77.588953,9.1420568 53.875,52.914062 l -0.171875,0.31836 0.07031,0.355469 c 0,0 2.841998,14.105108 6.199218,24.517578 0.03855,0.225213 2.092158,11.981994 12.423828,16.013672 7.142311,2.787109 12.348016,2.209287 16.46875,0.0625 4.120734,-2.146787 7.14871,-5.709829 10.41211,-8.744141 1.663466,-1.546694 4.933596,-2.089844 4.933596,-2.089844 l 1.50976,-0.205078 -0.78906,-1.302734 c -2.38012,-3.930337 -7.735111,-4.378719 -11.019531,-1.857422 -2.618615,2.01019 -5.017984,4.203596 -7.871093,4.419922 -6.06356,0.459745 -12.215723,-4.57084 -11.884766,-11.677735 0.127831,-2.745025 1.621985,-5.93229 3.722656,-7.210937 0.08363,0.01068 0.07254,0.01006 0.28711,0.05469 0.35771,0.0744 0.848361,0.189498 1.435546,0.324219 1.174372,0.269442 2.737406,0.616391 4.511719,0.886719 3.548627,0.540655 7.954898,0.797157 11.935547,-0.568359 10.676262,-3.662372 23.392492,-8.932364 31.710942,-17.482422 3.32835,-3.42103 5.0729,-7.58021 6.51562,-10.888672 0.72136,-1.654232 1.37267,-3.097681 2.04297,-4.107422 0.67029,-1.009742 1.28911,-1.527659 2.00781,-1.673828 0.1335,-0.02715 0.18984,-0.01837 0.43555,0.158203 0.24571,0.176577 0.57762,0.525037 0.9668,0.917969 0.38918,0.392932 0.84331,0.837745 1.46679,1.15625 0.62348,0.318504 1.44796,0.461778 2.28711,0.232422 1.96647,-0.537471 3.38345,-2.108385 4.3086,-3.898438 0.92514,-1.790053 1.39609,-3.846054 1.38671,-5.683594 -0.006,-1.130548 -0.3158,-2.052553 -0.45117,-2.724609 -0.13536,-0.672056 -0.14775,-0.945758 0.11719,-1.306641 0.79328,-1.080543 2.35143,-1.255151 4.15234,-1.384765 0.90046,-0.06481 1.8159,-0.110739 2.68555,-0.392579 0.86965,-0.281839 1.755,-0.946496 2.06641,-1.990234 0.43788,-1.467646 0.37412,-2.771131 -0.0469,-3.847656 -0.421,-1.076525 -1.15009,-1.895758 -1.90234,-2.595703 -1.5045,-1.3998902 -3.06822,-2.4387183 -3.55469,-3.7226565 -0.0948,-0.2503411 0.0542,-0.6844081 0.42383,-1.1601563 0.36962,-0.4757481 0.81445,-0.8222656 0.81445,-0.8222656 l 1.93164,-1.4746094 -2.41211,-0.3105468 c 0,0 -4.21801,-0.5417747 -11.04101,-0.4414063 z m -0.0273,1.9804688 c 4.49708,-0.061432 7.21154,0.1233576 8.91602,0.2753906 -0.46128,0.7057802 -0.87399,1.6131633 -0.47656,2.6621094 0.81135,2.1414296 2.76408,3.2703741 4.0625,4.4785151 0.64921,0.604071 1.14384,1.198382 1.40234,1.859376 0.2585,0.660993 0.32891,1.418275 -0.008,2.546874 -0.11579,0.38809 -0.26099,0.49466 -0.76563,0.658204 -0.50463,0.163543 -1.30769,0.237726 -2.21093,0.302734 -1.80649,0.130015 -4.19533,0.25323 -5.6211,2.195312 -0.68879,0.938214 -0.6374,2.039678 -0.4668,2.886719 0.17061,0.847042 0.4083,1.589285 0.41211,2.337891 0.008,1.474753 -0.4027,3.286489 -1.16211,4.755859 -0.7594,1.46937 -1.83187,2.5509 -3.06054,2.886719 -0.37957,0.103743 -0.57279,0.05743 -0.84961,-0.08398 -0.27682,-0.141415 -0.60428,-0.42705 -0.95703,-0.783204 -0.35276,-0.356153 -0.72279,-0.776942 -1.22071,-1.134765 -0.49791,-0.357823 -1.22812,-0.649172 -2,-0.492188 -1.41525,0.287836 -2.4567,1.292107 -3.27539,2.525391 -0.81868,1.233284 -1.48429,2.754137 -2.20898,4.416016 -1.44939,3.323757 -3.11292,7.205048 -6.11719,10.292968 -7.88995,8.109642 -20.34928,13.356228 -30.925779,16.984375 -3.469901,1.190311 -7.596501,1.000837 -10.986329,0.484375 -1.694913,-0.25823 -3.202927,-0.5927 -4.365234,-0.859375 -0.581153,-0.133337 -1.074638,-0.250392 -1.476562,-0.333984 -0.401925,-0.08359 -0.611858,-0.17026 -1.083985,-0.123047 l -0.199219,0.01953 -0.175781,0.0957 c -3.139073,1.6951 -4.792829,5.587112 -4.953125,9.029297 -0.386495,8.299518 6.7716,14.31606 14.03125,13.765625 3.741223,-0.283664 6.438504,-2.908261 8.939453,-4.828125 1.955177,-1.500898 5.006391,-1.450783 6.984371,0.207032 -1.27035,0.344113 -2.847186,0.938334 -4.201168,2.197265 -3.374425,3.137543 -6.311573,6.528226 -9.972656,8.435547 C 84.280324,94.315525 79.887419,94.894725 73.125,92.255859 63.866987,88.643151 61.925781,77.691406 61.925781,77.691406 l -0.01172,-0.07031 -0.02148,-0.06836 C 58.663292,67.556856 55.943221,54.185568 55.818359,53.570312 79.116731,10.928559 121.93855,5.0211862 141.93359,4.7480469 Z"
2497+ id="path4442"
2498+ inkscape:connector-curvature="0" />
2499+ <g
2500+ transform="translate(40,2.2594669e-6)"
2501+ id="g4427">
2502+ <path
2503+ sodipodi:type="arc"
2504+ style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1.84735239;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2505+ id="path4055"
2506+ sodipodi:cx="46.179249"
2507+ sodipodi:cy="63.803059"
2508+ sodipodi:rx="11.440429"
2509+ sodipodi:ry="11.440429"
2510+ d="m 57.619678,63.803059 c 0,6.318374 -5.122055,11.440428 -11.440429,11.440428 -6.318375,0 -11.440429,-5.122054 -11.440429,-11.440428 0,-6.318375 5.122054,-11.440429 11.440429,-11.440429 6.318374,0 11.440429,5.122054 11.440429,11.440429 z"
2511+ transform="matrix(1.0826305,0,0,1.0826305,-31.853406,-3.5601908)" />
2512+ <g
2513+ id="g4359">
2514+ <path
2515+ transform="matrix(1.6953846,0,0,1.6953846,-65.06997,-43.304227)"
2516+ d="m 54.179198,62.984692 c 0,2.398215 -1.944138,4.342352 -4.342353,4.342352 -2.398215,0 -4.342352,-1.944137 -4.342352,-4.342352 0,-2.398215 1.944137,-4.342353 4.342352,-4.342353 2.398215,0 4.342353,1.944138 4.342353,4.342353 z"
2517+ sodipodi:ry="4.3423524"
2518+ sodipodi:rx="4.3423524"
2519+ sodipodi:cy="62.984692"
2520+ sodipodi:cx="49.836845"
2521+ id="path4057"
2522+ style="color:#000000;fill:#221d1f;fill-opacity:1;stroke:none;stroke-width:1;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2523+ sodipodi:type="arc" />
2524+ <g
2525+ style="stroke:#211e1e;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter4316)"
2526+ transform="translate(30,0)"
2527+ clip-path="url(#clipPath4296-4)"
2528+ id="g4293"
2529+ inkscape:groupmode="maskhelper">
2530+ <path
2531+ style="color:#000000;fill:#ffffff;fill-opacity:1;stroke:#211e1e;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2532+ d="m -16.417983,67.960724 c -2.475161,-3.225693 -1.866735,-7.847147 1.358958,-10.322308 0.767002,-0.588543 1.642417,-1.020249 2.576261,-1.270472 l 4.176798,7.979577 z"
2533+ id="path4059"
2534+ inkscape:connector-curvature="0"
2535+ sodipodi:nodetypes="csccc" />
2536+ </g>
2537+ <g
2538+ style="filter:url(#filter4355)"
2539+ transform="translate(30,0)"
2540+ clip-path="url(#clipPath4327-6)"
2541+ id="g4324"
2542+ inkscape:groupmode="maskhelper">
2543+ <path
2544+ transform="matrix(1.6953846,0,0,1.6953846,-95.06997,-43.304227)"
2545+ d="m 54.179198,62.984692 c 0,2.398215 -1.944138,4.342352 -4.342353,4.342352 -2.398215,0 -4.342352,-1.944137 -4.342352,-4.342352 0,-2.398215 1.944137,-4.342353 4.342352,-4.342353 2.398215,0 4.342353,1.944138 4.342353,4.342353 z"
2546+ sodipodi:ry="4.3423524"
2547+ sodipodi:rx="4.3423524"
2548+ sodipodi:cy="62.984692"
2549+ sodipodi:cx="49.836845"
2550+ id="path4320"
2551+ style="color:#000000;fill:none;stroke:#1a1a1a;stroke-width:0.41288567;stroke-miterlimit:4;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2552+ sodipodi:type="arc" />
2553+ </g>
2554+ </g>
2555+ <g
2556+ inkscape:groupmode="maskhelper"
2557+ id="g4372"
2558+ clip-path="url(#clipPath4375-1)"
2559+ transform="translate(40,0)"
2560+ style="filter:url(#filter4423)">
2561+ <path
2562+ sodipodi:nodetypes="ccsc"
2563+ inkscape:connector-curvature="0"
2564+ id="path4368"
2565+ d="m -27.672084,74.835975 c 10.261313,2.084329 16.728078,-7.589096 16.728078,-7.589096 0,0 -0.211048,6.108523 -6.787431,8.711427 -6.213454,2.459258 -9.940647,-1.122331 -9.940647,-1.122331 z"
2566+ style="color:#000000;fill:#8dd7f7;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:2;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
2567+ </g>
2568+ <path
2569+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;color-interpolation:sRGB;color-interpolation-filters:linearRGB;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1.84735239;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;clip-rule:nonzero;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;font-family:sans-serif;-inkscape-font-specification:sans-serif"
2570+ d="m 18.142133,52.12973 c -7.380905,0 -13.3869808,6.00396 -13.3869808,13.384865 0,7.380905 6.0060758,13.386981 13.3869808,13.386981 7.380904,0 13.384865,-6.006076 13.384865,-13.386981 0,-7.380905 -6.003961,-13.384865 -13.384865,-13.384865 z m 0,2.000329 c 6.300024,0 11.384535,5.084512 11.384535,11.384536 0,6.300025 -5.084511,11.386651 -11.384535,11.386651 -6.300025,0 -11.3866521,-5.086626 -11.3866521,-11.386651 0,-6.300024 5.0866271,-11.384536 11.3866521,-11.384536 z"
2571+ id="path4393"
2572+ inkscape:connector-curvature="0" />
2573+ </g>
2574+ </g>
2575+ </g>
2576+ <g
2577+ inkscape:groupmode="layer"
2578+ id="layer3"
2579+ inkscape:label="PLACE YOUR PICTOGRAM HERE"
2580+ style="display:inline" />
2581+ <g
2582+ inkscape:groupmode="layer"
2583+ id="layer2"
2584+ inkscape:label="BADGE"
2585+ style="display:none"
2586+ sodipodi:insensitive="true">
2587+ <g
2588+ style="display:inline"
2589+ transform="translate(-340.00001,-581)"
2590+ id="g4394"
2591+ clip-path="none">
2592+ <g
2593+ id="g855">
2594+ <g
2595+ inkscape:groupmode="maskhelper"
2596+ id="g870"
2597+ clip-path="url(#clipPath873)"
2598+ style="opacity:0.6;filter:url(#filter891)">
2599+ <path
2600+ transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
2601+ d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
2602+ sodipodi:ry="12"
2603+ sodipodi:rx="12"
2604+ sodipodi:cy="552.36218"
2605+ sodipodi:cx="252"
2606+ id="path844"
2607+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2608+ sodipodi:type="arc" />
2609+ </g>
2610+ <g
2611+ id="g862">
2612+ <path
2613+ sodipodi:type="arc"
2614+ style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2615+ id="path4398"
2616+ sodipodi:cx="252"
2617+ sodipodi:cy="552.36218"
2618+ sodipodi:rx="12"
2619+ sodipodi:ry="12"
2620+ d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
2621+ transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
2622+ <path
2623+ transform="matrix(1.25,0,0,1.25,33,-100.45273)"
2624+ d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
2625+ sodipodi:ry="12"
2626+ sodipodi:rx="12"
2627+ sodipodi:cy="552.36218"
2628+ sodipodi:cx="252"
2629+ id="path4400"
2630+ style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2631+ sodipodi:type="arc" />
2632+ <path
2633+ sodipodi:type="star"
2634+ style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
2635+ id="path4459"
2636+ sodipodi:sides="5"
2637+ sodipodi:cx="666.19574"
2638+ sodipodi:cy="589.50385"
2639+ sodipodi:r1="7.2431178"
2640+ sodipodi:r2="4.3458705"
2641+ sodipodi:arg1="1.0471976"
2642+ sodipodi:arg2="1.6755161"
2643+ inkscape:flatsided="false"
2644+ inkscape:rounded="0.1"
2645+ inkscape:randomized="0"
2646+ d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
2647+ transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
2648+ </g>
2649+ </g>
2650+ </g>
2651+ </g>
2652+</svg>
2653
2654=== added file 'charms/client-forwardproxy/metadata.yaml'
2655--- charms/client-forwardproxy/metadata.yaml 1970-01-01 00:00:00 +0000
2656+++ charms/client-forwardproxy/metadata.yaml 2017-03-14 23:38:01 +0000
2657@@ -0,0 +1,16 @@
2658+name: client-forwardproxy
2659+maintainer: Curtis Hovey <curtis.hovey@canonical.com>
2660+summary: Setup a machine to be a client of a forward proxy.
2661+description: |
2662+ Setup a machine to be a client of a forward proxy
2663+ to access the outside network. Squid 3 can proxy FTP, HTTP, and HTTPS.
2664+requires:
2665+ forwardproxy:
2666+ interface: http
2667+tags:
2668+ - cache-proxy
2669+series:
2670+ - xenial
2671+ - trusty
2672+ - precise
2673+ - yakkety
2674
2675=== added file 'charms/client-forwardproxy/revision'
2676--- charms/client-forwardproxy/revision 1970-01-01 00:00:00 +0000
2677+++ charms/client-forwardproxy/revision 2017-03-14 23:38:01 +0000
2678@@ -0,0 +1,1 @@
2679+0
2680
2681=== added directory 'charms/client-forwardproxy/scripts'
2682=== added file 'charms/client-forwardproxy/scripts/setup-lxd.sh'
2683--- charms/client-forwardproxy/scripts/setup-lxd.sh 1970-01-01 00:00:00 +0000
2684+++ charms/client-forwardproxy/scripts/setup-lxd.sh 2017-03-14 23:38:01 +0000
2685@@ -0,0 +1,29 @@
2686+#!/bin/sh
2687+# Copyright 2016 Canonical Ltd.
2688+# Licensed under the AGPLv3, see LICENCE file for details.
2689+set -ex
2690+
2691+# Do the manual steps a user has to run on a fresh system to get an lxd
2692+# bridge so the juju lxd provider can function. Taken from changes made
2693+# to cloud-init to do approximately this.
2694+
2695+debconf-communicate << EOF
2696+set lxd/setup-bridge true
2697+set lxd/bridge-domain lxd
2698+set lxd/bridge-name lxdbr0
2699+set lxd/bridge-ipv4 true
2700+set lxd/bridge-ipv4-address 10.0.8.1
2701+set lxd/bridge-ipv4-dhcp-first 10.0.8.2
2702+set lxd/bridge-ipv4-dhcp-last 10.0.8.254
2703+set lxd/bridge-ipv4-dhcp-leases 252
2704+set lxd/bridge-ipv4-netmask 24
2705+set lxd/bridge-ipv4-nat true
2706+set lxd/bridge-ipv6 false
2707+EOF
2708+
2709+rm -rf /etc/default/lxd-bridge
2710+
2711+dpkg-reconfigure lxd --frontend=noninteractive
2712+
2713+# Must run a command for systemd socket activation to start the service
2714+lxc finger
2715
2716=== added directory 'charms/dummy-resource'
2717=== added file 'charms/dummy-resource/bar.txt'
2718--- charms/dummy-resource/bar.txt 1970-01-01 00:00:00 +0000
2719+++ charms/dummy-resource/bar.txt 2017-03-14 23:38:01 +0000
2720@@ -0,0 +1,1 @@
2721+The bar is high.
2722
2723=== added file 'charms/dummy-resource/baz.txt'
2724--- charms/dummy-resource/baz.txt 1970-01-01 00:00:00 +0000
2725+++ charms/dummy-resource/baz.txt 2017-03-14 23:38:01 +0000
2726@@ -0,0 +1,1 @@
2727+There is baz in this file.
2728
2729=== added file 'charms/dummy-resource/config.yaml'
2730--- charms/dummy-resource/config.yaml 1970-01-01 00:00:00 +0000
2731+++ charms/dummy-resource/config.yaml 2017-03-14 23:38:01 +0000
2732@@ -0,0 +1,5 @@
2733+options:
2734+ foo.bar:
2735+ type: int
2736+ default: 3
2737+ description: Number of foo.bars.
2738
2739=== added file 'charms/dummy-resource/foo.txt'
2740--- charms/dummy-resource/foo.txt 1970-01-01 00:00:00 +0000
2741+++ charms/dummy-resource/foo.txt 2017-03-14 23:38:01 +0000
2742@@ -0,0 +1,1 @@
2743+There is foo and more foo.
2744
2745=== added directory 'charms/dummy-resource/hooks'
2746=== added file 'charms/dummy-resource/hooks/config-changed'
2747--- charms/dummy-resource/hooks/config-changed 1970-01-01 00:00:00 +0000
2748+++ charms/dummy-resource/hooks/config-changed 2017-03-14 23:38:01 +0000
2749@@ -0,0 +1,16 @@
2750+#!/bin/bash
2751+
2752+set -x
2753+RES_NAME="bar"
2754+
2755+START_TIME=$(date +%s)
2756+RES_PATH=$(2>&1 resource-get $RES_NAME)
2757+if [ $? -ne 0 ]; then
2758+ RES_GET_STDERR=$RES_PATH
2759+ status-set blocked "[resource "'"'"$RES_NAME"'"'"] $RES_GET_STDERR"
2760+ exit 0
2761+fi
2762+
2763+TOTAL=$(($(date +%s) - $START_TIME))
2764+SIZE=$(du -b $RES_PATH | cut -f1)
2765+status-set maintenance "Path: $RES_PATH Time: $TOTAL sec Size: $SIZE bytes"
2766
2767=== added file 'charms/dummy-resource/hooks/hooks'
2768=== added file 'charms/dummy-resource/hooks/install'
2769--- charms/dummy-resource/hooks/install 1970-01-01 00:00:00 +0000
2770+++ charms/dummy-resource/hooks/install 2017-03-14 23:38:01 +0000
2771@@ -0,0 +1,17 @@
2772+#!/bin/bash
2773+
2774+set -x
2775+
2776+RES_NAME="foo"
2777+
2778+START_TIME=$(date +%s)
2779+RES_PATH=$(2>&1 resource-get $RES_NAME)
2780+if [ $? -ne 0 ]; then
2781+ RES_GET_STDERR=$RES_PATH
2782+ status-set blocked "[resource "'"'"$RES_NAME"'"'"] $RES_GET_STDERR"
2783+ exit 0
2784+fi
2785+
2786+TOTAL=$(($(date +%s) - $START_TIME))
2787+SIZE=$(du -b $RES_PATH | cut -f1)
2788+status-set maintenance "Path: $RES_PATH Time: $TOTAL sec Size: $SIZE bytes"
2789
2790=== added file 'charms/dummy-resource/metadata.yaml'
2791--- charms/dummy-resource/metadata.yaml 1970-01-01 00:00:00 +0000
2792+++ charms/dummy-resource/metadata.yaml 2017-03-14 23:38:01 +0000
2793@@ -0,0 +1,23 @@
2794+name: dummy-resource
2795+maintainer: Seman <seman.said@canonical.com>
2796+summary: Dummy charm to test resources.
2797+description: This dummy charm is used for resource testing.
2798+categories:
2799+ - misc
2800+series:
2801+ - trusty
2802+ - precise
2803+ - utopic
2804+ - vivid
2805+ - wily
2806+ - xenial
2807+resources:
2808+ foo:
2809+ type: file
2810+ filename: foo.txt
2811+ description: "foo resource."
2812+ bar:
2813+ type: file
2814+ filename: bar.txt
2815+ description: "bar resource."
2816+
2817
2818=== added file 'charms/dummy-resource/revision'
2819--- charms/dummy-resource/revision 1970-01-01 00:00:00 +0000
2820+++ charms/dummy-resource/revision 2017-03-14 23:38:01 +0000
2821@@ -0,0 +1,1 @@
2822+0
2823\ No newline at end of file
2824
2825=== added directory 'charms/dummy-sink'
2826=== added file 'charms/dummy-sink/README'
2827--- charms/dummy-sink/README 1970-01-01 00:00:00 +0000
2828+++ charms/dummy-sink/README 2017-03-14 23:38:01 +0000
2829@@ -0,0 +1,3 @@
2830+This is a simple workaround to allow jenkins-slave to use a Jenkins in another
2831+environment. Typically, you deploy this charm to the same machine as
2832+jenkins-slave, set master_url to the URL of the actual master and add-relation.
2833
2834=== added file 'charms/dummy-sink/config.yaml'
2835--- charms/dummy-sink/config.yaml 1970-01-01 00:00:00 +0000
2836+++ charms/dummy-sink/config.yaml 2017-03-14 23:38:01 +0000
2837@@ -0,0 +1,5 @@
2838+options:
2839+ token:
2840+ type: string
2841+ default: ''
2842+ description: Token used to prove that the relation is working
2843
2844=== added file 'charms/dummy-sink/copyright'
2845--- charms/dummy-sink/copyright 1970-01-01 00:00:00 +0000
2846+++ charms/dummy-sink/copyright 2017-03-14 23:38:01 +0000
2847@@ -0,0 +1,1 @@
2848+Copyright 2014 Canonical Ltd.
2849
2850=== added directory 'charms/dummy-sink/hooks'
2851=== added file 'charms/dummy-sink/hooks/config-changed'
2852--- charms/dummy-sink/hooks/config-changed 1970-01-01 00:00:00 +0000
2853+++ charms/dummy-sink/hooks/config-changed 2017-03-14 23:38:01 +0000
2854@@ -0,0 +1,1 @@
2855+#!/bin/sh
2856
2857=== added file 'charms/dummy-sink/hooks/install'
2858--- charms/dummy-sink/hooks/install 1970-01-01 00:00:00 +0000
2859+++ charms/dummy-sink/hooks/install 2017-03-14 23:38:01 +0000
2860@@ -0,0 +1,3 @@
2861+#!/bin/sh
2862+
2863+status-set maintenance "Installed" || true
2864
2865=== added file 'charms/dummy-sink/hooks/source-relation-changed'
2866--- charms/dummy-sink/hooks/source-relation-changed 1970-01-01 00:00:00 +0000
2867+++ charms/dummy-sink/hooks/source-relation-changed 2017-03-14 23:38:01 +0000
2868@@ -0,0 +1,13 @@
2869+#!/bin/bash
2870+set -eux
2871+
2872+mkdir -p /var/run/dummy-sink
2873+token=$(relation-get token)
2874+echo "$token" > /var/run/dummy-sink/token
2875+if [[ -z $token ]]; then
2876+ juju-log -l INFO "Waiting for token"
2877+ status-set waiting "Waiting for token" || true
2878+else
2879+ juju-log -l INFO "Token is $token"
2880+ status-set active "Token is $token" || true
2881+fi
2882
2883=== added file 'charms/dummy-sink/hooks/start'
2884--- charms/dummy-sink/hooks/start 1970-01-01 00:00:00 +0000
2885+++ charms/dummy-sink/hooks/start 2017-03-14 23:38:01 +0000
2886@@ -0,0 +1,3 @@
2887+#!/bin/sh
2888+
2889+status-set maintenance "Started" || true
2890
2891=== added file 'charms/dummy-sink/metadata.yaml'
2892--- charms/dummy-sink/metadata.yaml 1970-01-01 00:00:00 +0000
2893+++ charms/dummy-sink/metadata.yaml 2017-03-14 23:38:01 +0000
2894@@ -0,0 +1,18 @@
2895+name: dummy-sink
2896+maintainer: Aaron Bentley <aaron.bentley@canonical.com>
2897+summary: Dummy charm that accepts data
2898+description: |
2899+ This dummy charm is used to verify that a relationship is created correctly
2900+provides:
2901+ source:
2902+ interface: dummy-token
2903+categories:
2904+ - misc
2905+series:
2906+ - trusty
2907+ - precise
2908+ - utopic
2909+ - vivid
2910+ - wily
2911+ - xenial
2912+ - yakkety
2913
2914=== added directory 'charms/dummy-source'
2915=== added file 'charms/dummy-source/README'
2916--- charms/dummy-source/README 1970-01-01 00:00:00 +0000
2917+++ charms/dummy-source/README 2017-03-14 23:38:01 +0000
2918@@ -0,0 +1,3 @@
2919+This is a simple workaround to allow jenkins-slave to use a Jenkins in another
2920+environment. Typically, you deploy this charm to the same machine as
2921+jenkins-slave, set master_url to the URL of the actual master and add-relation.
2922
2923=== added file 'charms/dummy-source/config.yaml'
2924--- charms/dummy-source/config.yaml 1970-01-01 00:00:00 +0000
2925+++ charms/dummy-source/config.yaml 2017-03-14 23:38:01 +0000
2926@@ -0,0 +1,5 @@
2927+options:
2928+ token:
2929+ type: string
2930+ default: ''
2931+ description: Token used to prove that the relation is working
2932
2933=== added file 'charms/dummy-source/copyright'
2934--- charms/dummy-source/copyright 1970-01-01 00:00:00 +0000
2935+++ charms/dummy-source/copyright 2017-03-14 23:38:01 +0000
2936@@ -0,0 +1,1 @@
2937+Copyright 2014 Canonical Ltd.
2938
2939=== added directory 'charms/dummy-source/hooks'
2940=== added file 'charms/dummy-source/hooks/config-changed'
2941--- charms/dummy-source/hooks/config-changed 1970-01-01 00:00:00 +0000
2942+++ charms/dummy-source/hooks/config-changed 2017-03-14 23:38:01 +0000
2943@@ -0,0 +1,16 @@
2944+#!/bin/bash
2945+set -eux
2946+
2947+juju-log -l INFO "Getting token"
2948+status-set maintenance "Getting token" || true
2949+token="$(config-get token)"
2950+for relation_id in $(relation-ids sink); do
2951+ relation-set -r $relation_id token="$token"
2952+done
2953+if [[ -z $token ]]; then
2954+ juju-log -l WARNING "Blocked: set the token"
2955+ status-set blocked "Set the token" || true
2956+else
2957+ juju-log -l INFO "Token is $token"
2958+ status-set active "Token is $token" || true
2959+fi
2960
2961=== added file 'charms/dummy-source/hooks/install'
2962--- charms/dummy-source/hooks/install 1970-01-01 00:00:00 +0000
2963+++ charms/dummy-source/hooks/install 2017-03-14 23:38:01 +0000
2964@@ -0,0 +1,3 @@
2965+#!/bin/sh
2966+
2967+status-set maintenance "Installed" || true
2968
2969=== added symlink 'charms/dummy-source/hooks/sink-relation-joined'
2970=== target is u'config-changed'
2971=== added file 'charms/dummy-source/hooks/start'
2972--- charms/dummy-source/hooks/start 1970-01-01 00:00:00 +0000
2973+++ charms/dummy-source/hooks/start 2017-03-14 23:38:01 +0000
2974@@ -0,0 +1,3 @@
2975+#!/bin/sh
2976+
2977+status-set maintenance "Started" || true
2978
2979=== added file 'charms/dummy-source/metadata.yaml'
2980--- charms/dummy-source/metadata.yaml 1970-01-01 00:00:00 +0000
2981+++ charms/dummy-source/metadata.yaml 2017-03-14 23:38:01 +0000
2982@@ -0,0 +1,19 @@
2983+name: dummy-source
2984+maintainer: Aaron Bentley <aaron.bentley@canonical.com>
2985+summary: Dummy charm that provides data
2986+description: |
2987+ This dummy charm is used to verify that a relationship is created correctly
2988+requires:
2989+ sink:
2990+ interface: dummy-token
2991+categories:
2992+ - misc
2993+series:
2994+ - trusty
2995+ - precise
2996+ - utopic
2997+ - vivid
2998+ - wily
2999+ - xenial
3000+ - yakkety
3001+
3002
3003=== added directory 'charms/dummy-storage'
3004=== added file 'charms/dummy-storage/config.yaml'
3005--- charms/dummy-storage/config.yaml 1970-01-01 00:00:00 +0000
3006+++ charms/dummy-storage/config.yaml 2017-03-14 23:38:01 +0000
3007@@ -0,0 +1,10 @@
3008+options:
3009+ # Will be tokens for each storage type.
3010+ single-fs-token:
3011+ type: string
3012+ default: ''
3013+ description: Token used to prove data stored is persistent
3014+ multi-fs-token:
3015+ type: string
3016+ default: ''
3017+ description: Token used to prove data stored is persistent
3018
3019=== added directory 'charms/dummy-storage/hooks'
3020=== added file 'charms/dummy-storage/hooks/config-changed'
3021--- charms/dummy-storage/hooks/config-changed 1970-01-01 00:00:00 +0000
3022+++ charms/dummy-storage/hooks/config-changed 2017-03-14 23:38:01 +0000
3023@@ -0,0 +1,59 @@
3024+#!/bin/bash
3025+set -x
3026+
3027+juju-log -l INFO "Getting file fs token details."
3028+status-set maintenance "Getting file fs token details." || true
3029+
3030+function set_token() {
3031+ token_name=$1 # i.e. single-fs-token
3032+ fs_path=$2 # i.e. /srv/single-fs/ or /srv/multi-fs/multi-fs/13
3033+
3034+ token="$(config-get $token_name)"
3035+ token_file="$fs_path/token"
3036+
3037+ juju-log -l INFO "Token file: $token_file"
3038+
3039+ if [ -f $token_file ]; then
3040+ juju-log -l INFO "Using stored token details."
3041+
3042+ # If we have a token and we have a token file, check the contents if the differ update it otherwise use it.
3043+ current_file_token=$(cat $token_file | grep "$token_name" | head -1 | cut -d":" -f2)
3044+ if [ "$current_file_token" != "$token" ]; then
3045+ token=$token
3046+ else
3047+ token=$(cat $token_file)
3048+ fi
3049+ fi
3050+
3051+ if [[ -z $token ]]; then
3052+ fs_token="Blocked: not set"
3053+ juju-log -l WARNING "$fs_token"
3054+ else
3055+ fs_token="$token"
3056+ echo "$token" > $token_file
3057+ juju-log -l INFO "$fs_token"
3058+ fi
3059+
3060+ # Return the token value.
3061+ echo "$fs_token"
3062+}
3063+
3064+# Clear any previous tokens or state.
3065+echo > /tmp/status
3066+
3067+# First the single token
3068+single_fs_token=$(set_token "single-fs-token" "/srv/single-fs")
3069+
3070+juju-log -l INFO "Setting single token details."
3071+echo "single-fs-token:$single_fs_token" >> /tmp/status
3072+
3073+# Then the multi-fs token
3074+for unit in $(storage-list multi-fs); do
3075+ fs_path=$(storage-get -s $unit | grep "^location:\ " | cut -d: -f2 | tr -d ' ')
3076+ multi_fs_token=$(set_token "multi-fs-token" "$fs_path")
3077+ juju-log -l INFO "Setting multi token details."
3078+ unit_token_number=$(echo $unit | cut -f2 -d"/")
3079+ echo "multi-fs-token/$unit_token_number:$multi_fs_token" >> /tmp/status
3080+done
3081+
3082+status-set active "Stored token: /tmp/status" || true
3083
3084=== added file 'charms/dummy-storage/hooks/hooks'
3085=== added file 'charms/dummy-storage/hooks/install'
3086--- charms/dummy-storage/hooks/install 1970-01-01 00:00:00 +0000
3087+++ charms/dummy-storage/hooks/install 2017-03-14 23:38:01 +0000
3088@@ -0,0 +1,13 @@
3089+#!/bin/bash
3090+
3091+set -x
3092+
3093+juju-log -l INFO "Install"
3094+juju-log -l INFO "Data on drive: $(cat /srv/single-fs/test.txt)"
3095+
3096+for unit in $(storage-list); do
3097+ juju-log -l INFO "Storage details for ${unit}: $(storage-get -s $unit)"
3098+done
3099+
3100+# The storage-attached hook has fired so we can write some data there now.
3101+status-set maintenance "Installed" || true
3102
3103=== added file 'charms/dummy-storage/hooks/multi-fs-storage-attached'
3104--- charms/dummy-storage/hooks/multi-fs-storage-attached 1970-01-01 00:00:00 +0000
3105+++ charms/dummy-storage/hooks/multi-fs-storage-attached 2017-03-14 23:38:01 +0000
3106@@ -0,0 +1,7 @@
3107+#!/bin/bash
3108+set -x
3109+
3110+juju-log -l INFO "Storage is attached."
3111+juju-log -l INFO "Storage details: $(storage-list)"
3112+
3113+status-set active "Started" || true
3114
3115=== added file 'charms/dummy-storage/hooks/single-fs-storage-attached'
3116--- charms/dummy-storage/hooks/single-fs-storage-attached 1970-01-01 00:00:00 +0000
3117+++ charms/dummy-storage/hooks/single-fs-storage-attached 2017-03-14 23:38:01 +0000
3118@@ -0,0 +1,5 @@
3119+#!/bin/bash
3120+set -x
3121+
3122+juju-log -l INFO "Storage is attached."
3123+juju-log -l INFO "Hook details: $(storage-list)"
3124\ No newline at end of file
3125
3126=== added file 'charms/dummy-storage/hooks/start'
3127--- charms/dummy-storage/hooks/start 1970-01-01 00:00:00 +0000
3128+++ charms/dummy-storage/hooks/start 2017-03-14 23:38:01 +0000
3129@@ -0,0 +1,5 @@
3130+#!/bin/bash
3131+set -x
3132+
3133+juju-log -l INFO "Starting, checking what storage we have."
3134+juju-log -l INFO "Storage details: $(storage-list)"
3135
3136=== added file 'charms/dummy-storage/metadata.yaml'
3137--- charms/dummy-storage/metadata.yaml 1970-01-01 00:00:00 +0000
3138+++ charms/dummy-storage/metadata.yaml 2017-03-14 23:38:01 +0000
3139@@ -0,0 +1,26 @@
3140+name: dummy-storage
3141+maintainer: Christopher Lee <chris.lee@canonical.com>
3142+summary: Dummy charm that utilises storage.
3143+description: This dummy charm is used for testing persistent storage.
3144+categories:
3145+ - misc
3146+series:
3147+ - trusty
3148+ - precise
3149+ - utopic
3150+ - vivid
3151+ - wily
3152+ - xenial
3153+storage:
3154+ single-fs:
3155+ type: filesystem
3156+ description: Single instance storage of filesystem type.
3157+ minimum-size: 10M
3158+ location: /srv/single-fs
3159+ multi-fs:
3160+ type: filesystem
3161+ description: Multiple storage instances of filesystem type.
3162+ minimum-size: 10M
3163+ location: /srv/multi-fs
3164+ multiple:
3165+ range: 0-2
3166
3167=== added file 'charms/dummy-storage/revision'
3168--- charms/dummy-storage/revision 1970-01-01 00:00:00 +0000
3169+++ charms/dummy-storage/revision 2017-03-14 23:38:01 +0000
3170@@ -0,0 +1,1 @@
3171+0
3172\ No newline at end of file
3173
3174=== added directory 'charms/fill-logs'
3175=== added file 'charms/fill-logs/README.md'
3176--- charms/fill-logs/README.md 1970-01-01 00:00:00 +0000
3177+++ charms/fill-logs/README.md 2017-03-14 23:38:01 +0000
3178@@ -0,0 +1,3 @@
3179+#fill-logs
3180+
3181+Fill-logs is a testing charm intended to be used to test log rotation.
3182
3183=== added directory 'charms/fill-logs/actions'
3184=== added file 'charms/fill-logs/actions.yaml'
3185--- charms/fill-logs/actions.yaml 1970-01-01 00:00:00 +0000
3186+++ charms/fill-logs/actions.yaml 2017-03-14 23:38:01 +0000
3187@@ -0,0 +1,25 @@
3188+fill-unit:
3189+ description: Fill the unit agent log with data.
3190+ params:
3191+ megs:
3192+ type: integer
3193+ description: number of MB of data to add to unit agent log
3194+ required: [megs]
3195+ additionalProperties: false
3196+fill-machine:
3197+ description: Fill the machine agent log with data.
3198+ params:
3199+ megs:
3200+ type: integer
3201+ description: number of MB of data to add to machine agent log
3202+ machine:
3203+ type: integer
3204+ description: the machine number this unit is on
3205+ required: [megs, machine]
3206+ additionalProperties: false
3207+machine-size:
3208+ description: Gets the name and sizes of machine agent logs.
3209+ additionalProperties: false
3210+unit-size:
3211+ description: Gets the name and sizes of unit agent logs.
3212+ additionalProperties: false
3213\ No newline at end of file
3214
3215=== added file 'charms/fill-logs/actions/actions.go'
3216--- charms/fill-logs/actions/actions.go 1970-01-01 00:00:00 +0000
3217+++ charms/fill-logs/actions/actions.go 2017-03-14 23:38:01 +0000
3218@@ -0,0 +1,149 @@
3219+package main
3220+
3221+import (
3222+ "fmt"
3223+ "io"
3224+ "os"
3225+ "os/exec"
3226+ "path/filepath"
3227+ "strconv"
3228+ "strings"
3229+)
3230+
3231+func main() {
3232+ if err := run(os.Args); err != nil {
3233+ fmt.Fprintln(os.Stderr, err)
3234+ os.Exit(1)
3235+ }
3236+}
3237+
3238+func run(args []string) error {
3239+ if len(args) != 2 {
3240+ return fmt.Errorf("expected exactly one argument, the action name")
3241+ }
3242+ switch args[1] {
3243+ case "fill-unit":
3244+ return fillUnit()
3245+ case "fill-machine":
3246+ return fillMachine()
3247+ case "unit-size":
3248+ return unitLogSizes()
3249+ case "machine-size":
3250+ return machineLogSizes()
3251+ default:
3252+ return fmt.Errorf("unknown action: %q", args[1])
3253+ }
3254+}
3255+
3256+func fillUnit() error {
3257+ return fillLog(os.Stdout)
3258+}
3259+
3260+func unitLogSizes() error {
3261+ return writeSizes("/var/log/juju/unit-fill-logs*.log")
3262+}
3263+
3264+func machineLogSizes() error {
3265+ return writeSizes("/var/log/juju/machine-*.log")
3266+}
3267+
3268+func fillMachine() (err error) {
3269+ machine, err := getMachine()
3270+ if err != nil {
3271+ return err
3272+ }
3273+ svcname := fmt.Sprintf("jujud-machine-%d", machine)
3274+ out, err := exec.Command("service", svcname, "stop").CombinedOutput()
3275+ if err != nil {
3276+ return fmt.Errorf("error stopping machine agent %q: %s", svcname, out)
3277+ }
3278+ defer func() {
3279+ out, err2 := exec.Command("service", svcname, "start").CombinedOutput()
3280+ if err2 == nil {
3281+ return
3282+ }
3283+ if err == nil {
3284+ // function error is currently nil, so overwrite with this one.
3285+ err = fmt.Errorf("error starting machine agent %q: %s", svcname, out)
3286+ return
3287+ }
3288+ // function error is non-nil, so can't overwrite, just print.
3289+ fmt.Printf("error starting machine agent %q: %s", svcname, out)
3290+ }()
3291+ logname := fmt.Sprintf("/var/log/juju/machine-%d.log", machine)
3292+ f, err := os.OpenFile(logname, os.O_APPEND|os.O_WRONLY, 0644)
3293+ if err != nil {
3294+ return fmt.Errorf("failed to open machine log file: %v", err)
3295+ }
3296+ defer f.Close()
3297+ return fillLog(f)
3298+}
3299+
3300+func fillLog(w io.Writer) error {
3301+ megs, err := getMegs()
3302+ if err != nil {
3303+ return err
3304+ }
3305+ bytes := megs * 1024 * 1024
3306+ total := 0
3307+
3308+ for total < bytes {
3309+ // technically, the log file will be bigger than asked for, since it
3310+ // prepends a bunch of stuff to each log call, but this guarantees we've
3311+ // put *at least* this much data in the log, which should guarantee a
3312+ // rotation.
3313+ n, err := fmt.Fprintln(w, lorem)
3314+ if err != nil {
3315+ return fmt.Errorf("error writing to log: %s", err)
3316+ }
3317+ total += n
3318+ }
3319+ return nil
3320+}
3321+
3322+func writeSizes(glob string) error {
3323+ paths, err := filepath.Glob(glob)
3324+ if err != nil {
3325+ return fmt.Errorf("error getting logs for %q: %s", glob, err)
3326+ }
3327+
3328+ // go through the list in reverse, since the primary log file is always last,
3329+ // but it's a lot more convenient for parsing if it's first in the output.
3330+ for i, j := len(paths)-1, 0; i >= 0; i-- {
3331+ path := paths[i]
3332+ info, err := os.Stat(path)
3333+ if err != nil {
3334+ return fmt.Errorf("error stating log %q: %s", path, err)
3335+ }
3336+ name := fmt.Sprintf("result-map.log%d.name=%s", j, path)
3337+ size := fmt.Sprintf("result-map.log%d.size=%d", j, info.Size()/1024/1024)
3338+ out, err := exec.Command("action-set", name, size).CombinedOutput()
3339+ if err != nil {
3340+ return fmt.Errorf("error calling action-set: %s", out)
3341+ }
3342+ j++
3343+ }
3344+
3345+ return nil
3346+}
3347+
3348+func getMegs() (int, error) {
3349+ return getInt("megs")
3350+}
3351+
3352+func getMachine() (int, error) {
3353+ return getInt("machine")
3354+}
3355+
3356+func getInt(name string) (int, error) {
3357+ out, err := exec.Command("action-get", name).CombinedOutput()
3358+ if err != nil {
3359+ fmt.Fprintln(os.Stderr, out)
3360+ return 0, fmt.Errorf("error calling action-get: %s", err)
3361+ }
3362+ // for some reason the output always comes with a /n at the end, so just
3363+ // trim it.
3364+ return strconv.Atoi(strings.TrimSpace(string(out)))
3365+}
3366+
3367+const lorem = `Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.`
3368
3369=== added file 'charms/fill-logs/actions/fill-machine'
3370--- charms/fill-logs/actions/fill-machine 1970-01-01 00:00:00 +0000
3371+++ charms/fill-logs/actions/fill-machine 2017-03-14 23:38:01 +0000
3372@@ -0,0 +1,3 @@
3373+#!/bin/bash
3374+
3375+go run actions/actions.go fill-machine
3376\ No newline at end of file
3377
3378=== added file 'charms/fill-logs/actions/fill-unit'
3379--- charms/fill-logs/actions/fill-unit 1970-01-01 00:00:00 +0000
3380+++ charms/fill-logs/actions/fill-unit 2017-03-14 23:38:01 +0000
3381@@ -0,0 +1,3 @@
3382+#!/bin/bash
3383+
3384+go run actions/actions.go fill-unit
3385\ No newline at end of file
3386
3387=== added file 'charms/fill-logs/actions/machine-size'
3388--- charms/fill-logs/actions/machine-size 1970-01-01 00:00:00 +0000
3389+++ charms/fill-logs/actions/machine-size 2017-03-14 23:38:01 +0000
3390@@ -0,0 +1,3 @@
3391+#!/bin/bash
3392+
3393+go run actions/actions.go machine-size
3394\ No newline at end of file
3395
3396=== added file 'charms/fill-logs/actions/unit-size'
3397--- charms/fill-logs/actions/unit-size 1970-01-01 00:00:00 +0000
3398+++ charms/fill-logs/actions/unit-size 2017-03-14 23:38:01 +0000
3399@@ -0,0 +1,3 @@
3400+#!/bin/bash
3401+
3402+go run actions/actions.go unit-size
3403\ No newline at end of file
3404
3405=== added file 'charms/fill-logs/config.yaml'
3406--- charms/fill-logs/config.yaml 1970-01-01 00:00:00 +0000
3407+++ charms/fill-logs/config.yaml 2017-03-14 23:38:01 +0000
3408@@ -0,0 +1,1 @@
3409+options:
3410
3411=== added directory 'charms/fill-logs/hooks'
3412=== added file 'charms/fill-logs/hooks/install'
3413--- charms/fill-logs/hooks/install 1970-01-01 00:00:00 +0000
3414+++ charms/fill-logs/hooks/install 2017-03-14 23:38:01 +0000
3415@@ -0,0 +1,5 @@
3416+#!/bin/bash
3417+
3418+set -e
3419+
3420+apt-get install -y golang
3421\ No newline at end of file
3422
3423=== added file 'charms/fill-logs/metadata.yaml'
3424--- charms/fill-logs/metadata.yaml 1970-01-01 00:00:00 +0000
3425+++ charms/fill-logs/metadata.yaml 2017-03-14 23:38:01 +0000
3426@@ -0,0 +1,13 @@
3427+name: fill-logs
3428+summary: Test charm that fills the logs
3429+maintainer: Nate Finch <nate.finch@gmail.com>
3430+description: Charm fills the logs.
3431+categories:
3432+ - application
3433+series:
3434+ - trusty
3435+ - precise
3436+ - utopic
3437+ - vivid
3438+ - wily
3439+ - xenial
3440
3441=== added directory 'charms/jenkins-juju-ci'
3442=== added file 'charms/jenkins-juju-ci/README.md'
3443--- charms/jenkins-juju-ci/README.md 1970-01-01 00:00:00 +0000
3444+++ charms/jenkins-juju-ci/README.md 2017-03-14 23:38:01 +0000
3445@@ -0,0 +1,16 @@
3446+# Overview
3447+
3448+This charm provisions the Juju CI testing tools needed to run tests on a
3449+jenkins slave.
3450+
3451+
3452+# Usage
3453+
3454+To deploy a Jenkins slave you will also need to deploy the jenkins master
3455+charm. This can be done as follows:
3456+
3457+ juju deploy jenkins
3458+ juju deploy jenkins-slave
3459+ juju deploy jenkins-juju-ci
3460+ juju add-relation jenkins jenkins-slave
3461+ juju add-relation jenkins-juju-ci jenkins-slave
3462
3463=== added file 'charms/jenkins-juju-ci/config.yaml'
3464--- charms/jenkins-juju-ci/config.yaml 1970-01-01 00:00:00 +0000
3465+++ charms/jenkins-juju-ci/config.yaml 2017-03-14 23:38:01 +0000
3466@@ -0,0 +1,10 @@
3467+options:
3468+ lp-key:
3469+ type: string
3470+ default: ""
3471+ description: "SSH key for accessing private code on launchpad."
3472+ s3-proxy:
3473+ type: string
3474+ default: ""
3475+ description: "Route s3 calls though a proxy. eg squid.internal:3128"
3476+
3477
3478=== added file 'charms/jenkins-juju-ci/copyright'
3479--- charms/jenkins-juju-ci/copyright 1970-01-01 00:00:00 +0000
3480+++ charms/jenkins-juju-ci/copyright 2017-03-14 23:38:01 +0000
3481@@ -0,0 +1,17 @@
3482+Format: http://dep.debian.net/deps/dep5/
3483+
3484+Files: *
3485+Copyright: Copyright 2016, Canonical Ltd., All Rights Reserved.
3486+License: GPL-3
3487+ This program is free software: you can redistribute it and/or modify
3488+ it under the terms of the GNU General Public License as published by
3489+ the Free Software Foundation, either version 3 of the License, or
3490+ (at your option) any later version.
3491+ .
3492+ This program is distributed in the hope that it will be useful,
3493+ but WITHOUT ANY WARRANTY; without even the implied warranty of
3494+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3495+ GNU General Public License for more details.
3496+ .
3497+ You should have received a copy of the GNU General Public License
3498+ along with this program. If not, see <http://www.gnu.org/licenses/>.
3499
3500=== added directory 'charms/jenkins-juju-ci/files'
3501=== added directory 'charms/jenkins-juju-ci/hooks'
3502=== added file 'charms/jenkins-juju-ci/hooks/config-changed'
3503--- charms/jenkins-juju-ci/hooks/config-changed 1970-01-01 00:00:00 +0000
3504+++ charms/jenkins-juju-ci/hooks/config-changed 2017-03-14 23:38:01 +0000
3505@@ -0,0 +1,141 @@
3506+#!/bin/bash
3507+set -eux
3508+
3509+HOSTNAME=$(hostname)
3510+JENKINS_HOME="/var/lib/jenkins"
3511+KEY="staging-juju-rsa"
3512+
3513+export PATH=/usr/local/bin:$JENKINS_HOME/Bin:$PATH
3514+
3515+
3516+as_jenkins() {
3517+ local_command="$@"
3518+ su -l jenkins -c "$local_command"
3519+}
3520+
3521+
3522+update_branch() {
3523+ local_branch=$1
3524+ local_dir="$(basename $local_branch | cut -d ':' -f2)"
3525+ local_path="$JENKINS_HOME/$local_dir"
3526+ if [[ -d $local_path ]]; then
3527+ as_jenkins bzr pull -d $local_path
3528+ else
3529+ as_jenkins bzr branch $local_branch $local_path
3530+ fi
3531+}
3532+
3533+
3534+update_known_hosts() {
3535+ local_host="$1"
3536+ local_key="$(ssh-keyscan -H $local_host)"
3537+ if ! grep "$local_key" $JENKINS_HOME/.ssh/known_hosts; then
3538+ echo "$local_key" >> $JENKINS_HOME/.ssh/known_hosts
3539+ fi
3540+}
3541+
3542+
3543+status-set maintenance "Updating scripts" || true
3544+
3545+set +x
3546+LP_KEY=$(config-get lp-key)
3547+if [[ "$LP_KEY" == "" ]]; then
3548+ status-set blocked "Waiting for lp-key to be set" || true
3549+ exit 0
3550+fi
3551+set -x
3552+
3553+status-set maintenance "Updating bzr" || true
3554+set +x
3555+echo "$LP_KEY" > $JENKINS_HOME/.ssh/lp_rsa
3556+set -x
3557+cp $JENKINS_HOME/.ssh/lp_rsa $JENKINS_HOME/.ssh/id_rsa
3558+chown -R jenkins:jenkins $JENKINS_HOME/.ssh
3559+chmod 600 $JENKINS_HOME/.ssh/*rsa
3560+update_known_hosts bazaar.launchpad.net
3561+update_known_hosts git.launchpad.net
3562+update_known_hosts upload.launchpad.net
3563+update_known_hosts ppa.launchpad.net
3564+chmod 600 $JENKINS_HOME/.ssh/known_hosts
3565+as_jenkins bzr --no-aliases launchpad-login juju-qa-bot
3566+
3567+status-set maintenance "Updating branches" || true
3568+if [[ -d $JENKINS_HOME/ci-director ]]; then
3569+ update_branch lp:ci-director
3570+fi
3571+update_branch lp:workspace-runner
3572+update_branch lp:juju-release-tools
3573+update_branch lp:juju-ci-tools
3574+update_branch lp:juju-ci-tools/repository
3575+update_branch lp:~juju-qa/+junk/cloud-city
3576+
3577+status-set maintenance "Updating permissions" || true
3578+chown -R jenkins $JENKINS_HOME/cloud-city
3579+chmod -R go-w $JENKINS_HOME/cloud-city
3580+chmod 700 $JENKINS_HOME/cloud-city
3581+chmod 700 $JENKINS_HOME/cloud-city/gnupg
3582+chmod 600 $JENKINS_HOME/cloud-city/$KEY
3583+
3584+status-set maintenance "Updating ssh" || true
3585+if [[ ! -f $JENKINS_HOME/.ssh/config ]]; then
3586+cat << EOC > $JENKINS_HOME/.ssh/config
3587+Host 10.* 192.168.*
3588+ StrictHostKeyChecking no
3589+ UserKnownHostsFile /dev/null
3590+ User ubuntu
3591+ IdentityFile $JENKINS_HOME/cloud-city/$KEY
3592+EOC
3593+fi
3594+if [[ ! -f $JENKINS_HOME/.ssh/id_rsa ]]; then
3595+ as_jenkins ln -s $JENKINS_HOME/cloud-city/$KEY $JENKINS_HOME/.ssh/id_rsa
3596+fi
3597+if [[ ! -f $JENKINS_HOME/.ssh/id_rsa.pub ]]; then
3598+ as_jenkins ln -s $JENKINS_HOME/cloud-city/$KEY.pub $JENKINS_HOME/.ssh/id_rsa.pub
3599+fi
3600+chown -R jenkins:jenkins $JENKINS_HOME/.ssh
3601+
3602+status-set maintenance "Updating git" || true
3603+github_username=$(sed -r '/github_user/!d; s/.*"(.*)"/\1/; s/%20/ /' $JENKINS_HOME/cloud-city/juju-bot.txt)
3604+github_password=$(sed -r '/github_password/!d; s/.*"(.*)"/\1/; s/%20/ /' $JENKINS_HOME/cloud-city/juju-bot.txt)
3605+cat << EOC > $JENKINS_HOME/.gitconfig
3606+[user]
3607+ name = jenkins
3608+ email = jenkins@vapour.ws
3609+[credential]
3610+ helper = cache
3611+[credential "https://github.com"]
3612+ username = $github_username
3613+ password = $github_password
3614+[url "https://"]
3615+ insteadOf = http://
3616+EOC
3617+sudo chown jenkins:jenkins $JENKINS_HOME/.gitconfig
3618+
3619+S3_PROXY=$(config-get s3-proxy)
3620+if [[ $S3_PROXY == "" ]]; then
3621+ # Remove s3 proxy changes from .boto and juju-qa.s3cfg.
3622+ rm $JENKINS_HOME/.boto || true
3623+ (cd cloud-city && as_jenkins bzr revert bzr revert juju-qa.s3cfg || true)
3624+else
3625+ S3_PROXY_HOST=$(echo "$S3_PROXY" | cut -d ':' -f 1)
3626+ S3_PROXY_PORT=$(echo "$S3_PROXY" | cut -d ':' -f 2)
3627+ # Place a .boto file for python scripts
3628+ cat << EOC > $JENKINS_HOME/.boto
3629+[Boto]
3630+proxy = $S3_PROXY_HOST
3631+proxy_port = $S3_PROXY_PORT
3632+EOC
3633+ chown jenkins:jenkins $JENKINS_HOME/.boto
3634+ # Modify cloud-city/juju-qa.s3cfg to use a proxy.
3635+ sed -i -r "s/(proxy_host =).*/\1 $S3_PROXY_HOST/; s/(proxy_port =).*/\1 $S3_PROXY_PORT/;" \
3636+ $JENKINS_HOME/cloud-city/juju-qa.s3cfg
3637+fi
3638+
3639+status-set maintenance "Updating dependencies from branches" || true
3640+if [[ $(uname) == "Linux" ]]; then
3641+ as_jenkins make -C $JENKINS_HOME/juju-ci-tools install-deps
3642+ as_jenkins make -C $JENKINS_HOME/workspace-runner install
3643+fi
3644+
3645+NOW=$(date +%Y-%m-%dT%H:%M)
3646+status-set active "$HOSTNAME updated $NOW" || true
3647
3648=== added file 'charms/jenkins-juju-ci/hooks/install'
3649--- charms/jenkins-juju-ci/hooks/install 1970-01-01 00:00:00 +0000
3650+++ charms/jenkins-juju-ci/hooks/install 2017-03-14 23:38:01 +0000
3651@@ -0,0 +1,61 @@
3652+#!/bin/bash
3653+
3654+set -eux
3655+
3656+status-set maintenance "Installing: configuring apt" || true
3657+SERIES=$(lsb_release -sc)
3658+DEB_LINE="http://archive.ubuntu.com/ubuntu/ $SERIES-proposed restricted main multiverse universe"
3659+apt-add-repository -y ppa:juju/stable
3660+if [[ ! -f /etc/apt/preferences.d/proposed-updates ]]; then
3661+ cat << EOC | tee /etc/apt/preferences.d/proposed-updates
3662+Package: *
3663+Pin: release a=$SERIES-proposed
3664+Pin-Priority: 400
3665+EOC
3666+fi
3667+if ! grep "$SERIES-proposed" /etc/apt/sources.list; then
3668+ echo "deb $DEB_LINE" | tee -a /etc/apt/sources.list
3669+fi
3670+
3671+status-set maintenance "Installing: installing packages" || true
3672+apt-get update
3673+apt-get install -y ntp make bzr git lxc
3674+
3675+status-set maintenance "Installing: moving directories to big partition" || true
3676+if [[ -n $(df -h | grep /mnt | tr -s ' ' | cut -d ' ' -f 4 | grep G) ]]; then
3677+ if [[ ! -d /mnt/jenkins ]]; then
3678+ cp -rp /var/lib/jenkins /mnt
3679+ mv /var/lib/jenkins /var/lib/jenkins.old
3680+ ln -s /mnt/jenkins /var/lib/jenkins
3681+ chown -h jenkins:jenkins /var/lib/jenkins
3682+ fi
3683+ if [[ ! -d /mnt/lxc ]]; then
3684+ cp -rp /var/lib/lxc /mnt
3685+ mv /var/lib/lxc /var/lib/lxc.old
3686+ ln -s /mnt/lxc /var/lib/lxc
3687+ fi
3688+ if [[ ! -d /mnt/lxc && -d /var/lib/lxd ]]; then
3689+ cp -rp /var/lib/lxd /mnt
3690+ mv /var/lib/lxd /var/lib/lxd.old
3691+ ln -s /mnt/lxd /var/lib/lxd
3692+ chown -h lxd:lxd /var/lib/lxd
3693+ fi
3694+fi
3695+
3696+status-set maintenance "Installing: setting up jenkins permissions" || true
3697+usermod -a -G lxd jenkins || true
3698+if [[ ! -f /etc/sudoers.d/91-jenkins ]]; then
3699+ echo 'jenkins ALL=(ALL) NOPASSWD:ALL' > /etc/sudoers.d/91-jenkins
3700+fi
3701+chmod 0440 /etc/sudoers.d/91-jenkins
3702+
3703+status-set maintenance "Installing: setting up jenkins ssh" || true
3704+test -d /var/lib/jenkins/.ssh/ || mkdir -p /var/lib/jenkins/.ssh/
3705+if [[ ! -f /var/lib/jenkins/.ssh/authorized_keys ]]; then
3706+ cat /home/ubuntu/.ssh/authorized_keys | tee -a /var/lib/jenkins/.ssh/authorized_keys
3707+fi
3708+chmod 700 /var/lib/jenkins/.ssh/
3709+chmod 600 /var/lib/jenkins/.ssh/authorized_keys
3710+chown -R jenkins:jenkins /var/lib/jenkins/.ssh
3711+
3712+status-set maintenance "Installed" || true
3713
3714=== added file 'charms/jenkins-juju-ci/hooks/upgrade-charm'
3715--- charms/jenkins-juju-ci/hooks/upgrade-charm 1970-01-01 00:00:00 +0000
3716+++ charms/jenkins-juju-ci/hooks/upgrade-charm 2017-03-14 23:38:01 +0000
3717@@ -0,0 +1,20 @@
3718+#!/bin/bash
3719+
3720+set -eux
3721+
3722+status-set maintenance "Installing" || true
3723+apt-get install -y adduser default-jre-headless
3724+
3725+if ! id jenkins > /dev/null 2>&1 ; then
3726+ mkdir -p /var/lib/jenkins
3727+ adduser --system --home /var/lib/jenkins \
3728+ --group --disabled-password --quiet --shell /bin/bash \
3729+ jenkins
3730+ chown -R jenkins:jenkins /var/lib/jenkins
3731+fi
3732+
3733+if [[ ! -d /var/log/jenkins ]]; then
3734+ mkdir -p /var/log/jenkins
3735+fi
3736+
3737+status-set maintenance "Installed" || true
3738
3739=== added file 'charms/jenkins-juju-ci/icon.svg'
3740--- charms/jenkins-juju-ci/icon.svg 1970-01-01 00:00:00 +0000
3741+++ charms/jenkins-juju-ci/icon.svg 2017-03-14 23:38:01 +0000
3742@@ -0,0 +1,596 @@
3743+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
3744+<!-- Created with Inkscape (http://www.inkscape.org/) -->
3745+
3746+<svg
3747+ xmlns:dc="http://purl.org/dc/elements/1.1/"
3748+ xmlns:cc="http://creativecommons.org/ns#"
3749+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
3750+ xmlns:svg="http://www.w3.org/2000/svg"
3751+ xmlns="http://www.w3.org/2000/svg"
3752+ xmlns:xlink="http://www.w3.org/1999/xlink"
3753+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
3754+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
3755+ width="96"
3756+ height="96"
3757+ id="svg6517"
3758+ version="1.1"
3759+ inkscape:version="0.48.4 r9939"
3760+ sodipodi:docname="icon.svg">
3761+ <defs
3762+ id="defs6519">
3763+ <linearGradient
3764+ inkscape:collect="always"
3765+ xlink:href="#Background"
3766+ id="linearGradient6461"
3767+ gradientUnits="userSpaceOnUse"
3768+ x1="0"
3769+ y1="970.29498"
3770+ x2="144"
3771+ y2="970.29498"
3772+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-866.25992,731.29077)" />
3773+ <linearGradient
3774+ id="Background">
3775+ <stop
3776+ id="stop4178"
3777+ offset="0"
3778+ style="stop-color:#49728b;stop-opacity:1" />
3779+ <stop
3780+ id="stop4180"
3781+ offset="1"
3782+ style="stop-color:#8eabb7;stop-opacity:1" />
3783+ </linearGradient>
3784+ <filter
3785+ style="color-interpolation-filters:sRGB;"
3786+ inkscape:label="Inner Shadow"
3787+ id="filter1121">
3788+ <feFlood
3789+ flood-opacity="0.59999999999999998"
3790+ flood-color="rgb(0,0,0)"
3791+ result="flood"
3792+ id="feFlood1123" />
3793+ <feComposite
3794+ in="flood"
3795+ in2="SourceGraphic"
3796+ operator="out"
3797+ result="composite1"
3798+ id="feComposite1125" />
3799+ <feGaussianBlur
3800+ in="composite1"
3801+ stdDeviation="1"
3802+ result="blur"
3803+ id="feGaussianBlur1127" />
3804+ <feOffset
3805+ dx="0"
3806+ dy="2"
3807+ result="offset"
3808+ id="feOffset1129" />
3809+ <feComposite
3810+ in="offset"
3811+ in2="SourceGraphic"
3812+ operator="atop"
3813+ result="composite2"
3814+ id="feComposite1131" />
3815+ </filter>
3816+ <filter
3817+ style="color-interpolation-filters:sRGB;"
3818+ inkscape:label="Drop Shadow"
3819+ id="filter950">
3820+ <feFlood
3821+ flood-opacity="0.25"
3822+ flood-color="rgb(0,0,0)"
3823+ result="flood"
3824+ id="feFlood952" />
3825+ <feComposite
3826+ in="flood"
3827+ in2="SourceGraphic"
3828+ operator="in"
3829+ result="composite1"
3830+ id="feComposite954" />
3831+ <feGaussianBlur
3832+ in="composite1"
3833+ stdDeviation="1"
3834+ result="blur"
3835+ id="feGaussianBlur956" />
3836+ <feOffset
3837+ dx="0"
3838+ dy="1"
3839+ result="offset"
3840+ id="feOffset958" />
3841+ <feComposite
3842+ in="SourceGraphic"
3843+ in2="offset"
3844+ operator="over"
3845+ result="composite2"
3846+ id="feComposite960" />
3847+ </filter>
3848+ <clipPath
3849+ clipPathUnits="userSpaceOnUse"
3850+ id="clipPath873">
3851+ <g
3852+ transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
3853+ id="g875"
3854+ inkscape:label="Layer 1"
3855+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
3856+ <path
3857+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
3858+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
3859+ id="path877"
3860+ inkscape:connector-curvature="0"
3861+ sodipodi:nodetypes="sssssssss" />
3862+ </g>
3863+ </clipPath>
3864+ <filter
3865+ inkscape:collect="always"
3866+ id="filter891"
3867+ inkscape:label="Badge Shadow">
3868+ <feGaussianBlur
3869+ inkscape:collect="always"
3870+ stdDeviation="0.71999962"
3871+ id="feGaussianBlur893" />
3872+ </filter>
3873+ <clipPath
3874+ id="clipPath18"
3875+ clipPathUnits="userSpaceOnUse">
3876+ <path
3877+ inkscape:connector-curvature="0"
3878+ id="path20"
3879+ d="M 0,2494.84 0,0 l 1804.34,0 0,2494.84 -1804.34,0 z" />
3880+ </clipPath>
3881+ </defs>
3882+ <sodipodi:namedview
3883+ id="base"
3884+ pagecolor="#ffffff"
3885+ bordercolor="#666666"
3886+ borderopacity="1.0"
3887+ inkscape:pageopacity="0.0"
3888+ inkscape:pageshadow="2"
3889+ inkscape:zoom="4.13"
3890+ inkscape:cx="88.834295"
3891+ inkscape:cy="49.0292"
3892+ inkscape:document-units="px"
3893+ inkscape:current-layer="layer1"
3894+ showgrid="false"
3895+ fit-margin-top="0"
3896+ fit-margin-left="0"
3897+ fit-margin-right="0"
3898+ fit-margin-bottom="0"
3899+ inkscape:window-width="1920"
3900+ inkscape:window-height="1056"
3901+ inkscape:window-x="0"
3902+ inkscape:window-y="24"
3903+ inkscape:window-maximized="1"
3904+ showborder="true"
3905+ showguides="true"
3906+ inkscape:guide-bbox="true"
3907+ inkscape:showpageshadow="false">
3908+ <inkscape:grid
3909+ type="xygrid"
3910+ id="grid821" />
3911+ <sodipodi:guide
3912+ orientation="1,0"
3913+ position="16,48"
3914+ id="guide823" />
3915+ <sodipodi:guide
3916+ orientation="0,1"
3917+ position="64,80"
3918+ id="guide825" />
3919+ <sodipodi:guide
3920+ orientation="1,0"
3921+ position="80,40"
3922+ id="guide827" />
3923+ <sodipodi:guide
3924+ orientation="0,1"
3925+ position="64,16"
3926+ id="guide829" />
3927+ </sodipodi:namedview>
3928+ <metadata
3929+ id="metadata6522">
3930+ <rdf:RDF>
3931+ <cc:Work
3932+ rdf:about="">
3933+ <dc:format>image/svg+xml</dc:format>
3934+ <dc:type
3935+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
3936+ <dc:title />
3937+ </cc:Work>
3938+ </rdf:RDF>
3939+ </metadata>
3940+ <g
3941+ inkscape:label="BACKGROUND"
3942+ inkscape:groupmode="layer"
3943+ id="layer1"
3944+ transform="translate(268,-635.29076)"
3945+ style="display:inline">
3946+ <path
3947+ style="fill:url(#linearGradient6461);fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
3948+ d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
3949+ id="path6455"
3950+ inkscape:connector-curvature="0"
3951+ sodipodi:nodetypes="sssssssss" />
3952+ <g
3953+ transform="matrix(0.19496217,0,0,-0.19496217,-239.28382,701.0732)"
3954+ inkscape:label="ink_ext_XXXXXX"
3955+ id="g10">
3956+ <g
3957+ id="g3393">
3958+ <path
3959+ inkscape:connector-curvature="0"
3960+ id="path22"
3961+ style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
3962+ d="m 177.718,129.264 c 0,-49.4288 -39.175,-89.4992 -87.5,-89.4992 -48.3242,0 -87.49925,40.0704 -87.49925,89.4992 0,49.43 39.17505,89.501 87.49925,89.501 48.325,0 87.5,-40.071 87.5,-89.501" />
3963+ <path
3964+ inkscape:connector-curvature="0"
3965+ id="path24"
3966+ style="fill:#ef3d3a;fill-opacity:1;fill-rule:nonzero;stroke:none"
3967+ d="m 6.28438,107.098 c 0,0 -6.33438,93.333 79.66602,96 l -5.9996,10 -46.6664,-15.667 -13.3336,-15.333 -11.66642,-22.334 -6.66719,-26 2,-17.333" />
3968+ <path
3969+ inkscape:connector-curvature="0"
3970+ id="path26"
3971+ style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
3972+ d="M 30.2883,190.319 C 14.9363,174.611 5.43633,152.923 5.43633,128.93 l 0,0 c 0,-23.988 9.49997,-45.6788 24.85197,-61.3839 l 0,0 C 45.6477,51.841 66.8152,42.15 90.2168,42.15 l 0,0 c 23.4022,0 44.5712,9.691 59.9292,25.3961 l 0,0 c 15.351,15.7051 24.853,37.3959 24.853,61.3839 l 0,0 c 0,23.993 -9.502,45.681 -24.853,61.389 l 0,0 c -15.358,15.702 -36.527,25.393 -59.9292,25.395 l 0,0 C 66.8152,215.712 45.6477,206.021 30.2883,190.319 l 0,0 z M 26.4023,63.7469 C 10.0867,80.4328 0,103.493 0,128.93 l 0,0 c 0,25.441 10.0867,48.499 26.4023,65.186 l 0,0 c 16.3118,16.69 38.8915,27.035 63.8145,27.032 l 0,0 c 24.9232,0.003 47.5052,-10.342 63.8142,-27.032 l 0,0 c 16.317,-16.687 26.405,-39.747 26.403,-65.186 l 0,0 c 0.002,-25.437 -10.086,-48.4972 -26.403,-65.1831 l 0,0 C 137.722,47.0578 115.14,36.7141 90.2168,36.7141 l 0,0 c -24.923,0 -47.5027,10.3437 -63.8145,27.0328 l 0,0" />
3973+ <path
3974+ inkscape:connector-curvature="0"
3975+ id="path28"
3976+ style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none"
3977+ d="m 127.051,128.768 -13.334,-2 -18.0002,-2 -11.6672,-0.333 -11.3328,0.333 -8.6672,2.667 -7.6668,8.333 -6,17 -1.3332,3.667 -8,2.666 -4.6668,7.667 -3.3332,11 3.6672,9.667 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1.3328,1.666 -1.3328,7.667 -0.334,9.667 2,13.333 -0.0781,7.616 6.0781,9.717 10.6668,7.667 18.6672,8 20.6662,-3 18,-13 8.334,-13.333 5.333,-9.667 1.333,-24 -4,-20.667 -7.333,-18.333 -7,-9.667" />
3978+ <path
3979+ inkscape:connector-curvature="0"
3980+ id="path30"
3981+ style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
3982+ d="m 115.717,71.102 -47.6674,-2 0,-8 4,-28 -2,-2.334 -33.3328,11.334 -2.334,4 -3.3332,37.666 -7.6656,22.667 -1.6672,5.333 26.666,18.333 8.334,3.334 7.3328,-9 6.3332,-5.667 7.334,-2.333 3.3328,-1 4,-17.333 3,-3.6668 7.6672,2.6668 -5.334,-10.334 29.0002,-13.666 -3.666,-2" />
3983+ <path
3984+ inkscape:connector-curvature="0"
3985+ id="path32"
3986+ style="fill:#6d6b6d;fill-opacity:1;fill-rule:evenodd;stroke:none"
3987+ d="m 36.7168,187.435 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1,4 -2,7.666 2,18.334 -1.6672,10 6,7 13,10.333 -3.6668,5 -18.3332,-9 -7.6668,-6 -4.3332,-9.333 -6.6668,-9 -2,-10.667 1.334,-11.333" />
3988+ <path
3989+ inkscape:connector-curvature="0"
3990+ id="path34"
3991+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
3992+ d="m 50.3828,218.768 c 0,0 5,12.333 25,18.333 20,6 1,4.334 1,4.334 l -21.666,-8.334 -8.334,-8.333 -3.666,-6.667 7.666,0.667" />
3993+ <path
3994+ inkscape:connector-curvature="0"
3995+ id="path36"
3996+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
3997+ d="m 40.3828,189.768 c 0,0 -7,23.334 19.6668,26.667 l -1,4 -18.3328,-4.334 -5.334,-17.333 1.334,-11.333 3.666,2.333" />
3998+ <path
3999+ inkscape:connector-curvature="0"
4000+ id="path38"
4001+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4002+ d="m 51.0496,158.768 4.3645,4.229 c 0,0 1.9699,-0.229 2.3027,-2.562 0.3328,-2.334 1.3328,-23.334 15.666,-34.668 1.3074,-1.034 -10.666,1.668 -10.666,1.668 l -10.6672,16.666" />
4003+ <path
4004+ inkscape:connector-curvature="0"
4005+ id="path40"
4006+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4007+ d="m 112.385,165.101 c 0,0 0.777,10.104 3.498,9.327 2.721,-0.777 2.721,-3.498 2.721,-3.498 0,0 -6.608,-4.275 -6.219,-5.829" />
4008+ <path
4009+ inkscape:connector-curvature="0"
4010+ id="path42"
4011+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none"
4012+ d="m 140.05,202.101 c 0,0 -5.494,-1.16 -6,-6 -0.506,-4.841 6,-1 7,-0.667" />
4013+ <path
4014+ inkscape:connector-curvature="0"
4015+ id="path44"
4016+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:nonzero;stroke:none"
4017+ d="m 99.7168,201.767 c 0,0 -7.334,-1 -7.334,-5.666 0,-4.667 8.3342,-4.334 10.6672,-2.334" />
4018+ <path
4019+ inkscape:connector-curvature="0"
4020+ id="path46"
4021+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4022+ d="m 54.3828,180.101 c 0,0 -12.6672,7.667 -14,0.333 -1.3332,-7.333 -4.334,-12.667 2,-20.333 l -4.3332,1.333 -4,10.333 -1.3328,10 7.666,8.001 8.6668,-0.667 5,-4 0.3332,-5" />
4023+ <path
4024+ inkscape:connector-curvature="0"
4025+ id="path48"
4026+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4027+ d="m 60.3828,201.101 c 0,0 5.6668,29.333 34.334,35 23.6012,4.665 35.9992,-1 40.6662,-6.333 0,0 -21,24.999 -41.0002,17.333 -20,-7.667 -34.666,-21.667 -34.3332,-30.666 0.5676,-15.328 0.3332,-15.334 0.3332,-15.334" />
4028+ <path
4029+ inkscape:connector-curvature="0"
4030+ id="path50"
4031+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4032+ d="m 137.717,226.435 c 0,0 -9.666,0.333 -10,-8.334 0,0 -0.001,-1.333 0.666,-2.666 0,0 7.668,8.667 12.334,4" />
4033+ <path
4034+ inkscape:connector-curvature="0"
4035+ id="path52"
4036+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4037+ d="m 95.3887,214.532 c 0,0 -1.6641,13.303 -13.0059,5.569 -7.3332,-5 -6.666,-12 -5.3332,-13.333 1.3332,-1.334 0.9707,-4.019 1.9856,-2.176 1.0144,1.843 0.6804,7.843 4.3476,9.509 3.6668,1.667 9.6777,3.529 12.0059,0.431" />
4038+ <path
4039+ inkscape:connector-curvature="0"
4040+ id="path54"
4041+ style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
4042+ d="m 64.0496,124.435 -31.3328,-14 c 0,0 13,-51.667 6.3328,-67.667 l -4.6668,1.666 -0.3332,19.6672 -8.6656,37.3328 -3.6672,10.334 32.666,21.999 9.6668,-9.332" />
4043+ <path
4044+ inkscape:connector-curvature="0"
4045+ id="path56"
4046+ style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
4047+ d="m 67.2715,95.8578 4.4453,-5.4238 0,-20 -5.334,0 c 0,0 -0.666,14 -0.666,15.6672 0,1.6668 0.666,7.6668 0.666,7.6668" />
4048+ <path
4049+ inkscape:connector-curvature="0"
4050+ id="path58"
4051+ style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
4052+ d="m 67.3828,67.434 -15,-0.666 4.334,-3 10.666,-1.6668" />
4053+ <path
4054+ inkscape:connector-curvature="0"
4055+ id="path60"
4056+ style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
4057+ d="m 118.717,70.768 12.333,0.3332 3,-30.6672 -12.667,-1.666 -2.666,32" />
4058+ <path
4059+ inkscape:connector-curvature="0"
4060+ id="path62"
4061+ style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
4062+ d="m 122.05,70.768 18.667,1 c 0,0 7.666,19.3332 7.666,20.3332 0,1 6.667,27.9998 6.667,27.9998 l -15,15.666 -3,2.667 -8,-8 0,-31 -7,-28.666" />
4063+ <path
4064+ inkscape:connector-curvature="0"
4065+ id="path64"
4066+ style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
4067+ d="m 130.383,73.1012 -11.666,-2.3332 1.666,-9.334 c 4.333,-2 11.667,3.334 11.667,3.334" />
4068+ <path
4069+ inkscape:connector-curvature="0"
4070+ id="path66"
4071+ style="fill:#49728b;fill-opacity:1;fill-rule:evenodd;stroke:none"
4072+ d="m 130.717,131.434 23.333,-17.333 0.667,8 -17.667,16.333 -6.333,-7" />
4073+ <path
4074+ inkscape:connector-curvature="0"
4075+ id="path68"
4076+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
4077+ d="M 78.9508,5.09805 72.0496,33.102 68.6172,53.7648 68.0496,69.102 l 31.2348,1.6628 19.4326,0.0032 -1.767,-35.0032 3,-26.99996 -0.333,-5 -25.3326,-2 -15.3336,3.33321" />
4078+ <path
4079+ inkscape:connector-curvature="0"
4080+ id="path70"
4081+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
4082+ d="m 114.383,71.1012 c 0,0 -1.666,-34.6672 3.334,-59.3332 0,0 -10,-6.33402 -24.6674,-8.00003 l 28.0004,1 3.333,2 -4,54.66603 -1,11.668" />
4083+ <path
4084+ inkscape:connector-curvature="0"
4085+ id="path72"
4086+ style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
4087+ d="m 134.618,43.098 13,3.6668 24.666,1.3332 3.667,11.3329 -6.667,19.6671 -7.666,1 -10.667,-3.3332 -10.234,-4.9968 -5.433,0.9968 -4.234,-1.6636" />
4088+ <path
4089+ inkscape:connector-curvature="0"
4090+ id="path74"
4091+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
4092+ d="m 134.383,49.768 c 0,0 8.666,3.9992 10,3.666 l -3.666,18.334 4.333,1.666 c 0,0 3,-17.3328 3,-19.3328 0,0 18.666,-1 20.333,-1 0,0 4,7.6668 3,15.6668 l 3.667,-10.6668 0.333,-6 -5.333,-8 -6,-1.3332 -10,0.3332 -3.333,4.3328 -11.667,-1.666 -3.667,-1.334" />
4093+ <path
4094+ inkscape:connector-curvature="0"
4095+ id="path76"
4096+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
4097+ d="m 121.284,73.4309 -7.333,18.6671 -7.667,11 c 0,0 1.666,4.667 4,4.667 2.334,0 7.667,0 7.667,0 l 7.333,-2.667 -0.666,-12.3332 -3.334,-19.3339" />
4098+ <path
4099+ inkscape:connector-curvature="0"
4100+ id="path78"
4101+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
4102+ d="m 122.717,79.768 c 0,0 -9.334,17.9992 -9.334,20.666 0,0 1.666,4 4,3 2.334,-1 7.334,-3.666 7.334,-3.666 l 0,6.333 -11.334,2.334 -7.666,-1 13,-30.667 2.666,-0.334" />
4103+ <path
4104+ inkscape:connector-curvature="0"
4105+ id="path80"
4106+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
4107+ d="m 81.9512,123.764 -9.2344,1.004 -8.6672,2.667 0,-3 4.2348,-4.67 13.3332,-6" />
4108+ <path
4109+ inkscape:connector-curvature="0"
4110+ id="path82"
4111+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
4112+ d="m 67.0508,122.765 c 0,0 10.334,-4.334 13.6672,-3.334 l 0.3316,-3.996 -9.3316,1.996 -5.6672,4 1,1.334" />
4113+ <path
4114+ inkscape:connector-curvature="0"
4115+ id="path84"
4116+ style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
4117+ d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854" />
4118+ <path
4119+ inkscape:connector-curvature="0"
4120+ id="path86"
4121+ style="fill:none;stroke:#d33833;stroke-width:8.20672035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
4122+ d="m 134.582,106.63 c -5.656,0.166 -10.766,0.838 -15.24,2.1 0.304,1.834 -0.265,3.634 0.192,4.955 1.247,0.898 3.337,0.884 5.222,1.095 -1.63,0.801 -3.92,1.118 -5.801,0.655 -0.044,1.273 -0.615,2.062 -0.961,3.058 3.18,1.135 10.687,8.576 14.91,6.112 2.012,-1.172 2.867,-7.866 3.023,-11.121 0.13,-2.7 -0.245,-5.424 -1.345,-6.854 z" />
4123+ <path
4124+ inkscape:connector-curvature="0"
4125+ id="path88"
4126+ style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
4127+ d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846" />
4128+ <path
4129+ inkscape:connector-curvature="0"
4130+ id="path90"
4131+ style="fill:none;stroke:#d33833;stroke-width:8.20672035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
4132+ d="m 107.535,115.876 c -0.015,-0.428 -0.033,-0.859 -0.05,-1.291 -1.766,-1.16 -4.617,-1.146 -6.555,-2.121 2.857,-0.125 5.106,-0.813 7.052,-1.783 -0.043,-1.078 -0.084,-2.155 -0.126,-3.233 -3.237,-2.216 -6.194,-5.516 -10.0052,-7.5941 -1.802,-0.9828 -8.1262,-3.5117 -10.0434,-3.0648 -1.0847,0.2519 -1.1824,1.598 -1.616,2.8668 -0.9238,2.7171 -3.0508,7.0421 -3.2363,11.1321 -0.2363,5.166 -0.7578,13.824 4.8094,12.76 4.4914,-0.857 9.7152,-2.926 13.1925,-4.826 2.125,-1.162 3.354,-2.598 6.578,-2.846 z" />
4133+ <path
4134+ inkscape:connector-curvature="0"
4135+ id="path92"
4136+ style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
4137+ d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072" />
4138+ <path
4139+ inkscape:connector-curvature="0"
4140+ id="path94"
4141+ style="fill:none;stroke:#d33833;stroke-width:8.20672035;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
4142+ d="m 110.75,109.712 c -0.494,2.814 -1.065,3.617 -0.844,6.072 7.505,5.004 8.914,-8.595 0.844,-6.072 z" />
4143+ <path
4144+ inkscape:connector-curvature="0"
4145+ id="path96"
4146+ style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none"
4147+ d="m 121.617,107.431 c 0,0 -2.334,3.334 -0.667,4.334 1.667,1 3.334,-0.001 4.334,1.666 1,1.667 0,2.667 0.333,4.667 0.333,2 2.001,2.334 3.667,2.667 1.666,0.333 6.334,1 7,-0.667 l -2,6 -4,1.333 -12.667,-7.333 -0.667,-3.667 0,-7.333" />
4148+ <path
4149+ inkscape:connector-curvature="0"
4150+ id="path98"
4151+ style="fill:#ef3d3a;fill-opacity:1;fill-rule:evenodd;stroke:none"
4152+ d="m 86.6172,96.4309 c -0.4004,5.2021 -0.8242,10.3971 -1.2957,15.5941 -0.7055,7.76 1.864,6.406 8.5906,6.406 1.0274,0 6.3259,-1.225 6.7049,-2 1.818,-3.713 -3.04,-2.888 2.094,-5.688 4.334,-2.363 11.99,1.435 10.239,6.688 -0.98,1.168 -5.106,0.364 -6.585,1.131 -2.604,1.35 -5.208,2.7 -7.8123,4.05 -3.3132,1.719 -10.9707,4.225 -14.5031,1.823 -8.9504,-6.087 0.5649,-21.296 3.7578,-27.6459" />
4153+ <path
4154+ inkscape:connector-curvature="0"
4155+ id="path100"
4156+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4157+ d="m 95.3887,214.532 c -9.0852,2.116 -13.5996,-3.802 -16.3535,-9.94 -2.459,0.596 -1.4805,3.94 -0.8594,5.644 1.6262,4.472 8.1797,10.425 13.5344,9.618 2.3043,-0.347 5.4226,-2.454 3.6785,-5.322" />
4158+ <path
4159+ inkscape:connector-curvature="0"
4160+ id="path102"
4161+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4162+ d="m 139.655,204.186 c 0.143,-0.006 0.288,-0.011 0.431,-0.017 2.053,-4.265 3.83,-8.783 6.42,-12.548 -1.735,-4.041 -13.138,-7.617 -12.962,-0.361 2.466,1.078 6.723,0.22 8.909,1.597 -1.264,3.469 -3.088,6.422 -2.798,11.329" />
4163+ <path
4164+ inkscape:connector-curvature="0"
4165+ id="path104"
4166+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4167+ d="m 100.04,204.075 c 1.948,-3.571 2.582,-7.323 5.351,-10.022 1.247,-1.215 3.672,-2.696 2.47,-6.075 -0.281,-0.797 -2.334,-2.574 -3.519,-2.923 -4.329,-1.278 -14.4162,-0.264 -11.0002,5.133 3.5801,-0.167 8.3922,-2.325 11.0682,0.274 -2.055,3.285 -5.7186,9.784 -4.37,13.613" />
4168+ <path
4169+ inkscape:connector-curvature="0"
4170+ id="path106"
4171+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4172+ d="m 138.03,167.781 c -6.518,-4.187 -13.786,-8.74 -24.466,-7.684 -2.282,1.984 -3.152,6.399 -0.935,9.315 1.154,-1.984 0.429,-5.633 3.645,-6.182 6.06,-1.037 13.113,3.707 17.472,5.365 2.703,4.557 -0.233,6.233 -2.668,9.166 -4.985,6.009 -11.672,13.457 -11.429,22.453 2.015,1.461 2.189,-2.23 2.478,-2.902 2.603,-6.092 9.154,-13.883 13.935,-19.097 1.174,-1.284 3.107,-2.516 3.322,-3.365 0.62,-2.469 -1.613,-5.427 -1.354,-7.069" />
4173+ <path
4174+ inkscape:connector-curvature="0"
4175+ id="path108"
4176+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4177+ d="m 52.1016,172.189 c -2.043,1.166 -2.5293,6.302 -4.9278,6.448 -3.4277,0.208 -2.8027,-6.663 -2.789,-10.681 -2.3594,2.142 -2.7743,8.737 -1.041,12.124 -1.9754,0.97 -2.8575,-1.07 -3.9532,-1.789 1.4082,10.23 14.9649,4.745 12.711,-6.102" />
4178+ <path
4179+ inkscape:connector-curvature="0"
4180+ id="path110"
4181+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4182+ d="m 142.18,163.521 c -3.034,-5.775 -7.326,-12.135 -16.229,-12.32 -0.181,1.865 -0.32,4.703 0.01,5.826 6.806,0.654 11.008,4.118 16.219,6.494" />
4183+ <path
4184+ inkscape:connector-curvature="0"
4185+ id="path112"
4186+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4187+ d="m 99.5266,159.777 c 5.6784,-2.986 16.1144,-3.307 23.8324,-3.081 0.414,-1.691 0.404,-3.78 0.42,-5.842 -9.921,-0.495 -21.651,1.96 -24.2524,8.923" />
4188+ <path
4189+ inkscape:connector-curvature="0"
4190+ id="path114"
4191+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4192+ d="m 98.4473,154.209 c 3.9267,-9.859 17.4227,-8.724 28.8037,-8.452 -0.501,-1.28 -1.587,-2.792 -2.937,-3.339 -3.647,-1.484 -13.706,-2.61 -18.769,0.079 -3.211,1.707 -5.274,5.564 -7.0333,7.825 -0.8496,1.092 -5.0801,3.881 -0.0644,3.887" />
4193+ <path
4194+ inkscape:connector-curvature="0"
4195+ id="path116"
4196+ style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none"
4197+ d="m 137.556,99.8262 c -4.608,-7.8922 -9.017,-15.9981 -14.484,-22.9594 2.292,6.7391 3.273,18.0184 3.619,26.6172 4.795,2.244 8.901,-0.505 10.865,-3.6578" />
4198+ <path
4199+ inkscape:connector-curvature="0"
4200+ id="path118"
4201+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4202+ d="m 162.352,71.4609 c -5.159,-1.0328 -8.784,-6.0468 -13.817,-5.725 2.766,3.8993 7.613,5.543 13.817,5.725" />
4203+ <path
4204+ inkscape:connector-curvature="0"
4205+ id="path120"
4206+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4207+ d="m 164.628,63.3871 c -4.205,-0.4441 -9.144,-1.125 -13.409,-0.7742 2.019,3.084 9.798,2.0199 13.409,0.7742" />
4208+ <path
4209+ inkscape:connector-curvature="0"
4210+ id="path122"
4211+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4212+ d="m 166.085,56.4262 c -4.726,-0.1024 -10.6,-0.0082 -15.092,0.3687 2.657,2.8539 12.027,1.059 15.092,-0.3687" />
4213+ <path
4214+ inkscape:connector-curvature="0"
4215+ id="path124"
4216+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
4217+ d="m 128.664,37.377 c 0.678,-5.9352 3.031,-11.9489 2.736,-18.4489 -2.613,-0.8812 -4.114,-1.6519 -7.615,-1.6472 -0.247,5.5242 -0.986,13.9691 -0.765,19.2351 1.722,-0.114 4.261,1.2301 5.644,0.861" />
4218+ <path
4219+ inkscape:connector-curvature="0"
4220+ id="path126"
4221+ style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none"
4222+ d="m 121.045,124.849 c -2.373,-1.549 -4.394,-3.483 -6.673,-5.137 -5.054,-0.25 -7.812,0.35 -11.525,3.252 0.061,0.233 0.434,0.129 0.448,0.415 5.41,-2.411 12.287,0.982 17.75,1.47" />
4223+ <path
4224+ inkscape:connector-curvature="0"
4225+ id="path128"
4226+ style="fill:#81b0c4;fill-opacity:1;fill-rule:evenodd;stroke:none"
4227+ d="m 92.6445,87.9711 c 1.4864,6.441 7.3106,9.7769 12.5995,13.3239 5.459,-6.9282 8.779,-15.838 12.435,-24.436 -8.638,2.6039 -17.464,6.8289 -25.0345,11.1121" />
4228+ <path
4229+ inkscape:connector-curvature="0"
4230+ id="path130"
4231+ style="fill:#231f20;fill-opacity:1;fill-rule:evenodd;stroke:none"
4232+ d="m 123.02,36.516 c -0.221,-5.266 0.518,-13.7109 0.765,-19.2351 3.501,-0.0047 5.002,0.766 7.615,1.6472 0.295,6.5 -2.058,12.5137 -2.736,18.4489 -1.383,0.3691 -3.922,-0.975 -5.644,-0.861 z M 68.5059,66.4648 C 70.8145,45.2418 74.1582,27.4012 80.291,8.60781 93.9023,4.475 110.311,4.11484 122.342,7.84414 120.133,18.4512 121.098,31.3648 119.807,42.684 c -0.973,8.5078 -0.477,17.068 -1.811,25.748 -14.578,3.0328 -35.1835,0.709 -49.4901,-1.9672 z m 52.9371,1.834 c -0.123,-9.1148 0.408,-18.1058 1.104,-27.232 3.5,0.5254 5.875,0.8762 9.127,1.5891 -1.056,8.7859 -0.926,18.6722 -3.077,26.4441 -2.486,-0.0238 -4.675,0.0289 -7.154,-0.8012 z m 17.755,1.4692 c -1.661,0.3808 -3.595,0.0148 -5.182,-0.016 0.746,-7.4301 2.556,-15.629 3.193,-23.4282 2.497,-0.0777 3.831,1.1 5.885,1.4961 0.11,6.8461 -0.598,16.2781 -3.896,21.9481 z m 26.884,-24.5629 c 5.205,1.264 8.478,7.639 7.022,14.1859 -0.977,4.4 -2.717,12.6852 -4.579,15.5 -1.376,2.082 -5.107,4.8078 -8.086,2.9 -4.846,-3.1031 -13.383,-4.0039 -16.917,-7.7601 1.772,-5.9 2.322,-14.0039 3.053,-21.4797 6.054,-0.3774 13.503,1.666 18.538,-0.5024 -3.515,-1.1386 -8.076,-1.1476 -11.113,-2.807 2.482,-1.1988 8.293,-0.9566 12.082,-0.0367 z M 117.679,76.859 c -3.656,8.598 -6.976,17.5078 -12.435,24.436 C 99.9551,97.748 94.1309,94.4121 92.6445,87.9711 100.215,83.6879 109.041,79.4629 117.679,76.859 z m 9.012,26.625 c -0.346,-8.5988 -1.327,-19.8781 -3.619,-26.6172 5.467,6.9613 9.876,15.0672 14.484,22.9594 -1.964,3.1528 -6.07,5.9018 -10.865,3.6578 z m -10.216,3.63 c -2.071,0.223 -3.829,-2.381 -6.522,-1.255 -0.617,-0.682 -1.178,-1.421 -1.807,-2.087 5.948,-7.1681 8.651,-17.338 13.245,-25.7618 2.465,8.0918 2.181,16.957 2.724,25.7888 -3.387,-0.215 -5.266,3.063 -7.64,3.315 z m -6.569,8.67 c -0.221,-2.455 0.35,-3.258 0.844,-6.072 8.07,-2.523 6.661,11.076 -0.844,6.072 z m -8.949,2.938 c -3.4773,1.9 -8.7011,3.969 -13.1925,4.826 -5.5672,1.065 -5.0457,-7.594 -4.8094,-12.76 0.1855,-4.09 2.3125,-8.415 3.2363,-11.1321 0.4336,-1.2688 0.5313,-2.6149 1.616,-2.8668 1.9172,-0.4469 8.2414,2.082 10.0434,3.0648 3.8112,2.0781 6.7682,5.3781 10.0052,7.5941 0.042,1.078 0.083,2.155 0.126,3.233 -1.946,0.97 -4.195,1.658 -7.052,1.783 1.938,0.975 4.789,0.961 6.555,2.121 0.017,0.432 0.035,0.863 0.05,1.291 -3.224,0.248 -4.453,1.684 -6.578,2.846 z m -33.2136,6.033 c -2.886,-2.93 8.0945,-6.924 11.5906,-7.139 -0.0195,1.854 1.0566,3.602 0.8398,4.932 -4.1523,0.729 -9.6093,0.248 -12.4304,2.207 z m 35.5516,-1.376 c -0.014,-0.286 -0.387,-0.182 -0.448,-0.415 3.713,-2.902 6.471,-3.502 11.525,-3.252 2.279,1.654 4.3,3.588 6.673,5.137 -5.463,-0.488 -12.34,-3.881 -17.75,-1.47 z m 32.632,-9.895 c -0.156,3.255 -1.011,9.949 -3.023,11.121 -4.223,2.465 -11.73,-4.977 -14.91,-6.112 0.346,-0.996 0.917,-1.785 0.961,-3.058 1.881,0.463 4.171,0.146 5.801,-0.655 -1.885,-0.211 -3.975,-0.197 -5.222,-1.095 -0.457,-1.321 0.112,-3.121 -0.192,-4.955 4.474,-1.262 9.584,-1.934 15.24,-2.1 1.1,1.43 1.475,4.154 1.345,6.854 z m -73.0422,8.437 c -0.9063,0.646 -7.0371,8.623 -7.877,8.292 C 43.9141,125.838 33.541,118.273 24.2715,111.118 33.1094,92.1539 36.677,68.9199 37.3074,46.5262 47.4316,41.791 56.3242,34.9648 70.0625,34.252 68.4727,45.5 67.0215,55.5352 66.1191,66.125 c -3.4519,1.4551 -8.4043,-0.066 -11.6347,0.4512 -0.0274,3.8929 4.9336,1.7047 5.3468,4.3226 0.3114,1.9801 -2.7296,2.1301 -1.7394,5.2481 2.5254,-0.918 3.8516,-2.9457 6.5449,-3.7071 2.461,5.384 -0.0344,14.9102 0.3203,19.4102 0.0672,0.8449 0.4219,4.6809 2.3145,4.0078 1.675,-0.5957 -0.0957,-10.2019 0.0879,-14.4609 0.1672,-3.9239 -0.4739,-7.7207 1.1152,-10.184 13.2754,1.807 26.7656,2.975 41.1294,3.3691 -3.16,1.3559 -6.914,2.6391 -11.0298,4.959 -2.2312,1.2578 -9.2644,3.875 -9.9082,5.9942 -1.0273,3.3769 2.6953,5.1757 3.332,8.0707 -6.7011,-3.6547 -8.0085,3.5031 -9.5937,8.5741 -1.4363,4.593 -2.2539,8.024 -2.6063,10.673 -5.7726,2.752 -11.9445,5.539 -16.9132,9.068 z m 67.1792,7.327 c 9.243,4.482 10.909,-16.751 7.286,-23.591 0.56,-2.04 2.486,-2.821 3.272,-4.655 -5.158,-9.2399 -10.887,-17.8649 -16.15,-26.9961 3.915,2.4371 9.507,0.4359 14.114,2.2601 1.684,0.666 2.903,4.5211 4.178,7.6051 3.507,8.4848 7.189,19.1819 8.827,27.2789 0.37,1.845 1.378,5.865 1.152,7.507 -0.403,2.94 -4.392,5.12 -6.421,6.938 -3.738,3.358 -6.092,6.313 -9.991,9.453 -1.581,-2.334 -4.974,-3.902 -6.267,-5.8 z m -88.3179,81.968 c -4.4043,-4.846 -3.4824,-13.926 -2.9492,-20.386 7.9609,5.008 18.5273,-0.396 18.4277,-8.914 3.8008,0.101 1.4199,4.747 0.7324,7.74 -2.2468,9.776 3.7852,20.397 0.2735,29.337 -6.8184,-0.517 -12.42,-3.302 -16.4844,-7.777 z m 31.5137,28.126 c -9.9707,-2.826 -22.7493,-10.071 -26.8465,-19.028 3.1726,0.461 5.375,2.061 8.5047,2.259 1.1828,0.077 2.7324,-0.496 4.0918,-0.158 2.709,0.672 4.9953,6.746 7.039,9.006 1.9922,2.207 4.3867,3.15 6.0254,5.162 1.0528,0.508 2.6094,0.473 2.6692,2.054 -0.4563,0.488 -0.9368,0.86 -1.4836,0.705 z m 51.9032,-2.658 c -10.349,5.839 -27.8661,10.231 -38.8747,4.743 -8.8828,-4.429 -20.8899,-11.757 -24.9836,-21.043 3.8242,-8.961 -1.1328,-17.172 -1.4492,-26.27 -0.168,-4.841 2.2793,-9.067 2.4668,-14.337 -1.3086,-2.159 -5.3067,-2.425 -8.0743,-2.277 -0.9316,4.662 -2.5625,9.902 -7.3632,10.428 -6.793,0.743 -11.7598,-4.879 -12.0684,-10.754 -0.3652,-6.909 5.3066,-18.36 13.3457,-17.565 3.1055,0.307 3.8684,3.42 7.252,3.388 1.8339,-3.659 -2.8289,-4.808 -3.3086,-7.425 -0.125,-0.676 0.3867,-3.318 0.6843,-4.557 1.4602,-6.033 4.7153,-13.841 7.9192,-18.434 4.0664,-5.826 12.0555,-6.704 20.6504,-7.275 1.5351,3.307 7.1902,3.035 10.875,2.17 -4.416,1.749 -8.5215,5.989 -11.9239,9.742 -3.9082,4.306 -7.8671,8.925 -8.0671,14.553 7.3855,-10.246 13.4871,-19.194 26.9168,-23.701 10.1618,-3.408 22.0298,1.562 29.8378,7.045 3.24,2.279 5.174,5.895 7.477,9.205 8.617,12.395 12.638,30.087 11.754,47.235 -0.364,7.072 -0.348,14.12 -2.721,18.878 -2.48,4.975 -10.868,9.426 -15.778,4.926 -0.91,4.838 4.083,7.83 9.948,6.089 -4.182,5.397 -8.571,11.882 -14.515,15.236 z M 144.444,77.1168 c 8.087,4.0203 23.197,10.8211 28.267,-0.0148 1.871,-3.9942 4.066,-10.7461 5.035,-14.8692 1.369,-5.8168 -1.484,-18.043 -7.463,-19.9949 -5.281,-1.7238 -11.443,-1.6188 -17.804,-0.341 -0.749,0.623 -1.583,1.709 -2.166,2.841 -4.542,0.1762 -8.795,-0.2438 -12.383,-2.1109 0.34,-3.359 -1.932,-3.8981 -4.062,-4.5899 -1.579,-6.2609 3.159,-14.4371 2.025,-20.1461 -0.809,-4.0672 -5.813,-4.6961 -9.491,-5.457 -0.12,-2.2602 0.161,-4.14689 0.412,-6.059 -0.841,-3.09883 -4.613,-4.86289 -8.187,-5.29492 -11.759,-1.414064 -29.6133,-2.049221 -40.9239,2.01797 -3.1562,7.74175 -5.6426,17.15785 -8.2715,25.99805 -11.0312,-1.1781 -19.9531,4.7598 -28.364,8.65 -2.9121,1.35 -6.9406,2.0937 -8.0285,4.4117 -1.0547,2.2442 -0.6231,6.5453 -0.8848,10.6082 -0.666,10.377 -1.2363,20.386 -3.9766,31.011 -1.2304,4.7679 -3.375,8.975 -4.8711,13.5691 -1.3828,4.2579 -3.7988,9.5199 -4.4289,13.7659 -0.9343,6.293 4.9914,6.643 8.7805,9.37 5.8574,4.217 10.4551,6.549 16.7988,10.355 1.8789,1.127 7.545,3.98 8.1895,5.294 1.2812,2.605 -2.1992,6.278 -3.1297,8.32 -1.4719,3.229 -2.2395,5.972 -2.4504,9.158 -5.3215,0.841 -9.3555,4.008 -11.7922,7.579 -4.0308,5.91 -6.8262,16.844 -3.3387,25.161 0.2735,0.655 1.6375,1.943 1.8387,2.949 0.3969,1.981 -0.7469,4.615 -0.818,6.722 -0.3664,10.81 1.829,20.124 9.1063,23.384 2.9543,11.769 13.5281,15.682 23.4902,21.531 3.7239,2.186 7.8289,3.583 12.0684,5.143 15.2082,5.597 38.5419,4.543 51.1639,-5.003 5.352,-4.048 13.907,-12.595 16.967,-18.783 8.082,-16.337 7.508,-43.64 1.855,-63.513 -0.76,-2.668 -1.862,-6.59 -3.401,-9.795 -1.073,-2.238 -4.408,-6.716 -4.003,-8.692 0.417,-2.043 7.604,-7.5 9.145,-8.986 2.775,-2.677 8.047,-6.23 8.474,-9.608 0.459,-3.595 -1.584,-8.513 -2.619,-11.982 -3.46,-11.5769 -6.836,-22.2781 -10.759,-32.5992" />
4233+ <path
4234+ inkscape:connector-curvature="0"
4235+ id="path132"
4236+ style="fill:#f7e4cd;fill-opacity:1;fill-rule:evenodd;stroke:none"
4237+ d="m 90.491,157.255 c 0.4387,0.584 2.8508,1.471 6.2258,-0.154 0,0 -4,-0.667 -3.6672,-7.336 l -1.6668,0.334 c 0,0 -1.7226,6.047 -0.8918,7.156" />
4238+ <path
4239+ inkscape:connector-curvature="0"
4240+ id="path134"
4241+ style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none"
4242+ d="m 119.717,99.934 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.012 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.822 1.834,-1.834" />
4243+ <path
4244+ inkscape:connector-curvature="0"
4245+ id="path136"
4246+ style="fill:#1d1919;fill-opacity:1;fill-rule:evenodd;stroke:none"
4247+ d="m 121.55,91.434 c 0,-1.0121 -0.821,-1.8328 -1.834,-1.8328 -1.012,0 -1.833,0.8207 -1.833,1.8328 0,1.0121 0.821,1.834 1.833,1.834 1.013,0 1.834,-0.8219 1.834,-1.834" />
4248+ </g>
4249+ </g>
4250+ <text
4251+ xml:space="preserve"
4252+ style="font-size:15px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Ubuntu;-inkscape-font-specification:Ubuntu"
4253+ x="-236.76514"
4254+ y="715.29077"
4255+ id="text3081"
4256+ sodipodi:linespacing="125%"><tspan
4257+ sodipodi:role="line"
4258+ id="tspan3083"
4259+ x="-236.76514"
4260+ y="715.29077">Slave</tspan></text>
4261+ </g>
4262+ <g
4263+ inkscape:groupmode="layer"
4264+ id="layer3"
4265+ inkscape:label="PLACE YOUR PICTOGRAM HERE"
4266+ style="display:inline" />
4267+ <g
4268+ inkscape:groupmode="layer"
4269+ id="layer2"
4270+ inkscape:label="BADGE"
4271+ style="display:none"
4272+ sodipodi:insensitive="true">
4273+ <g
4274+ style="display:inline"
4275+ transform="translate(-340.00001,-581)"
4276+ id="g4394"
4277+ clip-path="none">
4278+ <g
4279+ id="g855">
4280+ <g
4281+ inkscape:groupmode="maskhelper"
4282+ id="g870"
4283+ clip-path="url(#clipPath873)"
4284+ style="opacity:0.6;filter:url(#filter891)">
4285+ <path
4286+ transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-237.54282)"
4287+ d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
4288+ sodipodi:ry="12"
4289+ sodipodi:rx="12"
4290+ sodipodi:cy="552.36218"
4291+ sodipodi:cx="252"
4292+ id="path844"
4293+ style="color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
4294+ sodipodi:type="arc" />
4295+ </g>
4296+ <g
4297+ id="g862">
4298+ <path
4299+ sodipodi:type="arc"
4300+ style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
4301+ id="path4398"
4302+ sodipodi:cx="252"
4303+ sodipodi:cy="552.36218"
4304+ sodipodi:rx="12"
4305+ sodipodi:ry="12"
4306+ d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
4307+ transform="matrix(1.4999992,0,0,1.4999992,-29.999795,-238.54282)" />
4308+ <path
4309+ transform="matrix(1.25,0,0,1.25,33,-100.45273)"
4310+ d="m 264,552.36218 c 0,6.62742 -5.37258,12 -12,12 -6.62742,0 -12,-5.37258 -12,-12 0,-6.62741 5.37258,-12 12,-12 6.62742,0 12,5.37259 12,12 z"
4311+ sodipodi:ry="12"
4312+ sodipodi:rx="12"
4313+ sodipodi:cy="552.36218"
4314+ sodipodi:cx="252"
4315+ id="path4400"
4316+ style="color:#000000;fill:#dd4814;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:4;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
4317+ sodipodi:type="arc" />
4318+ <path
4319+ sodipodi:type="star"
4320+ style="color:#000000;fill:#f5f5f5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
4321+ id="path4459"
4322+ sodipodi:sides="5"
4323+ sodipodi:cx="666.19574"
4324+ sodipodi:cy="589.50385"
4325+ sodipodi:r1="7.2431178"
4326+ sodipodi:r2="4.3458705"
4327+ sodipodi:arg1="1.0471976"
4328+ sodipodi:arg2="1.6755161"
4329+ inkscape:flatsided="false"
4330+ inkscape:rounded="0.1"
4331+ inkscape:randomized="0"
4332+ d="m 669.8173,595.77657 c -0.39132,0.22593 -3.62645,-1.90343 -4.07583,-1.95066 -0.44938,-0.0472 -4.05653,1.36297 -4.39232,1.06062 -0.3358,-0.30235 0.68963,-4.03715 0.59569,-4.47913 -0.0939,-0.44198 -2.5498,-3.43681 -2.36602,-3.8496 0.18379,-0.41279 4.05267,-0.59166 4.44398,-0.81759 0.39132,-0.22593 2.48067,-3.48704 2.93005,-3.4398 0.44938,0.0472 1.81505,3.67147 2.15084,3.97382 0.3358,0.30236 4.08294,1.2817 4.17689,1.72369 0.0939,0.44198 -2.9309,2.86076 -3.11469,3.27355 -0.18379,0.41279 0.0427,4.27917 -0.34859,4.5051 z"
4333+ transform="matrix(1.511423,-0.16366377,0.16366377,1.511423,-755.37346,-191.93651)" />
4334+ </g>
4335+ </g>
4336+ </g>
4337+ </g>
4338+</svg>
4339
4340=== added file 'charms/jenkins-juju-ci/metadata.yaml'
4341--- charms/jenkins-juju-ci/metadata.yaml 1970-01-01 00:00:00 +0000
4342+++ charms/jenkins-juju-ci/metadata.yaml 2017-03-14 23:38:01 +0000
4343@@ -0,0 +1,21 @@
4344+name: jenkins-juju-ci
4345+maintainer: Curtis Hovey <curtis.hovey@canonical.com>
4346+summary: Juju CI tools for jenkins
4347+description: |
4348+ Reconfigure the host and install testing tools to run Juju CI tests.
4349+ .
4350+ This charm will move /var/lib/<jenkins | lxd | lxc> to a big partition
4351+ if available. Several sets of tools are installed. Once configuration
4352+ is complete, the jenkins-slave is ready to run Juju CI tests.
4353+subordinate: true
4354+requires:
4355+ juju-info:
4356+ interface: juju-info
4357+ scope: container
4358+tags:
4359+ - ci
4360+series:
4361+ - xenial
4362+ - trusty
4363+ - precise
4364+ - yakkety
4365
4366=== added directory 'charms/jenkins-juju-ci/scripts'
4367=== added file 'charms/jenkins-juju-ci/scripts/place-slave.sh'
4368--- charms/jenkins-juju-ci/scripts/place-slave.sh 1970-01-01 00:00:00 +0000
4369+++ charms/jenkins-juju-ci/scripts/place-slave.sh 2017-03-14 23:38:01 +0000
4370@@ -0,0 +1,30 @@
4371+#!/bin/bash
4372+
4373+SLAVE_JAR=/var/lib/jenkins/bin/slave.jar
4374+RUN_JAR=/var/run/jenkins/slave.jar
4375+JENKINS_URL=$1
4376+
4377+if [[ ! -f /var/lib/jenkins/bin/slave.jar ]]; then
4378+ if [[ -z "$JENKINS_URL" ]]; then
4379+ echo URL of jenkins server must be provided
4380+ exit 1
4381+ fi
4382+ echo "Downloading slave.jar from $JENKINS_URL"
4383+ wget -q -O $SLAVE_JAR $JENKINS_URL/jnlpJars/slave.jar
4384+
4385+ if [[ ! -f $SLAVE_JAR ]] ; then
4386+ echo "Failed to download slave.jar, no file"
4387+ exit 1
4388+ fi
4389+ if [[ $(stat -c%s $SLAVE_JAR) == "0" ]]; then
4390+ echo "Failed to download slave.jar, empty file"
4391+ exit 1
4392+ fi
4393+ sudo chown jenkins:jenkins $SLAVE_JAR
4394+fi
4395+
4396+if [[ ! -d /var/run/jenkins ]]; then
4397+ mkdir /var/run/jenkins
4398+fi
4399+cp $SLAVE_JAR $RUN_JAR
4400+sudo chown jenkins:jenkins $RUN_JAR
4401
4402=== added file 'charms/jenkins-juju-ci/scripts/start-jenkins-slave.sh'
4403--- charms/jenkins-juju-ci/scripts/start-jenkins-slave.sh 1970-01-01 00:00:00 +0000
4404+++ charms/jenkins-juju-ci/scripts/start-jenkins-slave.sh 2017-03-14 23:38:01 +0000
4405@@ -0,0 +1,9 @@
4406+#!/bin/sh
4407+test -n "$JENKINS_URL" || . /etc/default/jenkins-slave
4408+test -n "$JENKINS_URL" || { stop; exit 0; }
4409+mkdir $JENKINS_RUN > /dev/null 2>&1 || true
4410+chown -R $JENKINS_USER $JENKINS_RUN || true
4411+$JENKINS_HOME/bin/place-slave.sh $JENKINS_URL
4412+/sbin/start-stop-daemon --start -c $JENKINS_USER \
4413+ --exec $JAVA --name jenkins-slave \
4414+ -- $JAVA_ARGS -jar $JENKINS_RUN/slave.jar $JENKINS_ARGS
4415
4416=== added directory 'charms/jenkins-slave'
4417=== added file 'charms/jenkins-slave/README.md'
4418--- charms/jenkins-slave/README.md 1970-01-01 00:00:00 +0000
4419+++ charms/jenkins-slave/README.md 2017-03-14 23:38:01 +0000
4420@@ -0,0 +1,24 @@
4421+# Overview
4422+
4423+This charm provisions a Jenkins slave to connect to a Jenkins master.
4424+This is the companion to the Jenkins charm. It work with a standalone
4425+Jenkins master or one managed by Juju
4426+
4427+
4428+# Usage
4429+
4430+To deploy a Jenkins slave you will also need to deploy the jenkins master
4431+charm. This can be done as follows:
4432+
4433+ juju deploy jenkins
4434+ juju deploy -n 5 jenkins-slave
4435+ juju add-relation jenkins jenkins-slave
4436+
4437+There are cases where you want to provision a specific machine that
4438+provides specific resources for tests, such as CPU architecture or
4439+network access. You can deploy the extra slave like this:
4440+
4441+ juju add-machine <special-machine-private-ip>
4442+ juju deploy --to <special-machine-number> jenkins-slave ppc64el-slave
4443+
4444+See the Jenkins charm for more details.
4445
4446=== added file 'charms/jenkins-slave/config.yaml'
4447--- charms/jenkins-slave/config.yaml 1970-01-01 00:00:00 +0000
4448+++ charms/jenkins-slave/config.yaml 2017-03-14 23:38:01 +0000
4449@@ -0,0 +1,20 @@
4450+options:
4451+ packages:
4452+ type: string
4453+ default: make git bzr
4454+ description: Packages to install on jenkins slave.
4455+ labels:
4456+ type: string
4457+ description: Jenkins labels to associate with jenkins slave.
4458+ default: ""
4459+ slave-name:
4460+ type: string
4461+ description: The name of this slave. Defaults to the juju unit name.
4462+ default: ""
4463+ master-url:
4464+ type: string
4465+ description: |
4466+ The URL of the jenkins master. Set this when this charm is not in
4467+ relation to a master or the master is not accessible via its default
4468+ URL.
4469+ default: ""
4470
4471=== added file 'charms/jenkins-slave/copyright'
4472--- charms/jenkins-slave/copyright 1970-01-01 00:00:00 +0000
4473+++ charms/jenkins-slave/copyright 2017-03-14 23:38:01 +0000
4474@@ -0,0 +1,17 @@
4475+Format: http://dep.debian.net/deps/dep5/
4476+
4477+Files: *
4478+Copyright: Copyright 2011-2016, Canonical Ltd., All Rights Reserved.
4479+License: GPL-3
4480+ This program is free software: you can redistribute it and/or modify
4481+ it under the terms of the GNU General Public License as published by
4482+ the Free Software Foundation, either version 3 of the License, or
4483+ (at your option) any later version.
4484+ .
4485+ This program is distributed in the hope that it will be useful,
4486+ but WITHOUT ANY WARRANTY; without even the implied warranty of
4487+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4488+ GNU General Public License for more details.
4489+ .
4490+ You should have received a copy of the GNU General Public License
4491+ along with this program. If not, see <http://www.gnu.org/licenses/>.
4492
4493=== added directory 'charms/jenkins-slave/files'
4494=== added directory 'charms/jenkins-slave/files/default'
4495=== added file 'charms/jenkins-slave/files/default/jenkins-slave'
4496--- charms/jenkins-slave/files/default/jenkins-slave 1970-01-01 00:00:00 +0000
4497+++ charms/jenkins-slave/files/default/jenkins-slave 2017-03-14 23:38:01 +0000
4498@@ -0,0 +1,51 @@
4499+# defaults for jenkins-slave component of the jenkins continuous integration
4500+# system
4501+
4502+# pulled in from the init script; makes things easier.
4503+NAME=jenkins-slave
4504+
4505+# location of java
4506+JAVA=/usr/bin/java
4507+
4508+# arguments to pass to java - optional
4509+#JAVA_ARGS="-Xmx256m"
4510+
4511+# for daemon to use
4512+PIDFILE=/var/run/jenkins/$NAME.pid
4513+
4514+# user id to be invoked as (otherwise will run as root; not wise!)
4515+JENKINS_USER=jenkins
4516+
4517+# location of jenkins arch indep files
4518+JENKINS_ROOT=/usr/share/jenkins
4519+
4520+# jenkins home location
4521+JENKINS_HOME=/var/lib/jenkins
4522+
4523+# jenkins /run location
4524+JENKINS_RUN=/var/run/jenkins
4525+
4526+# URL of jenkins server to connect to
4527+# Not specifying this parameter will stop the slave
4528+# job from running.
4529+#JENKINS_URL=""
4530+
4531+# Name of slave configuration to use at JENKINS_URL
4532+# Override if it need to be something other than the
4533+# hostname of the server the slave is running on.
4534+JENKINS_HOSTNAME="$(hostname)"
4535+
4536+# Log file location for use in Debian init script
4537+JENKINS_SLAVE_LOG=/var/log/jenkins/$NAME.log
4538+
4539+# OS LIMITS SETUP
4540+# comment this out to observe /etc/security/limits.conf
4541+# this is on by default because http://github.com/feniix/hudson/commit/d13c08ea8f5a3fa730ba174305e6429b74853927
4542+# reported that Ubuntu's PAM configuration doesn't include pam_limits.so, and as a result the # of file
4543+# descriptors are forced to 1024 regardless of /etc/security/limits.confa
4544+# NOTE - Ubuntu Users - this is not used by the upstart configuration - please use an upstart overrides file
4545+# to change the OS limits setup.
4546+MAXOPENFILES=8192
4547+
4548+# Arguments to pass to jenkins slave on startup
4549+JENKINS_ARGS="-jnlpUrl $JENKINS_URL/computer/$NAME/slave-agent.jnlp"
4550
4551=== added directory 'charms/jenkins-slave/files/init'
4552=== added directory 'charms/jenkins-slave/files/init.d'
4553=== added file 'charms/jenkins-slave/files/init/jenkins-slave.conf'
4554--- charms/jenkins-slave/files/init/jenkins-slave.conf 1970-01-01 00:00:00 +0000
4555+++ charms/jenkins-slave/files/init/jenkins-slave.conf 2017-03-14 23:38:01 +0000
4556@@ -0,0 +1,19 @@
4557+description "Jenkins CI Slave Agent"
4558+author "James Page <james.page@ubuntu.com>"
4559+
4560+start on runlevel [2345]
4561+stop on runlevel [!2345]
4562+
4563+pre-start script
4564+ [ -r /etc/default/jenkins-slave ] && . /etc/default/jenkins-slave
4565+ [ -n "$JENKINS_URL" ] || { stop; exit 0; }
4566+ mkdir $JENKINS_RUN > /dev/null 2>&1 || true
4567+ chown -R $JENKINS_USER $JENKINS_RUN || true
4568+ $JENKINS_ROOT/bin/download-slave.sh $JENKINS_URL
4569+end script
4570+
4571+script
4572+ [ -r /etc/default/jenkins-slave ] && . /etc/default/jenkins-slave
4573+ exec start-stop-daemon --start -c $JENKINS_USER --exec $JAVA --name jenkins-slave \
4574+ -- $JAVA_ARGS -jar $JENKINS_RUN/slave.jar $JENKINS_ARGS
4575+end script
4576
4577=== added directory 'charms/jenkins-slave/files/logrotate.d'
4578=== added file 'charms/jenkins-slave/files/logrotate.d/jenkins-slave'
4579--- charms/jenkins-slave/files/logrotate.d/jenkins-slave 1970-01-01 00:00:00 +0000
4580+++ charms/jenkins-slave/files/logrotate.d/jenkins-slave 2017-03-14 23:38:01 +0000
4581@@ -0,0 +1,9 @@
4582+/var/log/jenkins/jenkins-slave.log {
4583+ daily
4584+ copytruncate
4585+ missingok
4586+ rotate 7
4587+ compress
4588+ delaycompress
4589+ notifempty
4590+}
4591
4592=== added directory 'charms/jenkins-slave/files/systemd'
4593=== added directory 'charms/jenkins-slave/files/systemd/system'
4594=== added file 'charms/jenkins-slave/files/systemd/system/jenkins-slave.service'
4595--- charms/jenkins-slave/files/systemd/system/jenkins-slave.service 1970-01-01 00:00:00 +0000
4596+++ charms/jenkins-slave/files/systemd/system/jenkins-slave.service 2017-03-14 23:38:01 +0000
4597@@ -0,0 +1,10 @@
4598+[Unit]
4599+Description=Jenkins CI Slave Agent
4600+Wants=network-online.target
4601+After=network-online.target
4602+
4603+[Service]
4604+ExecStart=/var/lib/jenkins/bin/start-jenkins-slave.sh
4605+
4606+[Install]
4607+WantedBy=multi-user.target
4608
4609=== added directory 'charms/jenkins-slave/hooks'
4610=== added file 'charms/jenkins-slave/hooks/config-changed'
4611--- charms/jenkins-slave/hooks/config-changed 1970-01-01 00:00:00 +0000
4612+++ charms/jenkins-slave/hooks/config-changed 2017-03-14 23:38:01 +0000
4613@@ -0,0 +1,64 @@
4614+#!/bin/bash
4615+set -eux
4616+
4617+status-set maintenance "Updating scripts" || true
4618+if [[ ! -d /var/lib/jenkins/bin ]]; then
4619+ mkdir -p /var/lib/jenkins/bin
4620+fi
4621+cp $JUJU_CHARM_DIR/scripts/start-jenkins-slave.sh /var/lib/jenkins/bin
4622+chmod +x /var/lib/jenkins/bin/start-jenkins-slave.sh
4623+cp $JUJU_CHARM_DIR/scripts/place-slave.sh /var/lib/jenkins/bin
4624+chmod +x /var/lib/jenkins/bin/place-slave.sh
4625+
4626+status-set maintenance "Checking config"
4627+PACKAGES=$(config-get packages)
4628+if [[ "$PACKAGES" != "" ]]; then
4629+ status-set maintenance "Installing packages." || true
4630+ apt-get install -y $PACKAGES
4631+fi
4632+
4633+SLAVE_NAME=$(config-get slave-name)
4634+if [[ "$SLAVE_NAME" == "" ]]; then
4635+ SLAVE_NAME=$(echo $JUJU_UNIT_NAME | sed s,/,-,)
4636+fi
4637+
4638+MASTER_URL=$(config-get master-url)
4639+# This is a hack. We don't want to iterate, but we need to
4640+# because we need the state of relations and config to know
4641+# if this charm is active or something else.
4642+for app in $(relation-ids slave); do
4643+ for unit in $(relation-list -r $app); do
4644+ MASTER_URL"$(relation-get -r $app url $unit)"
4645+ break
4646+ done
4647+done
4648+if [[ "$MASTER_URL" == "" ]]; then
4649+ status-set blocked "Set master-url option or relate to master" || true
4650+ juju-log "master-url config is not set or master needs to export its url"
4651+ exit 0
4652+fi
4653+
4654+status-set maintenance "Updating configuration." || true
4655+cp $JUJU_CHARM_DIR/files/default/jenkins-slave /etc/default/jenkins-slave
4656+sed -i -r \
4657+ "s,NAME=jenkins-slave,NAME=$SLAVE_NAME," /etc/default/jenkins-slave
4658+sed -i -r \
4659+ "s,#JENKINS_URL=.*,JENKINS_URL=$MASTER_URL," /etc/default/jenkins-slave
4660+
4661+if [[ -d /etc/systemd ]]; then
4662+ cp $JUJU_CHARM_DIR/files/systemd/system/jenkins-slave.service \
4663+ /etc/systemd/system/jenkins-slave.service
4664+ systemctl enable jenkins-slave
4665+else
4666+ cp $JUJU_CHARM_DIR/files/init/jenkins-slave.conf \
4667+ /etc/init/jenkins-slave.conf
4668+ ln -s /lib/init/upstart-job /etc/init.d/jenkins-slave || true
4669+fi
4670+
4671+status-set maintenance "Checking jenkins slave.jar" || true
4672+/var/lib/jenkins/bin/place-slave.sh "$MASTER_URL"
4673+
4674+status-set maintenance "Starting services." || true
4675+service jenkins-slave stop 2>/dev/null || true
4676+service jenkins-slave start || true
4677+status-set active "$SLAVE_NAME is accepting work" || true
4678
4679=== added file 'charms/jenkins-slave/hooks/install'
4680--- charms/jenkins-slave/hooks/install 1970-01-01 00:00:00 +0000
4681+++ charms/jenkins-slave/hooks/install 2017-03-14 23:38:01 +0000
4682@@ -0,0 +1,20 @@
4683+#!/bin/bash
4684+
4685+set -eux
4686+
4687+status-set maintenance "Installing" || true
4688+apt-get install -y adduser default-jre-headless
4689+
4690+if ! id jenkins > /dev/null 2>&1 ; then
4691+ mkdir -p /var/lib/jenkins
4692+ adduser --system --home /var/lib/jenkins \
4693+ --group --disabled-password --quiet --shell /bin/bash \
4694+ jenkins
4695+ chown -R jenkins:jenkins /var/lib/jenkins
4696+fi
4697+
4698+if [[ ! -d /var/log/jenkins ]]; then
4699+ mkdir -p /var/log/jenkins
4700+fi
4701+
4702+status-set maintenance "Installed" || true
4703
4704=== added file 'charms/jenkins-slave/hooks/slave-relation-joined'
4705--- charms/jenkins-slave/hooks/slave-relation-joined 1970-01-01 00:00:00 +0000
4706+++ charms/jenkins-slave/hooks/slave-relation-joined 2017-03-14 23:38:01 +0000
4707@@ -0,0 +1,20 @@
4708+#!/bin/bash
4709+
4710+set -e
4711+
4712+# Set the slave hostname to match the juju unit
4713+# in the jenkins master instance
4714+slavehost=$(echo ${JUJU_UNIT_NAME} | sed s,/,-,)
4715+noexecutors=$(cat /proc/cpuinfo | grep processor | wc -l)
4716+config_labels=$(config-get labels)
4717+labels=$(uname -p)
4718+
4719+if [[ -n "$config_labels" ]]; then
4720+ labels=$config_labels
4721+fi
4722+
4723+# Set all relations
4724+relation-set executors=$noexecutors
4725+relation-set labels="$labels"
4726+relation-set slavehost=$slavehost
4727+relation-set slaveaddress=`unit-get private-address`
4728
4729=== added file 'charms/jenkins-slave/hooks/start'
4730--- charms/jenkins-slave/hooks/start 1970-01-01 00:00:00 +0000
4731+++ charms/jenkins-slave/hooks/start 2017-03-14 23:38:01 +0000
4732@@ -0,0 +1,3 @@
4733+#!/bin/bash
4734+
4735+service jenkins-slave start || true
4736
4737=== added file 'charms/jenkins-slave/hooks/stop'
4738--- charms/jenkins-slave/hooks/stop 1970-01-01 00:00:00 +0000
4739+++ charms/jenkins-slave/hooks/stop 2017-03-14 23:38:01 +0000
4740@@ -0,0 +1,3 @@
4741+#!/bin/bash
4742+
4743+service jenkins-slave stop 2>/dev/null || true
4744
4745=== added symlink 'charms/jenkins-slave/hooks/upgrade-charm'
4746=== target is u'install'
4747=== added file 'charms/jenkins-slave/icon.svg'
4748--- charms/jenkins-slave/icon.svg 1970-01-01 00:00:00 +0000
4749+++ charms/jenkins-slave/icon.svg 2017-03-14 23:38:01 +0000
4750@@ -0,0 +1,596 @@
4751+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
4752+<!-- Created with Inkscape (http://www.inkscape.org/) -->
4753+
4754+<svg
4755+ xmlns:dc="http://purl.org/dc/elements/1.1/"
4756+ xmlns:cc="http://creativecommons.org/ns#"
4757+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
4758+ xmlns:svg="http://www.w3.org/2000/svg"
4759+ xmlns="http://www.w3.org/2000/svg"
4760+ xmlns:xlink="http://www.w3.org/1999/xlink"
4761+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
4762+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
4763+ width="96"
4764+ height="96"
4765+ id="svg6517"
4766+ version="1.1"
4767+ inkscape:version="0.48.4 r9939"
4768+ sodipodi:docname="icon.svg">
4769+ <defs
4770+ id="defs6519">
4771+ <linearGradient
4772+ inkscape:collect="always"
4773+ xlink:href="#Background"
4774+ id="linearGradient6461"
4775+ gradientUnits="userSpaceOnUse"
4776+ x1="0"
4777+ y1="970.29498"
4778+ x2="144"
4779+ y2="970.29498"
4780+ gradientTransform="matrix(0,-0.66666669,0.6660448,0,-866.25992,731.29077)" />
4781+ <linearGradient
4782+ id="Background">
4783+ <stop
4784+ id="stop4178"
4785+ offset="0"
4786+ style="stop-color:#49728b;stop-opacity:1" />
4787+ <stop
4788+ id="stop4180"
4789+ offset="1"
4790+ style="stop-color:#8eabb7;stop-opacity:1" />
4791+ </linearGradient>
4792+ <filter
4793+ style="color-interpolation-filters:sRGB;"
4794+ inkscape:label="Inner Shadow"
4795+ id="filter1121">
4796+ <feFlood
4797+ flood-opacity="0.59999999999999998"
4798+ flood-color="rgb(0,0,0)"
4799+ result="flood"
4800+ id="feFlood1123" />
4801+ <feComposite
4802+ in="flood"
4803+ in2="SourceGraphic"
4804+ operator="out"
4805+ result="composite1"
4806+ id="feComposite1125" />
4807+ <feGaussianBlur
4808+ in="composite1"
4809+ stdDeviation="1"
4810+ result="blur"
4811+ id="feGaussianBlur1127" />
4812+ <feOffset
4813+ dx="0"
4814+ dy="2"
4815+ result="offset"
4816+ id="feOffset1129" />
4817+ <feComposite
4818+ in="offset"
4819+ in2="SourceGraphic"
4820+ operator="atop"
4821+ result="composite2"
4822+ id="feComposite1131" />
4823+ </filter>
4824+ <filter
4825+ style="color-interpolation-filters:sRGB;"
4826+ inkscape:label="Drop Shadow"
4827+ id="filter950">
4828+ <feFlood
4829+ flood-opacity="0.25"
4830+ flood-color="rgb(0,0,0)"
4831+ result="flood"
4832+ id="feFlood952" />
4833+ <feComposite
4834+ in="flood"
4835+ in2="SourceGraphic"
4836+ operator="in"
4837+ result="composite1"
4838+ id="feComposite954" />
4839+ <feGaussianBlur
4840+ in="composite1"
4841+ stdDeviation="1"
4842+ result="blur"
4843+ id="feGaussianBlur956" />
4844+ <feOffset
4845+ dx="0"
4846+ dy="1"
4847+ result="offset"
4848+ id="feOffset958" />
4849+ <feComposite
4850+ in="SourceGraphic"
4851+ in2="offset"
4852+ operator="over"
4853+ result="composite2"
4854+ id="feComposite960" />
4855+ </filter>
4856+ <clipPath
4857+ clipPathUnits="userSpaceOnUse"
4858+ id="clipPath873">
4859+ <g
4860+ transform="matrix(0,-0.66666667,0.66604479,0,-258.25992,677.00001)"
4861+ id="g875"
4862+ inkscape:label="Layer 1"
4863+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline">
4864+ <path
4865+ style="fill:#ff00ff;fill-opacity:1;stroke:none;display:inline"
4866+ d="m 46.702703,898.22775 50.594594,0 C 138.16216,898.22775 144,904.06497 144,944.92583 l 0,50.73846 c 0,40.86071 -5.83784,46.69791 -46.702703,46.69791 l -50.594594,0 C 5.8378378,1042.3622 0,1036.525 0,995.66429 L 0,944.92583 C 0,904.06497 5.8378378,898.22775 46.702703,898.22775 Z"
4867+ id="path877"
4868+ inkscape:connector-curvature="0"
4869+ sodipodi:nodetypes="sssssssss" />
4870+ </g>
4871+ </clipPath>
4872+ <filter
4873+ inkscape:collect="always"
4874+ id="filter891"
4875+ inkscape:label="Badge Shadow">
4876+ <feGaussianBlur
4877+ inkscape:collect="always"
4878+ stdDeviation="0.71999962"
4879+ id="feGaussianBlur893" />
4880+ </filter>
4881+ <clipPath
4882+ id="clipPath18"
4883+ clipPathUnits="userSpaceOnUse">
4884+ <path
4885+ inkscape:connector-curvature="0"
4886+ id="path20"
4887+ d="M 0,2494.84 0,0 l 1804.34,0 0,2494.84 -1804.34,0 z" />
4888+ </clipPath>
4889+ </defs>
4890+ <sodipodi:namedview
4891+ id="base"
4892+ pagecolor="#ffffff"
4893+ bordercolor="#666666"
4894+ borderopacity="1.0"
4895+ inkscape:pageopacity="0.0"
4896+ inkscape:pageshadow="2"
4897+ inkscape:zoom="4.13"
4898+ inkscape:cx="88.834295"
4899+ inkscape:cy="49.0292"
4900+ inkscape:document-units="px"
4901+ inkscape:current-layer="layer1"
4902+ showgrid="false"
4903+ fit-margin-top="0"
4904+ fit-margin-left="0"
4905+ fit-margin-right="0"
4906+ fit-margin-bottom="0"
4907+ inkscape:window-width="1920"
4908+ inkscape:window-height="1056"
4909+ inkscape:window-x="0"
4910+ inkscape:window-y="24"
4911+ inkscape:window-maximized="1"
4912+ showborder="true"
4913+ showguides="true"
4914+ inkscape:guide-bbox="true"
4915+ inkscape:showpageshadow="false">
4916+ <inkscape:grid
4917+ type="xygrid"
4918+ id="grid821" />
4919+ <sodipodi:guide
4920+ orientation="1,0"
4921+ position="16,48"
4922+ id="guide823" />
4923+ <sodipodi:guide
4924+ orientation="0,1"
4925+ position="64,80"
4926+ id="guide825" />
4927+ <sodipodi:guide
4928+ orientation="1,0"
4929+ position="80,40"
4930+ id="guide827" />
4931+ <sodipodi:guide
4932+ orientation="0,1"
4933+ position="64,16"
4934+ id="guide829" />
4935+ </sodipodi:namedview>
4936+ <metadata
4937+ id="metadata6522">
4938+ <rdf:RDF>
4939+ <cc:Work
4940+ rdf:about="">
4941+ <dc:format>image/svg+xml</dc:format>
4942+ <dc:type
4943+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
4944+ <dc:title />
4945+ </cc:Work>
4946+ </rdf:RDF>
4947+ </metadata>
4948+ <g
4949+ inkscape:label="BACKGROUND"
4950+ inkscape:groupmode="layer"
4951+ id="layer1"
4952+ transform="translate(268,-635.29076)"
4953+ style="display:inline">
4954+ <path
4955+ style="fill:url(#linearGradient6461);fill-opacity:1;stroke:none;display:inline;filter:url(#filter1121)"
4956+ d="m -268,700.15563 0,-33.72973 c 0,-27.24324 3.88785,-31.13513 31.10302,-31.13513 l 33.79408,0 c 27.21507,0 31.1029,3.89189 31.1029,31.13513 l 0,33.72973 c 0,27.24325 -3.88783,31.13514 -31.1029,31.13514 l -33.79408,0 C -264.11215,731.29077 -268,727.39888 -268,700.15563 Z"
4957+ id="path6455"
4958+ inkscape:connector-curvature="0"
4959+ sodipodi:nodetypes="sssssssss" />
4960+ <g
4961+ transform="matrix(0.19496217,0,0,-0.19496217,-239.28382,701.0732)"
4962+ inkscape:label="ink_ext_XXXXXX"
4963+ id="g10">
4964+ <g
4965+ id="g3393">
4966+ <path
4967+ inkscape:connector-curvature="0"
4968+ id="path22"
4969+ style="fill:#d33833;fill-opacity:1;fill-rule:evenodd;stroke:none"
4970+ d="m 177.718,129.264 c 0,-49.4288 -39.175,-89.4992 -87.5,-89.4992 -48.3242,0 -87.49925,40.0704 -87.49925,89.4992 0,49.43 39.17505,89.501 87.49925,89.501 48.325,0 87.5,-40.071 87.5,-89.501" />
4971+ <path
4972+ inkscape:connector-curvature="0"
4973+ id="path24"
4974+ style="fill:#ef3d3a;fill-opacity:1;fill-rule:nonzero;stroke:none"
4975+ d="m 6.28438,107.098 c 0,0 -6.33438,93.333 79.66602,96 l -5.9996,10 -46.6664,-15.667 -13.3336,-15.333 -11.66642,-22.334 -6.66719,-26 2,-17.333" />
4976+ <path
4977+ inkscape:connector-curvature="0"
4978+ id="path26"
4979+ style="fill:#231f20;fill-opacity:1;fill-rule:nonzero;stroke:none"
4980+ d="M 30.2883,190.319 C 14.9363,174.611 5.43633,152.923 5.43633,128.93 l 0,0 c 0,-23.988 9.49997,-45.6788 24.85197,-61.3839 l 0,0 C 45.6477,51.841 66.8152,42.15 90.2168,42.15 l 0,0 c 23.4022,0 44.5712,9.691 59.9292,25.3961 l 0,0 c 15.351,15.7051 24.853,37.3959 24.853,61.3839 l 0,0 c 0,23.993 -9.502,45.681 -24.853,61.389 l 0,0 c -15.358,15.702 -36.527,25.393 -59.9292,25.395 l 0,0 C 66.8152,215.712 45.6477,206.021 30.2883,190.319 l 0,0 z M 26.4023,63.7469 C 10.0867,80.4328 0,103.493 0,128.93 l 0,0 c 0,25.441 10.0867,48.499 26.4023,65.186 l 0,0 c 16.3118,16.69 38.8915,27.035 63.8145,27.032 l 0,0 c 24.9232,0.003 47.5052,-10.342 63.8142,-27.032 l 0,0 c 16.317,-16.687 26.405,-39.747 26.403,-65.186 l 0,0 c 0.002,-25.437 -10.086,-48.4972 -26.403,-65.1831 l 0,0 C 137.722,47.0578 115.14,36.7141 90.2168,36.7141 l 0,0 c -24.923,0 -47.5027,10.3437 -63.8145,27.0328 l 0,0" />
4981+ <path
4982+ inkscape:connector-curvature="0"
4983+ id="path28"
4984+ style="fill:#f0d6b7;fill-opacity:1;fill-rule:evenodd;stroke:none"
4985+ d="m 127.051,128.768 -13.334,-2 -18.0002,-2 -11.6672,-0.333 -11.3328,0.333 -8.6672,2.667 -7.6668,8.333 -6,17 -1.3332,3.667 -8,2.666 -4.6668,7.667 -3.3332,11 3.6672,9.667 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1.3328,1.666 -1.3328,7.667 -0.334,9.667 2,13.333 -0.0781,7.616 6.0781,9.717 10.6668,7.667 18.6672,8 20.6662,-3 18,-13 8.334,-13.333 5.333,-9.667 1.333,-24 -4,-20.667 -7.333,-18.333 -7,-9.667" />
4986+ <path
4987+ inkscape:connector-curvature="0"
4988+ id="path30"
4989+ style="fill:#335061;fill-opacity:1;fill-rule:evenodd;stroke:none"
4990+ d="m 115.717,71.102 -47.6674,-2 0,-8 4,-28 -2,-2.334 -33.3328,11.334 -2.334,4 -3.3332,37.666 -7.6656,22.667 -1.6672,5.333 26.666,18.333 8.334,3.334 7.3328,-9 6.3332,-5.667 7.334,-2.333 3.3328,-1 4,-17.333 3,-3.6668 7.6672,2.6668 -5.334,-10.334 29.0002,-13.666 -3.666,-2" />
4991+ <path
4992+ inkscape:connector-curvature="0"
4993+ id="path32"
4994+ style="fill:#6d6b6d;fill-opacity:1;fill-rule:evenodd;stroke:none"
4995+ d="m 36.7168,187.435 8.666,3 7,-3.334 3.334,-7.333 4,0.667 1,4 -2,7.666 2,18.334 -1.6672,10 6,7 13,10.333 -3.6668,5 -18.3332,-9 -7.6668,-6 -4.3332,-9.333 -6.6668,-9 -2,-10.667 1.334,-11.333" />
4996+ <path
4997+ inkscape:connector-curvature="0"
4998+ id="path34"
4999+ style="fill:#dcd9d8;fill-opacity:1;fill-rule:evenodd;stroke:none"
5000+ d="m 50.3828,218.768 c 0,0 5,12.333 25,18.333 20,6 1,4.334 1,4.334 l -21.666,-8.334 -8.334,-8.333 -3.666,-6.667 7.666,0.667" />
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches