openQA-4.5.1526033850.1ad9148d-lp150.2.3.1<>,$[&7/=„S"f3U~š ^2.KD>v>yy$Q 4BÛQ-З!<7E>?*9ҩv% 1sɃ2EE>Tfo'Y1'prs! ^h:c2Jd}=]ш=kMA- c9z*L@xYSM/Q>+;py'T-Y˖^¦,M^ Ӏݲ>I?d ! - Z|   56`'` +` 0` :` h` ```ɝ`Phո(V8`9ؐ:= > ? @ F G `H`I`X dY l\ `]*4`^Mbrcs)dsesfslsus`v}T$wx`x`yxz$8>CopenQA4.5.1526033850.1ad9148dlp150.2.3.1The openQA web-frontend, scheduler and toolsopenQA is a testing framework that allows you to test GUI applications on one hand and bootloader and kernel on the other. In both cases, it is difficult to script tests and verify the output. Output can be a popup window or it can be an error in early boot even before init is executed. openQA is an automated test tool that makes it possible to test the whole installation process of an operating system. It uses virtual machines to reproduce the process, check the output (both serial console and screen) in every step and send the necessary keystrokes and commands to proceed to the next. openQA can check whether the system can be installed, whether it works properly in 'live' mode, whether applications work or whether the system responds as expected to different installation options and commands. Even more importantly, openQA can run several combinations of tests for every revision of the operating system, reporting the errors detected for each combination of hardware configuration, installation options and variant of the operating system.[&7lamb16mOopenSUSE Leap 15.0openSUSEGPL-2.0+http://bugs.opensuse.orgDevelopment/Tools/Otherhttp://os-autoinst.github.io/openQA/linuxnoarchif ! getent passwd geekotest > /dev/null; then /usr/sbin/useradd -r -g nogroup -c "openQA user" \ -d /var/lib/openqa geekotest 2>/dev/null || : fi test -n "$FIRST_ARG" || FIRST_ARG="$1" # disable migration if initial install under systemd [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$FIRST_ARG" -eq 1 ]; then for service in openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ; do sysv_service="${service%.*}" touch "/var/lib/systemd/migrated/$sysv_service" || : done else for service in openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ; do # The tag file might have been left by a preceding # update (see 1059627) rm -f "/run/rpm-openQA-update-$service-new-in-upgrade" if [ ! -e "/usr/lib/systemd/system/$service" ]; then touch "/run/rpm-openQA-update-$service-new-in-upgrade" fi done for service in openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ; do sysv_service="${service%.*}" if [ -e /var/lib/systemd/migrated/$sysv_service ]; then continue fi if [ ! -x /usr/sbin/systemd-sysv-convert ]; then continue fi /usr/sbin/systemd-sysv-convert --save $sysv_service || : done fi# install empty log file if [ ! -e /var/log/openqa ]; then install -D -m 644 -o geekotest /dev/null /var/log/openqa || : fi if [ $1 -eq 1 ]; then echo "### copy and edit /etc/apache2/vhosts.d/openqa.conf.template!" echo "### run sudo /usr/share/openqa/script/fetchneedles" else if [ -d "/var/lib/openqa/share/testresults" ]; then # remove the symlink rm "/var/lib/openqa/testresults" mv "/var/lib/openqa/share/testresults" "/var/lib/openqa/" fi fi test -n "$FIRST_ARG" || FIRST_ARG="$1" [ -d /var/lib/systemd/migrated ] || mkdir -p /var/lib/systemd/migrated || : if [ "$YAST_IS_RUNNING" != "instsys" -a -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi if [ "$FIRST_ARG" -eq 1 ]; then if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl preset openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service || : fi elif [ "$FIRST_ARG" -gt 1 ]; then for service in openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ; do if [ ! -e "/run/rpm-openQA-update-$service-new-in-upgrade" ]; then continue fi rm -f "/run/rpm-openQA-update-$service-new-in-upgrade" if [ ! -x /usr/bin/systemctl ]; then continue fi /usr/bin/systemctl preset "$service" || : done for service in openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ; do sysv_service=${service%.*} if [ -e /var/lib/systemd/migrated/$sysv_service ]; then continue fi if [ ! -x /usr/sbin/systemd-sysv-convert ]; then continue fi /usr/sbin/systemd-sysv-convert --apply $sysv_service || : touch /var/lib/systemd/migrated/$sysv_service || : done fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -eq 0 -a -x /usr/bin/systemctl ]; then # Package removal, not upgrade /usr/bin/systemctl --no-reload disable openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_STOP_ON_REMOVAL" && . /etc/sysconfig/services test "$DISABLE_STOP_ON_REMOVAL" = yes -o \ "$DISABLE_STOP_ON_REMOVAL" = 1 && exit 0 /usr/bin/systemctl stop openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ) || : fi test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ) || : fi else # package uninstall for service in openqa-webui.service openqa-gru.service openqa-websockets.service openqa-scheduler.service openqa-resource-allocator.service ; do sysv_service="${service%.*}" rm -f "/var/lib/systemd/migrated/$sysv_service" || : done if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi fi : test -n "$FIRST_ARG" || FIRST_ARG="$1" if [ "$FIRST_ARG" -ge 1 ]; then # Package upgrade, not uninstall if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : ( test "$YAST_IS_RUNNING" = instsys && exit 0 test -f /etc/sysconfig/services -a \ -z "$DISABLE_RESTART_ON_UPDATE" && . /etc/sysconfig/services test "$DISABLE_RESTART_ON_UPDATE" = yes -o \ "$DISABLE_RESTART_ON_UPDATE" = 1 && exit 0 /usr/bin/systemctl try-restart boot.apparmor ) || : fi else # package uninstall for service in boot.apparmor ; do sysv_service="${service%.*}" rm -f "/var/lib/systemd/migrated/$sysv_service" || : done if [ -x /usr/bin/systemctl ]; then /usr/bin/systemctl daemon-reload || : fi fiHz)( qXkr' ^A 9#?,Fa)"T=HQ#J%h< :8!$C$h-M+JJ c_5i.ejHi`GK ~ \,"s ezz GS%R `,< 7CrWt n] 2kF#b% @s*~(yxhxDw`/i$LP -#b*N^^ ~,| .,5K .6"*/" #p+ q @ICG.G[G[HXHHCHJbJKbKKKLLM3D ;0b1c! bZq}KGI(@KLLOMNN\]abbbgxgj+i~_d{ 05~ ;,*bW  ""l1 X  K 6?;`LW 4 % P  -KAA큤A큤A큤A큠A큤A큤AA큤A큤AAA큤A큤AAAAA큤AA큤AAA큤A큤AAAA큤AAAAA큤A큤AAAA큤AA큤AAAAA큤A큤AAAA큤A큤A큤A큤AAAA큤A큤A큤A큤A큤AAAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAA큤AAAAAAA큤A큤A큤A큤AAA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AAA큤AA큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤A큤AA큤A큤A큤A큤A큤A큤A큤A큤A큠AAAAAAAA큤["R["R["R["R["R["R["R["R["R["R["R["R["R["R["R["R["R["R["R["S["S["S["S["S[&1Zm["R["R["RZm["SZ8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z'Z5Z'Z'Z5Z5Z5Z(Z(Z6Z(Z8Z8Z8Z(Z6Z6Z6Z6Z5Z5Z;Z5Z;Z8Z8Z5Z5Z8Z6Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z8Z6Z6Z6Z;Z6Z;Z8Z8["R["RZ8Z8Z6Z8Z8Z5Z'Z'Z5Z'Z'Z5Z5Z5Z5Z5Z5Z5Z5Z5Z5Z5Z4Z4Z4Z6Z4Z4Z6Z6Z(Z(Z(Z4Z0Z0Z0Z/Z.Z0Z2Z1Z.Z/Z/Z.Z(Z.Z-Z/Z0Z1Z1Z(Z1Z/Z/Z0Z1Z4Z0Z-Z-Z.Z1Z.Z-Z2Z(Z(Z-Z*Z,Z)Z,Z,Z(Z*Z*Z,Z-Z+Z,Z-Z-Z(Z)Z+Z+Z+Z+Z)Z)Z)Z)Z+Z*Z*Z*Z,Z*Z4Z2Z2Z2Z2Z3Z3Z3Z3Z3Z3Z3Z4Z4Z4Z4Z8Z8["MZ8Z5Z5Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'Z'ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm["R["R["R["R["R["R["R["R["RZmZmZmZmZmZmZmZmZmZm["R["R["R["RZmZmZmZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZm["SZmZmZmZmZmZmZmZmZmZmZm["R["R["R["R["R["RZmZmZmZm["RZm["R["R["R["R["R["R["R["RZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm["R["R["R["R["R["R["R["R["R["R["Re42b079643f25925020ae0cad76952a4def17fec5e6385eab7decb413a4aed9e2969636d9535a01478af968a751162e7f96d70f3144469d4ff2934c5ad352592a68a396dd459a25c14ca8307f76d5514d07d1c3a091288f04459252d3abff4c7d06d17c7be77c97a8efec66539020954b820876ce1d03c9ba2c088a51fe208c9858f0bcf0c857bd76513e3dc8e2c44f46b8b15d3876453cd3e09a5b0a0290167cbe6650e99e03d516d7ff1c1e1ee00a3730df124f7b54826964772eafb6aff5d3dbd1b5cd902f73f9a34f47b7db5a34fd7ff67fa864e56941ffe1ce368dbb99a233fc2e26bdb6c3f4ac8ee25ecee5434f68ff036e81fd2008fa595d5c5422516476c22dd5d3d3560f053dd772b96e1d83fb43df36fb5596b7182ffe463dad0f4955f2af5a3b058df8cf2ffc90c16cb4b382be5b50f963f0bdb949b62f62081c06f8eaea915bb4ff657720a9286dadc90f992c1af5ec16943f309a0120701feef9469a9f6b71ba0b10b5f5e461375a9df0fe7e17062ad6c39b3e670033771922b1b5416677c41880d1a8be1dc1e523e2717c23313805347778853fc9ec70381b1678cec4723db5fb57647aeaf8823afa7168df5aa7e389dc193d72f1147fb93c747c0b271729b969e4803afee87dd3b9c49665f667fe781516ce0761470efb71d6cab37012ae30245013bc4455919f78d1ca31f67dab9195fdc81cd78178213e1fe9d77d5e8b8142c88e8c0dc5b1bda55096135dd998ce95fa156103f6b025696c75211bbdd819ebec66fe7def620aba6381987fb42023e34d3f7d2408df8044519fc100cda0bda567d3856f2c13e3a88966a8f5211922749852090c0c40f0f2d659ddf7678dbf5372fd1ee7d41d0a7f69f33cc091ea6933e883dcd762eb40ae5ef56d304d18eab4cd804e1697e1a54b3e2b4b00bec497d00fb2c7cf724b05eac53f78f6b059e9eb4d52bde9ec90b704601f181d193af1b7597c7c32867ddb1c269aefaeb6620111b45ac427a9185e4d89adef5c8cdcebdaa24f99d6a4151008fd039d84bb46b92697526357d7f403d61fbff261a23a2b72c8e47495050316781250032832ed99f32ce9bc14510591f7dbe797451a24d609fd43843142afc9589f27d7b650fc3eafbb5aadb713a3643b775db575795418b3fd9683175da17e8ceac1195e5f0ad1a5495bc6a8121a02f0e8fd2510b9a1c692c620283c1ee285031c689b26eee961831013f84bb3b323725727bcb8657713e36dbd0f00b25134112d419a48de71bd4f53cc14a9d3b2e27c529ee3c2de111b4721c208268694c6c976c313a7950ee05546fd609410f63882c411b585028eaf5188134c191657e2d52cad275cd9985e1cd1020e9c9d422eb3a56cc4b1649337bee991359655e6d90bc8aa69ee6b2376505578d758bfbbc52aec88fa5e591f1a7cabd8adfa80a7b613a1e349b80fba8c23b63656925fda8dfe3c5927b5d0d8a1672143416caacf460fbd030e72d855574b1d02820c5771a0e697fadb180e67a3651e0567101898d9adbefac65aa4bc584c6f13e5ae49b4588a03a0c40743439c29cdc8646714300c6efe87806d0cf4489aeb1bb7288016024e8de67fd18db693fe026fe3907581e53cd5d3551b9a71da4dc202189191e567b978d4f5cd4fb8aef08898fe89146ee5e53c4661d05bfc24ee1acff5e2adac6cca212ce4302e96619b69b39cd0783c0a9ae0ef847a78071f69a34d91b19e70533ef6f49f33c9806e60bc7ea67a5a811fd492917055146961c6d28d7a849a0c6647e3901d0fa9fa4441d1ff3c6252ea4690ed8aa24ecc6cecb1a60515bc093f1c9da38a0392612d9ab8ae0f7f36e6eee1fad0038422352b00f69cde0e8c2661ba037c7ce7d6ff46b58be5fb00052630708bb0bca86d38f273967b43a4d78f775cb816a00eaebbd280edfc3ac3431cde5a64f699cb02c4cc436236c1998546e1980886767a8cbdd38b9c67cdd8ffdb82fe9aa30ea3fed0b43dfd4097bc11946e2021ad9991e948bfe2cb7dfd600e83d9dbd76e833c27387ebefc6fcd3d181686b6760d278df418a5c21764bb8bb988f66c2e0178922ac45a2d1352a6cde02dc93aec61286998ef05ca1ac15c6a05ca4e45df65e9ac57549fe79f29bcbaf6ae91feb0a94b552aee8e177a85b87699c65508d6852c2e59a0cb649dd85ac1ded47e5f00a9af0be645d18231d202ed57e1a751419b611e539b69e0578f6780f1452d8016585df2b013b80085d7d68a10c9599631add1004b442a0e053b8e6ada29d7acfbc83081a5f74121bbf3f5f6e2e078c1f47b0479ca7025cfb115563909bf8d51f97b1e37b11edb91f6efde65b49470ccd45cac57891401a452bd34db377b0cbac21bddd7a7ccb880ca96160cd11902cb0a3928f72024d6e83ca7f4e34d4cb59f99b9faef083cf88ddc09e76ce928e4c09b5762892e344f1efaf761bdbb32164bafa4d57af9a6d4d7be973f40055c9c4fb60b72bb619a7ae980c33ccdebf356d41418819aad19124d3dc7260563d0e75aef914938308aafe6f92042e8fa23d6d4cf77eb99b40b1877851134e93ce5b98236471577fb46a22fa031506bab9c5ddb4640e38ef10a1b4959a11288b41ce4b075706c98b36e3c72a1f57d3ad8429b49acc05f4a35411f04e2a44cdc157c42ef7843e2984d5edb58310ae1d96ad427c409fef08ceb2cb20edeff8d23b82ea1ad85affb1df6cfaaa709bbdbafaf2518e1eb45587d914f52e3009ce0a6844de8b22e8c3cbf00df1dd063ae374f15a981e9c921d06e54fa3aa2109bbc51e65f9608b79c3cbf00df1dd063ae374f15a981e9c921d06e54fa3aa2109bbc51e65f9608b79920ef18692f257ff4deda1f288a1a02c1f0dce68a5a0142fba1f86473ae2f10ab7a5bc0ed1e0994a69b4d196df9fc68facbc279c12bf79fec9123355d44cec614622075abff4ad2896127c319552cb695888db583183edcd81a2fcf709908d09384efbc317f9aa7636c09ccf86a3698f13659eba50e214f60c7ef1bf80827e531be55909a93edbee15a4532e587a6375d45490f13ca47e1426ee290674eca0cc62feef975b65cde9fe39250f3b03342519069a032395d7adcdb0ed1e2973325c0b855a601d7be5d0c5d54e29d14b5aacdaf8b6de29703568c5cb012167d1e289091241c2fa0381d5f77470542e956cf4631e028ec10f258f397a0e2220487be897523753c89b67ae65603010ce1613e7643aa4b0754e758dc4ed6c9fc0619dea2e96fe6fb18b73d5d60e9fc9dee8bd210ade92d81091cff8e7c48550c25a038f7af99e668ba9d068595ee5f91a8c0865fc967a848e2c58367a4135d4ed6d77c087eb5c0a4f24f3dd69003ba1de11a7a22932a886ef7325a86d1daffb4a22a2d152c14ca5e176a8e3312663a708fffee19a37cf9adef2c0e71d79c5c163c04577c1071b424d91172a6b8832446bce2691979a618165b8d9c818ff428b6e703a2f95ccf5291cf3114c73a696dd13690f04fadd38fd5fede4a96d96d98ffd9c498bda33631d06cf394748df8c6709cf290da9c581f39f92cdf0d4a41d1b2d9b5f731b382a0b3893b2cf1be14c4a874485bfaa4dbae3d27f7be0ba7e137d3daaf190fa4343f538d5b18cfc5afc77132a0a9ed82ea097415ec5d5dabf831435cfd405678d63c0c4f5ee9b45454d2969e079ce8d1b628dce110d03823c8868b36aac3ed6e2bf7a70e5b26027ee2229ee1b0cd1082834a8f585345706b27a5568c2598452a3e963824dfeaa812a5ce72ed5140813ad5f3d6fb2e52b6e7edc46235fb49e79549f2885bcdaa1b34142eb5ba3eb2da15fb9b316b669154f5b0cb235ad332049b819cef38cd56dade863e78cac912777180c88917764741a113a0d953d2ab525f463bed34f081820ec48288040e5440bf756619446554ec6b76fc72c3c8396fd8c680b1b8f3ac9253a73f9b7c9b7eb46a560c8fe69c2059b4d2f2a498b16e1c580b8c1d451ccf55458e7cb63cebd9aee83df31ae01ad4c47b073d3f9664b3ca38cb31805ece9b3476f2b1e69f0ed19e7d61ae29f0965273b670267d554b67851a8d37601b8af0a8f709df5f481659b205b053b25d2a4539bc3eac548a5b7aaaf613403f4cf02b137989a44fca736bff601e2f1db3ae3dfa8f14cac844d2bb6575caac880e2d2ec33f695f1a04ff07eb73d778763f2c7e518ee73d0f3397b8b04d8c8e714d17f1aa57e7afed1b1016d879d7161cc79651059717503f4767578c4d29a7fc15d4cf85bc117298bd8a66a979c14153e85aef138250a3cf7f048f03d891cc8942d170bd14d64bfcd6530e7a04ec066b3e71e1244da52cb2567507598e672468b703f882ac2fa21baf5ded6eedff16344f81f5c215bcfc9ef33538892e0c9857a83e64c0307430a652792d7372dfe94877024b26d48bddc40799eb12416385c8cdf1837cfec7e21f93b757315b23519208f0f5ae1466c548143b24a7731574a9d258a18fc07dd8da57ba1479c9f77f4c503d66163ba53b30c8c51d067bd34f03c6d252a7e58265585d3f8154619597ac14156312c629ed37e96f263dd8cd7fc7963fb6a7ef277f1f485943b6ac9edd0bf617e86506ff35a581d0a8d263ce304d514fe1a9d99559a7b40e0c4385b1296892b58b06903c3340b9511e857cb6c8201fd3197d44892a5bb5f5db5cc67c4cab28b91b862d3295271f97b5f2ab5826ea5e06b9ea791ec5e832e20fd3e096ca8a98b90875ee0fd3ef25d2547dbdb96e37373472142076277b8077aa683ee6b580d11d92847bdc96cf426a8dbb764493b32ee99060cbf78a1ccd50b5a639cf84b056e52f43e1d0129df4737cf0aab2c88bebe201bc6d46f004f8a3ae2a9c71e1b35d48e6306034b5259c478e1e3af470f6a382b9a37d09433dcf3e02606f63630eb3f2377c2d248a9fca86d460c6d61c63b44972edd8e4317e57a345c7738bb8738f3f7245729d2ddf8ad98955538e4057afc54d4d9d18596fe087422c87c45cfead90ea7f81dbaba007cd2ed75d86577eb4780173cd06bac82a7ded8a0bdc1cc8c744ea6f87bac35e0e85b417425ff16f881d0333938cafc087fd64e11abbdd631647e0f93f8fa56eeba465a50dc68901392269f3f58122a71d48cb56a9e0ed535ecaf962de226feafee03e1f21ef4344a08727606c11570d90129795b394d8a5dfb7edbe795be8184b36fac5de7a810e58ce56a049de345069b5d21202fcbdee157ff7981bbc9fa72d2d778def15861f1417d9f1148995b58d88048873f7faea528f0ecb266bd850a21220caaf4220eef489c7221c9d59b0c80f789497d43ce5b0eecc460744eeaa00c666e4bf58f4ecb979fcf681a5700b82346edcc53e92d7090fbcdd649238d722d3e0a4789e07655c53ae9de37403cbaf596f140c059acaed6c4360158ab6cc14e6c294d87ef6b9911ef1737bf1fa9a4cbe5cd0d7d7c1983ab8fcdfa9567e8a08dda475b94425fa17e79be73de819e63cba207983d7325cf2d871efa7a85acc63f09e1fb6d548190524e40d9685b4ec63dfcbc7b474b74d1bba0511fa0c827297d13306f831393a3e2f6dd6dc1e0ea92885f356e62cf2fa49388941a4560d47644510229a02984615c8c0036ed0e86956b34b7a6b5d5bef541410cada2f1107e37cd977803ca555146e5dbe4446ee5d5e8aa968bcb1f340d5ea614dbea125ef2ad75a7e6c9ae97b8038583d5a530df41f981a89ca65b994d43210ee241ca49564fa872268492d55fce318a99982ff7079729266cdb455803f2730600e38c273466b47484717fbc7fc41ce2ba06cb7542efbf5ceca62022f32cdd48cea839c158e31624cd80dca216cec4eca4f2a5ea2a430bf36c1b213139d8a3bc22270e0fff2a5b50c98abecbf4fbe53446a940597bd649dac563e8d3bf8d083bd3b2c226b84dd440a0b59ae5617868d3f5d01e46b42822e57e13437d850c2987bb1968b9a74ff6c5a7f0a7d2f9904e49b70969b62d8200742f85425299efb34e2e751d35a4132ace2c4b9f0aaf962c3b36b5a80f3acd040c896b2b46018ac2f635901cdcd7c2ec257070230dfdbd3f8258f9ae696e3a8aa29a9ae7b174d9daa1c97d830e7f039e153f08d337452b0e4a945c02effb986253eb3253b06908f48c707d95c5f4620caa75e7a0c9cdbb6539b7276143cf0c89452f388e50b2f40b83dd9d408e60c9aca297b9a089e8b7b00697f0396f97a0879f3ec049f72c723536c26c9cabacf1a303e85ea7e6025a8a061fe65b27706be1b1fd76fc3164c4c91d6727f91a0055ae1c13c2a8122e6b70f0a6b0aff17cee079815c27c1991b443d10cb106749de50ec1afe03b0c9ce39b5625fb717e835079d564cbf461545bb71fdecaf3d23a819c5d520e54a8e4b23655af787da250eb6b91e64f4997d6f6d02f0eae5dc7622f2a4116f90453aa79392de158d41641a96e9d2ff8bae90424b93d7c11a2acb903fa928f5825156c5d7e68d6e9f94cc271c14f210571b45e9acfeda9c96cf3d2128fff7fdae7a5d8899c474419f72c6f8452fee490d80953678b7b34adb8d0e4e790a9a3e2fb2f66f1c1015e1aed1a4ed5f639ff453807b1d834b27702c80686221afef568de322f766305c34d63cfb30beee2623b6b91520f245959dbe486eb28faa2dc14669d8f68ac142c117a63745a22af5709e2887768eaae7039acf59892848328a3e5671887873c9d7474f9e8cb6de4065c41d0896ae9a647618ebbd7aeb6ae37c89da072e0668aeac81ba117f34c12d25de3be7f6e4e843d65c51bbb4bb4932d0844f20e0ca372a635f3c3df636951c0ef67a04bbc026ced3224348374d0093b88c13f70831f9e7c336d49a2bcba06211077ef7f15486dd0357daa1681e6cb6256dcc6e3a79bbd7522c7cb88a875f5c0f4f861ec50e3b8f51847630a3145c78093d5843eebeea8d915d2baf68ad3f4142e981675940a92cc4cfbfb8e9eed118ab7b2c08a1776ff5c4dd4aa7f05b04a5d76d967f808f29c6dff138ac52a7561ee1591d21539000b2b3d23c2b482544bf739bac9a2cd261bfdd9eade8a264634f1bede2f7a170ccf4018c7265a70f2ccf0bfa77457e976d2bac12df8b0fc72e4c2ce4bd696bb14c7bb1e42c94b0dec04fa4a636dd8cf544b0501d01294a931b915f2f1bea437be7a31ab262dfdfc917b814ff99d16bfec36e008034cd093caa0de85631361b7759b16f4e6d7b5c197647039916cfd419f5285b3ddcac61c29d66ab2182378c6fbfffe7aad501e4f72ab7d9fd38ecdc94f8966a46468c700a9ddcfac6241dd3aabb5f1552c17501790093015c006a8e13671823c1ff4872beaae0ad5939ce3c21f96acd313b877b951a4b0040ae6bf8f6c5f79859e61c21ea867b175cdcb564820dc9ee9415dace1899121890c17167c19c4418aa3df943bc9e2948ecf97584fc8ebf3e497029bf463b8d86425ad717e93b4a20c9101e0c6f464e8562087317b34c4b2ac60e28e272b7b33e37523aacd5f2adba7a4f108e415c66c470766c2c3e11faffead7dde6f0d9f4bd4e7ec1784332ea852cd08b7d757d054a0015e12e72af99a16df7ec3e5e408c9a3b3b09e7c1dfb1e3a94f4432687731e3e40706faad20fc43669984fed7989f5b18598fa27d472966799c457409419d2cdb4f2ed4b585d772068df75c01d0a360d45d27294188fccf5ceb4255fdc83500ef6619a645a0b54a6eaa11f77a71f67da7a7e0c9b73f0e43e7337670d04b8b24502d966da3ac021a5039ba2e15754da51566e87c729a359e4c66046c5b43306425a1af9017d02d6b7caa632c8f2e919d3e769febd94c99e23ede5b8b7d6f7cb7aa6b06aa5a8eea3670662c4b0c37104041c14575fc170dc48677a0506a33a4a0a7048c91048d2c7ebadf647023c3218cb6d6a77b1bf3e73a49387073ffcdec5dae9d8ac13479225707f9c8851689bd5c528778ca4545790f4980fe4dd466dc267195610958536191eb6fa11bea01673d5c303d072d0bb42daba7ac4819819e909ffed3d569efb64e7f874c5c1012ed50048e1c44158201a6bced067b629d0451659b6d4742ac08afedf08c8b0d47c7c753c13a9762c49573416f1640b78cb928d4012c3eca567f58bca8a582d173631a81f2b96d840102b4327e88bad4da11332901680921c8a943fd5f0242efd0ddc0bdcb00a56c241dc61d4b640e8c7ce04644b7e9ee75609aac9e7a9ed0d26cb51ff0051e14a0234b37da3a2d074803fb2184ddea1eaf92f1aeed672c8afffd02989a27fef0ec11ea1fc6441bb49570ff202a3a45e263cd00ad37773f4f5d962392f671212af9858d98d6dad4230403dc2f5fc4d40841aa681f2249d2ab9c51cef487531e4eb29b540c8adae0b115b54bd87318047c175aa9cbd643e3e65799ff7ad9316f85f0d231bf798eb3ae374a52c1e1d1730676fa8db6427dc04581a6d80508bde3b4912fe04eeba60197c002bed649fbd25da294952015f885d8fce01a266901962d3fcb29979bcf314c964b60ec3aecd7a2ac4836c360b51789f4a912c48c8b8f00b88fbbaf3f81b18feeba1bc569559f51cb6781d03e29ab57dfaf0c91ded18b9c92c780459ba43527b65ff820c678ec3a75041ae3c27cf55883c3b7236881563c9f216aa4c8209d2694994b30c3c8892eef7d15198b45fd97ba16a64cc0ccd58dca6a8f4d9e73f93ebc0a81b2b702b9c4c3f32b0783811f09f74326c138f6e3468cb63cbff3beef505853fb2ba8f3f56f746ffb71e2521bbbc9314461b9254b5b3335de2641731ef62971fed0adf0ce3125263593a227feb24732b820d11b40bc426b328618d2e381ba0144fd82d3221e980d2570c809a82389047234a19efe7738112c23ba9245a9f950d86f3f20a87221f7598d9a084bce40a6b96d0f56f6f822397ca05a2722db0082d18d00c0cf3d77fe308efebf3955bcac95e74927103aa465f3e8d2ce707409ac79afaf4990f98d615e6e45c286fda177caf17c027ebd363315199ceec725fd093012b6d51a1f63e1b21ec7c032e243b069ba9f7bfefcbd7a186c07ac7f4047a3e1e14a5f5de0e83456a5b76f8c64a4772cfb99fb6fefb0be7a0279a35f2e88cf3f529b1ceb09914234d156274d90c8d5ace7eb41da071a5e0608ffe92975ac8cdabba5f3e37b15916266b7e1037a3afd954615f0178d6a8013a70439a3f48b1a9e506bb94a7b2d6e3fbfdf42ea148370f061d7fbcf4cec62c98ccb6071e75e75e9c8a82d6472b90afe87dc1e1062f620460d2f0af93e57a001312a86c50c0f7e9b50a62780ac0b18258f9063b8d69a3ac8ca117715754fa76ec72ca76e2b99030fdac1ba68f9d244ad4b4cc3c4b3e7b351c8fb0174f2d341a72963a75e71e1779612a4dd542f5222df169655a7ff26d485e7c977ae50bb3a17ce34d070b2bd6985549a912aad147c7b5a4129d7fdc400dd5d906c55b6adf0a91e7d63c31f84c87f3cc74efac8362beaf8139417a99159b2e7d03fbd93ea156f51c6c3c224470e029c2e62152cf86b8d290fd34dd6ed75f52cea9ce670304fb4ba0febb25b2d338cca0ecdf05b80b97822adc43cdc324a4a05d6cd63c73202f138f4d38332f08a024018ea14619ac8868d9bf8024cb82ba6b8f4303c252d7a8a32c572090f7f2ebf2317cd2a00bea122ae4cac5212bf106410ba4c364352245cf87003d985fb3b467231ead86555d4e043b693baa90a70ff7b9233aefcaf89039b606d77784ba13ae3dacf25f44b419eb8373e2e15753436ecfbe578bfe7e5875ab7f0efa25f9d6861a1397664d569a8993cb6aac0fc3cb509ad1226b8164b0ffcff662bb7794d5aec47778d7b19ba07083334b16ead7835626b23c4f8de3dc21f200e19792d327fea4590b147930ffdf6f6d8b7b1384ff9329b5c2116d31e434ef95d3f67882b9494d87ed50930c5ad155f4a33e5b0df7c62cf1d3876fae7d813935f994941185d0467d3ae57a9ebf5a15544f4d3faeb5ac6824106ba07df3412f641f8ff6ddffec37f6a695f0de0b595eaa53c20432c812e63ba5effa051751a12b479dba64ceb870072693051aba032f63dc2bb0328b3ebe7a855a9ea3ccf429fd748d7fe22f42b624c7b6f742fa5b761ff44051fa99ddf13237613deda6dfe286495291a10ff7358b0b6092998cfd9c5d75bf56c4ae19f5d051b0399459bebf937e9a701834a982d3afb5c5474e4b80d966ac6c30d1e5a0f02818ab37b3cc59fc564a812a7a4a97d0ff692cc4b8b2befe90d48e6fefdf916c7871312467057279a0531059428bf71e96ceeb1aeb734fab91f9950f6f80724b0596f342a6c34458f11583fa25b1a022169045652f3d915f796edc7c061bec08bf9e96a2e0a3ec978d43a181a6e5eefff55098b4942ab029c0a17440cf4e9e203387b4144c5b8e8c4f69c332787d4e8576e5eade8b707a6d3fb51f8a59737d371772bd52bd0a52d556e01169fa1e3e5d24541a7192a5dbb5fd70d419c96acf17817abf3bbe77e306318ffaaa6e4fb5ccc58e00ad848a969b3c05c6e4dd8391c01e4f63ad425977384af6f2fdca5ca7b067787bc98409df773f747dfcab71e29c39e66081563845c18df13e2f17477a9e17cfc3ff5bf96412ee2bd8c6e54ea9baaa151f60c24214dadc8b3fb03bfc7a62eb58a3ff2b1c302e133dd46895870f63c1bfffa5adadc6d32b2aae57870985e01b11a53bafd8eccace833981ae15d50f36aa28682d172559498c3f3f827d713436804416535d8a978303f085e9c9a08307fb166a5bd0856d2cdb4d63f47b858f6e5b09fb2dd293cc3577134957e2ac7a92681ef3e0f09b4387430e3b637cc9c66359edb778cb90bf51dde1a3b253f1ec87901faa0a06210ae9599838da53de0d517a9d4ceb1027614e40bacf4439e2445e207d540d8de3c536ea1b858cb7b3a848a7ec4d77e0d0a48949b0668964655732f5682aa4724e70a7626f67158898203228b1be7b479f11b7ee58b61697ce8975e3098f21ddb4973815bfd8e4283beb7ebcef31bf95a381aa78a130ee47540f09a1815336e8afef2a8993a14239506c8ed3cadceb5610d4e029e1c44675c7ab1e5485c5cc212452e2531fb1b6675d7fbb648711f43f11df374c90cfd67f130ef0ae45e72691bca0881f100435399c65414f94622e52e9d88f3738aadb0ca344b289d6dfb662cb49e0754baccbcd99824587b55a85026b5b5c86da6524c3b15d10bc2adcdc451a5b153c390a30586025efad09a3817ec35b20b6b4cb2e376fb6ce92b832ca09addfd5379ce97685ea24f9093356ecc6f44c9c2aa16961de8d0a33d31b7ebb3aee50e50ce3b88a024b6bec9b648a48d72274b35db3161928042a5c50854c39be5e020792d1dc424bdb5184e7ee26ee6b59d3628f09ffff97fa84f8a18995c4cc973dd66d75178d291f55cb750cc70df169a0bf6717881ffd6d57bfdbf4e69c3933b66279263d110ba594cba8217533a63e5a95cbf1bc812c6909ce8a5345b1eea51ba686e5482ade7eb733bfa7ee2bd1b47a27a902dd5d9c15bb63c263723fe443625517b965292eb150c6efaa9be5ace4cd4fc7aca77bae7a72a25763626c036047afc9eac3e4c572db8d010d440c226e8095c89bde9d6c9df4d11b1b4d3fa8f6706bdfb00237ca80052c4ba31f9ffe57c8955c3a411f6c4342ac40b9a64f6a4e33fcf48f989daa4cfbfbc90185fde58dcbcb19074eeabef4beba9abc6a5ea3a48e0bf988ed89e901bda46eef8183372c3cda4fd8dba6270a06b0daa39ebe7c6b66708d97250f6d4806acaec4b29878992bd026bb86cebdf9d47c4cc6ccc0dcae3809f262f0473c35d673a94beb41fdf2ac75bb19bf0f53c7d4bfa83a14c34b46eed95033f4f20f6251d9df4db570ee2cbbf25a6310b12ed5d1f16b00a983367ef975e579c755433ee8dbe8e8dde25183e581acb63f4b8be4e72a5160caa097a91ae1e631b3482b664e04629180975a7a47153381721fe2f3c2f1130085e38fdc62efd46460ef4372282d583f18924d586c4a9d48fb6bcb405a9ba5bfe36eec0a8da247eef2218e5cdd9d5da0a7ab1c71d0448bcdd1c6b7e7d1ecb5eb7f826fb44b5087a2feb7e95df8c24b218b885048e3dabeb2958858ea85342a168aed4ac7246e146e0fe11da2c1d24a5c60caca40f9807bcce970f04f808a0087a63b3ec3f0832b8c22c2aca83d6a36afbd00de5c5155659a2f059f10ecb5a65e11d82c9496ca08b1bd27f9dfa3af7393a1c316f8cfcba4b2efcb78f8f296177384af05b084cf0cb6a405d8c60190a212b41cb1ea246bcc413b7b6a91fadd9cc945863948bb9857a17587157fa9582a006f89ec4547f4d526ec17335f33df8c0bac8a23fc50b7fbbed4cfbf8ee659605e230fb3985ec78bdb228e3950e28e43a542cbe0c7ab521458f4dde4a1854bfe2623759a4926ebf28bddb3120b31ea82b2581a6b72cc4bc6d52aea49bfb235a54bd6d1bb4653310fc990bc75b578ac29b36f44c02e2f5842b51025f34d8cc1fdbc9046f5fea95778102d0df8bd449f7427af1dfd5d96ff3bb9710cb9425beb0477490044a58869f98977e94ef1f5b52b12765de4964001ad548d35b1df555628a578e6e9f940d4e2816b9d53fc9f6a68577db31afed899569ad8709d54781078514f5b9b796a1ddcd81a322912efbc28f7ceb85bc55c21f1e117fba03fc2584a66eec131d343c09169a291b1f2b3fefce267fcd15fef1685aad0599d3ec6de4345071507332eebf8d16074d665ad227ebb3f10eb9d2bcf14fff0c373cdcabc4abc1250d9a8c87c87c79540c61949a94e00065ec9e7800a1af6b7d24281060db3bbd8cd75c220538a53c3ca30c269a65d436e37021788b9d1f1a5541a250d79a491a8c808d9191f14a34b250ed93db02101c9932f1d3ab31449cb95aad4dc760c2eaa7d2b424e83554576409ede5d12657515bc71955036cbeb899599206480285c3611775d79833184b356b8c32e5b634cc130e81bba0b5798a223b24c7b1d1be8516d68b6b365b749096ff409a699f2de71f7c774e9f5f208c9635df8248d20ca6491d85c8014b0b0a119383b3875feab0fdc8d1a311c4f97936358b2885d2790d20a99f492bb32c7c9fdfa58da130c0e0a69fecdd4e724f8c02fa717c277e73c03b98c7c0b2d0a887ce9aef07d961dca081288ddedb5bbca4729364b62e6778ff00d8d2cf60b65ec048b4584a3ac706e6c9e61f9df417630cf6d3324f0a3e17399f39dd04e476300069ad2dd12e4bbd738588982a32e85457237f34c84675f7424065cff2313e9ecff85b226850fd88c610fb384285b7e8e17e90a7a605396da8bc8578bf03a2fa6e17c1d88240604eb65f74117b5e2b2757f770a0d5d0aa87948ef704ad8f808608319d34d79f7f32124cb0c9ffd5c18bae90a16afc372a8a58cb7e2f14841c741a91ceddcba2b5ad4aa9a4a4b4e0ce0cd0db58a4a61f7275758e1814f38631d551d7512ea5553d499d117277450333bb95116c4415c55637055bfb189e4a33f93ef81b9559b9b772b2c662e5bd0a3a8ab7252c125418bd1d68c104028c69e98f56db14552c3b3e66d23ac2ce92f54a4b4446384e150d4330624a7759865b2e26cbd8aab6a2db7bf8ba3c6348b23a0b2c8d43ee842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a094341427e7cf4e293f305ea741a63e5b7214caf7d5fb2b6fdf245df785ecfac367a046e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a0943414e2a5e777a350d8bc4f138442cd2e43c17177d0f9ec4e0d26107b7ada39d334e5e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a094341464215f0b2d7cce549e83670bf6fdf16ece6b8b5bff3ea196d3443868fc21d4f5e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a0943414a7901a246a706b0ba9d0a567078731b47e06cb3e22154f7739956d7e2d953ac2e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a0943414a7901a246a706b0ba9d0a567078731b47e06cb3e22154f7739956d7e2d953ac2e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a0943414a956545dec5c62081e3b8b0a4f38751fd615fc75d553d65d2ff442cb6e65146ae842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a09434141394723127d98dfcdf713da9eaff9e437d87ef2b24bb3d9ad5a7b7e45460e88ce842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a094341405c653333750b256393bd4a4eff67bd015929ebfd128e453cfbe67a357ea5664e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a094341437ab0aa7a0215f6599431849bac4d4184d3c887dcc9ec3de9d443aa4307db862e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a094341499a774ed1f064f3450925b880d1d097e6c2908cd9972bea62b433b97404f9407e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a09434148fe864c4b8d554d31a835b281233c63778f899f858787bf2c5ec6959478d8f06e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a0943414dbf1a4a35edfa40c7d7f184d0611c782431c517420d22ae2f696cbb170a1ef29e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a09434141d7926ba98e7d74ebc17ead0602593f3d406613fdf27dbdd53bb405dcc7d038de842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a09434149d67a2c92659545ed34a0ce0543cdb4529fb092218c58fc9c30fa124d5d985e6e842e5b49dfa6d2007eed547f765bbe5ce23f4b9fcb695097d8a1008a0943414d1dfd4ed3966317e6282bc4b25f053294140c029ddd109ef18b35cfdd96892b0297f237ae4880f2a1190103492a25c29564f8407bdb15d707a2dbabae5a8fa9b80a20f4e1fd3e4c127fc2921d55087894230fed81093b58ddbf6f54373150a2c1973fef194f3a6977a0aed91fbbf9b4464410006131b9f8b82e43934223f0752918956eb22c3ef3134ff5a1283d35fad1413abaf24a09244c7dd95256c6697ee2f59c8fda108ecae309b5f85e703cfafb218739af91a0a5e944c1ed8ef07a68245b7d93a4394bf0e19303681a50b46f375b8dc12dba25f82aaa5bf77587d775897a891002774d3b7f2683bd331a750eacc0bc90964f898cfe178651563bf8452a9c980aad53e2776a3711e1bcda211f99b48a4b48a90ed28d67988ebdfa06762331ea9090db0c9f6f597bd9840fd5b171830f6e0b3ba1cb24dfa91f0c95aedc14453dd068c575943772ddada5fa8f86804dad90b554400dc48478c8402cb625193cbd4cd48babf1299ba337a773e876170c28a237cd1241da965136fe47df0c5123caf16345479f1bd50be48b39cee422928c092992e6b3c266ab52e5f015cfa4aa21269d205da6e9f9b2a070bb39752ea27030e3799700f914e59bd8aa55a653a1c83a28a8ffc13a8f67ba7f4699e2917a0a472f3f86ca2ce80d03a49e22b63e720edc3b15d8e81cb772de0cdfc6b3ffe2fbeaf4c46f32ef1620f6e56db4e354142710c85ceecf0422442c80bb4238d685b2af16fe586b81853d483c0a1c27abfedccb6b5f1d03027fafd4bd6ea207ae04eec40ac44b080f91173830944561d0506c1a99456284dd4568914d5db1a18270b51a8c34ec052d6256cbde38d6b282fd34b8a3c174875f44175fdd09ae21c00f5bc7e7a9be9902ccc8602e03a14a8a46079a9e6abc9c5a6dc0d9ab0ef9951d32487e699c634f0cf3ad2518b98a0d069043e4e9af6bc047168fa9255681538d3cb85e8eaa95454186b799aadd15b5fc02e4af4b14348f9e1ee8e1155bc01e3cea39ca87d3b142a1e2959a0f4f1659ce915fe6a810ac2d3dddb5ec0cc2cd6124916a34f3be1f1652a117c27e337aef0af1e723492c855002a3d3ef144d89480b70df0615dbabf87b20e9da3f918e3625e069e47e2701f728c04a9b9a08a4a576ba2c7b1ff10d3d056d0ebac8d7279ca0a9b5586d4eca342c2acf032c50e83dcf491aac55eaba43bfa745b439e681be33f5b350e345a725ff3c245fa35d391e3d6e3638f434c3c7e064a6812a17fb070b1b6a14de0c436e407e84b5e9a5a4e8f941233bac9c0685fb8bf908cdc054d70db5209f49aefcb0a26c8792948f854fc518910d95a7e57bc04da3f06005d10f5b174539d5d25678e395664bdf85066e0c192a58d23f4aa8bf8d68ca8e2dcfaeade8c123eda52b75b54cc87ba34ded115dd0e4e93afc0c1987bffb2d4e636606d16bb7f337c20d698715ec8e75fc81f6adc0ea278320d7d2bd86017e04c406f5353e700f761ffb7ca762ad145c49738b8d864a8f9a5ba63787e6226bbf4a458117cc3a043d0b40c0547cecece300164715a0b07f7fb04eca7ef576f2ec71eed25ff6e5d51179f488a28bc0cc07a63de3163ecdabc012eb59d627f00613fbc8bb978cfa03be05a42701ad820f1ee59b53d863dc7ccfb5172cc8b5812827d3345f18e66b0e908efbc19f15b48154deb75a7ff43e99cf4935a5683842ac96f04baaa3086d2580d5fca71b0b95aa186c6940fbcee2d242f2bd51b80a4fbdf43645624243c30cea1e03069dbc26f4568bc2250a2eb00ca99c9b2a06a57d700c9a86271f9c3589348570915393178de332c377f04fb7042f5764ef4a1da9dab30d3e59c738a7de7e6f860e3676a63870c5f50162df837503499acc659905b177eac5596fa300449c9e43912257cc794b20e113dd723320cffe5ea0811abbe7a456042221c5a083d106f2363091aab0b09b0d996e7039b0431d94438626ce95b6c2646845501e988cea526d9b114f350a0682727ba0cccc5720fb66692d3da5861815b7d88c164cdf300c10c334f1b93ecb35c6d8ad98b81a29ae4069740bd9b8dc5b76ec8bf5e337ce360aacbcdb1d1964bc1d399cb2ecbbcdb63bc7be7e3de553b37c7967fe6a4644148e90deeae060ff73d47c3fc738d5656e99bb98650ccbc06b7cb9850f537999d0235647a88101ca040897781a3194c984ccabc5cef8c3675e370e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85570423aa98be16301cbebc32f9aceeba385f81078e15ea8aa9a254059695f6f427f9064b78252bb96ebbb5ffeab3c3e7faa37c109678fe6bf57ddf848e4a2672ffbacece94ec644a90fe4ae9484dabda2f916a30e04795a3d77d37f7b97a8f800fed65becaad908a50bb9f1652f713d9ed6c192de4a8c2c0402958f88870bcb4cb9c389d077989ccbe744aafb5091dbf20c74775591d50811d995c3456a76b035909813c7ce53d7706eaabc3992e836fa7bb30b9fa143139377a7d79b5ba4a07be92e3fc121faf77174f1139bd53ad90d5deb9aa60e55ca4ba9f1b0bc6191fc6af699eeff55d78532d09f9c7f573662848a25e1b39467845c3d2302a64ed065dee6d97b9e40481f46fdc65e177c2dac82653a3ee7dee6152b585630040c17bbfcf8d6073c71092f57dcb3377b1834e0446aa5d1c6f0e13eab304b8caf9aa501d55ca2a24d492be37ec71bba838fe600ff537e8f5f067d23695a7ff95754564d813a194e00da4ddc7d85fc76ad639b90f66c9dece6c26751497122fc66533fd387f8e06466080e56648bb15e8b24264407dd3bf2aecfbfa53cf60748b8cc46e737923516c3e47508dc92c49552f89f11b1c3e1a24550b2498ac94ea0aefb92137b3da2258409bb8d0025e9f63ae9af60ec0d47a8d720632c50fc924c75fc96d0ec2dcf0b783860dffd363e83e9400a13c94e4d22eac3665c40fab5922cd265a8aa8fead3377117a127fec6c870424facfd43636b1aff6e7bd6f39534a2754e2a581a3bc16fbb3bc826e59d36d42871df60d6339fd35dd13b5c6186eaa3822119a2ce97ce3348262bebbe6017b41501994bab23547c861aba815d8daf02f04b4c464aafe9cccf0c932f34777cd04562ab1424c008207b26ab6862a661670a9fa35bc329b49f141ddb8402d636f1d9889928f7a86e7c33e6f92a8438db25369c61f62ead129b80ff88f533f8ed42de8ca1de088d72126b4cfab9934030c59902277edccda845a1fca2810dc6573156d45657330622cd748a5c34c76b21c8a385c8e75131ddd2f9b685ff98b39a8db3b8ebdc79324119ca037643b4f23a1504af7c0d6cdd51ac199a93a72790eaa3fa7df396cdc482ffb19a075024ea9a3d5fc9017d76efd426d0e65fb4ea321840fbfed534920b37bdcfb1a45b4821d855f0a7bbe33fe09242a315fb5d9855668cb5f085693602d7d431f51ccef6ea9707e23042b7c40b1b6994978fa32958a3c346be515e984ff1655aca00cdafc62b28334c3538cc015724ffd74b407568ae60699294f5cd44d59a37d56a07dd3ff4daaf9a6e462c18e2d70f96324fa81e0fb339c33f9856d4e0d72abbca546a3fd4fdbd45ed324dce3a18e4ff2f0bfca19178a7a4a7f873abb139ed5bd87e4cb108567c2184b6b4009c131f229d546a5793b5f363d93086e5221d963fa587565c22e011a8720051d0f6c4f9163f0f8db0c919ff81d228f3669399f55b4fa47bb6b3e35a0f371c9da736727f3d68185446ca1dda91f7a51624c22a59c4b6892dd78989f491ef5ae879730e2efbb859883de4dceabb9891da3e11a7f4ae4c4f215d7fdfc9b254dbe305b4fdbeb599b1702946255b34dd6ace37ec7b389d5bcdd0ee84ce819ad4c016317ec97d8aeb18035abd51c728dc296a83e9a8970c12aec976e51b2fe950a71f16f6cd461b48dcc4621f26bb1f25558a04b8b2428c60a1f6905639f18aa82bc3f5d7da2d873ff07038e0cba85397c8a07d2efa2272c1a71fccae3cac04695a435f6959601f86a8fde0628c61372434e9464d824730e530bb22332940662254serviceserviceserviceserviceservice/etc/openqa/database.ini/etc/openqa/openqa.ini@@rootrootrootrootrootrootrootrootrootrootrootgeekotestgeekotestrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootgeekotestgeekotestgeekotestgeekotestgeekotestgeekotestgeekotestgeekotestgeekotestgeekotestgeekotestrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootrootopenQA-4.5.1526033850.1ad9148d-lp150.2.3.1.src.rpmconfig(openQA)openQA@ @       /bin/bash/bin/sh/bin/sh/bin/sh/bin/sh/usr/bin/perlconfig(openQA)coreutilsdbus-1git-coregroup(nogroup)openQA-clientopenQA-commonoptipngperl(DBIx::Class)perl(DBIx::Class::DeploymentHandler)perl(LWP::Protocol::https)perl(Minion)perl(SQL::SplitStatement)perl(URI)perl-Mojolicious-Plugin-AssetPackrpmlib(CompressedFileNames)rpmlib(FileDigests)rpmlib(PartialHardlinkSets)rpmlib(PayloadFilesHavePrefix)rpmlib(PayloadIsXz)systemdsystemdsystemdsystemd4.5.1526033850.1ad9148d-lp150.2.3.14.5.1526033850.1ad9148d4.5.1526033850.1ad9148d0.0828019.022.033.0.4-14.6.0-14.0.4-14.0-15.2-14.14.1[GZZZ@Z@Z؄ZЛZЛZJ@ZJ@ZZZ@Z Z~ZyZp^@Zg#ZYZTZ;@Z'ZOZ@Z ZfYq@Y@YYYY}@YI@Y7Y0Y-^YYYX!@X!@X@XXXwoXwoXwoX[@XZnXRXRXJXJX<@X2X!@X!@X@X@X TW$W@W0@WRW@W@W@WgWN@W @@V3V`VVVV.UUAUmU@UUa@U%@U hT@T@TT T@T@T@T-@T@T T@T@T@TT@T{Ti@Td@TR(@Tk@SSہ@SǺSS@S{CSy@SsZS`SG@SCSB@SB@S5d@S4S4S,)S,)S&S"@S L@S L@S L@Sc@S@SnSz@S 4@S 4@SRb@Rb@Ry@R߲QdQ@Q'@slindomansilla@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comedigiacinto@suse.comcoolo@suse.comcoolo@suse.comedigiacinto@suse.commarius.kittler@suse.commarius.kittler@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.deokurz@suse.comrd-ops-cm@suse.derd-ops-cm@suse.derd-ops-cm@suse.deokurz@suse.comcoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.demlin@suse.comslindomansilla@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.desantiago.zarate@suse.comrd-ops-cm@suse.decoolo@suse.comokurz@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.deoholecek@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.decoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.deoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comcoolo@suse.comrd-ops-cm@suse.derd-ops-cm@suse.deoholecek@suse.comoholecek@suse.comcoolo@suse.comlnussel@suse.deoholecek@suse.comoholecek@suse.comoholecek@suse.comoholecek@suse.comlnussel@suse.delnussel@suse.deoholecek@suse.comlnussel@suse.deoholecek@suse.comcoolo@suse.comlnussel@suse.delnussel@suse.decoolo@suse.comcoolo@suse.comoholecek@suse.comsfalken@opensuse.orgoholecek@suse.comlnussel@suse.derd-ops-cm@suse.deoholecek@suse.comlnussel@suse.delnussel@suse.decoolo@suse.comcoolo@suse.comoholecek@suse.comlnussel@suse.decoolo@suse.comoholecek@suse.comoholecek@suse.commlin@suse.comlnussel@suse.dedvlaeev@suse.comlnussel@suse.deoholecek@suse.czlnussel@suse.delnussel@suse.delnussel@suse.delnussel@suse.delnussel@suse.delnussel@suse.dealarrosa@suse.comalarrosa@suse.comalarrosa@suse.comalarrosa@suse.comlnussel@suse.delnussel@suse.delnussel@suse.demhrusecky@suse.czcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comcoolo@suse.comlnussel@suse.delnussel@suse.delnussel@suse.delnussel@suse.demlin@suse.commlin@suse.comlnussel@suse.demlin@suse.commlin@suse.comlnussel@suse.decoolo@suse.comlnussel@suse.delnussel@suse.delnussel@suse.de- Fix missing share directory when worker is local to the webui (bnc#1111325) PATCH-FIX-OPENSUSE Add-tmp-dir-for-share-directory.patch bnc#1111325 https://bugzilla.opensuse.org/show_bug.cgi?id=1111325- Update to version 4.5.1526033850.1ad9148d: * Add _source field to every detail generated by parsers implementations (#1647) * Fix links to #live not starting live view (#1648)- Update to version 4.5.1525548058.3f6bb61a: * Avoid appending multiple runs with --nocleanup (#1644) * Limit number of tasks for limit_assets and limit_results_and_logs GRU tasks * Add test for GRU enqueue limit option * Update apparmor profile for worker (#1645) * GRU: Add support to limit enqueuing by task * Update unit tests for TAP parser * Mark test suite as failed if test steps have failed * Add information about openQA internal results * Update TAP format documentation * Remove dots from filename * Ensure that the details description is set * Use a single result to contain all the test steps * Update changes to TAP format * Temporary version of the parser for TAP still failing * Log a warning when step data is not found * Allow LTP parser to load files that contain special characters * Replace extra dots in the filenames (#1642) * Increase the required coverage to 88.8 * Do not fail a pull request if there are unexpected changes * Use same width for each colored dep status span * Show parent and child deps on job page in nice tbl * Enhance unit tests for GRU TTL * Set 2 days of ttl for limit_assets and limit_results_and_logs when posting isos * Add unit test for GRU task TTL * GRU: Add TTL for Minion jobs * Use a smaller font for the 'ago time' to fix rendering (#1635) * Prefetch comment counts for /tests * Update bootstrap to 4.1.1 and fontawesome to 5.0.10 * Do not load full application to generate assetpack data (#1628) * Improve the duplication tests (#1627) * Hide categories when filtering test details * Ensure needles directory exists in 18-tests-details.t * Require 'Selenium::Remote::WDKeys' in CPAN file * Add test for filtering test details * Allow filtering test details- Update to version 4.5.1524586233.92db89bc: * Add unzip-plain to AppArmor profile (#1629) * Use current SUSE Logo (#1626) * Avoid skipping dependencies when cloning jobs. (#1623) * Improve some details in t/ui/18-tests-details.t * Randomize GET /tests/99946#step/yast2_lan/1 * Use usual prove flags on Travis as well * Hide failed modules on overview table for small screens * Fix positioning tooltips with Bootstrap 4 on overview page * Add Minion Link to navbar and move under admin * GRU: delete gru and deps on failure * Fix spacing of 'Build + Bars' rows on dashboard * Adjust padding and media break points for dashboard * Use exact same colors for cards/panels as before * Add unit test for job custom_module * Display GRU failure as job test module in openQA * Fix dropdown menus in fullscreen mode * Use full width in full screen mode * Make the gru service to be restarted on-failure * OpenQA::Task::* Die on fatal errors * Catch all tasks output also in case of error * Mark the jobs associated to the gru task incomplete in case of gru task failure * Adapt to new Minion::Job API introduced in Minion 9.0 * Remove unused Data::Dumper import * Use Minion::Command::minion::job to get jobs list * Enable the Minion Admin interface under /minion * GRU/Minion: Take account of failures * Use gru enqueue in controllers and keep relation with minion jobs * Adapt test and fix leak of memory * Gru: get dsn from DBI for Minion * Move GRU tasks to Minion- Require Minion >= 9.02- Update to version 4.5.1524056562.74e334c1: * Close candidate menu after selection * Fix positioning of dropdown icon under Firefox * Fix handling multi-tag tests * Adjust UI tests to handle new candidates selection * Implement full diff * Allow to show just the screenshot again * Add shortcuts to custom combo box * Make style for result preview part of openqa.scss * Use customized bootstrap dropdown instead of combo box * Workaround issue when clicking menu item in 21-admin-needles.t * Port card in overview correctly to Bootstrap 4 * Use same link color as before * Make badges look like before * Adjust colors * Fix paging of tables for running and scheduled jobs * Remove symlinks for Glyphicon fonts * Fix UI and fullstack test after Bootstrap 4 migration * Adjust media breakpoints * Fix grammar in tour * Upgrade tour to Bootstrap 4 * Restructure stylesheets * Fix live-view and other small issues under Bootstrap 4 * Make it look more like before under Bootstrap 4 * Fix permanentely moved links on dashboard * Fix overall appearance with Boostrap 4 * Fix filter panel on the main page * Patch bootstrap theme to be a little more like it was before * Remove hidden class * Port the navbar to bootstrap 4 * Start to migrate to bootstrap 4- Update to version 4.5.1523608608.fca0aa46: * Enforce sorting the results returned by the sql query to use in is_deeply (#1621) * Remove dead code in Worker/Jobs.pm * Update current test module details when cancelling running job * Prevent failures in worker reset_state() (#1618) * Group candidate needles by tag (#1606) * Test image selection of needle editor (#1617) * Fix 'Take image from' selection in needle editor (#1616) * Refactor needle editor code * Fix showing needle editor when no tags present * isotovideo: wrap log_ calls with eval * Require latest RWP * Start isotovideo inside a container using cgroups * Checks if failure status file exists before trying to slurp it * tests: cover case when one of the cluster jobs already running * Consider running jobs in filter_jobs * Fix fullstack test in case /usr/bin/isotovideo is present * Limit showing new needles to the 5 most recent ones * Use 'new' prefix when showing new needles * Add documentation about showing new needles in editor * Improve tests for needle editor * Show errors/warnings/info in needle editor with consistent margin * Show added/updated needles in editor * Add database entry for needles when saving via editor * Simplify save_needle_ajax code * Extend needle table with tags and timestamps * Capture serial patterns documentation * Don't show configure button for untracked assets * Fix mojo not handling max_size_limit when is a transaction * Allow optional overwrite of the productlog request depth with a query parameter (#1601) * Enable JSON representation of the test overview (#1600) * Add asset size limit option * Return reference for test result file lists * Make OpenQA::Client::Archive property of OpenQA::Client * Remove chdir that caused errors when downloading test files * Add file _download_file_at method for logs and uploaded logs * Move progress monitor code to a separate fuction * Ensure that uploaded test logs can be downloaded * Add first version of OpenQA::Client::Archive * Move test_uploadlog_list and test_resultfile_list to the model- Use Minion for GRU tasks, this requires Minion and Mojo::Pg as dependency- Fix handling UTF-8 when executing make install- Fix handling UTF-8 in update-cache.sh- Update to version 4.5.1520515419.c3df6f91: * Update the chromedriver url from 2.33 to 2.36 * Allow saving needles for OS with dots in the version * docs: Clarify some serial terminal terminology and other elaboration (#1596) * Do not reset the api version just because the worker is offline * Fix scheduler comment - now default MAX_JOB_ALLOCATION is 80 (#1595) * Always retry until chunk is uploaded and retrials exhausted (#1594) * Refactor and add error test * PARALLEL_CLUSTER is no more * Adapt scheduler_full test * Avoid to re-consider the jobs that are being allocating in a round * Do not take account of spaces in PARALLEL_WITH * Exclude allocating jobs from prefer_parallel cut * Consider allocating only when we have them * Bump MAX_JOB_ALLOCATION default to 80 * Exclude allocated when blocking dependencies * Consider the jobs allocated during the round as running in prefer_parallel * Prevent cluster tests to be allocated if their group is not allocated- Update to version 4.5.1520100590.2279151e: * Fix sort order of the review comments (#1593) * Expand the serial terminal console documentation (#1586) * Emit openqa_job_create events when an ISO is posted (#1584) * Replace die for 500 code and move global constants to OpenQA::Constants * Avoid circular dependencies when running the tests. * All the available free workers need to have the same websocket interface version * Move the interface verification to the worker ack- Update to version 4.5.1519929327.f726adcc: * Enable wrapping cells in overview table (#1591) * Perltidy * Protect during collected unsubscription * Prevent to determine job status from collected event when timout expires * Remove check backend timer * Fix check_backend detection * cpanfile: require at least Mojo::IOLoop::ReadWriteProcess 0.19 * Adapt jobs tests - we are not dying anymore * Don't fear the (sub)reaper * Add AMQP doc * Lock tidy version * Make prove verbose- Update to version 4.5.1519128406.810fb68b: * Show correct port for created job (#1578) * Use rwp also to call rsync (#1585) * Force a restart when the children or grand-children processes die * OpenQA::Parser::Format::JUnit mark testsuite failed if one of testcases fails * Replace the exec call with ReadWriteProcess module * Add use Mojo::DOM in JUnit and XUnit Parser (#1580) * Use the generated Mojo::URL as Client base_url * Add get_piece() in OpenQA::File to ease writing of downloader class * Add test for OpenQA::Files's prepare() * Make integration tests of uploader with fixed chunk size * Fire events inside subprocess before and after chunk processing. * Move uri checks inside common function in OpenQA::Client::Handler and guard from not configured scheme in host * Add test to check if retrials numbers are matching * Use subprocess for potential loop blocks * Adapt workers to error handling * Add tests for OpenQA::Client::Upload retrials on failures, and events propagation * Emit errors on OpenQA::Client::Upload * Swap multi-chunk uploader in worker with OpenQA::Client * Make OpenQA::Handlers EventEmitter(s) * Split OpenQA::Client * Wipe out content of written chunk, try only weak check and back to Storable * Do not always perform total cksum * Drop Mojo force to File asset, display stats of uploaded chunks * Write as we receive in a temp file * Avoid to relay too much on the serializer * Use C backend to read whole file when computing total cksum * Enhance error detection * Allow to chunks to dynamically grow and shrink * Make total checksum verification run faster * Let specify chunk size in config file, and default to 1000000 bytes * Also add API endpoint to inform of upload status, adapt tests * Do not make split() to load the file * Pass asset option in multichunk upload * Create empty file before writing it if doesn't exist * Try to swap current uploader with multi-chunked one for assets * Add spurt to OpenQA::Files * Add write_verify_chunks() and write_chunks to OpenQA::Files * Add methods to verify against chunks, also add test when joining/verifying in-place * Add serialize/deserialize also to single result of parser * Add OpenQA::File, wraps Mojo::File and adds seek capabilities * Add worker version check on the server. (#1552) * Add basic test for OpenQA::WebAPI::Description * Add POD documentation to Controller/API/V1 packages * Test 27-errorpages.t with a predefined API desc * Replace Pod::Tree for Pod::POM in WebAPI::Description * Add POD documentation to Controller/API/V1 packages * Move API description methods to its own package * Add POD documentation to Controller/API/V1 packages * WebAPI: Add API description from Controller's POD- Update to version 4.5.1518003872.3977d2f5: * Run perltidy again (#1577) * Fix perltidy complaints (#1576) * Give 404 rather than 500 on invalid asset route (#1575)- Update to version 4.5.1517920216.2250682a: * Take latest version of Selenium::Remote::Driver (#1570) * Big rework of the GRU limit_asset task (#1569) * Fix broken links in openQA documents * Update Installing.asciidoc * Add pager for comments on group overview (#1561) * Add help box for group filter * Fix testsuite descriptions if default config not present (#1554) * Test subgroup filter and form * Allow to expand nested groups by default * Add filter for subgroups * Check qemu pid before starting job (#1565) * Require < 1.21 of Selenium::Remote::Driver * Downgrading selenium drivers during test phase- add fonts for chromium test suite - and remove currently broken tests (https://progress.opensuse.org/issues/19652)- Update to version 4.5.1516716144.98db9c99: * Improve error handling in group overview (#1562) * Do not remove forwarded-for=https headers (#1558)- Update to version 4.5.1515767133.56cd6ee5: * Support nested OpenQA::Parser objects * If no parser format is supplied, return a OpenQA::Parser::Format::Base object * Add POD documentation for OpenQA::Parser::Result::OpenQA * Add documentation for OpenQA::Parser::Results and move search() in proper class * Move search_in_details() in a new class that inherits from OpenQA::Parser::Results as it is openQA specific * Add documentation of OpenQA::Parser::Result * Move methods and attributes from Parser to Base format * Simplify spec format definition and move common displayed fields to openqa specific result classes * Drop support for creating collections with package global variable (useless now) * Make possible to upload in all the supported format and add tests for it * Add other tests, bring back coverage and fix wrong Node val() assigment * Return a OpenQA::Parser::Result::Node object when getting unstructured data from result * Make parser now really recurive, add also support for nested data structure with unit test * Make LTP parser tests output compliant to openQA tests results * Run parser test in parallel * Add possibility to store / serialize file content too within the parsed result * Add test to check DB consistency with parser extracted results * Move format specifications to separated namespace * Add XUnit tests * Add basic XUnit parser and schema * Clean LTP and include schema inside parser file * Add support for nested Results collections (required for XUnit) * Use functional interface in exposed api * Make collections serializable for unstructured data * Add accessor for unstructured data * Ask to include result only if the specific parser can * Move include_result option to specific parser that needs it * Provide also functional interface * Serialize single Results object as seen by to_hash() and add tests * Add tests when parser errors * Support hashifications of unknown objects * Add unstructured data test * Add reset method to parser, add and cleanup tests * Make serializing possible for collections with different OpenQA::Parser::Results objects * Add possibility to export/import the Parser to JSON, add also tests * Add serialization tests for junit spec * Tidy OpenQA::Parser::Result * Hide name field in JSON encoding of OpenQA result - but keep serializing it * Add example of new format specification for LTP * Simplify LTP spec definition even more * Get hash representation automatically of attributes if they can be rendered as hash * Add backword support for v2 format and add unit tests * Rename subtest to avoid Perl 5.18 complaints * Refactor write of parser result data * Add optional extra list that can be filled by type spec parser * LTP specification: Environment is optional inside result in new format * Add support to serialize/deserialized nested data structure * Add serialization capabilities to parser, and add tests * As classes are representing merely what's the json content, include them in the LTP module file * Add test data example for LTP results format * Add support for LTP specification in OpenQA::Parser * Generalize parser results, and subclass to specific implementations * Adapt parser tests, since now default value for script is 'unk' * Generate test module result from parsable extra_tests * Parser: return unk for test script if does not exist * Add search between parsed tests, link results and tests * Draft for JUnit parser * Prevent worker status selection to sort (#1555) * Unify code for scheduled/running table and fix sorting (#1556) * Remove leftovers in t/api/02-assets.t (#1557)- Update to version 4.5.1515509269.fa07a084: * Remove assets from disk when deleting database entry (#1553)- Update to version 4.5.1513750232.be133588: * Add basic setup of multi-machine worker (#1544) * Allow deleting assets via web UI (#1551) * Deal properly with environment variables that can change logging (#1537) * Fix deletion of jobs referenced as last use of asset (#1549) * Show assets by job group * selenium test: Allow configuring mojo port * Split asset tables in used and untracked assets * Refactor data size rendering in JS and reduce precision * Set App mode in WebSocket server (#1548) * Fix repos gone too early: assign REPO_10 to jobs as well (#1547) * Retidy - Perl::Tidy 20171214 has different formatting (#1546) * Update installation steps for postgresql (#1538) * branding: openSUSE: Add Kubic (#1539) * Change the logs timestamp to ISO8601 (#1542) * Add documentation for postgresql migration (#1530) * Fully fix asset caching without test caching (POO #29208) * Fix job group update issue (#1533) * Hide worker properties if no login (#1534) * Switch to fontawesome 5 (#1531) * `limit_assets`: remove asset that breaks limit, not next one (#1536) * Remove all assets from DB that are gone (#1535) * Allow to query live data from api, adapt tests * Display additional information in the worker's table * Add panel and popover to show job detail * Make searchable field and fix DataTable loading * Add openqa-setup-db service that will create postgresql database (#1528) * Retrieve worker stats data * Do not query by default websocket server to display worker informations * Fix tests to expect new columns * Show size of assets exclusively kept by a group * Accumulate size of assets exclusively kept by a group * Document fast initialization of local tests (#1527) * Add column to groups with size of exclusively used assets * Also store if the asset is fixed in the DB * limit_assets: Use DBD::Pg directly for querying job asset * Check all columns in test for asset table * Show last use of asset in assets table * Ignore chromedriver logs * Show asset size * Write info about assets kept during cleanup to db * Improve comments in limit_assets * Fix PRJDIR error * Add support for colons on worker class * Add WORKER_CLASS to job_list filter * Fix caching of assets without caching of tests (#1521) * Accept a lower coverage - we removed code * Move worker log test to 24-worker.t * Schema.pm: Remove unused functions (increase coverage) * Remove SQL files for SQlite and for 2016 * Have our services require postgresql server to be up * Adopt generate-packaged-asset to use postgresql * Import log_error in OpenQA::IPC * Test: increment unstable_worker ticks and wait for each one to be ready * Remove more traces of Sqlite support * Provide t/test_postgresql to setup a temporary postgresql * Fix more test cases * Prepare a proper DB for the scheduler full test * Fix t/ui/22-job_group_order.t by providing sort_order in fixtures * t/ui/13-admin.t: Postgresql sorts RAID at the end * Sort table settings by key to have reliable tests * t/api/02-iso.t: Do not rely on hardcoded job number * Give WebSockets server its assets * Sort the previous jobs in worker table by ids * Skip all tests requiring a database * Test fixtures: restart the postgresql sequence * Fix t/17-build_tagging.t not to depend on Sqlite specifics * ui/04-api_keys.t: Don't rely on ids in fixtures * 14-grutasks: don't rely on DB sort order * Drop sqlite3 support * branding: Update SLE staging links (#1523) * Use log_info for worker activities (#1519) * branding: openSUSE: Add caasp (different bugzilla naming variant) (#1522) * Tidy the sources * Do not cast to int worker_status timer * Propagate error on IPC dispatch call * Use WORKERS_CHECKER_THRESHOLD to detect dead workers as well * Remove printing to debug the result of safe_call * Reduce OpenQA tests verbosity * limit_assets: don't wipe assets for PENDING jobs (#1518) * Allow same group name within different parent groups (#1507) * Apply log level correctly (#1516) * Check if job is valid before starting working on it. * Upload workers log to the webUI (#1502) * Only test basic tests on perl 5.26 (#1512) * Remove IDs from fixtures if they are in sequence (#1513) * Move the $shared_dir to setup_share_dir * Print project directory upon worker's init failure * Fix documentation generation script * Avoid warnings during test runs (#1511)- Add local-db subpackage to create local postgresql database for ease of use- Update to version 4.5.1511814842.53907890: * Make barrier option to automatically destroy the barrier if jobs belonging to it fails (#1498) * Improve web editor (#1510) * Remove outdated imports of JSON module (#1509) * Use Cpanel::JSON::XS in step/edit.html (#1508)- Update to version 4.5.1511709996.0670f622: * Use OPENQA_TEST_IPC for 12-admin-workers.t (#1506) * Poll status less often not to stress the server * Adapt coverage threshold * Mark workers dead when they disconnect from WS * Make full stack test more robust by adding more assertions * /tests/overview: Change sorting to show all machine variants together (#1489) * Use Cpanel::JSON::XS directly to avoid overwrite mess * Extend apparmor permissions for /usr/share/openqa/lib/** (#1504) * Test multiple perl versions in travis CI * Ignore specific 404 errors in the javascript console * Click away the feature tour in full stack * Make 21-admin-needles more robust * Clean VHD and VHDX images in cache * Treat VHD and VHDX images as HDD assets * Replace logrotate config with what we use in production (#1500) * Fix function names in ui tests * Rename PhantomTest to SeleniumTest * Remove support/work arounds for phantomjs * Use headless chrome instead of phantomjs * Use proper name and directory for PhantomTest * Update Cache documentation (#1495) * Make path of changelog configurable via config file * Add changelog for web UI * Avoid creating useless commits (#1497) * Add _ONLY_OBSOLETE_SAME_BUILD, _NOOBSOLETEBUILD -> _NO_OBSOLETE * Multiple loggings channels * Log Uniformization * Make sure /tests/overview shows test suite descriptions for all machines * Display job name on dependencies list * Worker: use population as scale_factor * Add websocket server test to cover errors when updating worker seen status and population update * Make threshold for worker_checker a constant, and tight the bond between the status timer and the timer for checking inactive workers * Use in_range from OpenQA::Utils in scheduler-full test * Best effort to let know worker population of different WebUIs * Move worker configuration reading to Worker::Common, making it easier to test and slim down the startup script * Remove already superseded default inactivity timeout from script/openqa-websockets * Remove keepalive message and introduce dynamic slot allocation for worker_status timer- adapt build dependencies to Cpanel::JSON::XS- replace phantomjs with chromium/chromedriver- Update to version 4.5.1509097496.8b8e8e20: * Prevent use of job_module_stats when showing jobs of worker * Fix sorting in table for previous jobs of worker * Remove all remaining uses of job_module_stats * Fix accessing job module stat 'unk' * Worker: Wrap asset_lookup() query in eval/if * Add API description for worker route * docs: Prevent parsing of '#' as markup * Allow admins to fetch the worker status by json * Fix name of the SUSE company * Prevent showing duplicated bugrefs twice * Fixing the package to build with newer assetpack (#1485) * Mention repos for Leap 42.3- Update to version 4.5.1508961373.6d2e83a0: * Scheduler: Add option to deal with slow workers that could be detected as dead. * Scheduler: Handle stop/restart cleanly * Respect log level configuration even when no log file is set (#1413) * More prominent color for closed bug references, old ones for open bugs (#1412) * Scheduler: implement retrials before declaring a job not accepted by a worker * Scheduler: add option to wakeup when we receive new jobs * Adjust full-stack tests scheduler default values * API/Worker: Get updates from job that match the worker id * Revert "Permit a dropped test coverage for now" as we are covered now * Worker: send worker_id when updating setup status * Job: Return error messages when worker doesn't send id * docs: Move label and bugrefs doc from wiki * docs: Add description of closed issue visualization * Use OPENQA_TEST_IPC in more tests due to scheduler changes * Scheduler: add code comments, refactorize and simplify code * Include '.' in INC for 24-feature-tour.t (#1420) * Scheduler: Remove EXPBACKOFF option and default to binary * Scheduler: Remove shuffle option. Is new default now, if we don't shuffle free workers we might go into starvation since they can keep failing * Scheduler: schedule() now returns allocated jobs and failures * Websockets: distinct error while dispatching job over ws * Improve error if a worker cannot connect to a WebSocket (#1416) * Conflict no-cleanup worker with normal worker (#1417) * Scheduler: Add basic unit testing * Scheduler: remove retrials and workers cache * Scheduler: use another state for jobs that have been assigned but are not yet in running status * Worker/Websockets: Make worker send status messages, and websockets reaping jobs that are not matching states * Websockets: print details of messages received from unknown workers * Websockets: remove (now) misleading debug message * Worker: do not die in the loop when current_host is not set * Scheduler test: simulate unstable workers * Workers: collect error if we fail dispatching commands to websocket dbus service * Scheduler/WebSockets/Worker: update job state to running from worker responses * Scheduler: now job allocation checks are not needed anymore inside scheduler * WebSockets: use set_running when updating job status (#1426) * Add support for custom links in footer * Fix staging link for CaaSP * Worker: increase keepalive timer * Seperate footer links from footer legal part * Add 'report Bug' for OpenQA product * Scheduler: sleep when we have nothing to do * Adapt scheduler tests to new sleep mode * WebSockets: reset to schedule state if we detect stale assigned jobs * Websockets: set default appname - which is used in error templates * Websocket: wrap database transactions in try catch so we can debug dbus service errors * Create base for fullscreen mode on group overview site * Include just show latest comment feature * Add disable comments feature in group overview * Add fullscreen to group overview and rewind comments part * Fix uninitialized value error and typos * Add autorefresh for builds and comments in group overview * Make auto refresh rate adjustable * Fix sporadic problem of systemd service start (poo#21004) (#1430) * Add description part for api routes at not_found page * Add a quick tour to openQA * Enable feature tour by changing database entry * Adjust ui test * Replace old DEPENDENCIES.txt references to cpanfile (#1423) * Templates: improve error handling in running_table (#1427) * Utils: Flush log output when we don't use Mojo::Log * WebSockets: finish connection when we don't have the worker registered * Workers: print debug output when connection is closed * WebSockets: enable required plugin on setup * Add tests for WebSocket disconnection handling * Add missing figure for closed ticket labels * Prevent use of job_module_stats when showing jobs of worker * Fix sorting in table for previous jobs of worker * Remove all remaining uses of job_module_stats * Fix accessing job module stat 'unk' * Treat ASSIGNED state as in execution * Subscribe start_job/stop_job events before we call send on websocket connection * Worker: reset internal state if we fail contacting the WebUI * Worker: Do not cleanup if pooldir is not set * Add support for multiple distri/version/group on /tests/overview * Websocket: Do not kill connections due to inactivity (meant mostly for browsers) * Dereference hashrefs before using 'keys' * Check whether description available before printing it * Cover the websocket server to avoid uncovered changes with CI builds * Include all relevant distros when linking overview * Use Mojo::Log for logging worker's output * Refactor worker status messages * Cover main OpenQA.pm, which was left with low coverage * Changes the log level to debug if --debug or --verbose is applied. Default is info level. * Fix use of undefined $email by using default icon instead (#1444) * Sync needles when caching is enabled * Use cache_tests from isotovideo engine * Better reflect job execution through states * Replace tabs with spaces and fix indentation. * Ensure CSS classes are used for Datatables * Add setup state to be polled and tidy up * Test 404 error page * Ensure use of symlinked applications for clone_job/dump_templates/load_templates * Trim less text in overview tables by using CSS instead of custom code * Disable live log/terminal by default * Untie live stream from live log * Make details the default tab also for running jobs * Ensure streams for live view are only consumed when tab is active * Allow info/debug messages in javascript_console_is_empty * Switch to live view by default in full stack test * Move read_test_modules to OpenQA::Utils * Add support for getting test results as json * Fix missing openQA::Client import introduced in 7c91a962 * Improve documentation for contributors * Log IPC errors * make Makefile non-bash environment friendly (#1465) * Add log function log_fatal * Allow filtering by result on 'All tests' page * Add query param for filtering 'All tests' table by result * Adapt bugzilla link to new SLE15 installer (#1466) * Fix filtering by result on 'All tests' page for some results * Test enabling result filter on 'All Tests' page via query * Fix regression introduced in https://github.com/os-autoinst/openQA/pull/1460 * Ignore .pc directory for perltidy (#1472) * Fix missing log_warning import on IPC.pm (#1473) * Cherry pick perltidy fixes from @henrich (#1475) * docs: Add hint about performance impact of VM snapshots (#1474) * Create ResourceAllocator DBus service * Split fullstack tests in different build matrix * Create exists_worker in OpenQA::Utils * Use schema from ResourceAllocator instance, refactor to use exists_worker * Adjust scheduler full tests after the split * OpenQA::ServerStartup: set also appropriate handle when setting up logging, since now FakeApp has STDOUT as default handle * Add safe_call to OpenQA::Utils * Switching to safe_call in ResourceAllocator * Make job update take into account of ASSIGNED and SETUP state * Worker: Reset state also when we loose current_host (due to failure contacting webserver) * Return 0 by default on worker's try_lock_asset() * Worker: Wrap asset_lookup() query in eval/if * Make heartbeat timeout for rabbitmq configurable (#1479) * Add API description for worker route * docs: Prevent parsing of '#' as markup * Allow admins to fetch the worker status by json * Fix name of the SUSE company * Prevent showing duplicated bugrefs twice- Provide clone-job, dump-templates, load-templates as symlinks in bin-path- Update to version 4.5.1501694730.25c355a8: * OpenQA::WebAPI::Controller::API::V1::Job: catch errors and return no jobs when we fail to contact dbus * Schedule jobs without polling * Make workers only accept one job from one webui - also check if we dispatched the job correctly to the worker * Update worker seen status from ws keepalives if thought dead * Set to running just when we are sure the job got dispatched to the worker * Improve error handling when we fail resetting scheduling state * Do not use in the workers next_tick anymore when accepting the job * Fix the keep alive timer handling in worker * We need more timers to be host specific * Scheduler: Be more strict with job states * Apache: SetEnv proxy-nokeepalive 1 * Permit a dropped test coverage for now * Scheduler: further optimizations and refinements * Get rid of notify_workers, and from the signal that was associated to it in the dbus scheduler service * Remove job grab from the API * Fix bugzilla links for CaaSP (#1395)- Update to version 4.4.1501432550.4c72a17b: * Some more permissions required for power8 worker (#1405) * schema: Add job module statistics to jobs table * Use job module stats from jobs table in 'All Tests' * Add . to INC for tests that use local modules (perl 5.26 doesn't) (#1406) * Update job module stats when module inserted/updated * Fix typo in networking documentation (#1407) * Add the job module statistics to the migration code (#1409) * SLE 'LeanOS' corresponds to 'Server' on bugzilla.suse.com (#1393) * Dynamic feature infos for users (#1388)- Update to version 4.4.1499449966.bd9ee915: * Replace die with log_error * Avoid edge case of asset sizes being incorrect. * Cache: resolve to current host when host URL cannot be resolved (#1352) * job templates: Fix removing options when finalizing row * job templates: Fix check for test selection when finalizing * job templates: Improve coding style in post * Fix bullet points in dashboard (#1356) * Provide a default (0) to max_rss_limit so that the config actually works (#1358) * Cache: Make each log message uniquely identifiable * Allow plugins to load specific configurations * Remove auth_config from OpenQA::WebAPI::Auth::* * Add fullscreen base into project * Add form entry for fullscreen view * Fix navbar to not hide if dropdown selected * Change help popover description in filtersection * Correct main controller and index page * Add error message for missing webserver * Also recognize kde bugrefs in Utils.pm (#1366) * Add link to CaaSP staging (#1360) * Also recognize fdo bugrefs in Utils.pm (#1367) * Database change for bug status * Improve assets log messages (#1365) * Documentation for GRE (#1369) * Extend sorting by time to parent group overview (#1362) * Add workaround for PhantomJS in needle edit test * Fix typo workround -> workaround * Prevent bugref_to_href replacement at end of title (#1372) * Refactor rendering response for server-side DataTable * Refactor server-side code for audit log * Refactor server-side code for previous jobs of worker * Test takeover of exclude areas in needle editor * Fix wrong HTML, input must not contain text * Show exclude areas in needle diff * Show exclude areas in needle editor always * Document areas * correct typo (#1379) * Enable INTEGRATION_TESTS (#1384) * Retrigger download retry for incomplete downloads * Fix perl structure printed in the logs * Check when asset has been removed by hand * Changing from using pure perl to Mojo::Asset::File * Allow the cache to use a configurable sleep time * Unlock the asset before the next download retry * Add unit test for cache * Add 25-cache.t to testrules.yml * Set sleep_time to 5 again * Remove unnecesary code from cache tests * Refactor server handling to avoid race conditions * Improve handling of logs and directories * Improve cache tests * Improve server_start and port handling * Remove unnecesary calls to Mojo::Asset::File * Fix test directory to share/tests (#1383) * Sort the failed modules on their timestamp not by their name (#1378) * Add test for "Server unavailable" * Inform user when OpenID login fails with no message from OpenID provider (#1380) * Increase the grace timeout to have uploads finish (#1385) * Notify the workers only when there are no errors * Create jobs from settings within a transaction * Increase information in logs if a wrong secret is used (#1374) * Avoid OpenID login to clutter log files (#1386)- Exclude not supported and not building i586 in spec file rather than project config - Use internal macro for %setup - Cleanup description and doc section- disable tests on tumbleweed as they hang - need to debug this regression first- Update to version 4.4.1496302635.5e9b3f9: * Replace die with log_error * Avoid edge case of asset sizes being incorrect. * Cache: resolve to current host when host URL cannot be resolved (#1352) * job templates: Fix removing options when finalizing row * job templates: Fix check for test selection when finalizing * job templates: Improve coding style in post * Fix bullet points in dashboard (#1356) * Provide a default (0) to max_rss_limit so that the config actually works (#1358) * Cache: Make each log message uniquely identifiable- Update to version 4.4.1496150882.49e14ecd: * Avoid OpenQA::IPC::ipc being called premetaure (#1185) * Add $prjdir prefix for relative filenames in Needles * Add option to change $prjdir on the fly * Adapt timers helpers for multi-hosts * Make api_call not to recurse into IOLoop, add callbacks * Adapt worker registration to multihost * Adapt jobs helpers to non recursive api_call and multihost * New multihost workers.ini * Per-host working directory support * Multihost commands parsing * Adapt worker tests for non-blocking api_call * Use OpenQA::Utils log functions in worker * Use share/factory directory instead of factory link * Replace dirs parsing by one liners * Remove dead code * Use testcasedir helper instead of removed static * Add some unit tests * Fix generate/packed-assets not to require dbus session (#1186) * Avoid 404 errors on scheduled jobs * Take 4 travis jobs as success * needle editor: Validate needles/tags in JavaScript (#1189) * Reduce the number of travis jobs (#1188) * Duplicate the job if the worker is terminated * Simplify selenium using code * Do not do any jsonfile path processing * Prevent uninit ws variable warning * Pass query params as params key for duplicate * Allow api_call to be called without callback * Change the Mojolicious version requirements (#1195) * Fix needle path check (#1196) * Fix the 12-needle-edit test to leave the data in place * Import log_error before using it * Introduce project share directory variable * Adapt test to use share directory * Switch test distro from pitux to tinycore (#1203) * Fix last remnants of global url and ua usage * Add image upload to full stack test * AMQP: Declare exchange passive and durable (#1202) * Fix an error when job result is "setup failure" * Prepend sharedir when looking for needles with relpath (#1205) * Add full stack test for setup failures * Fix 24-worker.t * Fix build lookup for single groups (poo#15988) (#1204) * Allow override of the usual setting precedence order (#1200) * Fix undefined warning for _stop_job_finish (#1207) * Shared worker documentation * Document referrer configuration and label:linked * Fix job_timeout timer not being removed after stop_job (#1209) * Add get_timer getter for worker timers query * Add tests if start_job set proper timers and stop_job removes them * Improve code preparing data for test overview * Synchronize 'TODO' filter with review badges * Add help popover for 'TODO' filter * Show help popover details link in new tab * Enhance jobs list in worker page (#1212) * docs: Ensure pool dir exists when starting worker manually (#1213) * Fix UI test skipping when modules not available (#1211) * Avoid creating duplicit dependencies (#1214) * Update documentation for a more obvious flow (#1218) * branding: Add casp reporting links (#1219) * Add notice to clone_job.pl help text (#1222) * Do correct DISTRI-VERSION case dir lookup * Fix AMQP SSL wide character JSON encoding (#1224) * Refactor test for scheduler dependencies (#1225) * Fix apparmor profile to let worker read from /other (#1228) * Update GettingStarted for some Fedora repo changes (#1229) * Fix time display regression introduced by f127654 * Harmonize running/scheduled time string also in UTC * Show absolute time in tests list for finished as well * Fix typo and make vhost config more readable * Update Pitfalls.asciidoc * Add pitfall for fake authentication method * docs: Correct asciidoc syntax for pool instance table * clone_job.pl: Display description with examples on '-h', too * Update create_admin script * docs: Improve language of 'using snapshots' section * Fix synchronization of TODO with badges * Add link from test details to assigned worker * Fix bugzilla links as CASP was renamed to CaaSP * docs: Delete reference to inactive stable repo (#1230) * needle editor: Fix errors appearing in JS console * needle editor: Show new tags in own line * needle editor: Display all tags in the same way * Allow configuration of how builds are sorted in web UI * Add id to comments over API to allow referencing * Fix needle editor when taking matches is disabled * Fix openqa_web docker instance running * Update Dockerfile to host openQA on Leap 42.2 * Change deprecated "MAINTAINER" instruction * Add instruction "LABEL version" * Use the default openID provider * docker: Remove pool volume unused by webui * Fix error when running the worker container * Fix dockerfile for webui * Fix dockerfile for workers * Update README.md for docker section * Document running selenium UI tests (under Leap) (#1250) * Make needle edit test case less specific * Prevent double machine tag output in 02-iso.t * Add option for 'isos post' route to deprioritize old builds rather than obsolete * needle editor: Format new tags bold * needle editor: Prevent adding empty tag * docs: Add documentation for 'triggering tests' * Harden loading of auth modules with whitespaces (#1253) * Allow redirects for clone_job requests (eg to ssl) * Allow annonymous read access to operator tables * Fix failing admin test * Fix bugzilla reporting links for CaaSP * [docs]: added documentation about setting up ssl (#1257) * client script: Don't encode URL twice (#1260) * Allow api_call to be called without callback * Add Cache * Enable caching on the worker * Improve Cache package and tidy up the code * Fix cache.db problems * Ensure the asset has the proper name * Add TESTPOOLSERVER variable for caching * Refactor to allow CACHEDIRECTORY to replace share directory * Simplify api_call nesting * Fix the ISO expansion for local assets * Let's set reasonable goal for codecov * Work on testing cache * Do not exclude .git from syncing * Harmonize the keys used for assets * Add newlines to log output * Improve cache directory * Catch errors on cache downloads * Fix perlcritic errors * We need Mojolicious 7.24 for max_response_size * Implement download_asset so we can actually test caching it * Remove -E option from flock - we do not check the exit status * Make sure assets in pool are handled correctly * Add support for multiple group, no build on /tests/overview * docs: Add hint about multiple groups, no build * Call rsync of tests in a child process and notify webui * Move OpenQA::Cache to Worker namespace * Trying to make workers.ini more descriptive * docs: Add explanation for job priority (#1262) * Schedule worker reregistration in case of api-failure * Add more logging to job notifications * Use host_port when parsing URL * Prevent various timer loops * Do job cleanup even in case of api failure * Ensure uploaded assets have correct perms (#1263) * Change $testpoolserver only if passed as option (#1264) * Set read permissions for downloaded assets (#1267) * Ignore module flag 'important' (#1266) * product log: Don't show actions when not at least operator * Make assets, workers and API help publicly available * needle editor: Fix inserting tag via middle mouse button (#1269) * Fix restarting jobs from worker page (#1272) * Merge 'Status' and 'Connected' columns in workers overview (#1273) * Add anchor for build results on index page (#1265) * Lower down quantity of automatic carryover * Add environmental variable to skip online tests * Be specific which text element we want to test * Fix hardcoded cache.db file * Fix assets not being removed * Force read_db after a write * Add subtest for Cache * Improve log output for label carryover * Ensure that label carryover is done correctly * Fix the recursive $db_file appending (#1279) * Tidy the code after last hot fix * Relax the regex for build values in tag: comments again * Don't obsolete jobs for VERSION-BUILD tagged builds * needle editor: Distinguish tag/area selection in check * needle editor: Test verification when not copying areas * Improve little triangle sign below a screenshot (#1285) * Add ignores for db.lock and phantomjs log (#1287) * Correct 'softfailed' reference to passed (obsoleted) * Ensure consistent naming of 'failed'+'softfailed' in all occurrences * Fix overriden shared $dir worker registration (#1291) * Add a Contributing section * Add explicitly index and current.pdf * Stop distinguishing softfailures * Fix typo 'parallel' (#1290) * Adjust grid wrapping in build tables (#1286) * Use space indendation consistently in javascript files * Delete w/s at EOL in javascript files * Add 'build-results' anchor for group-overview page, too (#1281) * Replace old 'important' behaviour with 'ignore_failure' (#1297) * Give failed screenshots back the red border (#1300) * Adjust test module flags on Details page for ignore_failure (#1299) * Document the 'norollback' flag in WritingTests (#1298) * Better error msg for openqa client (#1303) * Improve 'Downloading failed' message (#1302) * Refactor 05-scheduler-dependencies.t (#1306) * Shorten build-numbers with dots to prevent overlapping (#1305) * Fix "only tagged" for tags with version (#1296) * Do not upload empty serial_terminal.txt (#1274) * Makefile: Allow to skip checkstyle (#1304) * Fix missing space in log debug message (#1307) * Register job assets even if one of the assets need to be skipped (#1310) * Test whether admin table displays needles which never matched * Show needles in admin table which never matched * Improve logging in case of upload failure (#1309) * Improve product fixtures to prevent dependency warnings * Handle wrong/missing job dependencies appropriately * clone_job.pl: Print URL of generated job for easy access (#1313) * Allow lscpu to read all of /proc - but only lscpu (#1315) * clone_job.pl: Skip downloading generated assets in all cases (#1314) * Fix invalid HTML * Don't use name attribute on div element for markdown * Fix indentation in overview.scss * Fix showing long needle name in hover popup * Prevent DB exception when adding tests in job templates (#1318) * Remove duplicate "current step" (#1319) * Refactor Cache.pm to use SQLite instead of json * Update cache full stack test * Fix minor race condition * Increase test coverage * Use cache.sqlite instead of cache.db * Detect and set current version of openQA, display it in the footer (#1316) * Add service file for workers with "no cleanup" (#1320) * Prevent tags from getting cut by long build numbers (#1321) * clone_job.pl: Fix generated job URL to be the receiving host (#1326) * Unlink existing asset symlinks on syncing (#1323) * Move OpenQA::Test::* modules to test directory (#1325) * Improve admin test (#1327) * Fix makefile syntax (#1328) * Avoid line break after h4 in midori and co (#1333) * Implement a config option to restart workers that grew too big (#1339) * Allow cache to handle 5XX errors and retry 5 times (#1337) * Inspect failed modules in /tests/overview (#1335) * Fix print() on closed filehandle $log (#1334) * Replace file_content() with Mojo::File (#1331) * Disable printing time when logging to STDERR * Add more tests to configuration parsing * Fix bugzilla reporting link for SLE-12-SP1 (#1332) * Make 'TEST' the only proper mandatory test setting (#1126) * Avoid unit test to write on source code directory (#1341) * Fix breakage introduced by https://github.com/os-autoinst/openQA/commit/659464d19b02e541f2529bd313c39681c71adfcf (#1343) * Add scheduler test to cover OpenQA::Scheduler::FakeApp (#1345) * Fix documentation publishing on gh-pages * Make sure a valid up-to-date license in all files * Fix doc generation - testapi (#1347) * Add unit test to fix codecov "uncovered changes" (#1348) * Add direct link to video position (poo#19300) (#1342) * Avoid github and use a CDN for chosen.jquery (#1350) * Correct Typo in Firewall config file (#1351)- Prerequire needed group nogroup- Also provide systemd services for workers with '--no-cleanup'- Update to version 4.4.1495052041.c6a5bc94: * Remove duplicate "current step" (#1319) * Fix minor race condition * Increase test coverage * Use cache.sqlite instead of cache.db * Detect and set current version of openQA, display it in the footer (#1316) * Add service file for workers with "no cleanup" (#1320) * Prevent tags from getting cut by long build numbers (#1321) * clone_job.pl: Fix generated job URL to be the receiving host (#1326) * Unlink existing asset symlinks on syncing (#1323) * Move OpenQA::Test::* modules to test directory (#1325)- bump mojo requirement- Update to version 4.4.1489864450.251306a: * Make sure assets in pool are handled correctly * Call rsync of tests in a child process and notify webui * Move OpenQA::Cache to Worker namespace * Trying to make workers.ini more descriptive * docs: Add explanation for job priority (#1262) * Schedule worker reregistration in case of api-failure * Add more logging to job notifications * Use host_port when parsing URL * Prevent various timer loops * Do job cleanup even in case of api failure- Add the openQA.changes file to be distributed as public/Changes on the web-ui- Update to version 4.4.1484732113.4fb90841: * Document filtering * Fix documentation generation (#1177) * Fix corner buttons (#1176) * utils: Add kernel bugzilla bugref (#1175) * Do not run tests for GH_PUBLISH=true * Mojolicious 7.19 has broken SSL support - blacklist it * Switch to CDN for fontawesome * Fix missing images in documentation (#1180) * Do not even run the coverage target if GH_PUBLISH is true (#1183)- bump requirements to Mojo and AssetPack- add Sort::Version requirement- Update to version 4.4.1484213177.5ef2a6e4: * Add css class to click on action (#1147) * client: Support sending JSON data (#1150) * Test both phantomjs and chrome on travis * Exclude AssetPack >= 1.30 - it will break fonts * Sort build versions correctly (#1136) * Add optional profiling support using Mojolicious::Plugin::NYTProf (#1153) * Add tests for client script * Don't use config file as database lock file (#1157) * Fix build of the package: we need a db directory to lock now- remove YAML and Socket::IO::INET6 dependencies- Update to version 4.4.1482329765.866bba8: * Improve buttons in interactive mode * Fix command API route * Synchronize INTERACTIVE and STOP_WAITFORNEEDLE_REQUESTED * Change the format for developing with snapshots (#1093) * Fix sorting of needle table (#1092) * Add short route to individual job results '/t:testid:' (#1089) * doc: fix typo (#1096) * Fix AMQP reconnect timeout config var (#1098) * Add AMQP connection error msg to log (#1099)- add new require on time::parsedate- Update to version 4.4.1481828911.8296cb4: * Update worker apparmor file from production worker log (#1078) * Add brc (Red Hat Bugzilla) and bgo (GNOME Bugzilla) labels (#1083) * Auditlog: display event time on hoover * Auditlog: add page and rows query options * Switch audit log to server side processing * Use system user to create system events * Add new Time modules dependencies * Add page displaying single event * Improve search query parser to support multi-word queries * Don't bother with event data shortening- add bcond_with tests to run phantomjs optionally- Update to version 4.4.1481216307.2d2b18a: * worker: Prevent use of uninitialized value (#1066) * Copy over policies from os-autoinst * Fix usage of qw(SINGLE_VALUE) in use statements * Rework websocket server (#1057) * client: Respect --json also in case of an error (#1068) * client: Set 'Accept'-header in any case (#1070) * Return 404 on status update for job without worker * worker: Abort job if considered dead by web UI * Improve misleading comment * Comment events: Drop unneeded fedmsg conditional, include id (#1065) * Improve log message when job considered dead (#1075) * Disable carry-over for job 'labels' to support new use cases (#1071)- Do not package removed files script/migrate_images and backlog- Update to version 4.4.1479741639.90bdf0f: * external_reporting: Fix differing header level in description (#1012) * Add test for parents on index page and parent group overview (#1015) * Show build tags on parent-level (#1018) * Add a 120 column limit to .perltidyrc (#1017) * Fix a few formatting mistakes and remove repetitive method calls (#1020) * docs: Update openSUSE repos to current supported (#1021) * Fix URLs in dashboard when version/distri differ (#1024) * Show submenus on click (#1025) * Update bootstrap to 3.3.7 * Wait a bit in tests if there is an ajax call- update cache for bootstrap-submenu- Update to version 4.4.1478599354.3d748dc: * Fix job group overview without description (#957) * Don't free worker before artefacts are uploaded (POO #14378) (#958) * Improve override needle test (#962) * Use textareas in test suite editor (#961) * Fix worker error reporting when asset cannot be found (#963) * Make .json easier to use and include more data (#965) * Add API routes for job group parents (#952) * Hide empty job groups from index page (#967) * Optionaly inherit command line variables in parent (#951) * Add gzip and rsync to worker's AppArmor (#968) * Only store md5_dirname if the image is in /images (#959) * Fix malformed HTML * Fix malformed HTML (#970) * Prepare CACHEDIRECTORY example in workers.ini and provide profile (#969) * Implement Drag & Drop group editor * Add support for github 'bugrefs' * t: Delete unused (disabled) 'use Test::Output' * t: Ensure proper output catching * Improve usability of job group property editor * Replace all '...' with '…' in web UI * Add assert_script_run description * Allow '@' in asset name (#979) * Fix list of needle tags in needle info popover (#977) * Allow worker profile to access fixed assets * Fix download of fixed assets from web UI * Reindent 01-jobs fixtures * Use url helpers to map the asset path to URL * Add help text using popovers, title and placeholder (#983) * Add missing argument for hmac timestamp validation * Give tests without fails a no-TODO tag (#960) * Trying to make peace with adamw over locate_asset * Add a repository as test fixture to test subpaths * Show tags on index page * Add API auth tests * Improve help popups * isotovideo: Remove redundant '|| undef' (#989) * branding: openqa.suse.de: Update staging to current SP3 (#988) * Show parent groups in navbar (#974)- have openqa_worker own /var/lib/openqa/cache- Update to version 4.4.1477579540.21d4009: * Use textareas in test suite editor (#961) * Fix worker error reporting when asset cannot be found (#963) * Make .json easier to use and include more data (#965) * Add API routes for job group parents (#952) * Hide empty job groups from index page (#967) * Optionaly inherit command line variables in parent (#951) * Add gzip and rsync to worker's AppArmor (#968) * Only store md5_dirname if the image is in /images (#959) * Fix malformed HTML (#970) * Prepare CACHEDIRECTORY example in workers.ini and provide profile (#969)- Update to version 4.4.1477110901.763fe71: * Step controller: split init into 2 functions * Fix coverage skipping files with 't/' in path * Test source view from running * Treat #details tab as all the others to fix back button * Add test for switching tabs in tests result view * Some fixes for the new results / running page * Fix SQL query to query important jobs * docs: Update OBS references * Upgrade to Leap 42.1, and fix apache2 starting problem * Live view: simplify drawImage * Be way more careful with history manipulation on results page * Treat # and '' the same for history management * Allow sha1sum for os-autoinst:2144a20c * Allow git for os-autoinst:d29266f * clone_job.pl: Add option '--skip-download' * Give the user better hints on what we expect for the expiry date * Do not create a link_post for reschedule isos * Use the proper API to get the data of the selected row not the first row * Replace the broken PNGed SVG with the real one * Talk to os-autoinst through HTTP instead of the file system * Replace document.ready with $(fn) * Fix interactive buttons * Fix upload of images during needinput * Make sure the worker stops at signals * Fix spelling of existent * Add web UI controls to select 20/50/100/400 previous results * limit_assets: when sizelimit is exceeded, remove more * Be more graceful when stopping the backend * Always set a t_finished to now if the job has a final state * Sort the finished jobs by their finished time * Change the order of the tests in the list test * Set a t_finished time in fixtures to have predefined order of finished jobs * Sort the scheduled jobs based on time * Sort the running jobs by Start time * Benefit from the hashsum calculation for our icons too * Remove pauseplay class and image - no longer used * Add more icons to assets and remove what's left in public/images * Remove dead file * Add custom whitespace squish * Use manual whitespace trimming after squish was removed from Mojo7 * Mojo7 removed Mojo::URL::authority, use host_port instead * Add SUSE internal branding with more links * Refresh running modules in #details view * Deal with race conditions when refreshing #details * Create missing results tbl on #details * Reload broken thumbnails on test #details * Correct description for use of OPENQA_CONFIG * Fix build tagging when @ is used * Clarify comment in the dashboard test * Use correct job result in openqa events * Add command_enqueue to worker model as send_command * Export log_error helper in OpenQA::Utils * Add job_set_done and job_cancel to Jobs module and result set * Adapt tests for moved job_set_done and job_cancel * Remove scheduler dbus exports and subs job_set_done and cancel * Remove command_enqueue from scheduler and dbus * Check for user when emitting event * Log iso_cancel for canceled jobs due to new iso and allow job_cancel_by_settings event * Fix typo in worker check during job duplication * Fix counting of cancelled jobs * Update Jobs::cancel to accept $obsoleted option * Use ws_call using well known format to send messages to WS server * Sync property parsing to workers format * Make softfailed a proper final result * Add tests for showing softfails in prev results * Give user_restarted an explicit colour * Remove MySQL from deployments, we never test migrations or deployments * Resort to raw SQL instead of avoiding the schema and still use dbic * Fix DB access error when skipping scheduled children * Test both children skipping and stopping * Accept softfail result as passed * Add test scenarios for job result calculating * apparmor: Add missing /usr/lib/git/git * Make softfailed tests show the right colour * Make non-important failures at least a general softfail * Calculate softfailed at the very end to fix one specific case * Add more tests for corner cases * Carry over also for incomplete and softfailed * Add V1 API for comments * Use API for comments in web UI * Add comments without reloading page * Only redirect to running tab when no # is in url * Clear url hash on test step result preview close * Test for url hash cleanup after preview close * Fix incorrect 21-admin-needles test * Fix calculate_result (again): $overall should cover all * Improve error handling of comment API * Prevent needle editor flickering (progress #12984) * Enforce build order for group overview in tests * Remove unneeded functions of old comment API * Add 'latest' query route * Remove history for step navigations * Replace job_set_done by $job->done in dead job handler * Move dead worker check to websocket server * Add test for dead worker detection * Make build in previous view a link to tests overview * Add test for 'todo=1' query param * t: Fix typo in t/ui/18-tests-details.t * Fix deadworker timer function reference * Fix complex_query and its usage in last route * Render links on 'latest' route directly instead of redirect * templates: Simplify single line statements * Make title for 'previous results' a proper heading * t: 12-needle-edit.t: Try to find overwrite warning more often (poo#12980) * previous: Move current limit where other options are * Add web UI controls to select more builds in group_overview * Add web UI controls to filter only tagged or all builds * Fix workaround label * Fix taking over tags from a workaround needle * worker: Remove tons of work arounds and quirks in upload * Allow cksum to be called in the worker * Upload assets as temporary files and only rename after chksum check * Fix typo * Prevent use of non-existing route in upload_status * templates: live: Fix url_for over 'latest' route * Disable auto-duplication of jobs (poo#13042) * Avoid shift * Test handling deleted needles in needle editor * Ignore deleted needles when showing needle editor * Show warning about deleted/bad needles (needle editor) * Fix admin layout for test suites with long keys Currently test suites slenkins-tests-ceph-control and s390_hsi-l2 * Make apache follow symlinks for assets directory * Fix '0' duration for previous jobs on running or scheduled job * Add link to latest job in each scenario * Allow pinning comments as group description * Fix jobs templates layout * Also filter 'machine' on latest * Vertically align progress bar with build number * Re-add boundary hack * Make 'latest' link more explicit * Do not quote identifiers, solves problem with uppercase column (#838) * use /var/lib/openqa/share/factory/iso path (#849) * Add 'bash' to be able to run 'CMD' (#850) * Add filter from in test overview (#852) * Draw needle match labels after match boxes (#851) * Add lock barriers (#845) * Show custom error pages (#831) * README: Update coveralls icon by .svg version (#853) * Add new job state (#848) * Remove old comment code (#856) * Run optipng on the worker while uploading images (#858) * Add filter for all states and results * Distinguish comment events * Show results and states dynamically * Test whether job still exists in reduce_result * Split Logging support out of WebAPI (#860) * Give the scheduler a home (#862) * Log status update without worker (#861) * dead worker check: use 15 secs not 10, better names, comments (#864) * Fix the stale job calculation for uploading jobs (#865) * Fix path in docs about migrating db schema * Show filter on top and display current filter * Avoid HMAC timestamp mismatch during large file upload (#871) * Give Websockets and Scheduler the home of the webapi (#870) * Label builds where all tests passed as reviewed * Dont grab twice (#874) * Prevent detecting occurrences like bsc#2436346bla as bugref * Replace URLs with the appropriate bugref pattern * Do not rely on WebAPI to find home - require and use an harmless class (#876) * Prevent multiple bug refs per comment to yield incorrect URLs * Add 'match' query parameter for index page * Add 'group' query parameter for index page * Add more faking to FakeApp - so restarting jobs works again (#880) * comment the home detection for scheduler/websockets better * Allow bugrefs being separated by any non-word chars * Fix used needle indication when needles are in folders * Merge match and group parameter * Use $FindBin::RealBin to resolve links for client script (#889) * Fix previous jobs showing up for different machine (#885) * Remove FIXMEs and disabled code in t/ui/15-comments.t (#888) * notify workers when job with chained children done (POO #13746) (#883) * Pass encoded URL filter parameter correctly (#890) * Reintegrate job duplicate (#875) * Mark worker alive for all kind of artefacts (#894) * Small schema change to add an index (#895) * Add IPC debug to websockets too to debug hangs (#896) * update apparmor profiles for ppc64le (#892) * Try harder to avoid long running pre-processing (#897) * Increase session expiration from 1 to 48 hours (#900) * Make ws_send_all WebSocket call not waiting for results (#902) * Avoid DBUS dead locks (#901) * Do not manually render anything on websocket creation (#903) * Prevent error message in log as 'scheduled' jobs are also 'inprogress' (#906) * Add scenario params to limit URLs for previous results (#893) * Handle links to bugs already formatted correctly (#905) * Improve documentation about PosgreSQL (#904) * Test time_limit_days query parameter (#907) * Fix comments test (#908) * Split the images directory even more (#739) * Add anchor links to comments (#909) * Move comments.css to sass reduce copy&paste (#910) * Readd the lost name of the thumb_nail route (#911) * Refactor computing build results (#898) * Show incomplete/skipped bugs, show tooltip on progress bars (#912) * Add link to openQA review (#899) * Fix vertical alignment of progress bars in tables (#917) * Show progress indication in admin needle table (#918) * Track image assets better (#919) * Fix deletion of multiple needles at once (#921) * fix downloading assets to different filename * Fix sorting in admin needle table (#924) * Add JSON representation of index and group overview (#922) * Add filter form for index page (#923) * Add /index.json route and test it together with overview.json (#925) * Fix /index.json route to pass the format (#926) * Fix softfailed results not showing in tests list (#930) * Fix group filter on index when param is empty (#933) * Fix group overview when no builds shown (#932) * t: Add 'Test::Warnings' where missing; Catch all warnings in tests again (#931) * Extend schema of JobGroups (#914) * Fix typos (#935) * reuse a constant boundary to make debugging failed uploads a little easier (#934) * Some code cleanup and more tests (#937) * Fix test result info spacing (#938) * fix loch ness monster bug in 14-grutasks.t (#941) * Load step and needles for failedmodules link async (#936) * Complete API for job groups (#942) * Auto reload result page on state sched -> running (#940) * Update Installing.asciidoc (#927) * Go to bugzilla.suse.com also for bnc# (#943) * Fix going to bugzilla.suse.com also for bnc# (#946) * Improve error handling when deleting needle (#939) * Fix needle deletion via Git (#948) * WebAPI: Delete comments stating the obvious + delete unused routes (#947) * Render bugref links in thumbnail text windows * Test render bugref links in thumbnail text windows * Show job group description (#950) * Add 'fixed' asset subdirectories for fixed assets (#928) (#945) * use locate_asset in register_assets_from_settings (#954) * Rejig compressed asset download, don't leave compressed files (#955) * Fix registration of downloaded assets (broken by 0905559b) (#953) * List needle tags + step icons (#944)- Add missing dependency perl(JSON) for openqa-client- Add missing dependencies perl(Data::Dump) and perl(Getopt::Long) for openqa-client- Add symlink /usr/bin/openqa-client to /usr/share/openqa/script/client- Ghost /var/lib/openqa/share in common subpackage * solves issues when updateing worker with mounted NFS- Remove perl(Perl::Critic) build requirement, added by mistake- Package /var/lib/openqa/share for common subpackage - Pakcage /var/lib/openqa/share/factory/[iso|hdd|other|..] for openQA package- Update base version to 4.4 to express new API of isotovideo- Update to version 4.3.1466434215.021a11c: * No longer export the worker_id as hash entry * Remove job_get from the scheduler * Simplify our theme - split the sass theme from the specifcs * Set an explicit colour on cancelled * Use default bootstrap table class for striping * Use the theme colour in tables * Have our bootstrap theme based on https://bootswatch.com/paper/ * Fix comments test - h2 is the new h1- Update to version 4.3.1464792258.155f49e: + t: Use helper function to wait for ajax + Extend iso post TEST parameter to support a list of tests (poo#10482) + Test for "let TEST parameter support a list of tests" + Enable brackets inside keys in client script + Add first approach for editable comments + Make comments for tests editable, too + Fix indentation of flash and wells on test page + Fix minor mistakes in editable comments + Reduce code-dublication in templates + Add first approach to test editable comments + Test comment editing in test results, too + Check for current user in commenting functions + Adjust t/17-labels_carry_over.t to reflect changes + Add css class no_hover to all /thumbs/ + Improve TEST parameter to support a list of tests + needlediff: Improve similarity text look + Use the nice audio icon (with the correct size) + Use nice icon for wait_serial + add a config setting to specify asset types not to link to + Increase left padding of status icons + Prevent error in group_overview with '-important' builds + Check database configuration with better user feedback + Fix broken string compare slipping into wait_serial icon change + Fix non-ASCII characters in comments + Allow admins to delete any comments + Fix showing editing buttons + Fix regexp for multiple parent jobs + Fix typo in 05-scheduler-restart-and-duplicate.t + Improve log message about 'setup failure' + Support tests/export to get a text format for archives + Fix re-enabling current user role + Adapt to latest AssetPack- add perl(Archive::Extract) dependency (needed by PR#627)- create openQA-client and openQA-doc subpackages - remove DB handling, it's done by openQA itself now- adapt to adam's changes- remove user migration code. no such systems should exist anymore- update base version to 4.3- add modify_needle script- add create_admin script- add perl(IPC::Run) dependency (needed by PR#414)- we don't need JSON::RPC::Legacy::Client- fix rpmlint warnings- add openqa-scheduler.service and openqa-websockets.service- fix fileliist for missing service files- package dbus system policy config - add perl(Net::DBus) to requires- add openqa-gru.service- keep /lib/openqa/share in webui and the symlink in -common. So a plain worker owns no files in share- add --from=geekotest to chown call just to be on the safe side- create a 2nd user and migrate the worker from geekotest to _openqa-worker- run preparetool from the right %post- fix missing ini files link and package new config dir (boo#919548)- Changed path for fetchneedles in post-install echo- don't move ini files in spec, Makefile does it now- include fetchneedles in file list- Update to version 4.1424166204.2ca1601: + Refactor worker scripts and add locking support + Pass worker port to os-autoinst and remove :jobid check + assets replaced /diskimages long ago - get rid of it + avoid "openQA: openQA" as title on main page - looks just silly + remove lib/OpenQA from include path - not needed + fix make test to be coverable and use it in .travis.yml + switch default auth_module to Fake + adding a test to test /admin/machines using phantomjs + skip the tests if phantomjs is not installed- we don't need MojoX::JSON::RPC- reduce mojo require to 5.60- require qemu in worker to get kvm group - add geekotest user to kvm group in worker's %post as qemu is not required by the web ui- fix requires- make it version 4 and require os-autoinst of version 4 too- add BuildRequire perl(Test::Compile)- pre-require openQA-common to make sure the user is created- we don't require png2theora any longer - and actually openQA-worker never did- fix upgrade scenario from openQA to openQA-common- split to openQA, openQA-common and openQA-worker packages- fix post script - remove buildroot macro- don't enable systemd files in %post!- Build as noarch package- require git-core as it's needed by testsuite- add perl(aliased) requirement- remove apache conf.d file- create log file in package- restart boot.apparmor on update- disable tidy test- recommend instead of require apparmor - restart apparmor on update- load_dbdata no longer needed- Load the data for the opensuse usage case into the database during %post- Added a dependency on perl(YAML) which is required by initdb and upgradedb- upgrade.pl was renamed to upgradedb- require perl(SQL::SplitStatement) - Initializes or upgrade the database as needed in %post- require perl(DBIx::Class::DeploymentHandler) - add /var/lib/openqa/cache to file list- use prove instead of make test- add GHC, Mojolicious::Plugin::CHI and Cache::Cache as dependency- rc symlinks for webui and workers- fix dependencies on JSON client- change version format in _service file- move the openqa.ini to /etc and mark it noreplace- require perl(LWP::Protocol::https) for openid support- bump version to 3 so we can differ it from v2 - require systemd and old JSON::RPC - needs porting- install apache templates and enable the systemd services- add perl(Image::Magick) requirement- add perl(Net::OpenID::Consumer) requirement- add perl(DateTime::Format::SQLite) requirement- add systemd macros- update the fileslist and the post script- require Date::Format and File::Copy::Recursive - update the filelist- require SQL::Translator- add openQA's apparmor profile usr.share.openqa.script.openqa- add perl(Config::IniFiles) as Requires - remove /etc/default/openqa- fix filelist and run testsuite- use remote services to hook- update to git head, add new requirement File::Copy::Recursive- use primary group "nogroup"- initial package/bin/sh/bin/sh/bin/sh/bin/shlamb16 1541875255  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`aacdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a4.5.1526033850.1ad9148d-lp150.2.3.14.5.1526033850.1ad9148d-lp150.2.3.1  !""#$%&'&(#)*+,,+-.#/012324#56788888888888888888888888888888888888889999999999999999999999999999998:::::::::::::::;<=>?>@@@@@@@@@@@@AAAAABBBBBBBBBBBBBBBBBBBBBBBBCCCCCCCCCCCCCCC DEFGGFHHFIIFJJFKKFLLFMMFNNFOOFPPFQQFRRFSSFTTFUUFVVFWWFXXEYZY[Y\\Y]]]]Y^Y__Y`YaYbYcYdYeYfYgYhYiYjYkYlYmYnYoYpYqYrYsYtYuDvwxwywzzw{w|w}w~~~wwwwD apache2vhosts.dopenqa-common.incopenqa-ssl.conf.templateopenqa.conf.templateapparmor.dusr.share.openqa.script.openqaorg.opensuse.openqa.conflogrotate.dopenqaopenqadatabase.iniopenqa.inisystemopenqa-gru.serviceopenqa-resource-allocator.serviceopenqa-scheduler.serviceopenqa-websockets.serviceopenqa-webui.servicercopenqa-grurcopenqa-resource-allocatorrcopenqa-schedulerrcopenqa-websocketsrcopenqa-webuiopenQAREADME.asciidocopenqaassetsassetpack.dbassetpack.defcacheadmin_groups-6cdb6822a2.min.jsadmin_needle-8341c3d15f.min.jsadmin_user-c434ec3c2a.min.jsadmin_worker-20448e44f5.min.jsadmintable-bb08263ec6.min.jsall-cf92156deb.min.cssassets-c84517b5ff.min.jsaudit_log-aabd7c6f33.min.jsbootstrap-12c49f4247.min.jsbootstrap-4-navbar-4245576e49.min.jsbootstrap-4-navbar-52bb9cdce1.min.cssbootstrap-tour-0429df1368.min.csscdn.datatables.net1.10.16cssdataTables.bootstrap4.cssjsdataTables.bootstrap4.jsjquery.dataTables.jscdnjs.cloudflare.comajaxlibschosen1.7.0chosen-sprite.pngchosen-sprite@2x.pngchosen.csschosen.jquery.jsjquery-ujs1.2.1rails.jspopper.js1.12.9umdpopper.jspopper.js.mapchosen-1b5d75fd60.min.csschosen.jquery-3d255efbd2.min.jscode.jquery.comjquery-3.3.1.jscodemirror-aa7c7a96d3.min.csscodemirror-fa2da57c92.min.jscodemirror_customization-32d2c7d0af.min.csscomments-fd70a709b5.min.jsdataTables.bootstrap4-0251e508b2.min.jsdataTables.bootstrap4-9b113d6424.min.cssdisable_animations-528b393467.min.jsfeature-54a516ee76.min.jsfilter_form-956ff8b3ba.min.jsfullscreen-cabe45067b.min.jsindex-faf8a76672.min.jsjob_templates-142a8d4c53.min.jsjquery-3.3.1-23d894426e.min.jsjquery.dataTables-5f1e9c27ae.min.jsjquery.timeago-8752fc496f.min.jskeyevent-590865e808.min.jsmaxcdn.bootstrapcdn.combootstrap4.0.0jsbootstrap.jsbootstrap.js.mapneedlediff-d5af99e8a7.min.jsneedleeditor-e88a660733.min.jsopenqa-11c05faa4e.cssopenqa-11c05faa4e.min.cssopenqa-ddb12c1440.min.jsoverview-b07e1ef210.min.jsperl-2698ecafac.min.jspopper-aeda8ebd73.min.jsrails-31ef5a6799.min.jsraw.githubusercontent.combootstrapthemescobootstrap-4-multi-dropdown-navbarbeta2.0cssbootstrap-4-navbar.cssjsbootstrap-4-navbar.jscodemirrorCodeMirror8097c7e75ce7ef0512debe9967d7568626106e53libcodemirror.csscodemirror.jsmodeperlperl.jssorich87bootstrap-tour6a1028fb562f9aa68c451f0901f8cfeb43cad140buildcssbootstrap-tour.cssjsbootstrap-tour.min.jstwbsbootstrapv4.1.1scss_alert.scss_badge.scss_breadcrumb.scss_button-group.scss_buttons.scss_card.scss_carousel.scss_close.scss_code.scss_custom-forms.scss_dropdown.scss_forms.scss_functions.scss_grid.scss_images.scss_input-group.scss_jumbotron.scss_list-group.scss_media.scss_mixins.scss_modal.scss_nav.scss_navbar.scss_pagination.scss_popover.scss_print.scss_progress.scss_reboot.scss_root.scss_tables.scss_tooltip.scss_transitions.scss_type.scss_utilities.scss_variables.scssbootstrap.scssmixins_alert.scss_background-variant.scss_badge.scss_border-radius.scss_box-shadow.scss_breakpoints.scss_buttons.scss_caret.scss_clearfix.scss_float.scss_forms.scss_gradients.scss_grid-framework.scss_grid.scss_hover.scss_image.scss_list-group.scss_lists.scss_nav-divider.scss_pagination.scss_reset-text.scss_resize.scss_screen-reader.scss_size.scss_table-row.scss_text-emphasis.scss_text-hide.scss_text-truncate.scss_transition.scss_visibility.scssutilities_align.scss_background.scss_borders.scss_clearfix.scss_display.scss_embed.scss_flex.scss_float.scss_position.scss_screenreaders.scss_shadows.scss_sizing.scss_spacing.scss_text.scss_visibility.scssrunning-b156b39ab7.min.jsshapes-90ed81a726.min.jstest_result-b2db3d0c9a.min.jstests-18f8be5de9.min.jstimeago.yarp.comjquery.timeago.jsuse.fontawesome.comreleasesv5.0.10cssall.csswebfontsfa-brands-400.eotfa-brands-400.svgfa-brands-400.ttffa-brands-400.woff2fa-regular-400.eotfa-regular-400.svgfa-regular-400.ttffa-regular-400.woff2fa-solid-900.eotfa-solid-900.svgfa-solid-900.ttffa-solid-900.woff2imagesaudio.svglogo-16.pnglogo.svgsuse.pngterminal.svgjavascriptsadmin_groups.jsadmin_needle.jsadmin_user.jsadmin_worker.jsadmintable.jsassets.jsaudit_log.jscomments.jsdisable_animations.jsfeature.jsfilter_form.jsfullscreen.jsindex.jsjob_templates.jskeyevent.jsneedlediff.jsneedleeditor.jsopenqa.jsoverview.jsrunning.jsscheduler.jsshapes.jstest_result.jstests.jsstylesheetsadmin-pages.scssbootswatch_litera_theme.scsscodemirror_customization.csscomments.scsscropper.cssdashboard.scssforms.scssnavigation.scssopenqa.scssopenqa_theme.scssoverall.scssoverview.scssresult_preview.scsstables.scsstest-details.scssdbicdhPostgreSQLdeploy46001-auto-__VERSION.sql001-auto.sql47001-auto-__VERSION.sql001-auto.sql48001-auto-__VERSION.sql001-auto.sql49001-auto-__VERSION.sql001-auto.sql50001-auto-__VERSION.sql001-auto.sql51001-auto-__VERSION.sql001-auto.sql52001-auto-__VERSION.sql001-auto.sql53001-auto-__VERSION.sql001-auto.sql54001-auto-__VERSION.sql001-auto.sql55001-auto-__VERSION.sql001-auto.sql56001-auto-__VERSION.sql001-auto.sql57001-auto-__VERSION.sql001-auto.sql58001-auto-__VERSION.sql001-auto.sql59001-auto-__VERSION.sql001-auto.sql60001-auto-__VERSION.sql001-auto.sql61001-auto-__VERSION.sql001-auto.sql62001-auto-__VERSION.sql001-auto.sql63001-auto-__VERSION.sql001-auto.sqlupgrade27-28001-auto.sql36-37001-auto.sql37-38001-auto.sql003-drop_worker_from_jobs.sql38-39001-drop-test.sql002-add-important-settings.sql005-add-index.sql006-add-scenario-index.sql39-40001-auto.sql40-41001-softfails.sql002-auto.sql41-42001-auto.sql42-43001-auto.sql43-44001-auto.sql44-45001-auto.sql45-46001-auto.sql46-47001-auto.sql47-48001-auto.sql48-49001-auto.sql49-50001-auto.sql50-51001-auto.sql51-52001-auto.sql52-53001-auto.sql53-54002-auto.sql54-55001-auto.sql55-56001-auto.sql56-57001-auto.sql57-58001-auto.sql58-59001-auto.sql59-60001-auto.sql60-61001-auto.sql61-62001-auto.sql62-63001-auto.sql_commonupgrade36-3702-convert_audit_toJSON.pl37-38002-migrate-jobs.pl38-39003-migrate-important-settings.pl004-drop-settings.pl39-40002-set-finished.pl41-42002-change-overall-softfailed.pl45-4601-migrate-images.pl47-4802-scan-images.pl03-move-resultdirs.pl04-scan-images-links.pl49-5001-add-system-user.pl50-5101-add-system-user.pl53-54001-migrate-jobs.pl56-57001-migrate-jobs.pl_sourcedeploy46001-auto-__VERSION.yml001-auto.yml47001-auto-__VERSION.yml001-auto.yml48001-auto-__VERSION.yml001-auto.yml49001-auto-__VERSION.yml001-auto.yml50001-auto-__VERSION.yml001-auto.yml51001-auto-__VERSION.yml001-auto.yml52001-auto-__VERSION.yml001-auto.yml53001-auto-__VERSION.yml001-auto.yml54001-auto-__VERSION.yml001-auto.yml55001-auto-__VERSION.yml001-auto.yml56001-auto-__VERSION.yml001-auto.yml57001-auto-__VERSION.yml001-auto.yml58001-auto-__VERSION.yml001-auto.yml59001-auto-__VERSION.yml001-auto.yml60001-auto-__VERSION.yml001-auto.yml61001-auto-__VERSION.yml001-auto.yml62001-auto-__VERSION.yml001-auto.yml63001-auto-__VERSION.yml001-auto.ymletcopenqadatabase.iniopenqa.inipublicChangelogfavicon.icorobots.txtcheck_dependenciesclean_needlescreate_adminfetchneedlesinitdbmodify_needleopenqaopenqa-resource-allocatoropenqa-scheduleropenqa-websocketsupgradedbtemplatesadminapi_help.html.epassetindex.html.epaudit_logevent.html.epindex.html.epproductlog.html.epgroupconnect.html.epgroup_property_editor.html.epindex.html.epjob_group_row.html.epparent_group_property_editor.html.epparent_group_row.html.epjob_templateindex.html.epmachineindex.html.epneedleindex.html.epproductindex.html.eptest_suiteindex.html.epuserindex.html.epworkersindex.html.epshow.html.epworker_status.html.epapi_keyindex.html.epbrandingopenSUSEdocbox.html.epexternal_reporting.html.epsponsorbox.html.epopenqa.suse.dedocbox.html.epexternal_reporting.html.epsponsorbox.html.epplaindocbox.html.epsponsorbox.html.epcommentsadd_comment_form_groups.html.epcomment_row.html.eppagination.html.epexception.html.eplayoutsbootstrap.html.epdependencies.html.eperror.html.epinfo.html.epnavbar.html.epmainbuild_progressbar.html.epchangelog.html.epgroup_builds.html.epgroup_overview.html.epindex.html.epmore_builds.html.epparent_group_overview.html.epreview_badge.html.epnot_found.html.epstepedit.html.epsrc.html.epsrc.txt.epviewaudio.html.epviewimg.html.epviewtext.html.eptestcomments.html.epdetails.html.epdownloads.html.epinfopanel.html.eplist.html.eplive.html.epoverview.html.epoverview_result_table.html.epprevious.html.epresult.html.eprunning_table.html.epscheduled_table.html.epsettings.html.eptr_job_result.html.eptr_job_result_details.html.eptr_job_result_failedmodules.html.epdbdb.sqliteimagesfactoryhddisootherrepoteststestresultsopenqa/etc//etc/apache2//etc/apache2/vhosts.d//etc/apparmor.d//etc/dbus-1/system.d//etc/logrotate.d//etc/openqa//usr/lib/systemd//usr/lib/systemd/system//usr/sbin//usr/share/doc/packages//usr/share/doc/packages/openQA//usr/share//usr/share/openqa//usr/share/openqa/assets//usr/share/openqa/assets/cache//usr/share/openqa/assets/cache/cdn.datatables.net//usr/share/openqa/assets/cache/cdn.datatables.net/1.10.16//usr/share/openqa/assets/cache/cdn.datatables.net/1.10.16/css//usr/share/openqa/assets/cache/cdn.datatables.net/1.10.16/js//usr/share/openqa/assets/cache/cdnjs.cloudflare.com//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/chosen//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/chosen/1.7.0//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/jquery-ujs//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/jquery-ujs/1.2.1//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/popper.js//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9//usr/share/openqa/assets/cache/cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd//usr/share/openqa/assets/cache/code.jquery.com//usr/share/openqa/assets/cache/maxcdn.bootstrapcdn.com//usr/share/openqa/assets/cache/maxcdn.bootstrapcdn.com/bootstrap//usr/share/openqa/assets/cache/maxcdn.bootstrapcdn.com/bootstrap/4.0.0//usr/share/openqa/assets/cache/maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js//usr/share/openqa/assets/cache/raw.githubusercontent.com//usr/share/openqa/assets/cache/raw.githubusercontent.com/bootstrapthemesco//usr/share/openqa/assets/cache/raw.githubusercontent.com/bootstrapthemesco/bootstrap-4-multi-dropdown-navbar//usr/share/openqa/assets/cache/raw.githubusercontent.com/bootstrapthemesco/bootstrap-4-multi-dropdown-navbar/beta2.0//usr/share/openqa/assets/cache/raw.githubusercontent.com/bootstrapthemesco/bootstrap-4-multi-dropdown-navbar/beta2.0/css//usr/share/openqa/assets/cache/raw.githubusercontent.com/bootstrapthemesco/bootstrap-4-multi-dropdown-navbar/beta2.0/js//usr/share/openqa/assets/cache/raw.githubusercontent.com/codemirror//usr/share/openqa/assets/cache/raw.githubusercontent.com/codemirror/CodeMirror//usr/share/openqa/assets/cache/raw.githubusercontent.com/codemirror/CodeMirror/8097c7e75ce7ef0512debe9967d7568626106e53//usr/share/openqa/assets/cache/raw.githubusercontent.com/codemirror/CodeMirror/8097c7e75ce7ef0512debe9967d7568626106e53/lib//usr/share/openqa/assets/cache/raw.githubusercontent.com/codemirror/CodeMirror/8097c7e75ce7ef0512debe9967d7568626106e53/mode//usr/share/openqa/assets/cache/raw.githubusercontent.com/codemirror/CodeMirror/8097c7e75ce7ef0512debe9967d7568626106e53/mode/perl//usr/share/openqa/assets/cache/raw.githubusercontent.com/sorich87//usr/share/openqa/assets/cache/raw.githubusercontent.com/sorich87/bootstrap-tour//usr/share/openqa/assets/cache/raw.githubusercontent.com/sorich87/bootstrap-tour/6a1028fb562f9aa68c451f0901f8cfeb43cad140//usr/share/openqa/assets/cache/raw.githubusercontent.com/sorich87/bootstrap-tour/6a1028fb562f9aa68c451f0901f8cfeb43cad140/build//usr/share/openqa/assets/cache/raw.githubusercontent.com/sorich87/bootstrap-tour/6a1028fb562f9aa68c451f0901f8cfeb43cad140/build/css//usr/share/openqa/assets/cache/raw.githubusercontent.com/sorich87/bootstrap-tour/6a1028fb562f9aa68c451f0901f8cfeb43cad140/build/js//usr/share/openqa/assets/cache/raw.githubusercontent.com/twbs//usr/share/openqa/assets/cache/raw.githubusercontent.com/twbs/bootstrap//usr/share/openqa/assets/cache/raw.githubusercontent.com/twbs/bootstrap/v4.1.1//usr/share/openqa/assets/cache/raw.githubusercontent.com/twbs/bootstrap/v4.1.1/scss//usr/share/openqa/assets/cache/raw.githubusercontent.com/twbs/bootstrap/v4.1.1/scss/mixins//usr/share/openqa/assets/cache/raw.githubusercontent.com/twbs/bootstrap/v4.1.1/scss/utilities//usr/share/openqa/assets/cache/timeago.yarp.com//usr/share/openqa/assets/cache/use.fontawesome.com//usr/share/openqa/assets/cache/use.fontawesome.com/releases//usr/share/openqa/assets/cache/use.fontawesome.com/releases/v5.0.10//usr/share/openqa/assets/cache/use.fontawesome.com/releases/v5.0.10/css//usr/share/openqa/assets/cache/use.fontawesome.com/releases/v5.0.10/webfonts//usr/share/openqa/assets/images//usr/share/openqa/assets/javascripts//usr/share/openqa/assets/stylesheets//usr/share/openqa/dbicdh//usr/share/openqa/dbicdh/PostgreSQL//usr/share/openqa/dbicdh/PostgreSQL/deploy//usr/share/openqa/dbicdh/PostgreSQL/deploy/46//usr/share/openqa/dbicdh/PostgreSQL/deploy/47//usr/share/openqa/dbicdh/PostgreSQL/deploy/48//usr/share/openqa/dbicdh/PostgreSQL/deploy/49//usr/share/openqa/dbicdh/PostgreSQL/deploy/50//usr/share/openqa/dbicdh/PostgreSQL/deploy/51//usr/share/openqa/dbicdh/PostgreSQL/deploy/52//usr/share/openqa/dbicdh/PostgreSQL/deploy/53//usr/share/openqa/dbicdh/PostgreSQL/deploy/54//usr/share/openqa/dbicdh/PostgreSQL/deploy/55//usr/share/openqa/dbicdh/PostgreSQL/deploy/56//usr/share/openqa/dbicdh/PostgreSQL/deploy/57//usr/share/openqa/dbicdh/PostgreSQL/deploy/58//usr/share/openqa/dbicdh/PostgreSQL/deploy/59//usr/share/openqa/dbicdh/PostgreSQL/deploy/60//usr/share/openqa/dbicdh/PostgreSQL/deploy/61//usr/share/openqa/dbicdh/PostgreSQL/deploy/62//usr/share/openqa/dbicdh/PostgreSQL/deploy/63//usr/share/openqa/dbicdh/PostgreSQL/upgrade//usr/share/openqa/dbicdh/PostgreSQL/upgrade/27-28//usr/share/openqa/dbicdh/PostgreSQL/upgrade/36-37//usr/share/openqa/dbicdh/PostgreSQL/upgrade/37-38//usr/share/openqa/dbicdh/PostgreSQL/upgrade/38-39//usr/share/openqa/dbicdh/PostgreSQL/upgrade/39-40//usr/share/openqa/dbicdh/PostgreSQL/upgrade/40-41//usr/share/openqa/dbicdh/PostgreSQL/upgrade/41-42//usr/share/openqa/dbicdh/PostgreSQL/upgrade/42-43//usr/share/openqa/dbicdh/PostgreSQL/upgrade/43-44//usr/share/openqa/dbicdh/PostgreSQL/upgrade/44-45//usr/share/openqa/dbicdh/PostgreSQL/upgrade/45-46//usr/share/openqa/dbicdh/PostgreSQL/upgrade/46-47//usr/share/openqa/dbicdh/PostgreSQL/upgrade/47-48//usr/share/openqa/dbicdh/PostgreSQL/upgrade/48-49//usr/share/openqa/dbicdh/PostgreSQL/upgrade/49-50//usr/share/openqa/dbicdh/PostgreSQL/upgrade/50-51//usr/share/openqa/dbicdh/PostgreSQL/upgrade/51-52//usr/share/openqa/dbicdh/PostgreSQL/upgrade/52-53//usr/share/openqa/dbicdh/PostgreSQL/upgrade/53-54//usr/share/openqa/dbicdh/PostgreSQL/upgrade/54-55//usr/share/openqa/dbicdh/PostgreSQL/upgrade/55-56//usr/share/openqa/dbicdh/PostgreSQL/upgrade/56-57//usr/share/openqa/dbicdh/PostgreSQL/upgrade/57-58//usr/share/openqa/dbicdh/PostgreSQL/upgrade/58-59//usr/share/openqa/dbicdh/PostgreSQL/upgrade/59-60//usr/share/openqa/dbicdh/PostgreSQL/upgrade/60-61//usr/share/openqa/dbicdh/PostgreSQL/upgrade/61-62//usr/share/openqa/dbicdh/PostgreSQL/upgrade/62-63//usr/share/openqa/dbicdh/_common//usr/share/openqa/dbicdh/_common/upgrade//usr/share/openqa/dbicdh/_common/upgrade/36-37//usr/share/openqa/dbicdh/_common/upgrade/37-38//usr/share/openqa/dbicdh/_common/upgrade/38-39//usr/share/openqa/dbicdh/_common/upgrade/39-40//usr/share/openqa/dbicdh/_common/upgrade/41-42//usr/share/openqa/dbicdh/_common/upgrade/45-46//usr/share/openqa/dbicdh/_common/upgrade/47-48//usr/share/openqa/dbicdh/_common/upgrade/49-50//usr/share/openqa/dbicdh/_common/upgrade/50-51//usr/share/openqa/dbicdh/_common/upgrade/53-54//usr/share/openqa/dbicdh/_common/upgrade/56-57//usr/share/openqa/dbicdh/_source//usr/share/openqa/dbicdh/_source/deploy//usr/share/openqa/dbicdh/_source/deploy/46//usr/share/openqa/dbicdh/_source/deploy/47//usr/share/openqa/dbicdh/_source/deploy/48//usr/share/openqa/dbicdh/_source/deploy/49//usr/share/openqa/dbicdh/_source/deploy/50//usr/share/openqa/dbicdh/_source/deploy/51//usr/share/openqa/dbicdh/_source/deploy/52//usr/share/openqa/dbicdh/_source/deploy/53//usr/share/openqa/dbicdh/_source/deploy/54//usr/share/openqa/dbicdh/_source/deploy/55//usr/share/openqa/dbicdh/_source/deploy/56//usr/share/openqa/dbicdh/_source/deploy/57//usr/share/openqa/dbicdh/_source/deploy/58//usr/share/openqa/dbicdh/_source/deploy/59//usr/share/openqa/dbicdh/_source/deploy/60//usr/share/openqa/dbicdh/_source/deploy/61//usr/share/openqa/dbicdh/_source/deploy/62//usr/share/openqa/dbicdh/_source/deploy/63//usr/share/openqa/etc//usr/share/openqa/etc/openqa//usr/share/openqa/public//usr/share/openqa/script//usr/share/openqa/templates//usr/share/openqa/templates/admin//usr/share/openqa/templates/admin/asset//usr/share/openqa/templates/admin/audit_log//usr/share/openqa/templates/admin/group//usr/share/openqa/templates/admin/job_template//usr/share/openqa/templates/admin/machine//usr/share/openqa/templates/admin/needle//usr/share/openqa/templates/admin/product//usr/share/openqa/templates/admin/test_suite//usr/share/openqa/templates/admin/user//usr/share/openqa/templates/admin/workers//usr/share/openqa/templates/api_key//usr/share/openqa/templates/branding//usr/share/openqa/templates/branding/openSUSE//usr/share/openqa/templates/branding/openqa.suse.de//usr/share/openqa/templates/branding/plain//usr/share/openqa/templates/comments//usr/share/openqa/templates/layouts//usr/share/openqa/templates/main//usr/share/openqa/templates/step//usr/share/openqa/templates/test//var/lib/openqa//var/lib/openqa/db//var/lib/openqa/share//var/lib/openqa/share/factory//var/log/-fmessage-length=0 -grecord-gcc-switches -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector-strong -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protection -gobs://build.opensuse.org/openSUSE:Maintenance:2365/openSUSE_Leap_15.0_Update/14445c3de1f4a59d1739004fe779078a-openQA.openSUSE_Leap_15.0_Updatedrpmxz5noarch-suse-linux             !    " #""directoryASCII textC source, ASCII textXML 1.0 document, ASCII textASCII text, with very long linesHTML document, ASCII text, with very long linesASCII text, with very long lines, with no line terminatorsHTML document, UTF-8 Unicode text, with very long linesASCII text, with no line terminatorsUTF-8 Unicode textUTF-8 Unicode text, with very long linesPNG image data, 52 x 37, 8-bit gray+alpha, non-interlacedPNG image data, 104 x 74, 8-bit gray+alpha, non-interlacedUTF-8 Unicode text, with very long lines, with no line terminatorsC source, ASCII text, with very long linesassembler source, ASCII textEmbedded OpenType (EOT), Font Awesome 5 Brands familySVG Scalable Vector Graphics imageTrueType Font data, 11 tables, 1st "GSUB", 18 names, Macintosh, Font AwesomeFont Awesome 5 BrandsRegularFont Awesome 5 Brands RegularFont Awesome 5 Brands ReguWeb Open Font Format (Version 2), TrueType, length 55144, version 1.0Embedded OpenType (EOT), Font Awesome 5 Free familyTrueType Font data, 11 tables, 1st "GSUB", 18 names, Macintosh, Font AwesomeFont Awesome 5 FreeRegularFont Awesome 5 Free RegularFont Awesome 5 Free RegularVerWeb Open Font Format (Version 2), TrueType, length 12216, version 1.0TrueType Font data, 11 tables, 1st "GSUB", 18 names, Macintosh, Font AwesomeFont Awesome 5 FreeSolidFont Awesome 5 Free SolidFont Awesome 5 Free SolidVersion 5Web Open Font Format (Version 2), TrueType, length 44068, version 1.0PNG image data, 16 x 16, 8-bit/color RGBA, non-interlacedPNG image data, 160 x 88, 8-bit/color RGBA, non-interlacedHTML document, ASCII textHTML document, UTF-8 Unicode textASCII text, with CRLF line terminatorstroff or preprocessor input, ASCII textPerl script text executableBourne-Again shell script, ASCII text executableemptyexported SGML document, ASCII text RRRRRRRRRRRRRRRRRRRRzc-3n?*Zapache2apparmor-profilesapparmor-utilslogrotateopenQA-local-dbutf-84896209c4b216237adf3b0e443ebd5155572d10c4e7710654ea122f8a93c8324?p7zXZ !t/L]"k%WIN.Bݣ/x4l͓YFs@ |Ҁd/(D_W8uV) >`_f kO2ӝ;>j7?\k..Rǐj7u*q6l+MaZٔ_B&u+)kg9Թ^x䨵8uf/D3*1},]8mbBOim`W뿏ZX %n(_;%~ E¿/Nlap->=J&(DL$\ eYjOئ6"NBVZ %}*bh2 z-hf Oroɱbb5\\5,(<~PPBR| d AA1 Jz*MA]qB*{;ɗ4$W'$1 !iD}a?yvB蝂k|8Cj'|<LY-4+$6Ru$Bi1qG)&2-;p37-Gj16Zwre]A:f3o=H#8&= /KQɺ";ER⚷SW3'N;4EXW"[Up|yaů9,/^t!͊*zIq&-F;XSRʆyj(@H) / f!wcL!#&)FH=rh۫綘 tO֮!gd4O~TQul ;gxviZTOZ; g lϦʊm|WUhbٯkJtK_2oP5WhYjwUpu0NV<>Z:iB #|Ȑ T2Q\R4 )Z< JZD d#mrR'~9Q9E/W@sQo qe1hvQ`kB5?k0 i'x Aܣ/ЮD<'uegr,ź^4 R U?acKpg䊜+ L0*q6QY wg:+`uYmaW ̵Bv1k9iacB*dTo.~p$ ::^!J2e'᳘+8p;?1*͕j4&+3oTȭGd*y9faӉ@yG)kק)$h6'Z7jȷܐN?NgQHB9ufFCjWzl*ANK O^6P?~c}ɭzxhOj0ȚL,4jiQs(9XJu-2S0?p;crv3Eutyh:4A~q^Hl]WR$1pVo찪;Ŕ̈TT?%+δ+%Jt|(qjc^Gӆֽv/JӰN˧ p CîS'"1AEM5 :HW&mATbDOK(e*x 3xysq.hWzА)-j7T/,=RaǮusTA4If݄e$+LEoG3g!v*!oZHibIR ~E6MͳOThA ?_|H`wݞEo==q{:VtIzǘm|_!^3k~%tcIlnS) a-qB_GԞQ׎Oei烄ʂ)]Jɭ׆x% ,NC+( U&9eXvpwKغ{9')MI7xNniYv݄kWeN!Z J0ur=V`0:̉hȩ2{y9b ea<8[̈ȱ_mYؚe^EkupW3~؅K3]3dB^ ^7_]k9;z N=)$=/Za#3IoNشUiRx=ߑr"5Ͼ:kCîFsKm唬nazR|eg=ʞ)diH1f99`Ҁ =u sT8.6 S:ìHn]x2}蘄܏C.@XIx.yR`̨0v~)ޅah A>YѶ=Gǚ܆|0g{ nPq.]XH zie1`x,`gg:%E l:?3U!LaVxV%S{] @c{N"S-G5$;| 0ϿWf46Hnm)d %:Z=na۝hUMh+^4,OT[ifHHn 6Zْ4()[&L7T6Sk4eLQavӹrX+{1r;ۚl) T'[9F>(s|E8g= +bJ;("(U(!41J?RFvҞf %~i sN(8D;]$UΙulNfd%)3C|uVOg nTǽTߢYwo~z!lSE 97E-sk8(<%Ff )dW{u3+“4%Kn0fZƼx)Lw>H =yih*LcnH#Κly8K\ct5~)_[q+hO{{3^Uqm3{z{뎾iJ']!`UK= UZLv"3b DUߜ"T܂r=IȢw[1 qLaߕRa/6/8]60"BOBCXpgpQBr#2v ѿR#ԜBH%I8OfSCʵUIνh+rLi$8AK nd;|ǁ -q%yp0`$~ L j$yh /ʃWzUq`Kf(:p} $)Rz %{6Y+Y@+xhS$x7z=ِ \#[%WwȈu诂%"QXR:b4ۅVg埸 6|re;RaUMwEL bc1?X-q:⫣0% ]hRU脫qTrGBO k3As;-+aX-9s(;)L3ԌS c%*sAvdeRrڊ<A %mUi!Wse{qg@U ٚ fD òVHe&6Q~΃pK쟟f~/|cBJnd=ϛ"ENѤa- #gdI#M GS2i#i"#}FlڗQ}d 8<4|G6g˜~s?]8.jTڛ$zC!# =YrҍT{7͖ܲ~'/3ZntFN!H^שh܀}{Ի?$ف(^.3擸e=q{մx tk+-1&iQْV#Ҹ<Sӓ1u I@l/3o:Cr.-K%ob$D!,8S( &<{o. hq|v&5ٖY;qcє/5hG,>n!I}A'-H5)o*ZycfO݈.>^W_SQcK|}}Z5nga# 0Ef?Z쥋XbcfͶ.3NgH0ne28 C廲b2z.' ,jY7܇̱#Z8l'(F;yvx34lZ U/:&}!#fȏK۬Q*~a7 Nx,!O>2NZA*%c/?ȝ]֜GA[r}SUqRb{꼎n_I-A=@P$`S$Kje(İφԧei p-h' a)-0hf" Ǥ uŢψA02 C sCqQx 3לD5kӡ3 gꩃ>_:b&T!_-:s0 [f}G>t-07;E%*^M] @޲z+e#68X}!_Xyg7E>f7{v6a+i(&Ew#f+d>3d^stHXTHRm/o kA=gUtoe}KBMzQx}7H>G/U.wb,";b'Asɖ֡?JY~ԪxYdl{pѼ|* " |7AQV4L넗![Ŭ/Y݆U'=K) R7dٌr{~̅l*%cb5PMT帽O>!e &x"-߇Q6FGbȭ%ŋ6A< vIؾŵHmN~QH׉tIa#@/aq8տ<3bQ.⾦ha8JZCcFO$AiMD+ ;z^"H](hD^ɑ?޴=}߁^{ :?R좏Y$N`;k`!:ބFe߁'aů{6[hG=Q:w ln4YCÌ70ub,`.5ڠP'DL I@ma.>[]d Ҽb]9E 'XLzRNR6H\@"/ tj"Q^+ H,z ;(~6`*<"ڢ?]U;ٛJDۼ9u^KfK7eCsRŀG4)" w33҆ev6|FCS+L`]!7,u+]PNG1Lsqx{||47 RXhȂH#6dv1p(A5bi>&ԩ$dfK\E']c~a'Uf,KG:E[ioRt1lW75d.h"b@aYf9jDR֗t\b` AuLwƁb;56ӯ<3ҶJ'K";U[{TgaҾl鄓_c,X\=2Vץ;!;=}cF%=a񆛬}֥f(T4 s*OY6qPW";p,~-*Z_,4YW7u KB+X-1.ښ2"# y#aU|ٯsgJ^4P2D5 QQ-{;y!:js=`+tIeY3(ԍo(o96cEIK F, ;4>wt"ޟG'mj W&pQ.rT!@nL b?'_n'r``3 C}跂 w]Mh"WA>^ W%:9!.w7Zе!Fqcn‘-)=^qun%+