pax_global_header00006660000000000000000000000064144474635310014525gustar00rootroot0000000000000052 comment=1283aed525be2f034b35bd148fdd58e1863fd4fb vokoscreenNG-3.7.0/000077500000000000000000000000001444746353100141375ustar00rootroot00000000000000vokoscreenNG-3.7.0/.github/000077500000000000000000000000001444746353100154775ustar00rootroot00000000000000vokoscreenNG-3.7.0/.github/FUNDING.yml000066400000000000000000000001061444746353100173110ustar00rootroot00000000000000custom: https://linuxecke.volkoh.de/vokoscreen/vokoscreen-donate.html vokoscreenNG-3.7.0/.github/ISSUE_TEMPLATE/000077500000000000000000000000001444746353100176625ustar00rootroot00000000000000vokoscreenNG-3.7.0/.github/ISSUE_TEMPLATE/bug_report.md000066400000000000000000000023441444746353100223570ustar00rootroot00000000000000--- name: Bug report about: Create a report to help us improve title: '' labels: '' assignees: '' --- **Bug report checklist** * [ ] Always send the vokoscreenNG log, after a "Start" and "Stop" * [ ] Have you searched the existing issues to see if this report is a duplicate? * [ ] Are you using the latest version of vokoscreenNG? * [ ] Are you familiar with https://www.mediawiki.org/wiki/How_to_report_a_bug ? **Describe the bug** A clear and concise description of what the bug is. **Log messages** Before you copy the log, make a short recording (start,stop) and then copy the log. Paste now or attach log messages from vokoscreenNG log tab. (Text files saved as `.txt` or `.log` are accepted by GitHub as attachment uploads. `.zip` archives are also permitted.) **To Reproduce** Steps to reproduce the behavior: 1. Go to '...' 2. Click on '....' 3. Scroll down to '....' 4. See error **Expected behavior** A clear and concise description of what you expected to happen. **Additional context** Add any other context about the problem here. **Screenshots** If applicable, add screenshots to help explain your problem. ```text ``` vokoscreenNG-3.7.0/.github/README.md000066400000000000000000000130341444746353100167570ustar00rootroot00000000000000
 
vokoscreenNG for Windows and Linux is a powerful screencast creator in many languages to record the screen, an area or a window (Linux only). Recording of audio from multiple sources is supported. With the built-in camera support, you can make your video more personal. Other tools such as systray, magnifying glass, countdown, timer, Showclick and Halo support will help you do a good job. ## Download * Windows https://linuxecke.volkoh.de/vokoscreen/vokoscreen-download.html ## Translate Only **100% translated** languages will be added to vokoscreenNG. You can translate to anytime, your translation will be included in the next bugfix release. Please translate only at Transifex, it is very easy. https://app.transifex.com/vkohaupt/vokoscreen/ ## Installer Windows and Linux installation routines are not provided, because each platform, installer and package manager has its own special features. That means make-install, metadata, desktop files, icons, manpage, logo must be create and provided itself. All the images and logos that come with vokoscreenNG are free. You can be change in size itself be used for your own installer or package manager. ## Code Contributions If you want to contribute code, please ask beforehand whether your idea finds harmony. Your source code must be in separate files and published under the MIT-License. Every file must include the License-header. The License-header can be found here:https://github.com/vkohaupt/vokoscreenNG/blob/3.0/info-licences-changelog-install/Third-Party-License/Third-Party-License ## Windows 10 64-bit ### BuildRequires - Required from version 3.1.0 The Qt installer needs the 32 bit version of vc_redist.x86.exe https://aka.ms/vs/16/release/vc_redist.x86.exe Qt Online Installer https://www.qt.io/download-thank-you?os=windows - Qt 5.15.2 [+] MinGW 8.1.0 64-bit [+] Qt Network Authorization (Not sure if this is needed) - Developer and Designer Tools [+] Qt Creator 5.0.1 CDB Debugger Support [+] Debugging Tools for Windows [+] MinGW 8.1.0 64-bit - openSSL 1.1.1 Toolkit [+] openssl 64-bit binaries https://gstreamer.freedesktop.org/data/pkg/windows/1.18.5/mingw/gstreamer-1.0-mingw-x86_64-1.18.5.msi https://gstreamer.freedesktop.org/data/pkg/windows/1.18.5/mingw/gstreamer-1.0-devel-mingw-x86_64-1.18.5.msi ### Environment * No additional entries ## Linux ### Run-time requirements * Qt5 >= 5.9.4 * Qt5 >= 5.14 (vokoscreenNG >= 3.1.0 pre alpha) * pulseaudio * libwayland-client0 (since vokoscreenNG 3.0.9) * gstreamer >= 1.12.5 * gstreamer-plugins-base - Audio: vorbis, opus * gstreamer-plugins-good - Format: mkv, avi, webm, mp4, mov - Video: vp8 - Audio: flac * gstreamer-plugins-bad - Video: camera - Video: openh264 * gstreamer-plugins-ugly - Video: x264 - Audio: mp3 * gstreamer-plugins-ugly-orig-addon (openSUSE Packman) - Video: x264 * gstreamer-plugins-libav - Player: x264 * #### Wayland (vokoscreenNG >= 3.1.0) * pipewire >= 0.3 * gstreamer-plugin-pipewire(openSUSE) gstreamer1.0-pipewire(Debian) >= 0.3.24 * xdg-desktop-portal >= 1.7.0 * xdg-desktop-portal-(kde, gtk, ...) >= 1.7.0 ### Build requirements * pkgconfig * libqt5-devel >= 5.14 (vokoscreenNG >= 3.1.0 pre alpha) * libqt5-linguist >= 5.14 (vokoscreenNG >= 3.1.0 pre alpha) * libX11-devel * gstreamer-devel * libpulse-devel (vokoscreenNG >= 3.0.7) * wayland-devel (vokoscreenNG >= 3.0.9) On Ubuntu these requirements can be satisfied by running `sudo apt install libgstreamer1.0-dev qt5-default qttools5-dev-tools libqt5x11extras5-dev qtmultimedia5-dev libqt5multimedia5-plugins libpulse-dev libwayland-dev` ### Build instructions 1. `Download the source / clone the repo and cd into its directory` 2. `cd src` 3. `qmake` 4. `make` ## Install packages * [Debian](https://tracker.debian.org/pkg/vokoscreen-ng): `sudo apt install vokoscreen-ng` * [Fedora](https://src.fedoraproject.org/rpms/vokoscreenNG): `sudo dnf install vokoscreenNG` * [openSUSE](https://software.opensuse.org/package/vokoscreenNG) (Tumbleweed and Leap): `sudo zypper install vokoscreenNG` * [Ubuntu](https://launchpad.net/ubuntu/+source/vokoscreen-ng): `sudo apt install vokoscreen-ng` * [Arch linux](https://www.archlinux.org/packages/community/x86_64/vokoscreen/): `sudo pacman -S vokoscreen` * [NixOS](https://github.com/NixOS/nixpkgs/blob/master/pkgs/applications/video/vokoscreen-ng/default.nix): `nix-env -iA nixos.vokoscreen-ng` ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-0.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-1.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-2.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-3.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-4.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-5.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-6.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-7.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-8.png) ![Picture](https://vokoscreen.volkoh.de/3.0/picture/vokoscreenNG-9.png) vokoscreenNG-3.7.0/.gitignore000066400000000000000000000005061444746353100161300ustar00rootroot00000000000000# Compiled Object files *.slo *.lo *.o # Compiled Dynamic libraries *.so *.so.* *.dylib *.dll # Compiled Static libraries *.lai *.la *.a # Libraries *.lib # Executables *.exe *.out *.app # Qt *.pro.user *.pro.user.* moc_*.cpp moc_*.h qrc_*.cpp Makefile *build* ui_*.h *.qm # Linux/Unixes .* !.tx !.gitignore !.github *~ vokoscreenNG-3.7.0/.tx/000077500000000000000000000000001444746353100146505ustar00rootroot00000000000000vokoscreenNG-3.7.0/.tx/config000066400000000000000000000002751444746353100160440ustar00rootroot00000000000000[main] host = https://www.transifex.com [o:vkohaupt:p:vokoscreen:r:vokoscreen-version-3] file_filter = language/.ts source_file = language/en.ts source_lang = en minimum_perc = 100 vokoscreenNG-3.7.0/BugReportHint.txt000066400000000000000000000005161444746353100174360ustar00rootroot00000000000000Thank you for your reference. The bug report is not complete and therefore cannot be edited. If a full bug report is not received within three weeks, this thread will be closed or deleted. Please refer to this template. https://github.com/vkohaupt/vokoscreenNG/blob/3.0/.github/ISSUE_TEMPLATE/bug_report.md Many thanks for your helpvokoscreenNG-3.7.0/COPYING000066400000000000000000000431001444746353100151700ustar00rootroot00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. vokoscreenNG-3.7.0/info-licences-changelog-install/000077500000000000000000000000001444746353100222465ustar00rootroot00000000000000vokoscreenNG-3.7.0/info-licences-changelog-install/CHANGELOG.md000066400000000000000000000001331444746353100240540ustar00rootroot00000000000000 The changelog found here: https://linuxecke.volkoh.de/vokoscreen/vokoscreen-changes.html vokoscreenNG-3.7.0/info-licences-changelog-install/INSTALL000066400000000000000000000000161444746353100232740ustar00rootroot00000000000000See README.md vokoscreenNG-3.7.0/info-licences-changelog-install/Miscellaneous/000077500000000000000000000000001444746353100250515ustar00rootroot00000000000000vokoscreenNG-3.7.0/info-licences-changelog-install/Miscellaneous/Graphic-processing.txt000066400000000000000000000002031444746353100313340ustar00rootroot00000000000000 1. export GST_DEBUG_DUMP_DOT_DIR=. 2. gst-launch-1.0 pipeline 3. dot -Grankdir=BTRL -Tpdf *.PLAYING_PAUSED.dot > pipeline.pdf vokoscreenNG-3.7.0/info-licences-changelog-install/Miscellaneous/lineCounter.sh000077500000000000000000000005501444746353100276770ustar00rootroot00000000000000#!/bin/bash cpp=$( find . -name '*.cpp' -type f -print0 | xargs -0 cat | wc -l ) echo "*.cpp :" $cpp h=$( find . -name '*.h' -type f -print0 | xargs -0 cat | wc -l ) echo "*.h :" $h h=$( find . -name '*.pr*' -type f -print0 | xargs -0 cat | wc -l ) echo "*.pr* :" $h ts=$( find . -name '*.ts' -type f -print0 | xargs -0 cat | wc -l ) echo "*.ts :" $ts vokoscreenNG-3.7.0/info-licences-changelog-install/Miscellaneous/statistik.sh000077500000000000000000000010021444746353100274200ustar00rootroot00000000000000#!/bin/bash begintime="2020-02-05" echo "Commits seit dem: "$begintime echo "Anzahl commits: "$(git log --shortstat --since="$begintime" | grep commit | wc -l) echo "Eingefügte Zeilen: "$(git log --shortstat --since="$begintime" | grep insertions | cut -d "," -f2 | sed 's/^[ \t]*//' | cut -d" " -f1 | paste -sd+ | tr -s "+" | bc) echo "Gelöschte Zeilen: "$(git log --shortstat --since="$begintime" | grep deletions | cut -d "," -f3 | sed 's/^[ \t]*//' | cut -d" " -f1 | paste -sd+ | tr -s "+" | bc) vokoscreenNG-3.7.0/info-licences-changelog-install/Third-Party-License/000077500000000000000000000000001444746353100257755ustar00rootroot00000000000000vokoscreenNG-3.7.0/info-licences-changelog-install/Third-Party-License/LGPL-2.1000066400000000000000000000636421444746353100267670ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! vokoscreenNG-3.7.0/info-licences-changelog-install/Third-Party-License/LGPL-3.0000066400000000000000000000167271444746353100267710ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 3, 29 June 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. This version of the GNU Lesser General Public License incorporates the terms and conditions of version 3 of the GNU General Public License, supplemented by the additional permissions listed below. 0. Additional Definitions. As used herein, "this License" refers to version 3 of the GNU Lesser General Public License, and the "GNU GPL" refers to version 3 of the GNU General Public License. "The Library" refers to a covered work governed by this License, other than an Application or a Combined Work as defined below. An "Application" is any work that makes use of an interface provided by the Library, but which is not otherwise based on the Library. Defining a subclass of a class defined by the Library is deemed a mode of using an interface provided by the Library. A "Combined Work" is a work produced by combining or linking an Application with the Library. The particular version of the Library with which the Combined Work was made is also called the "Linked Version". The "Minimal Corresponding Source" for a Combined Work means the Corresponding Source for the Combined Work, excluding any source code for portions of the Combined Work that, considered in isolation, are based on the Application, and not on the Linked Version. The "Corresponding Application Code" for a Combined Work means the object code and/or source code for the Application, including any data and utility programs needed for reproducing the Combined Work from the Application, but excluding the System Libraries of the Combined Work. 1. Exception to Section 3 of the GNU GPL. You may convey a covered work under sections 3 and 4 of this License without being bound by section 3 of the GNU GPL. 2. Conveying Modified Versions. If you modify a copy of the Library, and, in your modifications, a facility refers to a function or data to be supplied by an Application that uses the facility (other than as an argument passed when the facility is invoked), then you may convey a copy of the modified version: a) under this License, provided that you make a good faith effort to ensure that, in the event an Application does not supply the function or data, the facility still operates, and performs whatever part of its purpose remains meaningful, or b) under the GNU GPL, with none of the additional permissions of this License applicable to that copy. 3. Object Code Incorporating Material from Library Header Files. The object code form of an Application may incorporate material from a header file that is part of the Library. You may convey such object code under terms of your choice, provided that, if the incorporated material is not limited to numerical parameters, data structure layouts and accessors, or small macros, inline functions and templates (ten or fewer lines in length), you do both of the following: a) Give prominent notice with each copy of the object code that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the object code with a copy of the GNU GPL and this license document. 4. Combined Works. You may convey a Combined Work under terms of your choice that, taken together, effectively do not restrict modification of the portions of the Library contained in the Combined Work and reverse engineering for debugging such modifications, if you also do each of the following: a) Give prominent notice with each copy of the Combined Work that the Library is used in it and that the Library and its use are covered by this License. b) Accompany the Combined Work with a copy of the GNU GPL and this license document. c) For a Combined Work that displays copyright notices during execution, include the copyright notice for the Library among these notices, as well as a reference directing the user to the copies of the GNU GPL and this license document. d) Do one of the following: 0) Convey the Minimal Corresponding Source under the terms of this License, and the Corresponding Application Code in a form suitable for, and under terms that permit, the user to recombine or relink the Application with a modified version of the Linked Version to produce a modified Combined Work, in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source. 1) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (a) uses at run time a copy of the Library already present on the user's computer system, and (b) will operate properly with a modified version of the Library that is interface-compatible with the Linked Version. e) Provide Installation Information, but only if you would otherwise be required to provide such information under section 6 of the GNU GPL, and only to the extent that such information is necessary to install and execute a modified version of the Combined Work produced by recombining or relinking the Application with a modified version of the Linked Version. (If you use option 4d0, the Installation Information must accompany the Minimal Corresponding Source and Corresponding Application Code. If you use option 4d1, you must provide the Installation Information in the manner specified by section 6 of the GNU GPL for conveying Corresponding Source.) 5. Combined Libraries. You may place library facilities that are a work based on the Library side by side in a single library together with other library facilities that are not Applications and are not covered by this License, and convey such a combined library under terms of your choice, if you do both of the following: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities, conveyed under the terms of this License. b) Give prominent notice with the combined library that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 6. Revised Versions of the GNU Lesser General Public License. The Free Software Foundation may publish revised and/or new versions of the GNU Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library as you received it specifies that a certain numbered version of the GNU Lesser General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that published version or of any later version published by the Free Software Foundation. If the Library as you received it does not specify a version number of the GNU Lesser General Public License, you may choose any version of the GNU Lesser General Public License ever published by the Free Software Foundation. If the Library as you received it specifies that a proxy can decide whether future versions of the GNU Lesser General Public License shall apply, that proxy's public statement of acceptance of any version is permanent authorization for you to choose that version for the Library. vokoscreenNG-3.7.0/info-licences-changelog-install/Third-Party-License/MIT-License000066400000000000000000000020511444746353100277270ustar00rootroot00000000000000Copyright (c) Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. vokoscreenNG-3.7.0/info-licences-changelog-install/Third-Party-License/Third-Party-License000066400000000000000000000012141444746353100314450ustar00rootroot000000000000003rd party licenses used in vokoscreenNG Qt: License --> LGPL-2.1 LGPL-3.0 File --> LGPL-2.1 LGPL-3.0 URL --> https://www.qt.io/ GStreamer: License --> LGPL File --> LGPL URL --> https://gstreamer.freedesktop.org/ QGlobalShortcut: Licence --> LGPL File --> LGPL URL --> https://github.com/Legotckoi/QGlobalShortcut Icons: Licence --> Public Domain URL --> http://tango.freedesktop.org PulseAudio: Licence --> LGPL File --> LGPL URL --> https://www.freedesktop.org/wiki/Software/PulseAudio/ Wayland: Licence --> "Expat" Mit File --> Wayland-licence URL --> https://gitlab.freedesktop.org/wayland/wayland vokoscreenNG-3.7.0/info-licences-changelog-install/Third-Party-License/Wayland-licence000066400000000000000000000025011444746353100307150ustar00rootroot00000000000000Copyright © 2008-2012 Kristian Høgsberg Copyright © 2010-2012 Intel Corporation Copyright © 2011 Benjamin Franzke Copyright © 2012 Collabora, Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. --- The above is the version of the MIT "Expat" License used by X.org: http://cgit.freedesktop.org/xorg/xserver/tree/COPYING vokoscreenNG-3.7.0/info-licences-changelog-install/Videos-to-test-the-player/000077500000000000000000000000001444746353100271445ustar00rootroot00000000000000scaled-450x800-to-1280x720.mkv000066400000000000000000006361311444746353100334300ustar00rootroot00000000000000vokoscreenNG-3.7.0/info-licences-changelog-install/Videos-to-test-the-playerEߣBmatroskaBBSg<-MtMSIfSMSTkSSCpSMSSkS;(STgSIfss)T_?NҽA*ױB@D@LMGStreamer matroskamux version 1.12.5WAvokoscreenNG_2.9.9_BetaDaG!>Tkׁsň5u#ツbZSnVideoTT㆐V_MPEG4/ISO/AVCc"g(  @@@P(`hﱒCua H "g(  @@@P(`hﱒEH, #x264 - core 155 - H.264/MPEG-4 AVC codec - Copyleft 2003-2018 - http://www.videolan.org/x264.html - options: cabac=1 ref=1 deblock=1:0:0 analyse=0x1:0x1 me=dia subme=1 psy=1 psy_rd=1,00:0,00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=6 threads=4 lookahead_threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=1 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=0 rc=cbr mbtree=0 bitrate=2048 ratetol=1,0 qcomp=0,60 qpmin=23 qpmax=23 qpstep=4 vbv_maxrate=2048 vbv_bufsize=1228 nal_hrd=none filler=0 ip_ratio=1,40 pb_ratio=1,30 aq=1:1,00Demw?v;Όd4Xpg^#j14мT`"\5Ӂa3;ZBv+Cd D%z"f}. +@O F&u y 6ݳx.5IaPO>SVf_!ӼqxxSb1%qчP0-xå__a'8Z_M@NAnP7dnPY%Y)Eʥ/c7:]A.}sQ>O a>Nw U^fVL]9Vj)n- oEV~Wѱ,|V|"ihV|銃MxR _n _O$1=Z,ULx<)wn\3>@p   j\"+fFl먕 94_W ecIɗ8aܟ_!n{R^LF;-i:~!(4jIAeg oZRW>"XHޡ 2mi?Qgz>Ė;;t&ڂ|#ےouBj9u_ cƸ:|34&$ g!(;4Q8uQQmhy}f0bVD.CxR$4C>'$]^@Zst'p3 iZW/g]`L:[P,*u5'Kvx`êԻaUI4} 9N5u;q% bDEbsXP}5c6I} ͟,hdzp'R{%c:ftB{ `VY\WRl4.E3^+*S <*jWe#} B;U{IZFоX TnQڲTa>P#N*n#孆_Q採)⺚ OYs๔( P/ɚ9HF558듘'7m2#s#@9ܙvKǮI{8]Su]"y-YA&5a!_-cˊ7t\cC4,w׭4[uÆ\s.q 1A!-!ű*x%n{IZ.1G3xq7qUlCy/yfg@†}! 7Zf:OwtQwDғ"VE@hىFO3v\67D.LblIa:vQxz-]kB=u͚Dq/UumWS dARWg v'y *y{?tiRHo3ɻ{u[|\N5`si )&ԫȬqQO#?J Nf5C0R):I1{=߅#Ou׹7"OI4gL1v6č;[.=-sPNM8zCܲ޾lZt͔]#%m>L!+ 3 W6VƲ/]lyGn|SX2.4aA\~!qX:+}cݬRȫj!@oda6wQD 7Nb{*Kρx{VUL5l&r-07܏tzq QvZ. #5VM5jE * [L!C"fؔ=I^qT,:o] qKl(3`x:3b}'v>ES埓VDÁ&s,o4g$80S&pI gxC]*0h^K4Ets{Nv˓J)/4}y\. FT'PY=1r]ǃA,273ѐSXdY٬֒k*M ֤]|t۔VGV.ƔTQgZ\0eG=Px: jPa%{c>90 X¸[]. W1h^ xD}(Jp?ஓ,bK/|c՜NԹ,<90Z`^|3752?! Q?b’Klf3dfs XXns(Iѫ̿;3Ic)ZeW)PJ?BKcEp"~e5Ty4y7 5tJni4 I 8/AҪ0NJB06:Fkc:[\XF bWjzS?:s8\!)LtgC/p TOv&@v`Pj)H5j굧c -K,@&nP,RvX/zНWUB!}F b*PM >0G^B( 3mFS[7S%js.u]L79W^~/猐V\Bg*tԗmvuwB%k wGKD^PCrTLrQqٱzUl_ڏZ4b(ǾD|2cL7d"G4ݷ~P$N@(ZyFO J_*μv{W:~PQ3ߐϱaS=""o;Zv;d5wy,EIAtw'Υ"/nXyVwۮ%nJ2@SBA,h]?Y4ZwLDouޢ!#6DR^ l;VMHgE?2!6^I.*D-^zI_dBgU-RFW }j9ëǧQVM>H~[D* 'йc`dv}1w> U1l/48A=Zv15i= y4J{?,<2rie|(&J2YCt=sX{Sc=:D&~@4ղAdLssذ,^Mpa2 N2=?F쾐t"ZF3& Jʒe[̘5NbF1GQcФ6 `8tNK\dtk} u\D <kIċfGZաQ)f@׎*nީH3vb]f#dH s;gPRx?>ƥNB4Ae!i|'L^ Rܿd2xEȤ!^o#|B!݉V]kixcqY)NL?r## \vٝ@ÅH!@!2%Z f*u\]d-6Š%!̯dj[; ((@"TF>Ӫ(eئxi,դ u?~=D&E((.B#]`.ի aUO # AHtGa0nȱ?NaM7MctVӃɹ e(Z:/! F%\3^ ^/V?/%)H;FBƅ@g-"k6ouC>gfxo6XblO2پo][eV`"Ӣ1 \L/ר@T{LH~8PGpݲ5܊Y^,EdECО{p01:7QE3@Fr: _b2Y{Ux # 2Mgf4 MebiW@ ľ$//'px(Bmy3m|&_[_}U*}O"S_6es3:{zGʐc\_ڟ*o%dE/1(J䱐k(F$Z=֏/Pnhcy wbfr oߣ.vWWvmO,˻=VJ+i]^{ypf w߫a Q2KndI}NV6yowⴎopMjzƀ@ !  ax` <\29)lV֑nnI^."ܭ|MvpT˘sf/&a®UK5侀$opsc*aKjopj}&IKB<Pި!Ok MLD5f}P|=UDqovoV]˅,-lttX|4u2Zl 6 ֘]^גa!s>vXLߡf"&r<©\D ,p6EUIƂ3" 0+J,4aU{4(T**Am;!=kpMxV&(Ä4@7VQ9Xjc+*jBΟuZy3pE S6I m2ҟAWC7H"DTr~x sNBWR3r ! 媐K{"oSBG5AmvƄ֐ؑ/Н+eQ[@q+ګ_h=3q,?QM8,ir18e'mJH}PNRڞR`ɥUCsڐ=fiAJ@":LՖ_=7"3\ MT})EHY(k#k/dJyn[#íFk- X5߬)n[-X,gC+86}4:;bPUv|{ˁmg8WdŪv_9&`$+%@^ <3 ̢JȯiĴߒ]FR:A%;Vb:;h6|%A [wiu;Rp9~,hKH}N[SH2"{++9bN Vd`rڛ^1؞6YJs< Ֆ˧LʟN!ϩܵ.Y D R--ލmc >?ڤD k 8./:rRTxPO08/IO׋{d𜤲{NΩ!w_yH"%e.XKA2ѹB1ݷ?Vx}N9=Ja TϪhI%߁Eb]A]1`}h=hXolmf)X[8iUFy7VZ>T3tQaׅȈN(*dsC=,X7> TjsԠZEx#clפ-dv7Ot4^Dv6Iey=U1xϒCu@%XG,. 0& GVbcCa(y!&}$%Qb]h\&$f=˜}T-R;7}&2=oݨ'hgy*O`>tݰڹqk SlxB@mӾӭ2a!DgOR8q򗃼DQ8zqZ4w967t Eg$ u)DI)iO-9~np}):7Be+cc&[Hiw ;>la_dg?WX;=:.m_CԟSd֑^Dl䯧6ɟĖ7+!Z/r^+)J 8g j| lOg*{ u`h ?);7 ʡt /, :B 7ecU=5|Яw:zv;u>/d3ZAhrWU!֊(L6uRUZ-0\6aE< L1,'sSdžT$lI wu@*Fλ1lc"pkX{ՓOGf6 ?01˱FQu!c~ɻA"Z,]zӵ^ l-1s g9.\DV ;YRc%/>;JV$I xL1~d+&5R3gݢ ]܂wTU?tΤ%>RhN2Х%"#WLo}$+H@u!Dg2[l @B*Ԩ hܔYDgځȉC.%Z(ρc-7]C p#pz0EddGK Qn'23QdAǞ7؀Ӡ픱H+صO(K[YY TȚkFнRcCPYGtyW..ٱnSsUR/QnPOf%Ru_+54iH:DNIg*Er,](:6t>'jgV[#:8}MA{fbO0ϖl [O"33{%g؎D"xcsB2SsNd+x y{ӕ(:KK_qKtA, .-.4oQKuqe;˃L:QxP[}dzڲ%̝5 qo![$˚ ] D3oK Ѧ = jyKfVHo5;&R 9vd/ͧwfL|q EcVWME9C Y6২u w wMbZo)_l鷾{`>;u}0 U<ׯDVbe"݊0huY ^wqtAZ?8s o~?16aK 8Ywޕ= $ 4ܭ0wX<8imQp\kU"[pk w^F(m>%-Y7F}5D2{$ś yZGsg}JnG,F58'yKlQ 'FnjsEn/V lݺvZ0O'X9,FEèV oXJEpq@re%V"d9$RyDUBmϭbk+bTk34U?zC&{5ZEPd*]뼰y3VB}"J/B͌E~3xq1@ne-_$1<lm#>[4˕g(YO-ddqŠ[`M^bj+ ygJDq̸w}QaلIVWߛFXk:pR4ָ<7 ?J='P1$w޶lΔ^m(X}8!:ܰ Pmc{)WV t`Ղ%S|n0"yjQ`9'|=tAP,=LFV{f mR= )4ʮʺs~jBy 10nҢ(PϕԒTQyw/kGxt)VAq$;12jWaH:n0T~.TXx}D078nξ_B>_k$\ n$gE?MR U I5bKBx(7h8fm~,窱hC8d@j۞ ƕXL"h;!,IVc$W;'#Alye;"i H k21(҉` C*mDP-ŹnK>HlK{)rMn˂W0-1Z t^۱ߥLŸa RCX :Љ>k[:rsl4@1> 0rՈ ͡ʨ HloGikc̒lM8e?gT;-4K]^[Ȥ8iZT\[M׀vA_[D܌!\ ]Q䋋X+XkddObhFn:% FyGoTYfqIrUuo+z !D?QHGm'rs>| hbCP;lnnN:xjPfk83LBUÛۉ86 6o}y:^e kb_e$No[mEޝ\Tמc'D-gPQ3)8cy6|6/G JYB874!ښfP|sկNtD;%7R#K]]/nК5sΚSpl0X|6yobEҝf= tN-f^%qN}y4%4:Vd8V: j@~TM.P3et ru Qp8&)W=Ol*)! ƁKyn2Hõp|EKAV":}2>tcŷ mn~~ ij>u#oo",5~ դѹ|a3wJt+,HL_*GB~g!bLl/Ʋ6-@0-vtlluեJ\܅D9mv*ځn`uM1i/|Y sS4>sz?aVk$?ߜOud<Deؾ!#$UZp!GgTy ITQ*uk."tHFjDݐI߷HO >M"ca%@"ܑ;` +6"^(899 i$HJ`25F'ak0ǚ=1?&w NgF$_鎔I aj [ _V&x? ˜5iZAdKD( Oy%ukN㓨(Y[b;]7um'J<$IqY=% 2BkAW ʯ2RB1{oU՞D)1thF䋡MƵ ?:(]ZN,/ '#{SgI' % j*/ô`@/\R*){:$51r uHj߿[zg{_EʇjA^7Ta_"2#Q]hg@_) ^o%F;~AY_1k2:ehłॽ@PU]orXR"P6\n!XOROM(J;}RuYاx?36 *";(?!htp59 gH? /7%2Wj< ʷsQ_VG.HxHDJTΠ ÇRȘS; *z*ȨШqXs\8@r=p.]"8ne (@P3/Ӡ-tXU߻{Qwj_iL^HZmG"o2p<&Sv4Hk*0 `X}B>pCT?JZRUKMq·#ӏ'0lRoUe1soچagdu 5'S1;a tgqH3x~+ԕN3 è8}b0p3p`&1$ZT+Oqz[<栺W2daڬxV,$Nq-|@[}WJ!= t' //?V .ؖuF]Ak-Xb4|mxp\>^Qs*JW0zl +@g>d&G*LJ_΄mu;Ș[^žGiFb7J:t`4բZ"neD)zƯoI_gjLΥ; ?+_`N闺aw*QLH!Sla*{pPN]J~:9z{i .SԨe.6fd'$.d!KYʈ\tr}N9)эeĈۋ2J]xkWzcYc`H݄ngsQ9h:]7JWqKӘW3$=P+U(qyo6=hOYD +\)Gq{ ~8h̯O$>O˳J\EF+sц[2u Bz# oq(Ӯ;BQ(:c+vVZ%ݢN8hT)E[m8Y 2^:Poi ݑ+ԍ1#]ȝVT5(fFuE+}^GtF1?3R;wC(,cN"iU@r_0L:7(hfbڪx$y6"lSEd[;fRH|DC[Nъ[hf,GXr1yVW0o {Y| =; SϬrߗZ#}k5`dMȽ+JMNT{Z~0^dǟP>t!+(*|դ`2y>50VAˑO qP˒,!\ _:FvPUn6T!Oawc6:zTjNcs3A>ꨜ^N¾|3'הUW=(GQpH!?ԴlɝQ)M۠=W(-x ]&3; _%p:%z?N-" Xħl & -jOaijaD?/iCc(3ƒWrPٓ.:Ҁ9~AVgqn型,='iٖ=EY20xuщ d̮q!$jÔb,!paӄx$6戌AxP \ic_qaH4{fsAX# 1̫1SYIwmV)VdEM=N?BlgWIu6C]μВ&=ו"X# 3b;>TPx,Cv8@T`.@~M9ҼpUjow`? [dtDCre0N*| $$4.pAZmG/uy n sEJ 䫏Ub3!*GNsw6c B" ! `o:rGחѧvTk߆yqbc{SYv@FA@?!sUhhFw1Ӵ[5 LfT+ޠ|LOś|(ԥ_l'%<ܮLi gqh1X';'FݫvS9xc6RH5ĵ9hE*\d{fD]N_<ﯔ L To^?U:Oh zz5.&P~kϵ=Zz b/>F0pd0& CK:qvt;2wǴA"9l(BH#H'pC`!9z h˄{߲_%7_]FzA|^WF5h5gDJTfEeY@'Uz:v~r 0 D(g˘T9R|b\nۀl G/%`ClFs%3n@)!jCNR7Űwt0t|uay ӧ(\v*~e.,"^6# E Bf̓F (^[4[/-*I3uDUS!w@$PiEfJVtvC"cZ pb3]U2zSb+7k0Vaf$",yki"գJK}x=V9  ۽{rBXXdg6wP vYs;C#,מ;4N/>AYNfUב$?fBr]E~0DC+ \)@Jbu:dٟ}Wkx#RDA&l9n(Q͹VY'vHyӋT_|$ѬMޥOM4g 8ϏK>& hه,7g ǰX <q%ٿYL =Jb]sN2hݦ䕼F-X BGOn줼›ll΁.BL4!bfTۇUMD~M/pq.V%ϐgSo)JL^^gUOicKf(hʰ<58E0_X9Hf a L,}a2EBz ">=Èu5玠j|n:F%K0+_TIPkQjn9<Œ8CaT$k0Dޥ(\?nSC@HM h(Wdd.44bp1(Xq>Ljq\I޽'ATQfGo;+\ V^ +^%(h׉pĮt)z%HxVS:?+N MpYw܁h GJY WqK-j(noFI:l٥nЮSv#!aU܏TX"$.zG/+ʤ3tZa6T> ɣ3MZx F%*`Pt$"=zіb4BSB( 7czof ;.cp'iD1#^svSm8[GjA#"Ģ &Y~x@bg!/=]wH%`ZuU?f͙Y. &.gS]"-2#@b˘ԁn{nW4E4|Cł;;Ц޳zBGߨJrTM4 ew90b+#и"br Bc'IěsvүI~\:C+=}1TDRtinGoc%T0iƄ(K4Xdb2yEt,{AghޯkgmtjS]dp D5[|tҚ1\]91~ ^րm*_S)q}4hC1lLp|#oT;e2z E!)ZRREP{;σE5G4fs5{0ӯDs v+lP޻\)8 5 $vT) g;GUXTt@qཆ\$z" B3@ 0xA$ґ ~wuKܙKBg$% GH T+>PT<`x,yy(H;U"OLIƏu츊C[h=m&` P P,ABBjF8,v́( P>aDjHF3Y)~OÚTlZMWimx P!cD<1S@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1S P!-D<1SX P!/D<1R  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1RA 0qAx4LO JJ5JlÂF'Ўg]bb'Ҥu1`/}"AA* X:Trƚ9F=m "ɨ_A X>nOvϦ$NK;3FlڲV;XeI9ނsfbƮ4Μ&qW9b5Y#*$ݮ;X# h :2>T-+ACLVch#oh%ѵhcOKl64⇖eGwbE̦p)>/rD,*{a;,q!#tD Rd(8᣺p P,AE,<1]:'+}`H P!D<1S P*D<1* {lX_A` 0A4LO JCS CIGl3WBs6-^Ir44R,?15M @.]vkfQ.'ScW…)`[`D oarAzpjZrmi-.'NcnĶnP/M# &GYaG܅]1f1Eh^kb8tpgVY P)AE,<1Αt)A Oс PCD<1Nhr^ 16M= 4__ ദ8 P%D<1[? 2Xف 0)A4LO Jz(󣱁 P#AE,<1R P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Rx P!cD<1S@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1S P!-D<1SX P!/D<1RA  0~A44LO JJ|G(]>2 ^w9y9 !8G0ԡFJ R{3op^". Dbdꌏ4؆aōڷz^$TTzJj`F_ޓl쓈-CͥI^&F:d"<%@ܴLUAxjl]V,a fBCTXoTO@Lu7Yi,lئpl L϶Y>ƖȻ ºe #.pΗ7Cp2=!0NU| #f:v=0]E5_x.6![Á7j $i7 [Nf|qTĩA諼ۇ5sF[g5#ɳQ&XCYG 6/QSTTD9Tyazwe<(aY)b-|ҫ\,:On0WD|-{ZP ~UMj@*N˾l@  PAE,<1*bHǟUL͕>Id.DhjB wrp] ҿ/G (M9K1]`\dJ?P @ h PD<1>fi#,߭äl'X}xxm&eʪuC(#5@Hfkd5iX17hοGg]9ޘuBt0}U54ZQ!>cԩ^  PfD<1P 1HCYԯS%p+J9H+Ns΁6 (3ٙ/$p  04A4LO JuW-7d64'O\HC 0 P#AE,<1S  P!-D<1S X P!/D<1R  0%A44LO Jp  P#ARE,<1S  P!qD<1R  P!sD<1R  0%Ax4LO Jq p P#AE,<1R H P!D<1S  P!D<1S` 0%A4LO Jp P#AE,<1S  P!D<1R8 P!D<1S 0%A4LO Jq P#AE,<1R P!=D<1R P!?D<1SA 0A$4LO JJD5+&Uy!JUff4I\ythM1Jp=s\\'&MLhVg TUq5̽S/I" C5:alM,(n1Nck_ )FE&Q}jq>%p0'őT`9Ph5 %3ieH)ļ@킛BۘPg2 xWN;{5xUK?3 ơ'諡J.N+.Mc\+Xs:2cW1HdnyuvKݲLIa\D-ʊ.BhuD'$]$X_O|WU0R|34|AYa"̺.Q%)szEࣻP P-ABE,<1Kj3,U.!( P!aD<1R@x PscD<1X1*9Iu}DEn\5RWCE\)/|:L=,2ʼnB4ݨz-}Ǔm ͡TaっӁ@ 0EAh4LO Jcv::J<_OwOHXGcq; 1 P4AE,<1^y9o=¬5 ;0ѣ P#D<1^lu6っ P!D<1R 0)A4LO JDΎ㣱 P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1S P!-D<1SX P!/D<1R  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1R 0%Ax4LO Jqp P#AE,<1RH P!D<1S P!D<1SA` 0A4LO JIƯeV A^ >YFO_>%+Hq'vms(Wd1mVfe)oU_m7ğ|dn9 aUw̘9j~my$<<5a+EV5p$>sy(, ً1-\[]lz犙p`xՉLiu0rD%tv!Z$#c*t3晕Qpt?z?$}.羟+ Cm^D#f[ Y ռ 2, x#_%m-:c:`ngqeAyLy7 O* j-Rr0[i4:=ƕcEL|_*d~/a`:՝Ռ`$qV P0AE,<1aΛEPh;60 P!D<1R8 P-D<1aΛ0p;M+F-?A 0A4LO Je>g-2~g)0bN}{l\]tƾ*eQ3fc}~Cs@I I@>.]/4!zE45d][>ro"C0d['Z ৪sw$Pfc2@ģifJ~esc\XL(ۡ%L$P}>bPKgϫA/wƁ P8AE,<1᭎,W:h{" )#j@ P$=D<1$  P!?D<1S 0,A$4LO JfLw~afVnڣP P#ABE,<1S( P!aD<1Rx P!cD<1S@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1S P!-D<1SX P!/D<1R  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1RB 0Ax4LO J? 偷wNʘ+gaOHIN/ TG-6Q~4Q k2L F_Tc肥Dl}bZa4#fU͑|!]-(h7>1A*,2z}[2 @bϗohj<GX)GVʖiS{:-L{n ?)pDq1գ #,*G޿)_*up ,*ߑ*qy5NY*owb%f?:?ȹ镖&}]3.˯9̭3`Ngvҫdɞ3d؜Y 3!l2=6>@VQ@"hkͤSkpS4kl)>fUPjtR:JmTtgڢ*3[c-m3r6|r Vۥ:fѴu!poFbۭ5 Үq\R=RH;d1p P^AE,<1tu(K{m 0:Gsz,|/mk/;D_ǂУ@H P|D<1t7FSoB&\xˣ6rx;]x?_M4H)Y_RQ΋MEaq >iO?F%-w+@7 P&D<1 dW#` 01A4LO JdjO[h۲m h P#AE,<1S P!D<1R8 P!D<1S 0%A4LO Jq P#AE,<1R P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Rx P!cD<1S@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1RAՁ 0A4LO Jཹ 5*@0%>u׌k:#U;N qik% _dUr&6 k=C4oHS|zs/z=b]co5*7^g^N}$E'" ra{yKz)]Uе_B5,N{D`m!4XVj^3DD)^. ElE6j|3> kcxӮ'vܞ6Zdy uNlU4ݐz>g7!iit}3Q1"ut~FOgܧkj &.𛐖?.tUnj[7pHu7ZxcoL@Ñ1=KVƘWuض ;?1ppzpUI0 PWAE,<1tqA5he>UCނ+.e0Nu`js#JXH@ P-D<1z!"҈siRxe^Hݏj oAVLNj[%`5+Kb'&}ҧ{]ͮ NaLk C~1e1<ͨS ֎ٹaDJ @X P/D<1~>tO6{:ר+&ŽUl 7wFɤioe.xT 3|y8楳`fП:!'rM!n>o2&O[5ށ  0PA44LO J@=Vv?Up@pca0v8w  P#ARE,<1 ]1 P#qD<1eu6Ԁ P%sD<1gx^'A 0%Ax4LO Jqp P#AE,<1RH P!D<1S P!D<1S` 0%A4LO Jp P#AE,<1S P!D<1R8 P!D<1S 0%A4LO Jq P#AE,<1R P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Rx P!cD<1SAց@ 0Ah4LO J:U|tFHZaA^ TKzQ&B+R3zT[Ԛy %*\Qԅ'4TAWVPO m *LH4e Bumrb­(0O׉ "Ira[)q^ :cCX$ |*5!-&Us, NH$᣷ P)AE,<1`Br P%D<1ۢ( PaD<1{d` xd @voW)dԓۆ7`nkZ ҍNk83DVpˊ&`Ё 0BA4LO J哮OğCȆQC ) nwк P%AE,<1hlu6ρh P+D<1h`Kž;vk] P!D<1R  0%A4LO Jq 0 P#AE,<1S  P!-D<1S X P!/D<1R!  0%A44LO Jp  P#ARE,<1S  P!qD<1R  P!sD<1R! 0%Ax4LO Jq!p P#AE,<1R!H P!D<1S! P!D<1S"` 0%A4LO Jp" P#AE,<1S! P!D<1R"8 P!D<1SA# 0A4LO J{<~ ]}&Lhfepнjۖ6 dB; yzM%Ҷ84I:Dm"6_\3V 2Ъ-5740$ Pc!K %?3 (4x)AKYIwkuC;k6 i*^ W+!9t`|$#ٚJꡙW K]%I*Qq_6*1Z`6;?슞:{~n} ir*XTk̟,diFVlhI]MC\g¥V}˪l#RBJg.vkqT",>it$WER٬L@" P*AE,<1jO([Y8`" P!=D<1R@" P?D<1{(#s/~^.3FmMmYj {RY3Z@f>XH#lJsY\vn~f1m.+_Cg}=ڻ Cbr,CA&nλq|3԰*6Q56T@# 0A$4LO JDh̦TVѨl~A^jE6.*5V^ ZWL6IV+ES"h4e3dw Ȍ5eT MOJkk,P.;99ݍ o>)oK4`#P P0ABE,<1paFwC(+\`=Q#( PoaD<1{+@7HnaPnE^+{ POlG"\Ql3B=-g !9pS GnaiH8mУ#x P)cD<1j͘0s=0$@ 0%Ah4LO Jq# P#AE,<1S# P!D<1S$ P!D<1R$ 0%A4LO Jp$ P#AE,<1S$h P!D<1R$ P!D<1R% 0%A4LO Jq%0 P#AE,<1S% P!-D<1S%X P!/D<1R&  0%A44LO Jp% P#ARE,<1S% P!qD<1R% P!sD<1R& 0%Ax4LO Jq&p P#AE,<1R&H P!D<1S& P!D<1SAv& 0hA4LO JKJC؅d *[Fs; >72K)2Xc%9)L0)H1:3Vy.+S/|˜d^(CJn$sJ@S[ hgH!G?|Ze:l@Sjdjuzd\ٗ/3<b♙H=uN؈ݠ&Zu #j14мT`"\5Ӂa3;ZBv+Cd D%z"f}. +@O F&u y 6ݳx.5IaPO>SVf_!ӼqxxSb1%qчP0-xå__a'8Z_M@NAnP7dnPY%Y)Eʥ/c7:]A.}sQ>O a>Nw U^fVL]9Vj)n- oEV~Wѱ,|V|"ihV|銃MxR _n _O$1=Z,ULx<)wn\3>@p   j\"+fFl먕 94_W ecIɗ8aܟ_!n{R^LF;-i:~!(4jIAeg oZRW>"XHޡ 2mi?Qgz>Ė;;t&ڂ|#ےouBj9u_ cƸ:|34&$ g!(;4Q8uQQmhy}f0bVD.CxR$4C>'$]^@Zst'p3 iZW/g]`L:[P,*u5'Kvx`êԻaUI4} 9N5u;q% bDEbsXP}5c6I} ͟,hdzp'R{%c:ftB{ `VY\WRl4.E3^+*S <*jWe#} B;U{IZFоX TnQڲTa>P#N*n#孆_Q採)⺚ OYs๔( P/ɚ9HF558듘'7m2#s#@9ܙvKǮI{8]Su]"y-YA&5a!_-cˊ7t\cC4,w׭4[uÆ\s.q 1A!-!ű*x%n{IZ.1G3xq7qUlCy/yfg@†}! 7Zf:OwtQwDғ"VE@hىFO3v\67D.LblIa:vQxz-]kB=u͚Dq/UumWS dARWg v'y *y{?tiRHo3ɻ{u[|\N5`si )&ԫȬqQO#?J Nf5C0R):I1{=߅#Ou׹7"OI4gL1v6č;[.=-sPNM8zCܲ޾lZt͔]#%m>L!+ 3 W6VƲ/]lyGn|SX2.4aA\~!qX:+}cݬRȫj!@oda6wQD 7Nb{*Kρx{VUL5l&r-07܏tzq QvZ. #5VM5jE * [L!C"fؔ=I^qT,:o] qKl(3`x:3b}'v>ES埓VDÁ&s,o4g$80S&pI gxC]*0h^K4Ets{Nv˓J)/4}y\. FT'PY=1r]ǃA,273ѐSXdY٬֒k*M ֤]|t۔VGV.ƔTQgZ\0eG=Px: jPa%{c>90 X¸[]. W1h^ xD}(Jp?ஓ,bK/|c՜NԹ,<90Z`^|3752?! Q?b’Klf3dfs XXns(Iѫ̿;3Ic)ZeW)PJ?BKcEp"~e5Ty4y7 5tJni4 I 8/AҪ0NJB06:Fkc:[\XF bWjzS?:s8\!)LtgC/p TOv&@v`Pj)H5j굧c -K,@&nP,RvX/zНWUB!}F b*PM >0G^B( 3mFS[7S%js.u]L79W^~/猐V\Bg*tԗmvuwB%k wGKD^PCrTLrQqٱzUl_ڏZ4b(ǾD|2cL7d"G4ݷ~P$N@(ZyFO J_*μv{W:~PQ3ߐϱaS=""o;Zv;d5wy,EIAtw'Υ"/nXyVwۮ%nJ2@SBA,h]?Y4ZwLDouޢ!#6DR^ l;VMHgE?2!6^I.*D-^zI_dBgU-RFW }j9ëǧQVM>H~[D* 'йc`dv}1w> U1l/48A=Zv15i= y4J{?,<2rie|(&J2YCt=sX{Sc=:D&~@4ղAdLssذ,^Mpa2 N2=?F쾐t"ZF3& Jʒe[̘5NbF1GQcФ6 `8tNK\dtk} u\D <kIċfGZաQ)f@׎*nީH3vb]f#dH s;gPRx?>ƥNB4Ae!i|'L^ Rܿd2xEȤ!^o#|B!݉V]kixcqY)NL?r## \vٝ@ÅH!@!2%Z f*u\]d-6Š%!̯dj[; ((@"TF>Ӫ(eئxi,դ u?~=D&E((.B#]`.ի aUO # AHtGa0nȱ?NaM7MctVӃɹ e(Z:/! F%\3^ ^/V?/%)H;FBƅ@g-"k6ouC>gfxo6XblO2پo][eV`"Ӣ1 \L/ר@T{LH~8PGpݲ5܊Y^,EdECО{p01:7QE3@Fr: _b2Y{Ux # 2Mgf4 MebiW@ ľ$//'px(Bmy3m|&_[_}U*}O"S_6es3:{zGʐc\_ڟ*o%dE/1(J䱐k(F$Z=֏/Pnhcy wbfr oߣ.vWWvmO,˻=VJ+i]^{ypf w߫a Q2KndI}NV6yowⴎopMjzƀ@ !  ax` <\29)lV֑nnI^."ܭ|MvpT˘sf/&a®UK5侀$opsc*aKjopj}&IKB<Pި!Ok MLD5f}P|=UDqovoV]˅,-lttX|4u2Zl 6 ֘]^גa!s>vXLߡf"&r<©\D ,p6EUIƂ3" 0+J,4aU{4(T**Am;!=kpMxV&(Ä4@7VQ9Xjc+*jBΟuZy3pE S6I m2ҟAWC7H"DTr~x sNBWR3r ! 媐K{"oSBG5AmvƄ֐ؑ/Н+eQ[@q+ګ_h=3q,?QM8,ir18e'mJH}PNRڞR`ɥUCsڐ=fiAJ@":LՖ_=7"3\ MT})EHY(k#k/dJyn[#íFk- X5߬)n[-X,gC+86}4:;bPUv|{ˁmg8WdŪv_9&`$+%@^ <3 ̢JȯiĴߒ]FR:A%;Vb:;h6|%A [wiu;Rp9~,hKH}N[SH2"{++9bN Vd`rڛ^1؞6YJs< Ֆ˧LʟN!ϩܵ.Y D R--ލmc >?ڤD k 8./:rRTxPO08/IO׋{d𜤲{NΩ!w_yH"%e.XKA2ѹB1ݷ?Vx}N9=Ja TϪhI%߁Eb]A]1`}h=hXolmf)X[8iUFy7VZ>T3tQaׅȈN(*dsC=,X7> TjsԠZEx#clפ-dv7Ot4^Dv6Iey=U1xϒCu@%XG,. 0& GVbcCa(y!&}$%Qb]h\&$f=˜}T-R;7}&2=oݨ'hgy*O`>tݰڹqk SlxB@mӾӭ2a!DgOR8q򗃼DQ8zqZ4w967t Eg$ u)DI)iO-9~np}):7Be+cc&[Hiw ;>la_dg?WX;=:.m_CԟSd֑^Dl䯧6ɟĖ7+!Z/r^+)J 8g j| lOg*{ u`h ?);7 ʡt /, :B 7ecU=5|Яw:zv;u>/d3ZAhrWU!֊(L6uRUZ-0\6aE< L1,'sSdžT$lI wu@*Fλ1lc"pkX{ՓOGf6 ?01˱FQu!c~ɻA"Z,]zӵ^ l-1s g9.\DV ;YRc%/>;JV$I xL1~d+&5R3gݢ ]܂wTU?tΤ%>RhN2Х%"#WLo}$+H@u!Dg2[l @B*Ԩ hܔYDgځȉC.%Z(ρc-7]C p#pz0EddGK Qn'23QdAǞ7؀Ӡ픱H+صO(K[YY TȚkFнRcCPYGtyW..ٱnSsUR/QnPOf%Ru_+54iH:DNIg*Er,](:6t>'jgV[#:8}MA{fbO0ϖl [O"33{%g؎D"xcsB2SsNd+x y{ӕ(:KK_qKtA, .-.4oQKuqe;˃L:QxP[}dzڲ%̝5 qo![$˚ ] D3oK Ѧ = jyKfVHo5;&R 9vd/ͧwfL|q EcVWME9C Y6২u w wMbZo)_l鷾{`>;u}0 U<ׯDVbe"݊0huY ^wqtAZ?8s o~?16aK 8Ywޕ= $ 4ܭ0wX<8imQp\kU"[pk w^F(m>%-Y7F}5D2{$ś yZGsg}JnG,F58'yKlQ 'FnjsEn/V lݺvZ0O'X9,FEèV oXJEpq@re%V"d9$RyDUBmϭbk+bTk34U?zC&{5ZEPd*]뼰y3VB}"J/B͌E~3xq1@ne-_$1<lm#>[4˕g(YO-ddqŠ[`M^bj+ ygJDq̸w}QaلIVWߛFXk:pR4ָ<7 ?J='P1$w޶lΔ^m(X}8!:ܰ Pmc{)WV t`Ղ%S|n0"yjQ`9'|=tAP,=LFV{f mR= )4ʮʺs~jBy 10nҢ(PϕԒTQyw/kGxt)VAq$;12jWaH:n0T~.TXx}D078nξ_B>_k$\ n$gE?MR U I5bKBx(7h8fm~,窱hC8d@j۞ ƕXL"h;!,IVc$W;'#Alye;"i H k21(҉` C*mDP-ŹnK>HlK{)rMn˂W0-1Z t^۱ߥLŸa RCX :Љ>k[:rsl4@1> 0rՈ ͡ʨ HloGikc̒lM8e?gT;-4K]^[Ȥ8iZT\[M׀vA_[D܌!\ ]Q䋋X+XkddObhFn:% FyGoTYfqIrUuo+z !D?QHGm'rs>| hbCP;lnnN:xjPfk83LBUÛۉ86 6o}y:^e kb_e$No[mEޝ\Tמc'D-gPQ3)8cy6|6/G JYB874!ښfP|sկNtD;%7R#K]]/nК5i(ϭs,u9S!ې(IA$LZM<(ؑgm@E4W;1LvVxVvM\ߠW(ƲnG]ٻzN4]Z)FGljuf:wYQZ,H.mLH?ɹq7EH߼Om[-Zf<{ݥ2gD^0MBkbo5@ahY5f}HfG{H$k6 E#<0AҴTkd$JM%={ @ټˁ"jKӒ%Gq!!ac1^Ls :NRѕN(aZUA\78lAK-nNFڨj^2"S#UW<' "R~ªG"\Q& ij~kw^<&Z5w&ܣg@ u֦wq}/d >'X1x:&/^7Z|*;͏5}@_{>ޮke[c?8Υ.*=%"d'l6<1XvpS›F=.PL.k!Erd!=8'7 ?VX/\۰C\x%hc"TwIq M,c p9 FwVJdޱUr,=빵Lv*:Ş[ ab;ҧ"z$Kj߫Uk.u*Z}w0?nLcORO*A-lL j}6Lg'guȎZm٘0gq af~lqimm{9ϣ \[&I"Qn J'n6ae`5əQ֒2nNcAծc.}Bg+=?k;RH?Znr"oicM'SI}@YJT:Pn7e/bU%p"iAlżu=%I29(L 8:e(*Q$;=IZ;X\1N?=G˽`V@>/7Y:O*a5o;Da:W5T+E4Sj0Qee[+_iiS,̶e\v„tc^k&ٰpw?c:p$D!'z3Q` zT %xjMŸeB +(-D;9nʢjHιfwY|ŏ$o{r|If_P,CEIw%j7.[{0_nlDNҦOK U=DX =upmی=REn@ȖSV8_/*RS>e؟4k_}Uj65^.ް"/e3T*_q:v04 x@ts /6uΉJ<: EZH rzNcs1Ξw u BXΗ@Eq_QB(#A}c${}i `\"7ja`M C۴:t,\;/ *Wk7PcVr"' HeB;[D+-sئLדymaxz)3Inj98+snޡhWh 8jSM)ں1㔎Ef1:#VýK}?>ۥc1ݹTZknd38BChޑާ3J|+n&"\8]z2Z)se+z40" D-R- ߑJ^gW\PS`׋~K*>A8 =3*RPe4Ԓlu``mم& 2 )Ԍ{" SDk՜`o7WקkL\O*dBİ!02Ѐa3IGM:zzR4=XJ#[4nhbdwT0d.ץ?w/7&h8/$QJdm+jW1;'Fc̻[EzD6AOF %Ha_u" xEY}-g=?U'._;@^7FO/7M\"i*3uN/ZO952ik\Ӥ~$Z!W׀L$2nCTs2TB=Up'NWw1̱Fv,[*\ ݑP٪fPs«n\jv|G< Jhr`Cu>ӎo+o$܀Qj2s}Nd !?r:н 뒔캂 v3GE ͍#Ú]l"Cea{Ԗa,ogNP&1Gږ1!lF) &NL-IZv)G*rLfY~VY5#?a}qSB "vR_)z|N:Uʰ 1"9N,oO`UeuڧG5Cq_P 9镝m!C#:e bvj=sڳz>U] Zh;HA}bd1-#T)rg?~MJmAE銮]Atod-Z 9Eu6mQ!3!=t&K$ c?@p NbK/"-X"!3]q.13nDS׃ J?̩!Gt 1֙[Չd2&:u@' eQPa<{Pӻ'Zٴf>r.M !AEB4}5.= J):bM;(hgÒhL{ChګGv _nSkNK\ DKOO5K>`4;\JxcX'/5c3*,pu#.#.O--Z+ݼ]o ~E8?^]IV,@iֵl UYg'A8q$cNUpǔL>|lZ|8c4c+FcF@ ߩy2#w #!B>Pfg[9HQVz~5gn $c9{!esqm~yhYgWlT0Eޠh\@S>*@ZM h-Wdd.4)bp1(Xq>CLiq\^Pa'hDQfۂ9g [פfK\Lī pĂzRDȿh{Iʏ~sjz@)Y7Ch:А.O+_7 (n_#FI:ljٵx̮~+#!U}O+oLb[ׁ֣aAE+BDT[gz b]/63.hS@pJ^F"L3)&ideoЪ 7ܳF1" E IH/9)crVwx,?"Ģ xhk@bg!/=]wH$ؾf͙YH6S`FQJDFx:c.)2O}"a퉾!b~SoYY!#CoEoY*joe|¯FPZC2?<~2CHW4.+xilq&]fw7>W&ɞ1$l~I)!`(ƣk+wK6k(>yD꘿Q]"stgE.>^V3dsVo6Ǻ\Wn>vMR. q ^wm*_S)q}4hH1Lp|#pT;2z E ZR۫-;&P,{;E4fs5{0ӯDpLv+lP޻\1˻{5 \z}@mg;Tt@qཆ\$z"B0I1@ 0xA$ґ ~wuKܙKBg$% GH T+>PT<`x,yy0{%bę=|#}U6 i-gM Q|N\8P P)ABBj@ݬȁ( P:aDjaPqB@>m7W@€ x P!cD<1R@ 0%Ah4LO Jp P#AE,<1S P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Sh P!D<1S P!D<1S 0%A4LO Jq0 P#AE,<1R P!-D<1RX P!/D<1S  0%A44LO Jp P#ARE,<1R P!qD<1S P!sD<1SA# 0Ax4LO JPFdY|DtCIJ0 ~*|POPC9o}|Ey}r U{5!E^6+W5Z3/[kDzDϓe3yVh¦S4$O?of:B:`=W/L1c^@(}CQ4&Zjeﳳ:B  up%E4zEL&Q遣p P,AE,<18I{BZpH P!D<1R@ PD<1]SAd˽FoDD'2 /UiMTlFSs/էaJZ_ )q>C^g[TvPVG.C^:l,+Ł@` 0yA4LO JGs %k8 a)n)嗄FL9or"~M4/T1#EUiR ޱ]ڪ=(PwX P0AE,<1xBAc'J\qށ PPD<1]l[z^C~dO:7`k !Oj/ɲćB8 P!D<1R 0%A4LO Jq P#AE,<1S P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1R@ 0%Ah4LO Jp P#AE,<1S P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Sh P!D<1S P!D<1SA 0A4LO Jٷtx10 P/AE,<1 6vUrGocd P!-D<1RX P)/D<1 6vUrG5@ȁ  0A44LO J^&J !Κɒ>`͹\?['*ච?{ #D>(ּ4nP#+}) yǏ8Iɝf)y君.73/^}s3RIu1 ^T54\%́ P>ARE,<1IP.3YÀȃy%:@ci@ PvqD<1h}ZToBFCiirWo5ߧb8mޛY}7U Oo̮ z-r,Dր P+sD<1C\21Z6  0%Ax4LO Jqp P#AE,<1RH P!D<1R P!D<1S ` 0%A4LO Jp  P#AE,<1R P!D<1S 8 P!D<1R  0%A4LO Jq  P#AE,<1S  P!=D<1R  P!?D<1S  0%A$4LO Jp P P#ABE,<1S ( P!aD<1S x P!cD<1R @ 0%Ah4LO Jp  P#AE,<1S  P!D<1R  P!D<1SA*  0A4LO Jؔh_7'u ǬIQ2]s{[jo,OmjEuI{_N~yS%3` 'zZ ̼ȉ(AmpʛciDよKaԊͿ:Glhw"(3Aiͬ,踞IЃËJǡ!ТU\ T`n,Ce<[[|o8+Ѭ5Ö{.r+eqz G:d7V@  PAE,<1m]X#Ot-&bbw!(ECo3:\LB9liķ`Y ݅]I0)n+}VX7djK'ܵjBc_1MCr(! h P-D<1]vwkqHL ҁ  PDD<1͗J\fJHGG.7ջ  0%A4LO JyP 0 P'AE,<1'$  P!-D<1R X P!/D<1S  0%A44LO Jp  P#ARE,<1R  P!qD<1S  P!sD<1S  0%Ax4LO Jq p P#AE,<1R H P!D<1R  P!D<1S` 0%A4LO Jp P#AE,<1R  P!D<1S8 P!D<1R 0%A4LO Jq P#AE,<1S P!=D<1R P!?D<1SA& 0A$4LO J 3e0-{޺dTdyDzf0~B;!88m VKG=#'D\t_zUߖ `؆QaB*!7 >'F a]ry 0#-E|ea_X"\g<]ZYT ěfȄ He)rjk+g'f:rT֍`:uXxPm3f al56+P P+ABE,<1Uru<t( P!aD<1Sځx PLcD<1,B*gEqRwrf 2YYZ|2í?~|U@ 01Ah4LO JdL#v連 P.AE,<1@47@m P+D<1~m%"X =2 l P&D<1cV M磸 0*A4LO J$*v*ࣱ P#AE,<1Sh P%D<1Ϡ P!D<1S 0%A4LO Jq0 P#AE,<1R P!-D<1RX P!/D<1S  0%A44LO Jp P#ARE,<1R P!qD<1S P!sD<1S 0%Ax4LO Jqp P#AE,<1RH P!D<1R P!D<1S@` 0A4LO J[^c 8 Y Y[eIڴy& skyS1_%p5)&q%_e&W>YBCqvb?~3!In<P7<*TpݴVh@|Y;7G$35'x_rD@HFxL,حl$ }M<υ5F P*AE,<10q@o P&D<1cV M磻8 P-D<1>tJ[£܁ 0NA4LO J6kdvAO&v ##^bh(9/wΓF@m P2AE,<1w@MebgL \ T:JKJLvƒU`.LZ' P,D<1ݓjmj` 01A4LO J"?Mh P#AE,<1R P!D<1S8 P!D<1R 0%A4LO Jq P#AE,<1S P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1R@ 0%Ah4LO Jp P#AE,<1S P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Sh P!D<1S P!D<1S@ 0A4LO Jf?ItH$'w@T_w-IWFm6`LEz[R+ݪV,o1(0讐I@WHeGJur"k֎)<'.55vM4B` ٣@0 PqAE,<1r }F}v>570k͑Ic~[P؉} eSg_hȘ`L/x̘?[+FS P--D<1S G,97X P!/D<1S  0*A44LO JWP?р P#ARE,<1[ @ P!qD<1[ @ P!sD<1S 0%Ax4LO Jqp P#AE,<1RH P!D<1R P!D<1S` 0%A4LO Jp P#AE,<1R P!D<1S8 P!D<1R 0%A4LO Jq P#AE,<1S P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1RA$@ 0Ah4LO J|^,EC Nr1b%. 7 #o&-K w̬Ĵck>04X%8AИj e<7C]`բIKʍv<ptT- 1 MF/g `'ܽ*"X#e@$ PQԲOj@" P*AE,<1۬`m%e1" P!=D<1R" P)?D<1۬`@# 0A$4LO JOH$ .#b xaiHo8iC8YUP]6?=;!DO]. CZ5@~ StyL#P P1ABE,<1ڻmGvf 0*B ҁ#( PDaD<1lHl.=vHEPǂ|⏪'ɸ(a#x P%cD<1ql$@ 0%Ah4LO Jp# P#AE,<1S# P!D<1R$ P!D<1S$ 0%A4LO Jp$ P#AE,<1S$h P!D<1S$ P!D<1S% 0%A4LO Jq%0 P#AE,<1R% P!-D<1R%X P!/D<1S&  0%A44LO Jp% P#ARE,<1R% P!qD<1S% P!sD<1S& 0%Ax4LO Jq&p P#AE,<1R&H P!D<1R& P!D<1SA,& 0A4LO JRCG,s4\IĠpmFiNOmqgEEB];0(,xj&RJ(y3nw.>+\(:eKY1`T0!og0'r.&$V,aAR7.yŇ+-.%qGbn &}r?UAyP:s[ob/y{a 2˼H릳_:X D m.>CuN B EÁ "g(  @@@P(`hﱒEemw?v;Όd4Xpg^#j14мT`"\5Ӂa3;ZBv+Cd D%z"f}. +@O F&u y 6ݳx.5IaPO>SVf_!ӼqxxSb1%qчP0-xå__a'8Z_M@NAnP7dnPY%Y)Eʥ/c7:]A.}sQ>O a>Nw U^fVL]9Vj)n- oEV~Wѱ,|V|"ihV|銃MxR _n _O$1=Z,ULx<)wn\3>@p   j\"+fFl먕 94_W ecIɗ8aܟ_!n{R^LF;-i:~!(4jIAeg oZRW>"XHޡ 2mi?Qgz>Ė;;t&ڂ|#ےouBj9u_ cƸ:|34&$ g!(;4Q8uQQmhy}f0bVD.CxR$4C>'$]^@Zst'p3 iZW/g]`L:[P,*u5'Kvx`êԻaUI4} 9N5u;q% bDEbsXP}5c6I} ͟,hdzp'R{%c:ftB{ `VY\WRl4.E3^+*S <*jWe#} B;U{IZFоX TnQڲTa>P#N*n#孆_Q採)⺚ OYs๔( P/ɚ9HF558듘'7m2#s#@9ܙvKǮI{8]Su]"y-YA&5a!_-cˊ7t\cC4,w׭4[uÆ\s.q 1A!-!ű*x%n{IZ.1G3xq7qUlCy/yfg@†}! 7Zf:OwtQwDғ"VE@hىFO3v\67D.LblIa:vQxz-]kB=u͚Dq/UumWS dARWg v'y *y{?tiRHo3ɻ{u[|\N5`si )&ԫȬqQO#?J Nf5C0R):I1{=߅#Ou׹7"OI4gL1v6č;[.=-sPNM8zCܲ޾lZt͔]#%m>L!+ 3 W6VƲ/]lyGn|SX2.4aA\~!qX:+}cݬRȫj!@oda6wQD 7Nb{*Kρx{VUL5l&r-07܏tzq QvZ. #5VM5jE * [L!C"fؔ=I^qT,:o] qKl(3`x:3b}'v>ES埓VDÁ&s,o4g$80S&pI gxC]*0h^K4Ets{Nv˓J)/4}y\. FT'PY=1r]ǃA,273ѐSXdY٬֒k*M ֤]|t۔VGV.ƔTQgZ\0eG=Px: jPa%{c>90 X¸[]. W1h^ xD}(Jp?ஓ,bK/|c՜NԹ,<90Z`^|3752?! Q?b’Klf3dfs XXns(Iѫ̿;3Ic)ZeW)PJ?BKcEp"~e5Ty4y7 5tJni4 I 8/AҪ0NJB06:Fkc:[\XF bWjzS?:s8\!)LtgC/p TOv&@v`Pj)H5j굧c -K,@&nP,RvX/zНWUB!}F b*PM >0G^B( 3mFS[7S%js.u]L79W^~/猐V\Bg*tԗmvuwB%k wGKD^PCrTLrQqٱzUl_ڏZ4b(ǾD|2cL7d"G4ݷ~P$N@(ZyFO J_*μv{W:~PQ3ߐϱaS=""o;Zv;d5wy,EIAtw'Υ"/nXyVwۮ%nJ2@SBA,h]?Y4ZwLDouޢ!#6DR^ l;VMHgE?2!6^I.*D-^zI_dBgU-RFW }j9ëǧQVM>H~[D* 'йc`dv}1w> U1l/48A=Zv15i= y4J{?,<2rie|(&J2YCt=sX{Sc=:D&~@4ղAdLssذ,^Mpa2 N2=?F쾐t"ZF3& Jʒe[̘5NbF1GQcФ6 `8tNK\dtk} u\D <kIċfGZաQ)f@׎*nީH3vb]f#dH s;gPRx?>ƥNB4Ae!i|'L^ Rܿd2xEȤ!^o#|B!݉V]kixcqY)NL?r## \vٝ@ÅH!@!2%Z f*u\]d-6Š%!̯dj[; ((@"TF>Ӫ(eئxi,դ u?~=D&E((.B#]`.ի aUO # AHtGa0nȱ?NaM7MctVӃɹ e(Z:/! F%\3^ ^/V?/%)H;FBƅ@g-"k6ouC>gfxo6XblO2پo][eV`"Ӣ1 \L/ר@T{LH~8PGpݲ5܊Y^,EdECО{p01:7QE3@Fr: _b2Y{Ux # 2Mgf4 MebiW@ ľ$//'px(Bmy3m|&_[_}U*}O"S_6es3:{zGʐc\_ڟ*o%dE/1(J䱐k(F$Z=֏/Pnhcy wbfr oߣ.vWWvmO,˻=VJ+i]^{ypf w߫a Q2KndI}NV6yowⴎopMjzƀ@ !  ax` <\29)lV֑nnI^."ܭ|MvpT˘sf/&a®UK5侀$opsc*aKjopj}&IKB<Pި!Ok MLD5f}P|=UDqovoV]˅,-lttX|4u2Zl 6 ֘]^גa!s>vXLߡf"&r<©\D ,p6EUIƂ3" 0+J,4aU{4(T**Am;!=kpMxV&(Ä4@7VQ9Xjc+*jBΟuZy3pE S6I m2ҟAWC7H"DTr~x sNBWR3r ! 媐K{"oSBG5AmvƄ֐ؑ/Н+eQ[@q+ګ_h=3q,?QM8,ir18e'mJH}PNRڞR`ɥUCsڐ=fiAJ@":LՖ_=7"3\ MT})EHY(k#k/dJyn[#íFk- X5߬)n[-X,gC+86}4:;bPUv|{ˁmg8WdŪv_9&`$+%@^ <3 ̢JȯiĴߒ]FR:A%;Vb:;h6|%A [wiu;Rp9~,hKH}N[SH2"{++9bN Vd`rڛ^1؞6YJs< Ֆ˧LʟN!ϩܵ.Y D R--ލmc >?ڤD k 8./:rRTxPO08/IO׋{d𜤲{NΩ!w_yH"%e.XKA2ѹB1ݷ?Vx}N9=Ja TϪhI%߁Eb]A]1`}h=hXolmf)X[8iUFy7VZ>T3tQaׅȈN(*dsC=,X7> TjsԠZEx#clפ-dv7Ot4^Dv6Iey=U1xϒCu@%XG,. 0& GVbcCa(y!&}$%Qb]h\&$f=˜}T-R;7}&2=oݨ'hgy*O`>tݰڹqk SlxB@mӾӭ2a!DgOR8q򗃼DQ8zqZ4w967t Eg$ u)DI)iO-9~np}):7Be+cc&[Hiw ;>la_dg?WX;=:.m_CԟSd֑^Dl䯧6ɟĖ7+!Z/r^+)J 8g j| lOg*{ u`h ?);7 ʡt /, :B 7ecU=5|Яw:zv;u>/d3ZAhrWU!֊(L6uRUZ-0\6aE< L1,'sSdžT$lI wu@*Fλ1lc"pkX{ՓOGf6 ?01˱FQu!c~ɻA"Z,]zӵ^ l-1s g9.\DV ;YRc%/>;JV$I xL1~d+&5R3gݢ ]܂wTU?tΤ%>RhN2Х%"#WLo}$+H@u!Dg2[l @B*Ԩ hܔYDgځȉC.%Z(ρc-7]C p#pz0EddGK Qn'23QdAǞ7؀Ӡ픱H+صO(K[YY TȚkFнRcCPYGtyW..ٱnSsUR/QnPOf%Ru_+54iH:DNIg*Er,](:6t>'jgV[#:8}MA{fbO0ϖl [O"33{%g؎D"xcsB2SsNd+x y{ӕ(:KK_qKtA, .-.4oQKuqe;˃L:QxP[}dzڲ%̝5 qo![$˚ ] D3oK Ѧ = jyKfVHo5;&R 9vd/ͧwfL|q EcVWME9C Y6২u w wMbZo)_l鷾{`>;u}0 U<ׯDVbe"݊0huY ^wqtAZ?8s o~?16aK 8Ywޕ= $ 4ܭ0wX<8imQp\kU"[pk w^F(m>%-Y7F}5D2{$ś yZGsg}JnG,F58'yKlQ 'FnjsEn/V lݺvZ0O'X9,FEèV oXJEpq@re%V"d9$RyDUBmϭbk+bTk34U?zC&{5ZEPd*]뼰y3VB}"J/B͌E~3xq1@ne-_$1<lm#>[4˕g(YO-ddqŠ[`M^bj+ ygJDq̸w}QaلIVWߛFXk:pR4ָ<7 ?J='P1$w޶lΔ^m(X}8!:ܰ Pmc{)WV t`Ղ%S|n0"yjQ`9'|=tAP,=LFV{f mR= )4ʮʺs~jBy 10nҢ(PϕԒTQyw/kGxt)VAq$;12jWaH:n0T~.TXx}D078nξ_B>_k$\ n$gE?MR U I5bKBx(7h8fm~,窱hC8d@j۞ ƕXL"h;!,IVc$W;'#Alye;"i H k21(҉` C*mDP-ŹnK>HlK{)rMn˂W0-1Z t^۱ߥLŸa RCX :Љ>k[:rsl4@1> 0rՈ ͡ʨ HloGikc̒lM8e?gT;-4K]^[Ȥ8iZT\[M׀vA_[D܌!\ ]Q䋋X+XkddObhFn:% FyGoTYfqIrUuo+z !D?QHGm'rs>| hbCP;lnnN:xjPfk83LBUÛۉ86 6o}y:^e kb_e$P:GQe?2r\$x}bGڅGssvq(HY1Ǵ ZjIpWJͼ)_! ɖBN,yb1WQVfUA1!Ą=>{1TjoD"O05z}]6!O咼͈ JKcѩOu!+0D{i-Z Lc:e|ASU{MPm847and /QG e(&" 4! C40sTo%K( l39iDn|cؾ;akFPhQ 9NzJt֧T e  RfB|tfpyXߎM@;PгϮSSIӁ, a\o4Jc, @FQIZ6m&aD9E_ C= }nj!O ^i!++W@!sLo!ؘ4\ߝ-8va:;֐Dy86AM]%Hܴ ހ7壒9IΟtupe 7zvL)ћdp=XmR,,e!rFUIBkBw%+9L, X!#4_ Oρ9z9\di|}ɥogUpοVԭ0jXAw,Ͳ2ޘd'W>$o9zwFcZCU+xАs+o/ $dT0Ҡ\n.E#W}Os ֩TH:]KkҲ0췬1},"S9VD98jcm>[ܖ( t+W T3L>hSo8Io"6[1e'hSGZxu!#_r?2+T]q?פPFWڤJa^#ncHqGn-}vXkhˎ!nwNJtxK5b^{9^TCz[p[^:?{>9!r`_&qٕbTяr1E /~g_7ojƸi/wK]|V=Ij ClMolpJ[94OSg{F wf:HIB+j^a@N7S:mPzIl2-+`#'/htt(%$/o 1g?UDwT|%Ms ~G@"w!~&t raU*JO39x9UF{kI|9lR!iY?7h%mV;SY߅a)7[btf4o+͙,YW CvT\Y} [J6%#gNخ#l5O6z#b_q(muT۪~i 90DaoRVlZEȪeR/~FUޘ*Xխ= SxFN1M *}Nьz}Sq )~JvW̘ @aDj(Ean @R9]6r=󈸧=} J;W Z~N7G9huA @UIȷ'hkN#W ^JVwZvXu'IoXc^HHE^2tqh9$kRB<^ 뇵 >X,zbcׂ] \zihSFy̕:1K1=vhf^i=!@Rd:)m[_[BL* cG[K{,6Wܡ_[˯ܦ0vqBqOX?ޚ>%xg)ߺWix'ȄV[>+I"L8X!1lWMLM=ErpjrF+gR* IƝm-1[dtI9S13«f\jlڷC$+[Ƀ H+N-Y\$h%;x' җGo\X(ޱE#Qt.a k﫷웈tR?q}wߑRޗ'԰YW0>?C%&{Zr; !gx NL.S8sWPZNuYm,MƭCcJ¢3cx~eNCb bT.Ba0< 9ȳ\M6{J˦A̷R99e(7C?BeZCXd;h?`a3?ZB@@ =z؏¯ٰO,kǵtIGQ0E!gN=E<")122A8_ϳ:# bz(株0ѓSeoz C=YՊu<N̩ iw@B > '#Q ,y`g׭ KF8gՁP'8upgt4136ja A0~wp-_.WWjx2 A _hiuDcW5[6nih+y/8s8i1<{겼_$@M2V)ȲKy∪,zSP"y$ʃE^[6iPZ{ ՙb3'_|ĵuxToǺ@kya(@➵;j1A<49b.K^JaOqܚ=%0XRr _{JFx=EoewχDk};}lakyɱc iИU>j9); >L3!RgQrI|X'?>L7@>Ҫe`h|FbE\| ,p7ipv.bS@緋-:%= VQ:6Kzd`a̔~Ur-sFsdAp3`BݸCñf?dg/b,n-9- ?,M*{[ @(gHhɢ-0*LEƕO8U%1uiAN+kJ5߷ݤ]i7& z.Iǻ7liF=xЧ H'u hD@Iwa;k#'ϾF B Srr[4i!Xwz1 +[ {!v9btI=koᕦ|ĝ= g5L~dI?Jv3HjX)zcqJ]M~ 'bpQ://wWHǴKwՇ}6>e-\ժkͱW[SF+>bnJ$\lA!Zna?%4[#̇ii5Qj!aHgiNɔ-@Nd4`#Ynpc鬍^L]4[?9%3d}WjdP>@l-1,&x/ali heሾBЌ< 0iA$ґ ~wuKܙKBg$% GH T+>PT<`x,yy ; #{5|2pd*P P&ABBj$zmy` 0M( P3aDjsr=O-wt|=x P!cD<1S@ 0%Ah4LO Jp P#AE,<1S P!D<1R P!D<1S 0%A4LO Jq P#AE,<1Rh P!D<1R P!D<1S 0%A4LO Jp0 P#AE,<1S P!-D<1RX P!/D<1S  0%A44LO Jq P#ARE,<1S P!qD<1S P!sD<1R@ 0Ax4LO J8T^ɐ#{WV$2(ȕ*uI4ЄҺ-*Ϻ\NcF{@U/d@ 5[!%@(16null]ILpeJpVdꙎ WqApz+%tz&s3a;3K}%w\ JZ Y .J zm@  PAE,<1 *0۟W_A-:Ή8c4,g]Am[ɤZ+|Bf67[U]:^WtT[-;;\j(Gk8qFt| h P)D<1cl tÁ  P5D<1XO /7w@#֮A!Á  05A4LO J,YHu=opC 0 P$AE,<1Jѣ΁  P@-D<1wZ,UBX7gY992{N7nL X P!/D<1S  0*A44LO Ja3?:ᣱ  P#ARE,<1S  P!qD<1S  P!sD<1R  0%Ax4LO Jp p P#AE,<1S H P!D<1R  P!D<1R` 0%A4LO Jq P#AE,<1S  P!D<1S8 P!D<1R 0%A4LO Jp P#AE,<1S P!=D<1R P!?D<1RA  0A$4LO J-.^0#ɮwsě{D$% ax񘝍+zњObac i:hsBgfᔇAp RKTjjOT^Y$`"n][c%vKIRbS3^9Szp,6•}ӸI z)_%9m*6.V8sEz"V^ hUpZ:eX7ŁP P7ABE,<1ecmf˂¯Åڠe( P!aD<1S@x PcD<1ZR=YB9>6ɭsz <`3"s0Pa/a+(w:n(Fc,iNV_^$}'}ӏ7w=!ȁ@ 0:Ah4LO J-G/ Pw u0>j6` P$AE,<1JQ P$D<10d P!D<1S 0%A4LO Jq P#AE,<1Rh P!D<1R P!D<1S 0%A4LO Jp0 P#AE,<1S P!-D<1RX P!/D<1S  0%A44LO Jq P#ARE,<1S P!qD<1S P!sD<1R 0%Ax4LO Jpp P#AE,<1SH P!D<1R P!D<1RA` 0A4LO J-&w;IH]Eq&&zbpoY[>AX7-D/d=:E硞!Ék Ÿ$߄5} )A-gN;f!8wb9j 4Rc<8 xcы#L(HPDh[hW\nCl|?M =ޖNԖBEvZ/@^B]X<\G¶axխ;zl!Vn :"遣 P+AE,<1ecmhm~2 P!D<1S8 PiD<1^C@.lZAɇ`+a-Rvi=\i8=j fJl֘m`Op\ 0gA4LO J, ) 3hde!pXՒD}v`nBѮv%NͼqK P/AE,<10K(Ӵ#!܁ PN=D<18{ %jL9b,LCe/QZ,9~2{ P'?D<1tw@ 0%A$4LO JqP P#ABE,<1R( P!aD<1Sx P!cD<1S@ 0%Ah4LO Jp P#AE,<1S P!D<1R P!D<1S 0%A4LO Jq P#AE,<1Rh P!D<1R P!D<1S 0%A4LO Jp0 P#AE,<1S P!-D<1RX P!/D<1S  0%A44LO Jq P#ARE,<1S P!qD<1S P!sD<1RA 0Ax4LO JO@JC?|G%5 z4s4j_Q3zDj˚0z6s' ֟;,wȜ:no- E t6} i K=Ձ6`R}8,/݋;DmothŵL$. U50y*Ắp P?AE,<1/6;B^a2Oq' h:/DF~JH PiD<1/Ag {%1̖yfz%KB\5o4x#sYss43ݤQM;a?8~f[Um* ѐmĦϺÜQ<=4T`6R p+Shq$iL7j $C EC[`LD ZQ݉֨H>s#vz@ ȣ0 P[AE,<1/0% !@N2Iw1eVRޙ_upy@@ Pt-D<1/5'JPS'A.T[, BVϊ*Լz@x ??;>jI IM'\!сX PC/D<1-,^ {ܓ^XaY҇LlдL*BZp   0*A44LO Jqϣ= P#ARE,<1S P!qD<1S P!sD<1R 0%Ax4LO Jpp P#AE,<1SH P!D<1R P!D<1R` 0%A4LO Jq P#AE,<1S P!D<1S8 P!D<1R 0%A4LO Jp P#AE,<1S P!=D<1R P!?D<1R 0%A$4LO JqP P#ABE,<1R( P!aD<1Sx P!cD<1SAg@ 0YAh4LO JF@A5tGРH+ӶpMZk @o89;K3)"j_ϩiuj\eAO32L)BK}i-"/웊4jI`.^&=xu҇.!s|dKq{N.fb"Y{.!H)&uNL9c=< HoY=t!%[7m[ re; w?7JX ~hmu7FVqJ/>Y}iZ82n@!,v<ρ? cW$. P-AE,<1.@M==+O:Zq P!D<1R PSD<1. m]S~`y*CPWzH͡@>8>51ǁ 09A4LO J<_r#S\;`끣 P.AE,<1, De6 ͡lh P2D<1,EwN }mJ  P!D<1S  0%A4LO Jp 0 P#AE,<1S  P!-D<1R X P!/D<1S!  0%A44LO Jq  P#ARE,<1S  P!qD<1S  P!sD<1R! 0%Ax4LO Jp!p P#AE,<1S!H P!D<1R! P!D<1R"` 0%A4LO Jq" P#AE,<1S! P!D<1S"8 P!D<1RA2# 0$A4LO J?QZ7!LKLU@" P)AE,<1- M==*q" P!=D<1R" P(?D<1- M==d5@# 0A$4LO J3VynK':k;CE>KxZ7 ~/Nx4 {fY?K?P8_e(9ֹC PX`n*C0bzR-9Rܲ]m9hw7#P P3ABE,<1+_$\`1 5t'@#( P2aD<1,p{l;.( }#x P!cD<1S$@ 0+Ah4LO J4h `# P#AE,<1S# P!D<1R$ P!D<1S$ 0%A4LO Jq$ P#AE,<1R$h P!D<1R$ P!D<1S% 0%A4LO Jp%0 P#AE,<1S% P!-D<1R%X P!/D<1S&  0%A44LO Jq% P#ARE,<1S% P!qD<1S% P!sD<1R& 0%Ax4LO Jp&p P#AE,<1S&H P!D<1R& P!D<1RA& 0A4LO J6[}!MV 'Ԇ`0v L;j:xԱ)b- X߹$H$ǦrvB ')έn-[nuFڗ>\PQ`M,KM k[%jOƢ(]I)Ԃ"j .۸^0y-ӬcSkYu׏[_@T4L AA\L&Hzi"&_Ah8Ԝ?Cu6u0 E* "g(  @@@P(`hﱒDe?mw?v;Όd4Xpg^#j14мT`"\5Ӂa3;ZBv+Cd D%z"f}. +@O F&u y 6ݳx.5IaPO>SVf_!ӼqxxSb1%qчP0-xå__a'8Z_M@NAnP7dnPY%Y)Eʥ/c7:]A.}sQ>O a>Nw U^fVL]9Vj)n- oEV~Wѱ,|V|"ihV|銃MxR _n _O$1=Z,ULx<)wn\3>@p   j\"+fFl먕 94_W ecIɗ8aܟ_!n{R^LF;-i:~!(4jIAeg oZRW>"XHޡ 2mi?Qgz>Ė;;t&ڂ|#ےouBj9u_ cƸ:|34&$ g!(;4Q8uQQmhy}f0bVD.CxR$4C>'$]^@Zst'p3 iZW/g]`L:[P,*u5'Kvx`êԻaUI4} 9N5u;q% bDEbsXP}5c6I} ͟,hdzp'R{%c:ftB{ `VY\WRl4.E3^+*S <*jWe#} B;U{IZFоX TnQڲTa>P#N*n#孆_Q採)⺚ OYs๔( P/ɚ9HF558듘'7m2#s#@9ܙvKǮI{8]Su]"y-YA&5a!_-cˊ7t\cC4,w׭4[uÆ\s.q 1A!-!ű*x%n{IZ.1G3xq7qUlCy/yfg@†}! 7Zf:OwtQwDғ"VE@hىFO3v\67D.LblIa:vQxz-]kB=u͚Dq/UumWS dARWg v'y *y{?tiRHo3ɻ{u[|\N5`si )&ԫȬqQO#?J Nf5C0R):I1{=߅#Ou׹7"OI4gL1v6č;[.=-sPNM8zCܲ޾lZt͔]#%m>L!+ 3 W6VƲ/]lyGn|SX2.4aA\~!qX:+}cݬRȫj!@oda6wQD 7Nb{*Kρx{VUL5l&r-07܏tzq QvZ. #5VM5jE * [L!C"fؔ=I^qT,:o] qKl(3`x:3b}'v>ES埓VDÁ&s,o4g$80S&pI gxC]*0h^K4Ets{Nv˓J)/4}y\. FT'PY=1r]ǃA,273ѐSXdY٬֒k*M ֤]|t۔VGV.ƔTQgZ\0eG=Px: jPa%{c>90 X¸[]. W1h^ xD}(Jp?ஓ,bK/|c՜NԹ,<90Z`^|3752?! Q?b’Klf3dfs XXns(Iѫ̿;3Ic)ZeW)PJ?BKcEp"~e5Ty4y7 5tJni4 I 8/AҪ0NJB06:Fkc:[\XF bWjzS?:s8\!)LtgC/p TOv&@v`Pj)H5j굧c -K,@&nP,RvX/zНWUB!}F b*PM >0G^B( 3mFS[7S%js.u]L79W^~/猐V\Bg*tԗmvuwB%k wGKD^PCrTLrQqٱzUl_ڏZ4b(ǾD|2cL7d"G4ݷ~P$N@(ZyFO J_*μv{W:~PQ3ߐϱaS=""o;Zv;d5wy,EIAtw'Υ"/nXyVwۮ%nJ2@SBA,h]?Y4ZwLDouޢ!#6DR^ l;VMHgE?2!6^I.*D-^zI_dBgU-RFW }j9ëǧQVM>H~[D* 'йc`dv}1w> U1l/48A=Zv15i= y4J{?,<2rie|(&J2YCt=sX{Sc=:D&~@4ղAdLssذ,^Mpa2 N2=?F쾐t"ZF3& Jʒe[̘5NbF1GQcФ6 `8tNK\dtk} u\D <kIċfGZաQ)f@׎*nީH3vb]f#dH s;gPRx?>ƥNB4Ae!i|'L^ Rܿd2xEȤ!^o#|B!݉V]kixcqY)NL?r## \vٝ@ÅH!@!2%Z f*u\]d-6Š%!̯dj[; ((@"TF>Ӫ(eئxi,դ u?~=D&E((.B#]`.ի aUO # AHtGa0nȱ?NaM7MctVӃɹ e(Z:/! F%\3^ ^/V?/%)H;FBƅ@g-"k6ouC>gfxo6XblO2پo][eV`"Ӣ1 \L/ר@T{LH~8PGpݲ5܊Y^,EdECО{p01:7QE3@Fr: _b2Y{Ux # 2Mgf4 MebiW@ ľ$//'px(Bmy3m|&_[_}U*}O"S_6es3:{zGʐc\_ڟ*o%dE/1(J䱐k(F$Z=֏/Pnhcy wbfr oߣ.vWWvmO,˻=VJ+i]^{ypf w߫a Q2KndI}NV6yowⴎopMjzƀ@ !  ax` <\29)lV֑nnI^."ܭ|MvpT˘sf/&a®UK5侀$opsc*aKjopj}&IKB<Pި!Ok MLD5f}P|=UDqovoV]˅,-lttX|4u2Zl 6 ֘]^גa!s>vXLߡf"&r<©\D ,p6EUIƂ3" 0+J,4aU{4(T**Am;!=kpMxV&(Ä4@7VQ9Xjc+*jBΟuZy3pE S6I m2ҟAWC7H"DTr~x sNBWR3r ! 媐K{"oSBG5AmvƄ֐ؑ/Н+eQ[@q+ګ_h=3q,?QM8,ir18e'mJH}PNRڞR`ɥUCsڐ=fiAJ@":LՖ_=7"3\ MT})EHY(k#k/dJyn[#íFk- X5߬)n[-X,gC+86}4:;bPUv|{ˁmg8WdŪv_9&`$+%@^ <3 ̢JȯiĴߒ]FR:A%;Vb:;h6|%A [wiu;Rp9~,hKH}N[SH2"{++9bN Vd`rڛ^1؞6YJs< Ֆ˧LʟN!ϩܵ.Y D R--ލmc >?ڤD k 8./:rRTxPO08/IO׋{d𜤲{NΩ!w_yH"%e.XKA2ѹB1ݷ?Vx}N9=Ja TϪhI%߁Eb]A]1`}h=hXolmf)X[8iUFy7VZ>T3tQaׅȈN(*dsC=,X7> TjsԠZEx#clפ-dv7Ot4^Dv6Iey=U1xϒCu@%XG,. 0& GVbcCa(y!&}$%Qb]h\&$f=˜}T-R;7}&2=oݨ'hgy*O`>tݰڹqk SlxB@mӾӭ2a!DgOR8q򗃼DQ8zqZ4w967t Eg$ u)DI)iO-9~np}):7Be+cc&[Hiw ;>la_dg?WX;=:.m_CԟSd֑^Dl䯧6ɟĖ7+!Z/r^+)J 8g j| lOg*{ u`h ?);7 ʡt /, :B 7ecU=5|Яw:zv;u>/d3ZAhrWU!֊(L6uRUZ-0\6aE< L1,'sSdžT$lI wu@*Fλ1lc"pkX{ՓOGf6 ?01˱FQu!c~ɻA"Z,]zӵ^ l-1s g9.\DV ;YRc%/>;JV$I xL1~d+&5R3gݢ ]܂wTU?tΤ%>RhN2Х%"#WLo}$+H@u!Dg2[l @B*Ԩ hܔYDgځȉC.%Z(ρc-7]C p#pz0EddGK Qn'23QdAǞ7؀Ӡ픱H+صO(K[YY TȚkFнRcCPYGtyW..ٱnSsUR/QnPOf%Ru_+54iH:DNIg*Er,](:6t>'jgV[#:8}MA{fbO0ϖl [O"33{%g؎D"xcsB2SsNd+x y{ӕ(:KK_qKtA, .-.4oQKuqe;˃L:QxP[}dzڲ%̝5 qo![$˚ ] D3oK Ѧ = jyKfVHo5;&R 9vd/ͧwfL|q EcVWME9C Y6২u w wMbZo)_l鷾{`>;u}0 U<ׯDVbe"݊0huY ^wqtAZ?8s o~?16aK 8Ywޕ= $ 4ܭ0wX<8imQp\kU"[pk w^F(m>%-Y7F}5D2{$ś yZGsg}xm/ +an P5l[k&#acx'gp+yǚYT}Z SA ! Cρ\`R{#=[Hy+zgiî9Kݹ ry9/',NIjv]®'6C̚:?*h[AK49.OjyR2 :SKq|J/nv?*lgoI3a Msy/e*3!]#3q7#=yX+X+gζMDTmᣔrxP1a4_T /疀7zq,_tHI88BTߚ?PoBL7:۸A4)i5$?T^m:#8.{Ր\}j8J9wي?Z AZnzu * [*Џ(WeƿY#^okaZGxiÂ!}dۑDfSwoY n|N=TC#9hI6(blC^DxB~wA$ tx})bYQnHEwN ]hU$xp[?5SD\}[~IJ]ih`RA92}K1$Sޘ1p>t+Ȥ _Lz D eeDv5͕_ !E~Қ'f =H={›J顡| bMWJ% 0UE1bY:fTIQV2pDXsY׼3YS CyYB8LzO4!ϐ+ &HPoTvӞ^FX6J6N5] lC'{@FoxA}ՀćܞmZJe?Ia)B. L9AcM@" =Af8> "'0 +,̜Ͳ5+rA<~ULx_R &L Sȿ1 }`x=j V[Bg!Bv*ǂKgSԇX9ó7$lU\]0huJ/3L azH=@:kj]D}Q ӆҪ2Qs)GٱVGS6,2{Ѥt y3 >2;^ (9X`Ibo,ڋw,0Tb05HLÄ!FMC=q!8{9Aw& NI!id0dpB5y{ZuQ)Y\(t12@&~sh̵h3s#(5Dmơ`Dn"ԣčߖю|Ve毻'Hy^6  PM~ ZXTʥմraQ'DEŝ92o_ o EF-L45U QDVSQi݇VV5|FYmDf TY~sΏ*KդL1¸z\d$8Lv)ib&5%d"oXxu<dҫRLȹmoȇ>ȁ Z7t`IK.#1K˱8uhk4dm07¦7ׇ^ "b>D2H)hsLjO97"5]bnj#zyK-A̢.,mq˔ڔ ;JU?dK蚱/I:6mWQ%@51^5K'o w k&`G^ Xմc8ȩUgz'ȶ崨;6R!~"\9k9Z;+EQH_J ?q2I5&x!1*D9|հ9c/~2*|))Fi_Ԩ9fY6꼛28} ~JCBOi"Bg.aw&A8[\-Zȍ|bZ&wg6xѶ,>9L&ʗH|+)frXsBLϰh?VTөF=/joO1QANJGm7^af UEVL@;R?[z^(dX 'RafHv=Q+4 Ҵx{^JȹmƷҬi,HDjÍh@~{Dne#2Z~J;K$KHo_, *]|aC ^%Ar';HdE0n[6BL0K-F r <a/癝k3x\oSoXI^m\9Mf,ej`wrgYnhK޺˦AR1#˞I&W3yF%*#AVnDhlt9zL.?!,s$CE`4pdQDlxKOExk ZSI7{N8g[ڄ c?^g*L}hQBлW3:R^U'ev?XB {M3TşHZjۮ*_?`P[xzV8ZئL?tby5X'8-_-UNk g/oA53 /Ả1CRz79JMoɊ8snQmT&hY{y cZg< %w μO?r:лT4uArf= />#ƿ@8A*VEHȞ ^՜^ʹ=;) wa?UmGP B/;;uzt-}*rj@cϯEX6Xg];t>}1U>͗ ]G( H ?Tt3?@Y_Sw!0"&ѽp&ȳ'G ::]@>Ҫe`h|F}"E\|R  pipv.bS@緋-:Uhm;\!W*7zer8q%'o* 9HߐQ !2Z SÇP|Pư`s\dn]m\e~iP|&n ,0 p܃w~V8s0U_o7S2/([H?R SemwwvC"c]O p_]U8u)+7y>_R!lʅki"2 ҕ%f׼N+3)YyHfID]s`LckKX _EO»tpgwRTs#%2őO1V8v l(sKbF.υ07z;Iw9I7{??d?Cfk\X18C"(c_PVyխM&`":ŖSڴ-`Id`hQ9@7MsGK>&Ercޢ΋Dt' `.X;hxr+uXXu而b].F搷l0,%a|F-xyYnY~LDIHՎ̨ kKǥ?jԯ\3/;4y ұ`a<٣@Ubӭkي<,) |N%p'HZ( L>|lZ|8c4c(~F{؞Կ ߩy2#w #B>Prg[9GVz~5gn $b{!esqm~yhYgWlT0Eޠh\@S>*@ZM h-Wdd.4)bp1(Xq>;Ljq\^Pa'DH Qߙ 7hP[פW&ɞ1$l~I)!`(ƣk+wK6k(>yD꘿Q]"stgE.>^V3dsVo6Ǻ\Wn>vMR. q ^wm*_S)q}4hH1Lp|#pT;2z E ZR۫-;&P,{;E4fs5{0ӯDpLv+lP޻\1˻{5 \z}@mg;İTt@qཆ\$z"B0I1@ 0rA$ґ ~wuKܙKBg$% GH T+>PT<`x,|ߺVM_t5$Ȝ>p P)AE,<1*j*!kƁH P!D<1S@ف PD<1* B{l[@1d&[ދyVv)tQB?棹27z!^t?H"`3( /qߍ+_7`6ajRG\7uKþdq+TzbteL?ʗMER"i#BJ&$m*@` 0A4LO J#

/%??xve$L.>%6𤓣XE A_Üp1fȋ~E(>m h*O'nQSyzӆG(KVXtav,xݸ3d 3Y-p-MzG6/ GM<~AٔB:YQo'hR }uqmۈ&5!VICfUjZj7E*_:g6Q0a,;]<%zw4 SU{Oa^p d*pJir# SJl2)Vf蛗֗OE 5˽8PMРmJ>xCW P圢*5sb.|x6{Z0}DBC.vpFb@8:&ݝf>I%hvX},Qe{Bi$mdzNO^1}ԯW|L/*}z+E@ PARE,<1)"/s!jR_'pPvsq! _lK<[/K {y溿6OFpXǭ&D~1^tRĘB4b1Ketn @ PqD<1) igWA;ls\/h#w^%8^ $3 I8P6+xxVM@k3>=޵HYQXޖƜm%mTFGy0`UqoQvbkH@{ Y)fbtkׯ?=()R@P PSsD<1(v;ߝIcVϛGjf|?Cy +'PZ>H ,%rj@ggߣĒz-r ov4^8:,v!N.qfjM~ c^ ޭ6향ân2P|7a}l6a6L  PgD<1'.A'ŸiDF*rC@{3W_*J #6PG|N1P>/a 5R7Ɂ  0;A4LO Jn@ϸo|4ea9 0 P$AE,<1 Pq  P(-D<1#CE X P"/D<1AJУ  0%A44LO Jp  P#ARE,<1S  P!qD<1R  P!sD<1S  0%Ax4LO Jp p P#AE,<1S H P!D<1S  P!D<1S` 0%A4LO Jq P#AE,<1R  P!D<1R8 P!D<1S 0%A4LO Jp P#AE,<1R P!=D<1S P!?D<1SA 0A$4LO J ѱWPVYB!+Y|;4&A/BJ5tݧO 7>kDDM8.ȇj-M/o?;lط`{t#݇YM4ҀU#ģ~6%"茈!# `%.?!ʐ7`RIgxnGGȊE@}5\J%z]z'|Cϐ"w&o[D(SyIqZ]+~vW>Lnb=ԪǍ p,G9` 6+,2AbK?~l_K?wԽ?4a8pm{)`ȫC%(!tz9-P P)ABE,<1'l`6]jݣ( P!aD<1R@ȁx PcD<1'O{籚rF0D 8[ndQ+'gsZzne\š6%)R4#!0kz93xY(-n h3~X/}E٠1>YϒOZ.MaXKtLDzK|GɁ@ 0;Ah4LO J JpP 41hx~K0(2? P&D<1%^rC 0%A4LO Jq P#AE,<1Sh P!D<1R P!D<1S 0%A4LO Jp0 P#AE,<1S P!-D<1SX P!/D<1R  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1S 0%Ax4LO Jpp P#AE,<1SH P!D<1S P!D<1SA` 0rA4LO J -f]Dq&9dKPHu7<ָwB"NFDxF]vƮV%@~ M|HkuǮ>Π) rx]}\2bקfnX iNGňߨ iWGc)*b4¾$Ad!-!⬖ TjTM[9w1+X ې*ILAI~ Ú +@ P!?D<1S 0*A$4LO J"8k;P P#ABE,<1R( P!aD<1Rx P!cD<1S@ 0%Ah4LO Jp P#AE,<1R P!D<1S P!D<1R 0%A4LO Jq P#AE,<1Sh P!D<1R P!D<1S 0%A4LO Jp0 P#AE,<1S P!-D<1SX P!/D<1R  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1SAn 0`Ax4LO JˮuBn//82Q1L̋INrɭ @:g @e~XBjl!d4+!FRT^CQc[Ӻ1 xH4jέ7 ^8$U:ijg,x%(6+|-(؎) 6˝ BOa4@<7 ~x<Ӏ[X祡DZ3 jf8^U' R\vϬq>"ubm%bo6v9`d^F+qsL~%܁p PNAE,<1%B1=_*ĝHu!Q)J\Z.]"au!68ѣH PiD<1%B(R#$h*k:tcXGa`{H6C?e Gmy$dۗ*g A P)D<1$!2Y7N`` 0)A4LO Jrj㣱 P#AE,<1R P!D<1R8 P!D<1S 0%A4LO Jp P#AE,<1R P!=D<1S P!?D<1S 0%A$4LO JqP P#ABE,<1R( P!aD<1Rx P!cD<1S@ 0%Ah4LO Jp P#AE,<1R P!D<1S P!D<1R 0%A4LO Jq P#AE,<1Sh P!D<1R P!D<1SAH 0:A4LO J2sx0~dt1OݰA[2Q,uqݓ!4]sE=ƣ Yl;QӭQQU6Aϭɩ 0ҍzAz[>#/YKg(y}\QZ+I{+4WRx@-GO\:\IGU6eWǞ ЪU2{0ӝ%^g 2fN E~|]bi_RE+HPb8x9F;a|™{qs  06N2Ş'Iё 4;[ '^90 PkAE,<1$D U.J2H7/@GZq03u0vW3Y驴j]hku' P]-D<1$Bfw ma4NcG.\0aYh@ٛiךX&Gd 1ݠ 9؁X PJ/D<1#>ʤ'{ -{Kb^4왹mhyGx  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1S 0%Ax4LO Jpp P#AE,<1SH P!D<1S P!D<1S` 0%A4LO Jq P#AE,<1R P!D<1R8 P!D<1S 0%A4LO Jp P#AE,<1R P!=D<1S P!?D<1S 0%A$4LO JqP P#ABE,<1R( P!aD<1Rx P!cD<1SAJ@ 0:-V jZ}GqBֱ ˘ rWOWMћr/gm'-s[eEY]& .c&]{#b aH@]4w@=aCu炜@B E "g(  @@@P(`hﱒEemw?v;Όd4Xpg^#j14мT`"\5Ӂa3;ZBv+Cd D%z"f}. +@O F&u y 6ݳx.5IaPO>SVf_!ӼqxxSb1%qчP0-xå__a'8Z_M@NAnP7dnPY%Y)Eʥ/c7:]A.}sQ>O a>Nw U^fVL]9Vj)n- oEV~Wѱ,|V|"ihV|銃MxR _n _O$1=Z,ULx<)wn\3>@p   j\"+fFl먕 94_W ecIɗ8aܟ_!n{R^LF;-i:~!(4jIAeg oZRW>"XHޡ 2mi?Qgz>Ė;;t&ڂ|#ےouBj9u_ cƸ:|34&$ g!(;4Q8uQQmhy}f0bVD.CxR$4C>'$]^@Zst'p3 iZW/g]`L:[P,*u5'Kvx`êԻaUI4} 9N5u;q% bDEbsXP}5c6I} ͟,hdzp'R{%c:ftB{ `VY\WRl4.E3^+*S <*jWe#} B;U{IZFоX TnQڲTa>P#N*n#孆_Q採)⺚ OYs๔( P/ɚ9HF558듘'7m2#s#@9ܙvKǮI{8]Su]"y-YA&5a!_-cˊ7t\cC4,w׭4[uÆ\s.q 1A!-!ű*x%n{IZ.1G3xq7qUlCy/yfg@†}! 7Zf:OwtQwDғ"VE@hىFO3v\67D.LblIa:vQxz-]kB=u͚Dq/UumWS dARWg v'y *y{?tiRHo3ɻ{u[|\N5`si )&ԫȬqQO#?J Nf5C0R):I1{=߅#Ou׹7"OI4gL1v6č;[.=-sPNM8zCܲ޾lZt͔]#%m>L!+ 3 W6VƲ/]lyGn|SX2.4aA\~!qX:+}cݬRȫj!@oda6wQD 7Nb{*Kρx{VUL5l&r-07܏tzq QvZ. #5VM5jE * [L!C"fؔ=I^qT,:o] qKl(3`x:3b}'v>ES埓VDÁ&s,o4g$80S&pI gxC]*0h^K4Ets{Nv˓J)/4}y\. FT'PY=1r]ǃA,273ѐSXdY٬֒k*M ֤]|t۔VGV.ƔTQgZ\0eG=Px: jPa%{c>90 X¸[]. W1h^ xD}(Jp?ஓ,bK/|c՜NԹ,<90Z`^|3752?! Q?b’Klf3dfs XXns(Iѫ̿;3Ic)ZeW)PJ?BKcEp"~e5Ty4y7 5tJni4 I 8/AҪ0NJB06:Fkc:[\XF bWjzS?:s8\!)LtgC/p TOv&@v`Pj)H5j굧c -K,@&nP,RvX/zНWUB!}F b*PM >0G^B( 3mFS[7S%js.u]L79W^~/猐V\Bg*tԗmvuwB%k wGKD^PCrTLrQqٱzUl_ڏZ4b(ǾD|2cL7d"G4ݷ~P$N@(ZyFO J_*μv{W:~PQ3ߐϱaS=""o;Zv;d5wy,EIAtw'Υ"/nXyVwۮ%nJ2@SBA,h]?Y4ZwLDouޢ!#6DR^ l;VMHgE?2!6^I.*D-^zI_dBgU-RFW }j9ëǧQVM>H~[D* 'йc`dv}1w> U1l/48A=Zv15i= y4J{?,<2rie|(&J2YCt=sX{Sc=:D&~@4ղAdLssذ,^Mpa2 N2=?F쾐t"ZF3& Jʒe[̘5NbF1GQcФ6 `8tNK\dtk} u\D <kIċfGZաQ)f@׎*nީH3vb]f#dH s;gPRx?>ƥNB4Ae!i|'L^ Rܿd2xEȤ!^o#|B!݉V]kixcqY)NL?r## \vٝ@ÅH!@!2%Z f*u\]d-6Š%!̯dj[; ((@"TF>Ӫ(eئxi,դ u?~=D&E((.B#]`.ի aUO # AHtGa0nȱ?NaM7MctVӃɹ e(Z:/! F%\3^ ^/V?/%)H;FBƅ@g-"k6ouC>gfxo6XblO2پo][eV`"Ӣ1 \L/ר@T{LH~8PGpݲ5܊Y^,EdECО{p01:7QE3@Fr: _b2Y{Ux # 2Mgf4 MebiW@ ľ$//'px(Bmy3m|&_[_}U*}O"S_6es3:{zGʐc\_ڟ*o%dE/1(J䱐k(F$Z=֏/Pnhcy wbfr oߣ.vWWvmO,˻=VJ+i]^{ypf w߫a Q2KndI}NV6yowⴎopMjzƀ@ !  ax` <\29)lV֑nnI^."ܭ|MvpT˘sf/&a®UK5侀$opsc*aKjopj}&IKB<Pި!Ok MLD5f}P|=UDqovoV]˅,-lttX|4u2Zl 6 ֘]^גa!s>vXLߡf"&r<©\D ,p6EUIƂ3" 0+J,4aU{4(T**Am;!=kpMxV&(Ä4@7VQ9Xjc+*jBΟuZy3pE S6I m2ҟAWC7H"DTr~x sNBWR3r ! 媐K{"oSBG5AmvƄ֐ؑ/Н+eQ[@q+ګ_h=3q,?QM8,ir18e'mJH}PNRڞR`ɥUCsڐ=fiAJ@":LՖ_=7"3\ MT})EHY(k#k/dJyn[#íFk- X5߬)n[-X,gC+86}4:;bPUv|{ˁmg8WdŪv_9&`$+%@^ <3 ̢JȯiĴߒ]FR:A%;Vb:;h6|%A [wiu;Rp9~,hKH}N[SH2"{++9bN Vd`rڛ^1؞6YJs< Ֆ˧LʟN!ϩܵ.Y D R--ލmc >?ڤD k 8./:rRTxPO08/IO׋{d𜤲{NΩ!w_yH"%e.XKA2ѹB1ݷ?Vx}N9=Ja TϪhI%߁Eb]A]1`}h=hXolmf)X[8iUFy7VZ>T3tQaׅȈN(*dsC=,X7> TjsԠZEx#clפ-dv7Ot4^Dv6Iey=U1xϒCu@%XG,. 0& GVbcCa(y!&}$%Qb]h\&$f=˜}T-R;7}&2=oݨ'hgy*O`>tݰڹqk SlxB@mӾӭ2a!DgOR8q򗃼DQ8zqZ4w967t Eg$ u)DI)iO-9~np}):7Be+cc&[Hiw ;>la_dg?WX;=:.m_CԟSd֑^Dl䯧6ɟĖ7+!Z/r^+)J 8g j| lOg*{ u`h ?);7 ʡt /, :B 7ecU=5|Яw:zv;u>/d3ZAhrWU!֊(L6uRUZ-0\6aE< L1,'sSdžT$lI wu@*Fλ1lc"pkX{ՓOGf6 ?01˱FQu!c~ɻA"Z,]zӵ^ l-1s g9.\DV ;YRc%/>;JV$I xL1~d+&5R3gݢ ]܂wTU?tΤ%>RhN2Х%"#WLo}$+H@u!Dg2[l @B*Ԩ hܔYDgځȉC.%Z(ρc-7]C p#pz0EddGK Qn'23QdAǞ7؀Ӡ픱H+صO(K[YY TȚkFнRcCPYGtyW..ٱnSsUR/QnPOf%Ru_+54iH:DNIg*Er,](:6t>'jgV[#:8}MA{fbO0ϖl [O"33{%g؎D"xcsB2SsNd+x y{ӕ(:KK_qKtA, .-.4oQKuqe;˃L:QxP[}dzڲ%̝5 qo![$˚ ] D3oK Ѧ = jyKfVHo5;&R 9vd/ͧwfL|q EcVWME9C Y6২u w wMbZo)_l鷾{`>;u}0 U<ׯDVbe"݊0huY ^wqtAZ?8s o~?16aK 8Ywޕ= $ 4ܭ0wX<8imQp\kU"[pk w^F(m>%-Y7F}5D2{$ś yZGsg}JnG,F58'yKlQ 'FnjsEn/V lݺvZ0O'X9,FEèV oXJEpq@re%V"d9$RyDUBmϭbk+bTk34U?zC&{5ZEPd*]뼰y3VB}"J/B͌E~3xq1@ne-_$1<lm#>[4˕g(YO-ddqŠ[`M^bj+ ygJDq̸w}QaلIVWߛFXk:pR4ָ<7 ?J='P1$w޶lΔ^m(X}8!:ܰ Pmc{)WV t`Ղ%S|n0"yjQ`9'|=tAP,=LFV{f mR= )4ʮʺs~jBy 10nҢ(PϕԒTQyw/kGxt)VAq$;12jWaH:n0T~.TXx}D078nξ_B>_k$\ n$gE?MR U I5bKBx(7h8fm~,窱hC8d@j۞ ƕXL"h;!,IVc$W;'#Alye;"i H k21(҉` C*mDP-ŹnK>HlK{)rMn@pZJSR+q":vtM"Rf3a%A>b#9EXjrwٽ jLC0SP_1m!z=0G]NЮmD28v"8>tG FKiVÛgI$No-W509t,яsy.{Xi=58AJ@%6ZpDe]0hy?7ͳ c+ݚXk =ah`nY?> F+KkWǏpYn_FNldc'pX Z'SqUnYg cO3Ѭm 2-h(-y4VmШo՝5 Wkx7M$˳ 2@t8^P,ܖ{{#9L? aK}; SZh,yb#*"KxBzR^p{ u8iv|Jf?jat'`֥A;CU7-lsO ޤHD#49Y6i?6^DQb9IR#쭊LJud579X{=+nԐL]2$nFbsW9osƺ~Ç`N.zH>,ޘ(.lEhz9[\}}Dh#M7cڪ>^7մc-͓8i܀` N<$Hpj,zQ}Ǽ_#At"ڞ&Nte1d| rݰWUUg 8QBDYؐPX)&@.*;wN%~J}=Ǹ2ț[v^SR t4CmZ/\S|;D CÖ&k+mvIbk-SPL(#fSaZ@h)'==WqZ@U Їw uHvi\H/5cTԁ|ŶmUoѿgN騛ljnQ_xُ4(pC(iˀ$:ޑA@=^ b2p?$nW9bd': &lDB)q)!2895;}8j1,p8r_eҼ6:ɟ `oB:;,& TaF@'Uϗz%CF-.m[ӯ陵+('&P9tN0H}:/Ba{H8eTAw&Ai*@CP4%sn,&/3Ϥ5 ')WSLFxj 'k~IWfB AY_!"n-P$ViSTMw?D1B1wv-ǩHmdn$',Ln$:db``}! K&#*1ꈼNKN@9SͭN S3x!Ū,m\Nx'& wJV,Hގ9knI xn5}<>d> I*JȄVBRQLj$ k*aW@ڽ/C6Ɛ4K-Y&4J҆&ccf@*oq( !#S|ͻWÉ'u B*ߜXB$v̑ȮɌj/#\JB&"$ /z_`i|v*-_v?=b x70'K14/2.G /5kaC9޻D a6]zx^ʫ1wm IAM3=ECx?8w{ {xP < ߜ/t'l%ni^]ҲPudnN0[@sߤ4-62nkS(‘h3QXoEeَz:me#|{4P%֖*}rLQL4&byK*g v$V9]m력lWSS*1J836 Uf ʡQKv8a;ʊx\7(PFZz +!UM\YFP"::Ր!ocm>{-x pxƄ S }D%„8 J)炨T|\8M9Ȉ5LvjƳ(d[*TH w'}]`z۠- X9xI'}{`z@eJ 90B>y܃Lk ֶԲw0@_KmRB.weʃ~55f6Rʿߒ{ǒ6, Nu:p4o׍v&h(#>ʟS;^8ƭx+\J)}]x>z:i"Bk>OIwmMop+@~]Dԉ!(Ͳ^Dm`_wb&FeKy>f#{r@U&'-=`yd >Im}IFA J# )',ft@o;+&bLBTF b4a n;ePr+Ұߎ"آ (NJSu\oYd#27aS*ȩeMQp6mMk2d+nKl| J4Ў22o qeLQl ZJ5}tM3?_WD32׆8Q^޻X-{#W1t=341^9&hfsvJ^ЯœjkK0ˆko"k`ȬHe),5':*01Rp+kK|2̊=N*ǢO5Ȁl~B{<0Q/bSK _c;=wd-@XFS z,< k rfx!G$J6'C: aJvb;E,]G˾ޙw;ɒƩgͻwK?jjӚtb>e(mܾjP2i\uH4 >^^|.5Ffh>Hw-bڂG{%D /َdJ]br\ HIQqrgQM؈Q1r'I~kHj+sgxOxP{>4hf{َdf=0DP~̙#"{r<9ּ*[Q3vؤ]N׷8/ TSMej`\@W2y0+G .+EoR}嚧^ VqcⲯO%|E5=÷KM'(yY`3jU1H¬5*/vCmȮ]]'剬4Sΐ_ 2M7ix{#~ggDTk)YX/_5|ȴzv'Od},]%B/\ Q91igK\q{/2x32/$ u oL 9}^^vҵޏ5Q!) ;Sדt{H.~p5l6,0A2[iq8M#[7B X>Aļ!J+ bU=\T3oH۩S4w(HR6޻;!1 8/L *|a?]&Z5+O䴸2lH 津Iou J$ VvpbVNQ<\[hny9w*/\V)E!Lv6c]zv+M; Qy'THAyJWK?H&T=x#RDk9FId?Cfk]LX18C"(T2Vpyխʆ`"7֋PCc 'A 3  !4q0/6a,rT2ɣ^3|.`3ܜ3UbC(E=l%=[#c1uN$;8_6ui sIgыR@~A2Nv~fCgȽVJC2\22o?=i/oR\< s̾(L<ў2ӈgKFg#f=UNsf(hΚȰ<58 3#ُLwA^2cx{[ii hW??é/_eG:AG VJ@Q $/oF7)R&;K!J*`H)ǀVV f)&qaNXRYjɳWt|J=ϼmkY՚čn55q:4lieNxtg2>1 jݗ)؛(wޅ6e=t6DVUnQ*e3+*!>4psBⰊ熖(^jaX'mueh&0tz)Pu6L橏̉#gIMi \QE/Ln5c]_ ] >K4XdbyEt,{AgpzXwc\ ZˍUq^_Nq05جSEBS?zڦKpnK\.@P.!qY ɟ<PByQoǂƑp^$@ 0wA$ґ ~wuKܙKBg$% GH T+>PT<`x,yyQ'o'zynѤ~!{bڢV8zPcB#ƜQXgQ1 P P(ABBj&  dG( P3aDj&Sœ~trjSx P!cD<1R@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1R P!-D<1SX P!/D<1S  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1SA 0Ax4LO J#/1g . kg6zTUh%sPDQ2=܎du*pGmi*cqGRm"$4?怂k&^+ӇpxvȀU/q=BMv7=Q15Yãʝ/ʍsڎZ-IP[GW6ُR[?p P+AE,<1k?rqk .H P!D<1R@ PD<1hMr6h9w'1{ZՕDox()ގ("5\K)UFᇾI%PE08;܅IA5 P%˕œə\5W@` 0qA4LO J+<5 c,8+#)0H—t|STEq_@: nPa-YA P.AE,<1H T102ց PHD<1GTtN.=bA-߶NYa>G/m 8 P&D<1}O9(! 0%A4LO Jq P#AE,<1S P!=D<1S P!?D<1R 0%A$4LO JpP P#ABE,<1S( P!aD<1Rx P!cD<1R@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1R P!-D<1SX P!/D<1SA/  0!A44LO JwIii$M E|#(ETh2ʦ QA'=с?!t1= 7'U eR?.Su)MnLm9,v9ڴ+9(R]jG?IA0B0I!U"0!cfx|)c\edB빇j@}{\j8:vRONBYaG0؞FA]Qnd :|=qvjt~؅hӝG͛[@Mׁ PIARE,<1HrvvT3 +eDArh4g PhqD<1H1c¡J% B '3Q9r0C3 6 #՜[}m P+sD<1u? 0&Ax4LO Jp P#AE,<1RH P!D<1R P!D<1S ` 0%A4LO Jp  P#AE,<1S P!D<1R 8 P!D<1S  0%A4LO Jq  P#AE,<1S  P!=D<1S  P!?D<1R  0%A$4LO Jp P P#ABE,<1S ( P!aD<1R x P!cD<1R @ 0%Ah4LO Jq  P#AE,<1S  P!D<1S  P!D<1RA  0A4LO J خ4 T׆rkփ|p%[DW_.`;FW^tkZYAg7+(WWUZ9.Yp۩YE9*V,1`@  PAE,<1J,6>Ob䒵fte2ࡂ91~tқ4YM$7d ZwB͂!Vп#q< MF]ɞ+a h P+D<1 r1?πс  PCD<16ew)7NCW&XO:h,8iWP〣  0.A4LO JǂiU~@ 0 P#AE,<1R  P'-D<1p' X P!/D<1S  0%A44LO Jp  P#ARE,<1S  P!qD<1R  P!sD<1S  0%Ax4LO Jq p P#AE,<1R H P!D<1R  P!D<1S` 0%A4LO Jp P#AE,<1S  P!D<1R8 P!D<1S 0%A4LO Jq P#AE,<1S P!=D<1S P!?D<1RA& 0A$4LO J: 1i\I z/(ЏSc?;mE~ ]yPf HMe @;W}K z.!Mrv)NKQRbN_WvxCu 5@?;a*'d3B;EOzb@ |u8(*&܎E{!Xf)QZa5ةWÄɌxӝ(!E_Dc<9^q תÀ~J$PS K*ma$P P1ABE,<1ؕ3ԟ`( P!aD<1Rށx PPcD<1fJ:=O O+ܻR+3E03$qNa2 Z1٨O[@ā@ 06Ah4LO J3Xg &_mT,:@ѣ P-AE,<1K.=! P.D<1T",zU}: P%D<1o͢rN 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1R P!-D<1SX P!/D<1S  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1S 0%Ax4LO Jqp P#AE,<1RH P!D<1R P!D<1SA` 0A4LO J< j/p2c;$ )3TRSk/p۸toa"1U(<28utGyVčr vm-,LGcb /늷8"ĥ-xNX ">s¡0= @>#-N/Srz!_.IPBڝdy_m,6C,S, P+AE,<1Nj8|.0 P!D<1R@8 PyD<18uʔv+=:Yk(Qr3Aw2,vBr-%$6,4e͵{>`aCFW).Xt 0nA4LO JμXx.[G}߶Q.f\ &ȵ+h3Z5޸j5ͺ< xօ7$=2q P.AE,<1V`% _{7 PT=D<1|Mb _YIM  ܰ'HfΦA7[^#2E4t P!?D<1R 0)A$4LO Jv] _WP P#ABE,<1S( P!aD<1Rx P!cD<1R@ 0%Ah4LO Jq P#AE,<1S P!D<1S P!D<1R 0%A4LO Jp P#AE,<1Sh P!D<1R P!D<1R 0%A4LO Jq0 P#AE,<1R P!-D<1SX P!/D<1S  0%A44LO Jp P#ARE,<1S P!qD<1R P!sD<1SA< 0.Ax4LO J|Р!1mGV<{ȤqIA̘ر&XbuhB9%T6;TsNS1Y/c%aͼ(`~R%*}J0LDC{cvk.p uv$s6XǮGD/+"QBqQ@\w[GqВM69K/Tш|J{~a@,J~0@x9r'&u 4y_Լ_t+um#ټgY஥' Y>iuB!Nf=O~4b㌪p`,Ƿ@ P)AE,<1p%xLL P!D<1S PpD<1[2)p`0fӚ=1WBaizw9ղҷNo٨(Ik/+*n Ё 0BA4LO JG^הH|ݭHB `2㧜Ѵ أ P,AE,<1 *,]Łh P7D<1I̲1Kρzp|^㊠ P!D<1R  0%A4LO Jq 0 P#AE,<1R  P!-D<1S X P!/D<1S!  0%A44LO Jp  P#ARE,<1S  P!qD<1R  P!sD<1S! 0%Ax4LO Jq!p P#AE,<1R!H P!D<1R! P!D<1S"` 0%A4LO Jp" P#AE,<1S! P!D<1R"8 P!D<1SA# 0 A4LO JIPM<-;z>yO wPjZu#m0i^cuUpB-"<(sYsʺβNFpGF҆!Ef"wO%wODaJW HW9 \UA:^S t JSݮW7 eONln;(qim__ƠVQۊ\:,_G&᣹" P+AE,<1p*lW" P%=D<1[9" PR?D<1=Z]) M!b7EjW ̀u%2􂥏3ȺByЁ# 0BA$4LO Jpx¦[כ+f+ҋ >`#P P&ABE,<1h i؁#( PJaD<1=Z]()nlBfF[8h!3Yd2[2=v.*@-#x P!cD<1R$@ 0%Ah4LO Jq# P#AE,<1S# P!D<1S$ P!D<1R$ 0%A4LO Jp$ P#AE,<1S$h P!D<1R$ P!D<1R% 0%A4LO Jq%0 P#AE,<1R% P!-D<1S%X P!/D<1S&  0%A44LO Jp% P#ARE,<1S% P!qD<1R% P!sD<1S& 0%Ax4LO Jq&p P#AE,<1R&H P!D<1R& P!D<1SA$& 0A4LO JFr*m$:Zv'˼4$a+MIQӋ[B׿f>62剌c{B\qpչSb7I'>cR2"Zj<]EG5vkvэ@@:MTZ kK';> 5W^ʶ>Y ;FUz~}7 ZEjwR {ˋ;IYy 'pCuP E "g(  @@@P(`hﱒEe?mw?v;Όd4Xpg^#j14мT`"\5Ӂa3;ZBv+Cd D%z"f}. +@O F&u y 6ݳx.5IaPO>SVf_!ӼqxxSb1%qчP0-xå__a'8Z_M@NAnP7dnPY%Y)Eʥ/c7:]A.}sQ>O a>Nw U^fVL]9Vj)n- oEV~Wѱ,|V|"ihV|銃MxR _n _O$1=Z,ULx<)wn\3>@p   j\"+fFl먕 94_W ecIɗ8aܟ_!n{R^LF;-i:~!(4jIAeg oZRW>"XHޡ 2mi?Qgz>Ė;;t&ڂ|#ےouBj9u_ cƸ:|34&$ g!(;4Q8uQQmhy}f0bVD.CxR$4C>'$]^@Zst'p3 iZW/g]`L:[P,*u5'Kvx`êԻaUI4} 9N5u;q% bDEbsXP}5c6I} ͟,hdzp'R{%c:ftB{ `VY\WRl4.E3^+*S <*jWe#} B;U{IZFоX TnQڲTa>P#N*n#孆_Q採)⺚ OYs๔( P/ɚ9HF558듘'7m2#s#@9ܙvKǮI{8]Su]"y-YA&5a!_-cˊ7t\cC4,w׭4[uÆ\s.q 1A!-!ű*x%n{IZ.1G3xq7qUlCy/yfg@†}! 7Zf:OwtQwDғ"VE@hىFO3v\67D.LblIa:vQxz-]kB=u͚Dq/UumWS dARWg v'y *y{?tiRHo3ɻ{u[|\N5`si )&ԫȬqQO#?J Nf5C0R):I1{=߅#Ou׹7"OI4gL1v6č;[.=-sPNM8zCܲ޾lZt͔]#%m>L!+ 3 W6VƲ/]lyGn|SX2.4aA\~!qX:+}cݬRȫj!@oda6wQD 7Nb{*Kρx{VUL5l&r-07܏tzq QvZ. #5VM5jE * [L!C"fؔ=I^qT,:o] qKl(3`x:3b}'v>ES埓VDÁ&s,o4g$80S&pI gxC]*0h^K4Ets{Nv˓J)/4}y\. FT'PY=1r]ǃA,273ѐSXdY٬֒k*M ֤]|t۔VGV.ƔTQgZ\0eG=Px: jPa%{c>90 X¸[]. W1h^ xD}(Jp?ஓ,bK/|c՜NԹ,<90Z`^|3752?! Q?b’Klf3dfs XXns(Iѫ̿;3Ic)ZeW)PJ?BKcEp"~e5Ty4y7 5tJni4 I 8/AҪ0NJB06:Fkc:[\XF bWjzS?:s8\!)LtgC/p TOv&@v`Pj)H5j굧c -K,@&nP,RvX/zНWUB!}F b*PM >0G^B( 3mFS[7S%js.u]L79W^~/猐V\Bg*tԗmvuwB%k wGKD^PCrTLrQqٱzUl_ڏZ4b(ǾD|2cL7d"G4ݷ~P$N@(ZyFO J_*μv{W:~PQ3ߐϱaS=""o;Zv;d5wy,EIAtw'Υ"/nXyVwۮ%nJ2@SBA,h]?Y4ZwLDouޢ!#6DR^ l;VMHgE?2!6^I.*D-^zI_dBgU-RFW }j9ëǧQVM>H~[D* 'йc`dv}1w> U1l/48A=Zv15i= y4J{?,<2rie|(&J2YCt=sX{Sc=:D&~@4ղAdLssذ,^Mpa2 N2=?F쾐t"ZF3& Jʒe[̘5NbF1GQcФ6 `8tNK\dtk} u\D <kIċfGZաQ)f@׎*nީH3vb]f#dH s;gPRx?>ƥNB4Ae!i|'L^ Rܿd2xEȤ!^o#|B!݉V]kixcqY)NL?r## \vٝ@ÅH!@!2%Z f*u\]d-6Š%!̯dj[; ((@"TF>Ӫ(eئxi,դ u?~=D&E((.B#]`.ի aUO # AHtGa0nȱ?NaM7MctVӃɹ e(Z:/! F%\3^ ^/V?/%)H;FBƅ@g-"k6ouC>gfxo6XblO2پo][eV`"Ӣ1 \L/ר@T{LH~8PGpݲ5܊Y^,EdECО{p01:7QE3@Fr: _b2Y{Ux # 2Mgf4 MebiW@ ľ$//'px(Bmy3m|&_[_}U*}O"S_6es3:{zGʐc\_ڟ*o%dE/1(J䱐k(F$Z=֏/Pnhcy wbfr oߣ.vWWvmO,˻=VJ+i]^{ypf w߫a Q2KndI}NV6yowⴎopMjzƀ@ !  ax` <\29)lV֑nnI^."ܭ|MvpT˘sf/&a®UK5侀$opsc*aKjopj}&IKB<Pި!Ok MLD5f}P|=UDqovoV]˅,-lttX|4u2Zl 6 ֘]^גa!s>vXLߡf"&r<©\D ,p6EUIƂ3" 0+J,4aU{4(T**Am;!=kpMxV&(Ä4@7VQ9Xjc+*jBΟuZy3pE S6I m2ҟAWC7H"DTr~x sNBWR3r ! 媐K{"oSBG5AmvƄ֐ؑ/Н+eQ[@q+ګ_h=3q,?QM8,ir18e'mJH}PNRڞR`ɥUCsڐ=fiAJ@":LՖ_=7"3\ MT})EHY(k#k/dJyn[#íFk- X5߬)n[-X,gC+86}4:;bPUv|{ˁmg8WdŪv_9&`$+%@^ <3 ̢JȯiĴߒ]FR:A%;Vb:;h6|%A [wiu;Rp9~,hKH}N[SH2"{++9bN Vd`rڛ^1؞6YJs< Ֆ˧LʟN!ϩܵ.Y D R--ލmc >?ڤD k 8./:rRTxPO08/IO׋{d𜤲{NΩ!w_yH"%e.XKA2ѹB1ݷ?Vx}N9=Ja TϪhI%߁Eb]A]1`}h=hXolmf)X[8iUFy7VZ>T3tQaׅȈN(*dsC=,X7> TjsԠZEx#clפ-dv7Ot4^Dv6Iey=U1xϒCu@%XG,. 0& GVbcCa(y!&}$%Qb]h\&$f=˜}T-R;7}&2=oݨ'hgy*O`>tݰڹqk SlxB@mӾӭ2a!DgOR8q򗃼DQ8zqZ4w967t Eg$ u)DI)iO-9~np}):7Be+cc&[Hiw ;>la_dg?WX;=:.m_CԟSd֑^Dl䯧6ɟĖ7+!Z/r^+)J 8g j| lOg*{ u`h ?);7 ʡt /, :B 7ecU=5|Яw:zv;u>/d3ZAhrWU!֊(L6uRUZ-0\6aE< L1,'sSdžT$lI wu@*Fλ1lc"pkX{ՓOGf6 ?01˱FQu!c~ɻA"Z,]zӵ^ l-1s g9.\DV ;YRc%/>;JV$I xL1~d+&5R3gݢ ]܂wTU?tΤ%>RhN2Х%"#WLo}$+H@u!Dg2[l @B*Ԩ hܔYDgځȉC.%Z(ρc-7]C p#pz0EddGK Qn'23QdAǞ7؀Ӡ픱H+صO(K[YY TȚkFнRcCPYGtyW..ٱnSsUR/QnPOf%Ru_+54iH:DNIg*Er,](:6t>'jgV[#:8}MA{fbO0ϖl [O"33{%g؎D"xcsB2SsNd+x y{ӕ(:KK_qKtA, .-.4oQKuqe;˃L:QxP[}dzڲ%̝5 qo![$˚ ] D3oK Ѧ = jyKfVHo5;&R 9vd/ͧwfL|q EcVWME9C Y6২u w wMbZo)_l鷾{`>;u}0 U<ׯDVbe"݊0huY ^wqtAZ?8s o~?16aK 8Ywޕ= $ 4ܭ0wX<8imQp\kU"[pk w^F(m>%-Y7F}5D2{$ś yZGsg}JnG,F58'yKlQ 'FnjsEn/V lݺvZ0O'X9,FEèV oXJEpq@re%V"d9$RyDUBmϭbk+bTk34U?zC&{5ZEPd*]뼰y3VB}"J/B͌E~3xq1@ne-_$1<lm#>[4˕g(YO-ddqŠ[`M^bj+ ygJDq̸w}QaلIVWߛFXk:pR4ָ<7 ?J='P1$w޶lΔ^m(X}8!:ܰ Pmc{)WV t`Ղ%S|n0"yjQ`9'|=tAP,=LFV{f mR= )4ʮʺs~jBy 10nҢ(PϕԒTQyw/kGxt)VAq$;12jWaH:n0T~.TXx}D078nξ_B>_k$\ n$gE?MR U I5bKBx(7h8fm~,窱hC8d@j۞ ƕXL"h;!,IVc$W;'#Alye;"i H k21(҉` C*mDP-ŹnK>HlK{)rMn˂W0-1Z t^۱ߥLŸa RCX :Љ>k[:rsl4@1> 0rՈ ͡ʨ HloGikc̒lM8e?gT;-4K]^[Ȥ8iZT\[M׀vA_[D܌!\ ]Q䋋X+XkddObhFn:% FyGoTYfqIrUuo+z !D?QHGm'rs>| hbCP;lnnN:xjPfk83LBUÛۉ86 6o}y:^e kb_e$No[mEޝ\Tמc'D-gPQ3)8cy6|6/G JYB874!ښfP|sկNtD;%7R#K]]/nК5^=A~Fb,MdL(}N{[X$Y!iGr@2P33(rMwaV!5}DmUy;*S1cŷ mn~~+V=j.4Is-݄P#Ce;7<JhA-Hiz_ dcE=J;&ȚO.4Rn>^=t2oVE}7ՠ2|݃=BBpH663AӁ@н/ɋ!rҪz1E[r#y[3 a5ȯk]:r9E8x_%țq 's2#m_ nA0Djٗ-+WcIAV SJ˛ܭw+iI ^^pw_4DD |5WFsb (J{bC``D4mkms.;uk8fk/f =o6Pɇ7ɀkl;2]4#ja^քCj ǔ /_if}::3jЌSeEm1=Jg421N`#U#,;kR'Q4wn7ڗ=q_aƤ~E OO2#jC^p^B2ػ[fDYOv^ \f "PBq)rk29ݕ#>PfA iۗ TF#$yl jWp<Y %]V;r(^[kt+|U]q]Ҧ#RjlPSxw61{2X.k fHUFt79hVw--wB~=*j0!yz&{떴q­(e/Uq!e߯MA)r14ۓvQKS5g匨"Rjv? 4y3aeZ^}qEH7Դ$"agKvHpjי6A*r|QnbN \.hς7sb5f3gHcqݔ*N~:XqM E3n}G<͉M,-} ߣ͓0OHUomqo(AG[Yy@(2OD{)#J~b%nΧtA+ XwnoLVtB~.f|Q ;ҥf5DZO5߈tb>e(mܾjP15y\uH4 >^^|.5FCh>Hw-bڂG{%D /GdJ]br\ HIQqrgQM؈Q/bGS*\J U1aC)2j>XJ|.WB+s@B*Wq )b qij iSvЋr;XZl^ yhؖqψ~|ح?X#4Q>ulBePIt콹l8\D$B? )J6ԭ2D_fk$G!de"I'?vF"䠁?uQhi1U0kmBN## )C|BF'?ʉ[A95W I|sT'Z(`\BKR{ w=23ua"(@ F " ̂^-娛{PB.D3~J~*f)yg}ag0 ? Hѫ&@y;Fe$INآ)>rSYOp+7\YpmqWÛ^kmQn> Sϓ<-y[yE^Dr}aVjCQCmȮ]]mkg+.uϯq 26?ھ#ugeD UvR4^"\>OirXK&_*1P sjcdΊJV^4jKR/Z`rXlޙ(rȼRkDon,3yF+P\)è>(j0nXH2e..2Xq8xJC6n ,1Y|yjC,P>& a',| z&cof&&N_hQScmwvvC"c]O p_@Un*M´o{f41ɉrǁde<5ʹ_`iJe3YFlXH"$x.նRsET? j(¼tqq72a fsڻ"W|*kӱXiZ6P za| ( _,S/Q##SoAI,'I u1`4S4OPyئDBd? E̡$'}F)$zhZ>" !4q0/6a,rT2ɣ^3|.`3ܜ;{UbC(E=l%=[#c1uN$;8_6Lvqi sIgыR@g/F2Nv~ FgȽVJC2\2o?=i/umھ[l s(L=Oў2ӈJ䖶k#f UNsf(hΚȰ<58 3#ُLwQdd6 3`Юd@GS_P;0-Pԏ1t cUx@FB:{[-"ϵлn;oOxY#ر oCB?rg -7B߰ 2\~'HPƂޘq{FJ["J*:ƨ̵p$tCvvlZ%J׏vtR%z1N#@O\@Ј}>9S.w iO|emc Oi9ey  ·h6'UC[6yzdd0Q*su ޏqVX[`XͺEX/bYވ)eK ˚6T9җQ32@*ɼY'iF*D.4*pv8i!^ꁲBj(C&9RbQ&x=q~x1N*;\DvQSAN< k1N3 sVM̢sQ}l_3Z$mq|2[֖QJ=Fx:c.Vqa퉾!b~SoYq!#CoEoeXjoe|¯FPZC2?<~2CHW4.+xilq&]>^wD/E*W&ɞ1$l~I)!`(ƣk+wK6guf ,_^(Eh93l/Ual|ˁ]?ZTYqcyj+·;tW)u|8Ð/k;if6/^I>?B$a&~K8>hG=XkB-)mҝ([=|iF{9YԘ "8&h~r(Jg]T k= .=K>|63ZbX*: M8^~.?=Y|$y 0bA$ґ ~wuKܙKBg$% GH T+>PT<`x,yy%{[ɼn4` ^56m@ H) P P"ABBj,~( P%aDjxɒ~Hx P!cD<1S@ 0%Ah4LO Jq P#AE,<1R P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Rh P!D<1S P!D<1S 0%A4LO Jq0 P#AE,<1R P!-D<1RX P!/D<1S  0%A44LO Jp P#ARE,<1R P!qD<1S P!sD<1R@ 0Ax4LO JI1I7 b/nWgC!.TE_0Xuf0b/R "*G}g#}5 c!Xj{u4bk&YF^K&߱͂^pU4^`FQ Xu TG!Ġ駤 R?]{9Ry&s H9p P.AE,<1p}vU2;5F H P!D<1R@ PD<1[ GݘbE }Cq.bE61N' x\rh8'DKOb@y'jRt~OCPv 'G$Ul}q@` 0qA4LO JIo{4H>%kJD>Rgl= oC (b~Y-d 2hN&dexj P)AE,<1<!7Ձ PGD<1Z'sĘlaqz^7(6~ᝨ?8 P)D<1X9^/^,:ې0  0)A4LO JzE+|w P#AE,<1S P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1S@ 0%Ah4LO Jq P#AE,<1R P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Rh P!D<1S P!D<1S 0%A4LO Jq0 P#AE,<1R P!-D<1RX P!/D<1SAB  04A44LO JF2*Rghv\NTqӌ|wɷ伹0Ê=^/:~g c0΄rn%,yx?Ʈ O43@\P3~_E1^ïm@ϭuRAvR][ҫrawRjD"PBY.l„/cvɸqC]ӡ)fpMğځ.qy>,P C_$E8̃jqX8]a*2_3g멳W[B>vI ͔ m5sj0 P4ARE,<1TcI6WT!_b(R@ PhqD<1U=ݟEu-AțwVҨ4g{*D8 XQ94ڱsM|y;Ew P/sD<1%H, 01Ax4LO JoX`M*p P#AE,<1SH P!D<1R P!D<1S ` 0%A4LO Jp  P#AE,<1S P!D<1S 8 P!D<1R  0%A4LO Jp  P#AE,<1S  P!=D<1R  P!?D<1S  0%A$4LO Jp P P#ABE,<1S ( P!aD<1S x P!cD<1S @ 0%Ah4LO Jq  P#AE,<1R  P!D<1R  P!D<1SA.  0 A4LO JF~K+w3OކaPVKm\ %B%bnGүW.21J(۞rŭ- F\kzF l {mn)tPg pV(LO]#r^V#nPLNLx<86mKV=+dA7'%r(cz؅]إf/tPL.( g yh_,=!f \mº Od7(5(f)_~2)p@  PAE,<1t#C%w;s Wk3~/Ѻ7i(e[A=@){0 WrGyKlLaRfsLpL#Vlx/ffR PY=[8OEUN%tY h P(D<1p51GO  PZD<1$~rbQG] WJ?FYgo;.$ (ƘordLrAh4LO JMScuun\%{! H;e P(AE,<1N%r_|ȁ P:D<1='iH%OGU c:<54*` P,D<1xܻ\jp 0%A4LO Jp P#AE,<1Rh P!D<1S P!D<1S 0%A4LO Jq0 P#AE,<1R P!-D<1RX P!/D<1S  0%A44LO Jp P#ARE,<1R P!qD<1S P!sD<1R 0%Ax4LO Jqp P#AE,<1SH P!D<1R P!D<1SAh` 0ZA4LO JDv0O-/ a95p ED:i6+r|o)3 i]O HjtNRdw  P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1S@ 0%Ah4LO Jq P#AE,<1R P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Rh P!D<1S P!D<1S 0%A4LO Jq0 P#AE,<1R P!-D<1RX P!/D<1S  0%A44LO Jp P#ARE,<1R P!qD<1S P!sD<1RAU 0GAx4LO JF^6g[D5 u vLWDA3V/DD::ks83qaTpCа2oA9iHcuhJ*aq2vsyrJjǸF ŵ :^zX[ _ItTSP)Ӓ9s*#0Dw@7Ϝ\rDRNOTłOEs@z=E9p}g=yQaK6 ߁JT* 1}4H B'D-a_Ձp PGAE,<1XD{'I_xTF 61].W@H PD<1յːS7,F>#UҞNVOQpZ}YQ]gDz-O<Z?f"ޚ%ߖ7ސ" r{OTZB_Ԃɝ]8࣯ P!D<1S` 0)A4LO JHw& P#AE,<1S P!D<1S8 P!D<1R 0%A4LO Jp P#AE,<1S P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1S@ 0%Ah4LO Jq P#AE,<1R P!D<1R P!D<1S 0%A4LO Jp P#AE,<1Rh P!D<1S P!D<1SA 0A4LO JFؗuދ RIͱ+RN X51m%VA,Z"`n~! o=nrq$cxR@CT3 <;$%a/ٶF>}C61=0cgTxyty%lyV"`)C5ZjZ7>7 Vi$Vo@ P-D<1<+e~oЙE,//ӤD)>I n+ZHJT.$ZT8'`&K䞀A' D#M9Sy09JH۴5n"J@zX Pa/D<1<+៞Ύad86(cNy^Gux$rL@)}&'`%zg  0.A44LO JYCVz  P&ARE,<1Ty懠 P!qD<1S ѣ P!sD<1R 0%Ax4LO Jqp P#AE,<1SH P!D<1R P!D<1S` 0%A4LO Jp P#AE,<1S P!D<1S8 P!D<1R 0%A4LO Jp P#AE,<1S P!=D<1R P!?D<1S 0%A$4LO JpP P#ABE,<1S( P!aD<1Sx P!cD<1SAi@ 0[Ah4LO JDrX&G u%("x`~ NB2o11pwt"m'ҽ?-6a>&g3ڎoRp|#ROOмDĒV+s:vi16ڝ77v,ac3pG;ϴ1!1QjZ€VEY3"& P$AE,<1U`<h P*D<1?ljA P!D<1S  0%A4LO Jq 0 P#AE,<1R  P!-D<1R X P!/D<1S!  0%A44LO Jp  P#ARE,<1R  P!qD<1S  P!sD<1R! 0%Ax4LO Jq!p P#AE,<1S!H P!D<1R! P!D<1S"` 0%A4LO Jp" P#AE,<1S! P!D<1S"8 P!D<1RAl# 0^A4LO JETRW,'Y: A@&W<Y=U chTZ|7)˪XGrf8![Ȫ_f+[򱣞LOlm֦E>|1Q7Cow<[KuqjI OP@(FI <r|#!x gXܿf ul">rk(kvdudcrR/Jx׳`pSk'N ^u0@+;P>TgB{#)ʢ?)5,Md cZN>\Do"ݶ0cx@z9MW\/4g>XgAGE]*nbq~G$$Lap|U鎶ѭ2\=ߠgi;.̜JIQ1 DaCIj7 ˊ]3# G &\=$&vQ1ȲQaJF%kF~sVĎQK Xj9BYݥɜ`DĖx*qQ{{ֲr@eYd>r+7v22[dDi<1< ?;LF0,owƚ{w̸d@M)Ξ-׀(ú+Fq{xPxlSlC87K uƴm$w`܀ ]zu_K,ھaLrbQcDS(Gm9/q< qXLW<_lDTJWшejd B*n}^DyPZ>^dz)LnZ2 5.3s0w IVG'2):@jfVYCj:m&rU.\u2 ]ב>╠0E-{Jk.3qB|&c-VVwE26[:}bV4/v~ ŘQIG(&L) rb")D>عW7eAFpi\I6.,AbVj wIb4M;cХ觪*:4FhuK+jfhB.ʺN. {xlξ%ѣsːxz;]^VdD徧#(onlc$lQkY(MmПΣN2gV [݈ٮo`g # E4l:026Tknz)]w;`ktUWH[ *WX:!h1xj0''~EZ?7lj$5]WHEqwlz~hPlu7?,L g wqiX"wCPnUMsv+oEV±Y ǽQ`uMԋ蒔l*=q=w[_#Q^@٩QHep5.J"Pa#+Ӷk@Tne3bsg^>byrp#e/ Ww*XG !=w4 )9e, HVV-RrL7P W P]U5c4[+:jS\sG}:uf^zr{ =^|MdpŮ7ou·z6n6OLǿ+)cWֹE'fq&P›"v.|8񟥘:P o 8[d(DgEWaW^BPF1s6c=u37 wDk6r6Tǝ kxNm.j*]ԮNH~uF/(qC&:%'# 8*LR#ZވMc},Z}#22"5P}%IYϨgy;T`U!lL*Oa{> 츳 2 ZwN.ΊfLc NB_JS`v=NΣL2,aׇuOqӘE.i!|yD^lV7Fes ~u(+Z2~!ޞz&d!N[^d+CjXη 2<鍖|GJw@J2NE^ t;tOIvP3ϑ"X"܊hvmA c%:nks&ʴȀy-t]lac+hH/e̋=kHyJ1;I/ΟO`_NFٮ9BYk%sE50#MB&kܧ{bTJgi|?HTA 9z45UIPQ4?A+z!hk+ nv$M@S $FH%6(b,a}rOI $Zh?=ע9(vd˾9#T hCl"Ʌt5'g-5N D3NK`Р%VE&Rx 3[| R;"sĩ6!%ԎaEp?㏀ϺW@2{p]f>U5(Ҿ|u03tʳ(;<ģ(<_?Gppy`ژ3SS¿vo B]mcv\**{zx 9)#W\}Ga ؃xXq*_0f&=kbw{oL6$mQ>M G?SS[aA#߈70ҭ6Uٮ1E򻓍'R]wl>c͚M2BZE8t ]ZW YDcڦ]sM40su|Cq~"{|7ݮ↙2NdK`t,L`2PReޓm K+Y=Еps/{7._#Gpߔ%*XUP_.U51#I[XeرBj{x DnFY2[x<YSBq)ک>NĦW#3/vYAv6y{bMs%?EA?}KAX2gU}_mǖJ6٭P.|/+qKvtj1D.8Wol}Cht7ApY}/H`O%5L'W%T%RZim'F5mv382広TCEbvlxVjְ\tY,XQK? άME|QZ6a&$00rء:Lh$ p*ȓ0wq+"u=;2]SVg%D0&yTqzWQ2+ /@d3A5cZW Lp]gSFFWI|z?2 _5eQq,'cQ`!L4*^ڭ/q.\e"p~|UwRռ|z..TzIN4q&H1QthMpf@=:@ƭ(? !ס Y4#]2afd #ҕB{TX-wyg"~#ғ%+ݡ2}nq/PpjJP"MF H܉P~ɱ˽&Iq:TdشT u.W|k oAXm1_I}:^L@I1tu|eRd/#㍆xu\'oF.39;c L(_ u`_OHLŷϥ {|G7~ג%jzBp$@u`,]Ŝn#Zq8-=CNMPs;BD`yO:r Sh / VGRy]ՂUx~ҡ 5v+_C '`Ԇw Q `[_2Й7%hŗ|b@ &fqP iN.Pm:wʝzm;0ϲ6pLAY! Eq- 4|+O"8fF-kuN[!qpZJ:IKiEj W[Xz:nprU*rVc[(X h,%/¹/~aoZÈ!7pF $mChlA7c՟AlgYa jn])?'T Z瘶uu$(oʸĹF֥E7H+^d=0BD<-"(O7g=f j֗lux-LӠMKo[8Y&uli;'ZchOSE`DIo5k{#N@677(p!'HNޢ ?U19##+C@vRkEJN] />LQK b%tBIqm9Z؛<~ S"J;gRx&&HުHbYT8ݵ09CUD\n=ZK*>46U_9;yXЋ2+$wbNu@ش`eGIc(yP=ڪs_-Fj&A/WԯYTzANl)9o"Re_QΔk9ysHվalȩL'O58{61q~Æ~VHYGg|%3̤D')146_jų̌B0ˬ-q/5hiɽܗթqYkw-]- SAֽl7 /d'1=c?,@x!5] e|M }fk࿾ƚ+a <wZ`x\aL$Hu@#8傧Ee.c]khC:( FLpVRNʡ<Ѣu9ref{^E`K+ZnL^ ~ !`2^Fc&?>9J)ZG^YQ.FDs_~z;j)ebgu'OV>>+-YR b?Nas ~:p3)dzwzi i;}Za1,C#KM_8ngHU/>r4_ .\o h(p_nq޴(r| #oR51.,|a0ߥ;^pڼCdXDI y Ƞ%.ˇȗTr_0wg1KUUH M:\r*HTzRA͢/0f>L[7 TSsܴ[͇'`AN]u ժtaŸhs?0 _'s3DOAqcz>%s c w꾽D-K|wsC>a&J'"R)Q[` 'RD  (GymT%cvվtwP [ŘUС}hc mWkpMqǽCӢ#cRބ?B͖'$C ClCuy|p@9mvO3}_!4B`g3:i7aZΘ05$E ,aL?up2=X`tܧ8R;~E%% @l5=[2, (P ޢ&-9U9vm\9&)dRzp,0nZg-16'ZRꟊpna݋ޓ`•}țP"fSB'}Cc`+ eКr}0]A)jTdHX{[c5a20BA!";$s{vShyPY'e2C]b>ihatˆv^X@}Cٜ_Axܹ;,*5 庳6ԩeE> ÛGԖֆz{atz;an9#KLxBWԜgC̈́gJa^p fQdge$PKEu.9vtfl(;.vZgJXo{*wy'tc} [cքw|w2D3 @v&Tp[AҧNɌx cmMTm>΁ qWH[ iJ͂_,λHadxaَ#́Ofp~6- @K7C悳t|d49v×f"' e-֐i:xO1>)z:V×Do>%M.ȀaP=ܞkm}*',BMt Dx.LnBnhrs. @`̣D?lټ8L7cza_(Xww6x=OeS *7V&ٙI 8%~7i[(ʸJ xxF/A P(!G .a9u~+9Y1ߤW(u>OՋ$|ɻrAu =o3z:Gn<sa7IjugހzwL5Jb9ϲq8H%X%Tw#XrWNM;Tj+s'f&j P^\J dT=q% S0zPYvԾGWZcߴG]_a Seal+$= i=%w&A#QF|Ti8.HmZA8 "OumY³~15x0dkTJgCep/2rX-\E(\*v<+Hl3cMte+cgJtFHy7yqDB .sBWgVv< [贺GQn3̹RzˢQ8tnA<2)tےiD_??rhG=ې[#UMֵ%p@Q|{C}ahb:HH$P;(Zul Y!"*HteBÃcd4[G{Rj4)3x/^)s+>enͧ4՗GpAM#Ҏ%/Ж{D8sklӖvq<ڲݍt@T  'roNbT^}_ OS;?w+ rOS{&idxg08d(7U׼+!*,o+6U-a҂-ĤY[* xY(oIMWM 62sA0/DL^{gdrFXn:69S[M8*NVv*ޥfIW} 8ɞ ޵ =>wɁD҅+>'')ۯI 65X聪htڏCv2π9V&Mto@ }#IUUxH}'P_ƆM'K&zn7r76#"} 6{^f"k:qs™2uT6] $tz 'n2o/q6&(cfA 0Ezoqx_T#`gZ![״ohH&)\6sZ9M:r.N+*Sl?Jݙʔ>*} 9oCÐYVIj`2mJ6tL{?fl=u1&)>qT.9ɞKG,{oU./6\"aZZ# PsI׆jsjˍqJ3hYp Vںk&&@г_{^KYye&}V|JhPL G2= C=?v Ћlδ KYf/杋% / !cIw1\|>1v RH~m^+TmRv<:/_zng{OՖ͕ uFjRv_`Cw2~%kVeW$4w(a_k%^M[pD$ '/H"F iF:dMeUH?i=w*Jq\-ߜ{?qQszIh9{7\fxG(1tnS)m or}atdA*u@Y$5*6m6Pncj/~1(ڶ0U̪뷫! vc`(@_5N+QȜ`}!ϽefkZz O 374asdNY BN7E$;iZ d'& Au7hM`XٹfogLw$uGxGbQrb]B:>)%%@h=s|=q#U1Z*v|f2G'VQg4^ߚUoEz[Μ dM@kȕ.^'rJH Rzc1Oܞ~C4ٶȇK|* za1TXƫ+l#!CFl}5T)U]QpڅD hQaZA:-XrJsslp3N*bW-Mǵ>,;fqmO%%0^VPerbMʦcOQZ6 'Wb5Jyռ?F؜9ϛg3nfG;罔a*x_H"2T'LW(Z_8?KHd."YP\:hp PaĖӌXlQndDdqHr>=LA82(!bG G)du1%Qy:> /JmGIN7r2=nSaq [0A]mv-?vvU]1ny5=q?UsW:Su:$ Ҟ~b BH 4$ !zF,s8¡M J ܁ 0NA$\D!d@-dMy\x{$#{X ϯPD,. [}}+Q> :E|hNRPb` Aor[!.C:2~#,⟉B~Δҭr9fy+ݓB&Iu F(ƕE <|  'P32".i#O!25)Ü-}wʸSc^)<ϢrՍX_#a\09xY%X nG9ȽJ\jx[Y'TPGy:b :ͫͤE6a=a製 P/AE,tiMD2$b󣭁h PD/ P)D{<>&Zqӌy@ 0jA4LO3pz#JޜºgvGˁy[(CAё?ȭpaR&pa!);=)!0 P%AE,tiMʁ PX-Di<9@r)l3\Z[#۔.%sH1TMr+D:U(ÁX P5/DheC~YBQMN`h@  0/A44LO3pz#JKP?:w P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/` 0*A4LO3pz#JT P%AE,tiMʁ PD/8 PD/ 0*A4LO3pz#JU P%AE,tiMʀ P=D/ P?D/ 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/A@ 0Ah4LO3pz#J$wjs"QeD vK##SZw3۝NjWp;(&)$T Д#[VO5e'U)SAMvj>q48/s~$ c-a5,S "3" Б[PQHDZ^= ?gD@ҌMߨ s9̥ hp]0 YR'6FTW R􈾱hů^}#2 kx",sx:AeLKȱ䞖:JvhJo6&䏦~6 PER=vG@ڪ*( 2q`e]@ PrAE,tiM/BeEmx#^SMqUJ_e{GR&~BlB]σ﫰w.-8Y6V P*D_4!l#f !乨mA P\D?]҃tHj.P1KE z*+>w 볭#LP6"Gu7 02A4LO3pz#J=MEN=0䣳 P%AE,tiMʁh P#D; PD/ 0*A4LO3pz#JU0 P%AE,tiMʁ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/ ` 0*A4LO3pz#JT  P%AE,tiMʁ PD/ 8 PD/A  0A4LO3pz#Jhh2rN`<BDė5 V8m$e5m[m;O>ɵB*l]?Jm ghȉv.,vNdWF@ )1\A,t*,r32Űgm#M sj D6ȩ[D\EbGٳw0>ͪ}g7˽5A;ߜ\6ᠤk)T%|p}[MhsMML]XriHTE / B)c5S};ȵlU2B#G+]iX5$rs;d}~bYlO,Ѷ%Ӿ2g1r$gHmJg]`\PB? &f+ѣ  PZAE,tiM#YdLp`&"j<No^KRfStggc=DvBoŲ7bߌ<]P]  P-=D5ih]=(<p  P^?D5;`iwmw1 r@7&Dyq=ht%]X𕹰"vͣف  0KA$4LO3pz#JWuoQ<)/ݴqpm@ P P)ABE,tiMSo΁ ( P@aDʛ1TG̳p Q̌AZǢ飲 x P$cDbŁ @ 0*Ah4LO3pz#JU  P%AE,tiMʁ  PD/  PD/  0*A4LO3pz#JT  P%AE,tiMʁ h PD/  PD/  0*A4LO3pz#JU 0 P%AE,tiMʁ  P-D/ X P/D/  0*A44LO3pz#JT  P%ARE,tiMʁ  PqD/  PsD/AO  0AAx4LO3pz#Jpb3Ahm$xq@}BX;{q=z1mTuZ0+.Bo046*#%)cUsH"0<\Rob,׭*)M?mv%0ܱ&wp=|pb_Ge1^+˄bIUTeH*{(!t \xAIoB_ Rbq=WsC>Ԏ p P1AE,tiM Ycv#*"@`@ H PD/  P)DK9p#bw8` 0iA4LO3pz#Js+c)glAVЁ PBsD&9_vϙ241\{ʣu&o&HH$Qb01 X 0,Ax4LO3pz#JgOp P)AE,tiM $H PD/ PD/` 0*A4LO3pz#JT P%AE,tiMʁ PD/8 PD/ 0*A4LO3pz#JU P%AE,tiMʀ P=D/ P?D/ 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JU P%AE,tiMʁ PD/ PD/A\ 0NA4LO3pz#K2jd?R ~TAۻyC \b}[gMY34aΝ1@W[Q* RlFJ5ruQTfåDR(Uye,,ܠ]LӾq}27+; H%TY T]!øNWeX:ݷ;s= S} >G]:X-B\+̇Ӽ-fŬZoBUJFHBBPIiȞ1Q"a "keFL!kvxtȅӭx՝ݎe98\$ PeAE,tiMQ;9D%cZ>MnY%tV&͕/d7TcSSxVqzR{-Õ Ih PaDbu?I@T{/q:-,uY;LW]J:z!f27jfv˕>*1,˃O5S6; H P_D v-02FlNbN3)'URw$P`P "VH>f:@ہ 0MA4LO3pz#JA2u)PPu=Q+9*Bm:zQ0 P/AE,tiM!2LӫU`$:aÁ P5-D 9(կ—j*PθR0?X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/` 0*A4LO3pz#JT P%AE,tiMʁ PD/8 PD/ 0*A4LO3pz#JU P%AE,tiMʀ P=D/ P?D/A{ 0mA$4LO3pz#Kl,>4* .hYnR pi?s NNGKL2.Dgb ͼ -p2MHm@2i伝[ɘ/4v<{V%c6 LuٲhʞF*5-.YH3L,50ر}^#η\րɲuT$"Wmɂ(F)1^#Ҝl^g*5P4p>uٟےftUɗCV;4/ձ%҃VA݁'/ }rf*0!?H*UNG80h#:7`Pz?/y1܁@ 0NAh4LO3pz#K>m=KKuqbR:/\{v8 yMƇ P2AE,tiMq*Qs^ǖ A Ё PBD^퍥V[rL<𵙇U&pA  ; 'pS!Y8 P#D_ ; 04A4LO3pz#Kx_64$ˀ P%AE,tiMʁh PD/ PD/ 0*A4LO3pz#JU0 P%AE,tiMʁ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/A]` 0OA4LO3pz#Y!D &!It%#T!18T@#+a |Jqq(U]? 2X9bB)bJBDd|9aXHQy8;{Y$c}|# @x5hXo$B_kzx~&~ JnͳDzEoì>dua3'[Z1@)(QDK9S-|J[iNʤ뵽)?#urԫSKf@o$'=E/]zY,.q3ڊۀ H P.AE,tiMbiIiCУ2}W"磱 P#D7UP~@T8 P/DM5%?'Le n$ 0iA4LO3pz#Y?-0e{S6exೂ2lzh֌=6ή{`*>{(Ɓ؁ PJAE,tiM`FNbty RF!V 1gYRUs)d݁ PO=Doy=kHO,@%Lo%+^,m㕪plՠ>0Á P5?D_>Ո{@_ 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JU P%AE,tiMʁ PD/ PD/ 0*A4LO3pz#JT P%AE,tiMʁh PD/ PD/  0*A4LO3pz#JU 0 P%AE,tiMʁ  P-D/ X P/D/A!  0A44LO3pz#Y:{9]K>LTN8QL؎3GGu`/dSOKNz({aeОH]%FwumyEUk,JOfQ59Nz}Q-b`do!/Z.jgw.An7z= "Qk؅IIIhs+d@Pgs~;ICАT;@*O#8|xz\S˧Ա$Ł  P7ARE,tiMbI2,j@Krmv/$ Y  P#qD2zf 〣  P+sD؜BPPg~.-0.Qh@! 0\Ax4LO3pz#X_9@sz h#lt z v+.c3bfCw 1!p P)AE,tiM@S!H PZD~V[>^ת_ʻq`Ҟ0* du۳l꓊\#P,΁! P@D@:=ABrm)yО#gY;Cg"` 00A4LO3pz#J詬Gp7K 8" P%AE,tiMʁ! PD/"8 PD/# 0*A4LO3pz#JU" P%AE,tiMʀ" P=D/" P?D/# 0*A$4LO3pz#JT#P P%ABE,tiMʁ#( PaD/#x PcD/$@ 0*Ah4LO3pz#JU# P%AE,tiMʁ# PD/$ PD/$ 0*A4LO3pz#JT$ P%AE,tiMʁ$h PD/$ PD/A% 0A4LO3pz# R]cgjHzuF:A@tّ V#~id-9xVvhqī6ycBFYJ+ }hAؔr!Ͳ5(\:Bv ֥%X?1zOq(gJ ":G~se{=2\E1R%Z4_ e]݀ ٲ5SS2XƚF0{IrZ`aaPJLZLIs~sQu7p&(֡R.}bbȌ }f<7Ç7,:K9'n<Vȿ?kVYzx"teRp62۝*Hg2U8B{#)ʢ?)5,Md cZN>\Do"ݶ0cx@z9MW\/4g>XgAGE]*nbq~G$$Lap|U鎶ѭ2\=ߠgi;.̜JIQ1 DaCIj7 ˊ]3# G &\=$&vQ1ȲQaJF%kF~sVĎQK Xj9BYݥɜ`DĖx*qQ{{ֲr@eYd>r+7v22[dDi<1< ?;LF0,owƚ{w̸d@M)Ξ-׀(ú+Fq{xPxlSlC87K uƴm$w`܀ ]zu_K,ھaLrbQcDS(Gm9/q< qXLW<_lDTJWшejd B*n}^DyPZ>^dz)LnZ2 5.3s0w IVG'2):@jfVYCj:m&rU.\u2 ]ב>╠0E-{Jk.3qB|&c-VVwE26[:}bV4/v~ ŘQIG(&L) rb")D>عW7eAFpi\I6.,AbVj wIb4M;cХ觪*:4FhuK+jfhB.ʺN. {xlξ%ѣsːxz;]^VdD徧#(onlc$lQkY(MmПΣN2gV [݈ٮo`g # E4l:026Tknz)]w;`ktUWH[ *WX:!h1xj0''~EZ?7lj$5]WHEqwlz~hPlu7?,L g wqiX"wCPnUMsv+oEV±Y ǽQ`uMԋ蒔l*=q=w[_#Q^@٩QHep5.J"Pa#+Ӷk@Tne3bsg^>byrp#e/ Ww*XG !=w4 )9e, HVV-RrL7P W P]U5c4[+:jS\sG}:uf^zr{ =^|MdpŮ7ou·z6n6OLǿ+)cWֹE'fq&P›"v.|8񟥘:P o 8[d(DgEWaW^BPF1s6c=u"|TSԪIv|^:wJ=pslT׫V{v)3_M1M48術ZJM騾@҄<,9)[j%1)NwC6}<2eN_pR ݑԗ6;bfanSЎOmRe wEea/ M~.@M?ZWRЦ6|m0*^6IsOkѢr*s/;-!|ZThו6&LѤL70~oftmXm:NE9_3p@@Υ ]ˆЄ;ILNf3)t&"dF*52I$QAjD)/!|qʃVv?e!0I8Q8XDDEDNBd"}[{d\;4&eAHFCna}N ƽ# kn7B<%&=s/3U,je,5>R.j$y>;"5㺿Rar}\gQ(fmz,&(ZqF_s3NA+saA*nhy]JP™U9`#|aaQ.i|FO!:9&s7z끞>&0k^;|Xh¦Wv]\N^U Уo(}Yh~sgVlh\He&s)b)ZBYo[k2""'\O=aGv`kb%swuZmb:`c(r~r`swLlI 5=8[c'Iz6܇#\ul8Yy$BoNtT?dM05i=B"?ІW$- /,qRMMw_ ծV Q8+JryBמ*l'(f成&hkȶћ&jh`G7]oҘLf٭D DuyI}w:ު1GBUEU8c#L@_.7f[Ad3: tI P-%QngxZ"ʸ˜q٪$LbjGG2٪`%DV++j+;fJd12s[s @t=.w!ltp!F)4ztmGF-PGr tS;#plngE :w~[Wzdc9Q27kMS*# NZN5W1yً,!S.x䧯k7{2%f.ٮHۂ-EЫyw~].PV2)#ܓdmtFnwvQZ5gwKM`j .4Q+OU1wgX ~ЯVhBWamZM3H wh {7:/%"~fh @Ãr(ehc,g7qXM  p 3M%Ж̅,p9nE5ڮJ#reڙ|&9'q4{d7e^vBI_(gׅFQ4Yhl=0]wq-zs 4"Fhj%+F^=IB 8.4V7.tQ/DL`F?gt3Q,mt L3 XDžA7ϹK 8tpm@bLn{L]QENv#i)S.4Àm`%0!aڙ1&3AJw:VU_$ nU>UX wo{ xc0Ѕ =>E,*7EXWG% %UICw#Y"c e?@zVB}V?:ޔ#8j`N='U5e4Œ 4>xt{t±c2Ezڟ| `Z],9htɸx} p=i&8vkcdȠT-SOS.& #6 2O $x7heq~\RVJq) [ S9uxڌ=%@J8vҹ[2dT ~G+ohmbm/0^>Aهߏk0xkS/Cj٫͑҂3=Q})aeq9o׮mT(>1: O7u Vt^+\Tє4*ʃ(\ڔ԰긽BOE;#Ʈ֛?z}<|R3E=Fi@Tp% >:8pJb*klUUMD7AP1'qBf7\/'nw/VU[ T#fV"1,vfw7 SaJ!x_O  C}nҜ0x徣7Qބ?v_#I\^wY]1]f8D:Gh6a*è6bA9r2bgGH&KLf'}&%$)ԉVfkof:=o4(AvңZCU/(!{ j/}ʌaB%zq6 /uoPaVDץCz5Ua]"߭`1|5jRiHqvk*2 dţWy$ ! 9؊hj)[?n/m ǩ/'ݸ [#8S%qeo:ܨޑNđ ګߔʗdkAfgJ{-N$ԭ9gc&o;iD-?L6M 4 oOw;߬{ A T.aXOSӻ*+e9yXX#28` ̀fqfA黆ҕ($N5B tv"vnR]ZԵT`<)@\ڢ~X2)3r3NGޟUu3r:VĀ)rܻ#ݲ>)ȡdz&Rg;=u%~G:-<ۻz>83>FTgHчlKZꪁ8%U(QhDS-["C UAM"w>]0?=NgڨZ:/oS/ S\PunIsuӲ&c8PIz,`}(bbk+':8|6AgNؔEQ;0-p~zXB"2rEqtX2V:5Y5/!\ݚbg/M7)zc։%@ύi-S)! lQ {9ڡ5_"\ #QM\)/RIe\Y:LmP GI7-x6\ W9`+˸Կ׷KZmo!bWq#Z^4^l%dqzwHh5*A敖 Dہ[K8|@#̬e5%ّ3H %(M^1:ZVz-ulGTuIcH~fʐ:b nS]^ vL'N|J~79:fy?#(|I_@+{H̲S,/Rt~Yd bոA@@n*2ZXPh@#Bf](9o ٴ}EתdQڟEG/dqNje‘.9qw5J ]M?^>Ls]L!(0%Yl 8Ij7m"VEY$wЉ;`n?i 6cr%?,P5~X pzM<4]52r1K4J!PYF^,2 *'8zQ#S"`r@Sa>>H h@E2T,s{3V]QGIYGGwUm(f hj)UUL1!V֓ 5((jf:oت,RJ:)MG2UgB Nkn-Aw$&xۊ;':WR5 2+¾_nyq)6B2uM]oco=wLJ +d'QHj((u~}1 szw8s)ڷVlCe!7<5so-+xO w:M! 0ZƂ )v[c5@QU=.NxFsWuIgȦ)j$x(rMJ]ps08C8:T{ʥud0ZrYJs~&sB"o/tA`VZb>B(7G*O/w'¾`GEy)C % }fkƚa~6*hB a'EC? SvR5F|qoG`_HD4;^эrɑ*ebi`K+'sZ>N1c#ǰ O7ɄC`2^~c&@=[8Uހ7b8 Kt֡W8BuSeUYWC^x N̐V`ǝmƱ;z榋#>>,c+Q24 pa25"jw ZO63;gZ"#SH> O!4RLſ+s=9/T{ -hJ~87:z 9 ((IG@)I[!) c}Zu_}Gql%0^/Q[I|'-_, :)_P>۾/9E-'/1"opr?m2~Xs E֋أF'uH kxzM-#쿂]?N%n,*v׍X.|[5ɋK;̩̿qNfz8=z,A0ެKҹS6yW-Aq2kBHFèb >= [!F8tPd$ xٺ-1\s׃,V"}heyۗ(kId`\q|$ {ea/}uF;R5-?&ȑwk{a'Tp#!"<$_c"$ti4:ȈsYSR6Y;]1n4NkD,˫4L@f-ceݭԩe mVMԖֆz{tzBjkJ|>to.ܑCOp:13aG:1&!%ވ!5[K5,u::ۃ,K֦uH,@p3>F¾MvVYfy`!l*G%"RNkM8}Ы}{3L+ 6Zk{Ӵ'n]mTEhrs.B\y* D?lټ8L7c„Б՞(دI;RVP<k%!]k,$=.LS'1=ʼnCYԻBIX<(rw >f T.W .ay-9C]Ci(ۛn.OՋ$|ɻvuk "R:T'H-` M6aNJgV},M4B`5Tad}$xA'SO`kI=T/hcV; 8"Yԓ9^<5 2";VX|!*_, ~cf0c_UO;UW[ޅ1 !0&͐W2:Rת$9Mt:(_ۣ l/nia_!}oCVJgƝY&D`PӁ7'.23'W=+~$s$=(yޏ/ytC&=F.y3Lo`H{D!d*x\{a`h]FСSX;eX"/GG1e˪]|=lI[i$+M"N+3#d _Bmo7bQ*ߪ16UNȢUFGi+r3$M&Cq R5MMaRlt 5 re&OM)ԵtZkz ]J 2C%}ٙ{y¯ RY$v'H`ŅʃۆDXҟneJ5?7p`_O^[T`+U$506h&?Eٸ3wgIlfqjT&➉Oɩ{z\K=uK ͪWrhkxMR]Ź6 ^ ~L a֣bJ3pʀ8I;eQWl#elm]{C5A@ Y%y~(Ad2sڨVܚspZ&uK~%>m\2qDS ݭV`uN2!kD EMP0kS [fMETʼ&׉0n$jV:5ޞ_&Dq&&dX\"gefĦtzC#;ਈ9R]CS`I~oIR[iغPp=s'`5.D`K/5y-(~1q`wP9B 6z+7Yfc(ߖA N޴x" ->ZVz֊]l+dɫn nV?}DSc}o^eT&wqA/+<5.!{ahpG7}'q϶lGrF>r6pV'AFDT~#kJA'i;w|@pDm!Rʮz^yv6BF2], 7LqtxA|a4QHer`*`*}mJ7[Cvx{͂G]p7v.{-Ai^'V%.o⛩R^ "Q~*6iC=L3ޗ8NSYˢNOo?ac'2uf6S@[_yӟ1UBIhRyU$O l㑟hY/ˀVT+7\,b|7tv9ytuq <[*[D,SqPN .oؑ3gi0LijqNCM2k.RRfA ܌i#b{\ozfA[s~ uaGeU3v\!Y>5~cu;QSo@)xK[ Cϊ.3BL@Bw|b9#<*XMׁ 0IA$\D!d@-dMyX:MUq 42͋2sRݤ7^Rd뾒겾ge&u.UpοQwMt.9> 0 P'AE,tiMI3De@ā P-DW93lU e:.d91F>CDb-Q^RK$Z@ø!c㯘F9Ws`$FWӹHR%@]'tKo_J--4{Ҟ N- ;ަɼl2>jﮟ@e(ȖzuҥbI0'۔Me.}%ņr2uS ̷'3§%rVQ,c@R-1 =z]lJvHGl}5(ԂhUy/5-M!ԧkA3dcQ\2"|9$-.ŽՕݡ ]:`3廒a1OT^͜"y$57F&(Pr3 msr/z7J“~$emx +ACɯ~+U"7w;y45#Ibp-w2^ 8*}FT>+4K3/0ԨHCzY`V(T; L|<^jx̵C &[ 4 ^K$FA PAE,tiMm`i.26{Q eK9(!0k磘֡I6W:A/H/8S/q1w2/c"e*8N90ϯ6^ V[3V0Dy2= (<4Z 6z[? Hn2WvGkE4H]X* Lf AWz*ȟBI?݁ PODp7C g RH*PdC)CຶLxFl$i.@܁ PDYc/\ĉf-QD23"^D t$@)M#;%\bn;{m d$GukIBnlA(BC.:$/Lԕ;cp nl6O*Kan㍛sD~&_W‘<,ȇ3M 0YA4LO3pz#":SLC~Fo?-w4dOtPag620jM連 P/AE,tiMNQ: 2h PRDdw_C_EpU_`.̽-ٞÙ;直b":ހGoq PD/ 0*A4LO3pz#JU0 P%AE,tiMʀ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʀ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/ ` 0*A4LO3pz#JT  P%AE,tiMʀ PD/ 8 PD/B  0A4LO3pz#L145)% 7pJ0wN>t5w{ :{e7aMjJ4MI,744lT3m7>q=tyv^x W}0H@EmAZ:&ˆZYfth*&TvckA?s^YH3#7f= WO}sչBؖH<[R@WOď 5foj},*p7%(GU*|?/R+yD,sJ4j0>LVڰNsN}bďRݐxq `a24$o!]Urr} C<{G89`1wreW=%bnF ']ƒQ=,*?U.tFZ˥0,Ǿ)"@  0A$4LO3pz#PJޡv6ߐsS%?EGhBuKƇj\VJTkF 爕 >Cm[ +:oQŰ08pYw7Ł P P7ABE,tiMy΃VAQe@]ׁ ( PIaD Bտ@W[ϜLbpV2( ,]wɽDˣ x P%cDOWwd+ @ 0*Ah4LO3pz#JT  P%AE,tiMʁ  PD/  PD/  0*A4LO3pz#JT  P%AE,tiMʁ h PD/  PD/  0*A4LO3pz#JU 0 P%AE,tiMʀ  P-D/ X P/D/  0*A44LO3pz#JT  P%ARE,tiMʀ  PqD/  PsD/BG  09Ax4LO3pz#tX)$7݃^i~C.?b m@3qȣIxtZzF3RxV+?_TTSJ[,=~4!+`+ˡ_K_[ 9˘3 iUWPЄ{XHQGN4ǺЀ6WeFB93\nys?jD㥾() AIrkt*2@YrqEa*9.O $µ߂kA)n6j|D_zPTp}7xƌM{hn3t;Yl[r&VKi(7}쬋 JZREwI:| NA[O$KdB37kLstՁN|qI%r'=h %-ǡ;g8Bh:\ErURa|jM-]yoS$טLi1m0HeX"\BRoL |˙A^=w\p$ GDL44/\ ۅ5(u p P/AE,tiM(Wm-%᫁8ԢPK H PD/  P,D6h4c(Fl7~Q@Ё` 0A4LO3pz#Z("/o T9F=T2 }6ӟE#C5uzW,L=g)pa:jd{b6aӿ;J%Lfjkq`̈́eIGޟֹ논XfΙuTszߣe^$,`h;V5`Ӂ PEAE,tiMСbv7ʇL x왖C@  PD:]<ס>sP\T|]*idj]"Q#v]Q,|u c.TɲN IE89TiY+3bc_o+KWLmx|8 P%DU_wtK!o6` 0*A4LO3pz#JU P%AE,tiMʁ P=D/ P?D/ 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʁ PD/ PD/ 0*A4LO3pz#JT P%AE,tiMʁh PD/ PD/Bk 0]A4LO3pz#Y`˯qA\NB키ewR;:~G|l oeoOPWϘX#םZx+%OF(oV iN(tn2F)0hmWe|v%4sV~hiZ[f` t2()26"BRLi,4SXeuJ/ fWº?~ թKƥn[˒] N$%%8-rc!|4sV+Oj.^|E]=E{)Uv/3P C WbGfbo-_P@Q83Yb۽\% rκfKSRb24 Xwi2!GrS2"8jo 5 "mhJIQV53yfS^@BAm&l̝(sSߦse9vk?cE4rfAoR@":Fhm3Z3MVW4ʎ=Q{GJ EۭK&d J2"報2L0YC˾W!bb^aI 0 P2AE,tiMGy8gg 7T>+ң P#-Dך~@3ࣻX P-/DRaPx mͥI7~| @  0zA44LO3pz#WƜCRM A pכUxBCC](~i:?"ka⧡̘Mȃm'M ?7,  P%ARE,tiMʀ@ PqD{ՐXb5W)+&>pWsc}2*Stw% -K3y,9 2W(N&r7הa/r o@1ʁ P<sDԢbq1>*B\EF0( o Mxݣ 0/Ax4LO3pz#JI&-;p P%AE,tiMʀH PD/ PD/` 0*A4LO3pz#JT P%AE,tiMʀ PD/8 PD/ 0*A4LO3pz#JU P%AE,tiMʁ P=D/ P?D/ 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʁ PD/ PD/A 0A4LO3pz#Wٶrkte'Z%~@%i(uW-2ÖrڦY gIMt GNGм)sRR@L_ZZ;f׎7pB<2 .HB>캨MV竚g=^p)z]iMA6p35m&X)C9ՠ "(V V5]=6F^~ُH eԞLpDwf)w=U`x ge+ԸMMX Նe)4 PnAE,tiM5aW{ lVUK*IXȦ]Pj\ѹ5U.!e0j̞3p+K@Áh PD&aBnM@HS#}sp1;-HX&< T8\nsR<;m1D$BkUtFYmZ(n$%abD=uI9Fzy[/R'x/YTfr^OBy75zXh^&8M֡v{T(:ktOPYLQTgkΕxM@UWpóxN1øbgjjg`_}*iX WF9nat@ TQ+XM˹CށGoO3@\@P PABE,tiM+wʀnQf4;Tta)%r`NwϿ6 6/)5. .58i  17:-#HggPݕŕk#7ǯ"߻h%)=*aā( P6aDM>R<uIٗ*L;b|GTJZH@x PcDSDYnO˱E rñ%)ae"Ƨ,*1<`yNu27!H{hd"HB*E(,Qr(vEeI H77#k5fO{nP@ 0WAh4LO3pz#KPu^4D NZgN@~FBtQ]$f QwU7 P.AE,tiMO̡!'C_P*aŁ P7DS,YJ> &Nxaut`E銠 PD/ 0*A4LO3pz#JT P%AE,tiMʁh PD/ PD/ 0*A4LO3pz#JU0 P%AE,tiMʀ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʀ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/B(` 0A4LO3pz#KQt?7Z7{UŦ_+N'F%s4Di[%..dc3M/:(%rLCٶa[kjyŷJ|tK= 'j{3lij!1$/蘪ߖ6|(;BGlܸTm>í?bl2OnԆDX:?(A㱁N]=5fW@v6JI9.& O  sh嗹S] o^8;ׄe_'ӺJg%uu([P^к0 DB%7]W֑_$2xQ/CXtc9kg馘p~iڊ՜CuFjFZ&pUܫ61e#NZ"DF|0pX* -(-zW'P=̀ P-AE,tiM׋SgA5 /ϸ!@ P=D sNAǬO0)e3/'ڵ)8U ! uw4>u)Y#y`F~q˨(倶/X^9)7pv`1j!.>Gc߼uq́gC_#h E P&?D C6bI 0.A$4LO3pz#JMUXE@ݣP P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʁ PD/ PD/ 0*A4LO3pz#JT P%AE,tiMʁh PD/ PD/  0*A4LO3pz#JU 0 P%AE,tiMʀ  P-D/ X P/D/B#!  0A44LO3pz#J8|LjYKExU@>|Z@\"G^',OZJ;V䅅ں &:+*:mk2Y%Y+R<zom>g7l 8vݪՃr{):Cqh1o㺆$t#&J"ؖ"Q?o xJ .*(|r;L}_Iu 4f]8I[ A`O4ͳ]d`jݜ}E0o5IU@iHjD}FQJe[ܟƲ3tOFpcERM+Ȩ1g.GF YuB_"ܼS0^j(Kh噐UV .~]<^gwGK|f7=tn>Z 0!<˔h~L)4I2e/,9M썃ˉx:QuV^fZ   P2ARE,tiMzUF?B&Pc  PqD/  P,sD JөΦ[pc7|! 0WAx4LO3pz#J7  Uˬ3#-&ul)NQ%> ;yJ`9a!p P%AE,tiMʀ@!H PD g Yea5pT^&StN&8oA0~קXnLmaS7wD  wP~aOAHB 󆿴] YN$%V]%@Ű+f\[El6f N,|fB臯;Z؅RIӎ#B.lHG5Yʸipnr`7ϰWoKPry%kyJ訁-ӌkώ"<-LuLΊbU%=CfNc\;3[N&rhu# <&l;co{J^UJRU*C \HY3(=wudS|kb AYq²4p=⨟Њ57K`k? );:*˴sj鷓~XM#o0Cuy]d_9Bac峣Lc1XW' "*eZZ{4kĎRT*9 M|:)U3amƳIr`__\Y (5Ifԁ uU}1|Q 6o3[oU2sP;m !`x2f<Ι;*<Ӈ}È 1˭!zċ )@y+]A š#xдy'3NSBm`R @%0 PAE,tiM߮`/S# e$_zNX7QGɖ9p'x#ITxgkwQ'sގ'"*_ܽȷٞ \ z --#@Va)/JUA&:lG|BWK3kH> Wz1ljKvi ;l@ǁ% P9-D q3͡q66SLACbg[ˁ@%X P/DL}DN]C[+# \j {._#+=K3sF@Mey*" "՝uMxU5ʌdxc wɈoR΁&  0@A44LO3pz#JEu>(iifأ% P(ARE,tiM&rA% P+qD,{cAe{% PsD/& 0*Ax4LO3pz#JU&p P%AE,tiMʀ&H PD/& PD/& 0*A4LO3pz#JTCuN &u "g(  @@@P(`hﱒ4eǓ 5%Ǜy.$ɫFVQ#Ik#ǩ~QNMVGm7)  G JvDk6S9ظlqbQ 5Y^V|h1fAP {<% dڂߙ}iEkM< j*5\. %&((4yCl"DYU[gƮMN, ncޏ0ܡ' */M뻾+|k%,oFj7w|fƧS8Gnΰ@;e׬=:y03ѐ]4gWjqo(cD tǭ.{)(lP }/2?~o"Y<* 8-x/ij˒Rda cv}?D=پuy+S/fhYq j0o.: ||J|ZgQ-i*d,%:&wJv81?c;m^T{'7]1R'ꓐcNj<$Gށ:XU:xrlZ1: ӗAd_J^R6WhtCT&N}JWb(ns6WnNnWB>B{#)ʢ?)5,Md cZN>\Do"ݶ0cx@z9MW\/4g>XgAGE]*nbq~G$$Lap|U鎶ѭ2\=ߠgi;.̜JIQ1 DaCIj7 ˊ]3# G &\=$&vQ1ȲQaJF%kF~sVĎQK Xj9BYݥɜ`DĖx*qQ{{ֲr@eYd>r+7v22[dDi<1< ?;LF0,owƚ{w̸d@M)Ξ-׀(ú+Fq{xPxlSlC87K uƴm$w`܀ ]zu_K,ھaLrbQcDS(Gm9/q< qXLW<_lDTJWшejd B*n}^DyPZ>^dz)LnZ2 5.3s0w IVG'2):@jfVYCj:m&rU.\u2 ]ב>╠0E-{Jk.3qB|&c-VVwE26[:}bV4/v~ ŘQIG(&L) rb")D>عW7eAFpi\I6.,AbVj wIb4M;cХ觪*:4FhuK+jfhB.ʺN. {xlξ%ѣsːxz;]^VdD徧#(onlc$lQkY(MmПΣN2gV [݈ٮo`g # E4l:026Tknz)]w;`ktUWH[ *WX:!h1xj0''~EZ?7lj$5]WHEqwlz~hPlu7?,L g wqiX"wCPnUMsv+oEV±Y ǽQ`uMԋ蒔l*=q=w[_#Q^@٩QHep5.J"Pa#+Ӷk@Tne3bsg^>byrp#e/ Ww*XG !=w4 )9e, HVV-RrL7P W P]U5c4[+:jS\sG}:uf^zr{ =^|MdpŮ7ou·z6n6OLǿ+)cWֹE'fq&P›"v.|8񟥘:P o 8[d(DgEWaW^BPF1s6c=u37 wDk6r6Tǝ kxNm.j*]ԮNH~uF/(qC&:%'# 8*LR#ZވMc},Z}#22"5P}%IYϨgy;T`U!lL*Oa{> 츳 2 ZwN.ΊfLc NB_JS`vTA =:r.޽'v&ø=Fz'NGvò%DdcArwP%h:6өDt?򸱕)z{Ni)M"N ,~ol`x9OJ7 ;:_[WD+@89Ƶ ?TʶNdfmGgWm yzh FqNDJowYa`*fP5mTAex _[ 3wJIhP mO)8*{mnC8:ʥ\S7H_ 'XFØ]%tB@9`AEv|wR\~g62 + NE> zmObɟrd-A ('bVvLXFݰ$j#EgRqt?{c.I$lI*gűmgw7 XͶTZ)Gxkj{qR5& l4C%$ vx·, 4ZM BcJ YUKh5nq,dE)5K阎锧+ ~UsY}ΘG%]xlYzZ@/sNL~f%OL-(LVB03fEn2G%T kf9/O]M?K: Q+6BVcORza6Wҫ.7 u9`>|~਱O[0HC:EKwβN*$H$ c^uN6Y[v | ,o&Nv1Pa'x3)W,EI` n&NG=̪R(1XWw/5U6#1s^8osѓP2 j CA*qKQO+xeku=X#)G ,UtC0Jwg(S~٪"eLQ?!Q,0 |dvH耷@hK͒6>[ )iD/U HwY^KT)à6PBTY!ۉq0C! U[̚2uip({Jq~ Ψc,TH3M\?^S(gyMϫCqC$u\= Lb,|wfr%e+Fv;))$/xu$?t؉d3y#nִ0=Oݣh!$o@ZDlܵSEOJǼ8 N wvL74Hq|(Wؼ%P=wJTR!ڌİh̬en748P8ohp*%c`P@J.E`j0^ "wW^ ^9yp)_a xBrL%%nRÌ.S$$e Mqf ~cys@㿺3䐾4c/r (-p{.ٙc^]' ĕSBY\ԕĿ "f/vg';C Wy͘U.wXe-n t4,0m2a׌H&\%oPAIcb|^dX?QJjj*H:#;EqƆA']TQ4\he3 â#{+Dg?+z(T FӼR^,Sws!S>Di +WB E :|wf۱&*R"N7Y]A-IQjhr3 IC\uzC q$joM;{g5gQ[峮 Q_y=v^ij1E%q uP6SxwlY"8`$&R5kC|Znj`W [ $}0+چʖ, 7O@3*^YSKa$ezkT,&FhBP T] kG_ߨ!:?LM0KfQR79ĵ>2O w¹Ā~bfvyY] U 7{#(4m2e,oĎkOH=V_. _Xl5[?y0ssv@5 }>lB7TaC7T B WG⟫6eM}#(P/ȱ@Gy# 썗VΒℵ"0_~n(Ĝ_?k:S,T~rMhfYsM*8,HRAL.IY*$s_sIS p}1ܒrwַ.j"gf?hȢ{Q(Ǧi1?P3 ^&*! %ٸĢ؜sT!YVye ˢLTyc+ Kf>0IT۷MX$a~++) ͬPr+9 SepE2Nm=[~;x50=L'nc>N7HWq;"Q`I YtSyA2G&.lewjs(.Ozt;H)}DIdoF;ј0pԹdPq20s)V6% 6b.Fp"tAYQGj4g5}?1 Ɉ%0qR`omコF)yRw,޵{dEPvNԼ6E\&dσy1O} R??!6@ !C b'%6(jh3@ec.n-O"=O'8k>(r',W#DqejP'şMl ne.8{\[w BlDg- (11¼ YL6˘?|:ǤDI;UK76ټ]3)P^^q:6Wb͉ƪ`{,/ma#1IK6. Ơ^R1mZ ZXzļ jbZ VQk!(B$xIg{TKEhQc%CǷsfQ*UƐ'&Ux<^<, h P?KYfZu5ԍ@N%I2K#Zc3R0ӾȐ%?b.a̬a6߄cŹ3 7s*F0%.N[оXtP%8kzEɱTо鴂CG^ l'՟?/q}'-v0␏ E20'e l嬕"{>Z<)hR';*m摖LlBAC&T K4ߨ{8y"Œ [;"mJ_9:=,D: ImhgGGj\)ymyݵ}J HnS]!09V@wr5W/h'^5. Mjq#nbg(&̓DJS:԰nRm:IWEbl R(A.LFߊZrԕ1kdQgFb`{3?^#YCu˫x>É%}~WH1vi{į*n^҉6X9;\ѺÐG!b0o~ ڳQo1g^F9r$FOC]BZIv0qh8\!&:=- Cfl?D): J\dE?ƈ-311a ].3lB=:w? ;gQ_+=tk6 5TTHeͽ}$d-oBG1&f]۫Q^_)kP~&yu}/퉕4lTEs*[N% 3NirFn"pctiyMH=X9jg s\,kεVgb@'ְ7`W%rp]«j2ҩöli|E`Ll Z3ܢ⧞^|P\w>;_ռ;+i+}YzSff.]oP3t5gGFc*2ME⇰ϕpT[s`d`w ֶdA{hψHSmO /&TYnBaEPB/jGL+866NKCHUw&x8s0:RYLaLz@\a:w{\$)#qp gC6=9j7aͫ!@ͅP4 n(h]؆xC@r41/ݕl0gSB rOS{&dxgBa(bIYu(7U+")b+6U-a҂-ĤY[* x%^58NL\܈ӌ 62sAo/DL^{팢C| PmUNm78T;CkjvU[v yzz;@&/*@q<3@r㉋>wɁD҅+>''V9}Ň/I 62Xt4GIz=/>9#EU^L:UݢAKؒkVs ӱzE?y] OL7r7؂6#"-EY6{^gbx"k1qsEԩAn2un^ 6\$tz 'no0!L (ncf A(5'YFGiur3$ƴCޱolR5MMaRlr HӾ+*SlHR3y((_#qXdJ:͚FbIN/o  >;+Aʔ>}*} 9oCÐA YVIj`2m$$#aMj=qf6֥@| M]eNT"ު\`^mR4Ci5Jw斏 ؃~(S`m.3ǃ[ [xE+#e88(2ˎDw[+cjb 8B}y/3Gp !3?zTN3\+(1hᓏ-'=jDOZ[mhQ4 S0տ;fdMdUMwxwJ9F\,cpofE_>ye&}V|JhPL G2= Cu=?v Ћlδb KYc)u% / !d w1\|>1uRHsW҈ d7?Gu KguoA>V[62'٪IN]zLUwbZ VZQ¾Jj8j!d!IAw@N^ݵ0 iF:aeUH?i=w {݁q\-ߜW6PgszIh9{7\fxG(1tnS)m or}atb*]@-{S5*6m6Pn0Z;15 YUoVBK7JPkVe8m3 B=g{4ִ W,.go+)ciwp!&gPS+:Μo/&>Iv VNL]OaZFoK%?r:yH븎|-+b亅t|Su9JKJ7!_(z穐&{G ªbK9tU)dNnY5Miʫ}Xzo:s&*_u~I>5Z/"V Oe{bR)y3\M?r~xxf".ö5VScbSaݱ~%_Kqr8Ugv- VSF, ֹoȥ97HӀ̓Ĭn:qV{jei}Kn=Ƕj9`@G4Shy)-+*34ZzXRfW%W!7-j^qD[qs&Q 9=*)NʼnN#+K}tʭ5rթ5񁳏`` p)8}zK UàNPMd;XI=);4.!bNje_Bs"##En* @E =fw9L?V)-R#jHmr=eJ,!$lT4u:kPװ ðyVŢߣ}r0g FiPO,&ׁ 0IA$\D!d@-dMyڙ.,ޏnAh4LO3pz#J,t%4/RҁjmF YZ,#G鵛MLۋ~ {ѦV0&OOJ+ l $'dD{tׅnvʔ1DzsaDm'tȗd· { nUM%Hl]x]($iZĒփj]PYSj$lr0W7>d<vI,~nDoO Qy %9H{IL+ˠuNB'?G1.+<ޅnӶ#͟ %d2hvBuҢRzO?tWI5gT|~H;?+Gh^,!FQcYC?Z-պtV*ӳsz}[&.ޡ+0 H PdAE,tiMB#!2$e7&kOvtxҗUj*kK~{Es&M P4D*A3X A|ejݲg PcDU)=8 {%j~F7zF=FOާP3[\a}S^P󊵞6ǣˁ 0=A4LO3pz#JSj`r2hHaj P%AE,tiMʀh PD/ PD/ 0*A4LO3pz#JT0 P%AE,tiMʁ P-D/X P/D/  0*A44LO3pz#JU P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JTp P%AE,tiMʁH PD/ PD/ ` 0*A4LO3pz#JU  P%AE,tiMʁ PD/ 8 PD/B  0 A4LO3pz#Jgg6YIjZ|SM | ; [g[ĵ*q5MsJaN&+Y!-YW̿9Y [cfc_BvD>a倫mV10~y U.ǬYuu'+A e̻}c&'e)(<?"I.YFB^=z{`(%nr Jh5ĕgLTfPQioIU,c<#wՀ.>rŶ%+Y#M?'03G/T"Ti]DFۯľ@uzt9#kVRdĝaɑ8f:oS)R }B,+I+>OUo1.[kbO6 FzK^%7}6VN2x<$D2&9>6Zb5gK  PaAE,tiMK]{rEF+L%~ll-px̎Jÿ¢گK'LW<@+a  P.=Dw~ F} O>]pУ  PT?D{ W0If*(=($KRS"m2Z"5ֱ̘AЁ  0BA$4LO3pz#JxaIDeLr %_Q`%׿$@ P P3ABE,tiM.Կ !)# }"g&pƁ ( P8aDmW$}#sG9:% x PcD/ @ 0*Ah4LO3pz#JT  P%AE,tiMʁ  PD/  PD/  0*A4LO3pz#JU  P%AE,tiMʀ h PD/  PD/  0*A4LO3pz#JT 0 P%AE,tiMʁ  P-D/ X P/D/  0*A44LO3pz#JU  P%ARE,tiMʁ  PqD/  PsD/Ac  0UAx4LO3pz#Jyez~)|_N2Zx{h J`"|11Y@?{F&Ox@#Nwb_tݒAb++f! #Vp5Cikla-FZ-[TYđ|6;ױ!_gKᕇQ%O`0 p P-AE,tiMJ$$xڜG1 H PD/  P*D 7ya@qI@ H@` 0tA4LO3pz#JpBD(Iu9Fzٲ2r F4w j>&B $Xd 0g; -#!6Wӣځ PLAE,tiM]-_,\R‰0dkddax53g G  P_D-d8;}ӺmԙzQm[j)d/(q` }C&A#Vt_f<:;N@8 PD/ 0/A4LO3pz#JE#N P%AE,tiMʁ P=D/ P?D/ 0*A$4LO3pz#JUP P%ABE,tiMʀ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʁ PD/ PD/ 0*A4LO3pz#JU P%AE,tiMʀh PD/ PD/A߁ 0A4LO3pz#J5U+{ Qߞv `튴Y{(ѷJco L0o# Jc;\\ȁvOP=a.BC)V.سr`Σ%fN}`tIY0@ 2GY%Sk9)#ݩS{*t%&\Út?œ&4B=FexR Ԟ /R쫋c5ՔjIkC*CP '$+ܩs>Smغ, 2[jl P5)'p#n]0ݤoW}OV-I0 P1AE,tiMID:O;[<Y*a P-D/X P'/D,G Ȇp_f iu@GL/Y\j xWU*@N#e{{@k_TI?7,Q?/>p(kFykv4s$5&". m?kQ$߮ ]&k7%o#(5 ~& "JP7r2ZD=!@ PAE,tiM=q$G ;|9s[T`x6}[iǗHq:QjZu1r GR N$Q3d}G 8}$E0_jWVxP; 2gHFr݉qoX~~,g6Ach|( P-aDjH ZC Gۣ@x PcD:> r j0!m-|>L)"\K;ROm^v-[hC7>.hyp2_jd6w&3y],=*ځ@ 0ZAh4LO3pz#J4YjM$GI@rv>4 IjU *$} =Pyp P)AE,tiM#k81 PD/8 P%D9>Uy@. 0oA4LO3pz#J4GM%!) HleFc@9j}K̥}0𹀋oˇ@X@k]-< P.AE,tiM%d^ѣ PR=D9cjs 䀦->_>1w`*H"=G/'vQ.\Av1$ࣱ P#?D}π 0.A$4LO3pz#J8+wWP P$ABE,tiM *( PaD~mx PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʁ PD/ PD/ 0*A4LO3pz#JU P%AE,tiMʀh PD/ PD/  0*A4LO3pz#JT 0 P%AE,tiMʁ  P-D/ X P/D/A!  0wA44LO3pz#J5 30Ұ6HSd"ٜ2S"~DIdNnY/MU{`aQk|4ɗBz,O xհ e_MQu rVuĔ ײol${rA Qz }2I=]\*siٟuen?B#-Z27^ 0_]H6Cȕ$؛?Vշ( ;>StAs2BdYgrϧrcהrr:?L o:U j\c[ٿ6[䚩9=b 7✐ҢeUcxazʁ! P<D,O<CX ㍊J= "` 02A4LO3pz#J%7PA=0B" P%AE,tiMʁ! PD/"8 PD/# 0*A4LO3pz#JT" P%AE,tiMʁ" P=D/" P?D/# 0*A$4LO3pz#JU#P P%ABE,tiMʀ#( PaD/#x PcD/$@ 0*Ah4LO3pz#JT# P%AE,tiMʁ# PD/$ PD/$ 0*A4LO3pz#JU$ P%AE,tiMʀ$h PD/$ PD/A% 0~A4LO3pz#J5O=+6 9o)>-YTpR*F-9!lc* )6\;i 452-Dͷ^0DjNqKK(޻cۓə$!=%`MXrw*:N넨hF=Ȗz'z*|D#i*\d<ɷ)RO4Caۈ>Xuo8$`CUx ~4IPXrh/kl9qۊT\G!~ ˇo h!Ȣzp*b`9<K}jZRER[++1 = ށ%0 PPAE,tiM&=$O͋B"YJ%p@0eopM% Ph-D9_X"aRCp?֌ȵhַ K6u:?f()7πЋUδo *N(/ Mց%X PH/D::ExT\ ^8S4!^reYTt1}YOM7rcNˆqɁ&  0;A44LO3pz#JTׄ=fT-1oذ񣲁% P$ARE,tiMM@5% P!qD\hA% P#sD]f  & 0*Ax4LO3pz#JT&p P%AE,tiMʁ&H PD/& PD/& 0*A4LO3pz#JUCuAu0us "g(  @@@P(`hﱒ57e?Ǔ 5%Ǜy.$ɫFVQ#Ik#ǩ~QNMVGm7)  G JvDk6S9ظlqbQ 5Y^V|h1fAP {<% dڂߙ}iEkM< j*5\. %&((4yCl"DYU[gƮMN, ncޏ0ܡ' */M뻾+|k%,oFj7w|fƧS8Gnΰ@;e׬=:y03ѐ]4gWjqo(cD tǭ.{)(lP }/2?~o"Y<* 8-x/ij˒Rda cv}?D=پuy+S/fhYq j0o.: ||J|ZgQ-i*d,%:&wJv81?c;m^T{'7]1R'ꓐcNj<$Gށ:XU:xrlZ1: ӗAd_J^R6WhtCT&N}JWb(ns6WnNnWB>B{#)ʢ?)5,Md cZN>\Do"ݶ0cx@z9MW\/4g>XgAGE]*nbq~G$$Lap|U鎶ѭ2\=ߠgi;.̜JIQ1 DaCIj7 ˊ]3# G &\=$&vQ1ȲQaJF%kF~sVĎQK Xj9BYݥɜ`DĖx*qQ{{ֲr@eYd>r+7v22[dDi<1< ?;LF0,owƚ{w̸d@M)Ξ-׀(ú+Fq{xPxlSlC87K uƴm$w`܀ ]zu_K,ھaLrbQcDS(Gm9/q< qXLW<_lDTJWшejd B*n}^DyPZ>^dz)LnZ2 5.3s0w IVG'2):@jfVYCj:m&rU.\u2 ]ב>╠0E-{Jk.3qB|&c-VVwE26[:}bV4/v~ ŘQIG(&L) rb")D>عW7eAFpi\I6.,AbVj wIb4M;cХ觪*:4FhuK+jfhB.ʺN. {xlξ%ѣsːxz;]^VdD徧#(onlc$lQkY(MmПΣN2gV [݈ٮo`g # E4l:026Tknz)]w;`ktUWH[ *WX:!h1xj0''~EZ?7lj$5]WHEqwlz~hPlu7?,L g wqiX"wCPnUMsv+oEV±Y ǽQ`uMԋ蒔l*=q=w[_#Q^@٩QHep5.J"Pa#+Ӷk@Tne3bsg^>byrp#e/ Ww*XG !=w4 )9e, HVV-RrL7P W P]U5c4[+:jS\sG}:uf^zr{ =^|MdpŮ7ou·z6n6OLǿ+)cWֹE'fq&P›"v.|8񟥘:P o 8[d(DgEWaW^BPF1s6c=u37 wDk6r6Tǝ kxNm.j*]ԮNH~uF/(qC&:%'# 8*LR#ZވMc},Z}#22"5P}%IYϨgy;T`U!lL*Oa{> 츳 2 ZwN.ΊfLc NB_JS`vRĥ =;$|YXE[kL4_f*+w. W#Ӂ=|lu )ةUq-u?SCj gbcoX?z'xuR?46CsT$s-הђM"o/&O!(ܦQ׸!^h/;ܻYwH"6Mo ɴ~v^p/<:v4T׀BC1MR`1J &>^x1sZ%}|?"[d>: vzr8;,b.Ͱ5s[*au>.A3 C'Ϥɛ@Es6-`l8<=ۏWɀ2RXJ:Q8Iv)#=eeTH]9qUmPqSS|BC:}l\'i,v}Tڻ3C?B "RB,Uٶim 2F->9}MM]D]7=Q[7ͬD9;i F"=rK:A{[>0IȒ-æ  3n&[FӟFZ au*fm4 |T[bmŒoobpCtR WT!UHe[~N1\If!!BS~3Dݩ)84t͘ $[)Ul|:mxS&2焭`7K)mĜ˧lC}a6F&SII{KrNFC)oA HQNCJ02D\nD"ZJ?e){z^-;HiK{mr10 whό썜%]6_zhvd!JeT+1"6tďSv9a\oF޸}flPou.~-s` |"ÃL*P S TBюy̩tq- lT6ʩfJ_@V"͗)t~Mu<ybs"ԲK:[_7W$ \R8ؚAJAa @zX˥Cf"&~-KbD!m TE!Փ}k5wYMO~"MD`s_,\@`fܶ)]s >jR?ǝhM~cAg ejEŻC]^> @n)&Cý7ښIn2$4ZneWBq, j@v.p#u1ƥL8&s䣌yVweFNut b(Q0}YR _a$3h[?Wj[c4fpo7rOVnQu&uuwn&΢QiS=lO퐽x.]Y7ݫТgHYisޜZ>gxd #}kἣ>kWyn>1#KޠiNf{Daht>COA.>`@_Ropb "6 B֧}K0s p#vx WK]ݸC !B^mJ A OI-N q_8mݡsy' qNcKZGV:m XIYa958qzn4)RLc?}<'Ehܬ櫆\5Sޚ$u9Z5'uU8\7=ホU}"2vMuA+F+PemBNsE$2֭.6\XQA AwwFju-<^A=Y(ޛcΎ⁇@BȷZȄrM $ s pMc/^#V5ݚ\pʥ6fXY0LH<_PΎj7eT`4QFuzz%Sy; m v(DH;YCN^agt,Kyn0sPn+ LV(ŷnK4rSմ~`)mҍ'tGmSFEtZPAuofM|ʆ*TJMbÌfZF+p޻"}7UڶQ2z*BS@haDіsGEbKqT59[d/Iuyig~8͘;ed&h7e$l58ޞ?֫w-uyu(4wN[9ºbk^v:\psI ҾM; <THM;QC'0 ðkӚIˣIa~"^&TC2&p-=-{oU:@u!}NmY8#*BuLFc6B'kF &("WҁV;Fa-Zڡ9G;H&hE9bF6o uWLJPl1V u׎r@ݩf;tW U1& RvN[wtgϥ)QJ`G氷~ Yl' E+H擞w!=.]n7Bz1/ЉcW$uD;KYS&%^iԟ~DЂ($"()3,sJDݭ 6?$.Bu^΀4-.h`Iֳ T+t&Ӵ!-}.E"o.4$ ׏GplCM%}GԎ@]b?ܠ՛ uk-]^M=<GIؑz+ҙd 8"o ?_B!6 u֗ڞ#vۋ{g~>>-Q#%oZ =:@MCݟNyd^#1GقIdʮM~~"kiMӯp4wm=*pqnTfǖ΃%%5J,*4jTۦvU5~tf5oL"7R3XoTfL!Gn ΋zD o!]vUncSWl7)>$G= F5)۳j/O MLBǵӭ`åklq ֥-A?}[.'ɉppYaJՕ{$ aA%MEJ9Gw$TCo  }4"N&:V6j9v%N쮅u.&xtK_΢9#0z[kc4dW뚆mhYOCW@._ݛ|% K[vJ˜MxS@HO5HW3È|GWwSL:P]wϘip KViR gar(Vjc_HKN#ssDeŜ@Q x"Bg/)/.5b y|}-r4|e&#m#A\L8QLnj^fHRy0>;)6틾VˋRa}o'Ltz)=hG" e1[PះjjtRKgϽpI\K,ew`ZFLr!AcDY{g- PN k@ԹqSQ @ܾ' # >ƦQdHX@SO뮃 m:yqV(5;l\%}dM]v}@M,JKf5' h?饕xMR8lUV cK߼oG? %v6U&f` c-ߊZ tFAvB2 5԰dy?v" _ AC/kr`` `DDiI.ɼj L. _tWL9mʽk>n&?j|lc'2{㤤7/E6ͩVL)ifIs*K %D X'NeҶ݊'%|6o*;--Qc|Q_>qrIoP<ΒƐDh37D8iXG=i"|YOb9JHv>%~7iD;Eok#xxF/A#i'8] 90tʰedNwG[T%˚hDkLZ:G^#g٠Ϡ ((Y17oi>1g]F$r$FOCvHBh(~vC5W@_⩿Ū&=ÕPٛ.#5NR6.**f4RmdV)Z^ŮήЇ^zxj+s'j&j ]::e݆)_t 'Dٲv^GWZcߴG]_a 1al+$Zvm2 %o/A2K F."ʶ(2y ePR#j҈w~z5&\ЉJknlW6ZlH=¯m`Q UO7ߨ;EL4Uk-ղL76؄}"" + nI/\Dm࿺5zꄥΦSX6<)tO:ŒT~ Hj*37BYͭNZqjwv5$ډQ\Hא5Wku ;N.h we[7<{uЁ>C\ɩzeY6*tv5;c(#{,ķE`:6=US*[M8*NV!uޥ?W} 8ɞ ޓ "m>wɁD҅+>''c1ŇI 6|-GIz=/>9#[U"rL:r߿ݢ@G Kؒ[vVs ӱz<? OLMLobH{D!d*]d{ah]1ƽvdvʰD^cT˗Uֻ^wJCr޿.xЭ7P;pHs|e'Y~A ž݈ DpN0| IW2(|:>9P}?tG{HJA55J1Ler|iN6֥QH䠡XǩbPQ(6ko[M8}d:C .N,.T2'Ɣ+vg;*PxD'K@v(H zd ZI&ɵ+zМ|VM.e j1{?bFsc5,1|3$\s<=Eym+D>HTW|~nil}nqBmXyp<b)^&fH .A\r#[W^t0Шkkt}AJ;0PY 7bF|_DG bE^a7Ԝ8l8bz oB#8$hBʘ53&k"e^Okļ|F"蒊wO+P 1#MNx&z{.w32SGfxT=! TDFN)cȩ^_fua7Zϋ$~e a(i~I K񎓪"D0%GxONo.5Aѥ/Gd ~YlڈОw_ofO'k#WCs'YfUTJ#Xv0s,cUV6L@jt!p#[>IsAX=уpڅD hQaZA:-XrJss|LoGN*cmLmǸ>G,;fqmO%%0^VPepS4?cOQZ6 =^یJyռ?FQ;&XՐזG;罔br/*|X"2T'LW(Z_8?KGd."YP\:hp PaĖӌXlQndDdqHr>=BE982(!bG G)du1%Qy:>ImGIK7r2=nSaqv6 شU]ov-?vvU]1ny5=q?UsW:S=:$ Ҟb BH 4$ !zF-8¡M J ׁ 0IA$\D!d@-dMy}\rqwTU!z\ /(ҠZ@NjĩqO/,Ba>z.+\Dԓk\7۔9 P1AE,tiM&q*\~vL]@ h PD/ P/D9V_i]2N~FE( 0WA4LO3pz#J'DhǑ.K*h[-0/ Y0 P1AE,tiMm mz0 ж| PW-Ds;KsmE:ϔ4$[ڦy,=]n+=ɁX (Hb'[ƁX P8/D+3+"tP9hFH  02A44LO3pz#J&C7F  P%ARE,tiMʁ P'qDGzDh{1mnZ(9 PsD/ 0*Ax4LO3pz#JTp P%AE,tiMʁH PD/ PD/` 0*A4LO3pz#JU P%AE,tiMʀ PD/8 PD/ 0*A4LO3pz#JT P%AE,tiMʀ P=D/ P?D/ 0*A$4LO3pz#JUP P%ABE,tiMʀ( PaD/x PcD/A@ 0Ah4LO3pz#J4J!4ڌua0R'YWZ3f{r|񮣏}  9lƶ߅91TBb`!j2o K?_vU^񣰶tO !E E"GR˵`۲~uhXj_xt-&[ѿ`R_3xX>q PNzGE %b*M32ȐFHzXbݚ-$|* )oaS3Yh>D--ְqh{E^[=IbBbD2jՍiu@ PxAE,tiM&BsrbiDyC(Y*đh7OQ_@Ldq?&Yi0.JMO?;ӷQj`Pf@ PD9b`EXJ $ ٥C6I=4>S\V"L2bWNlf36YRh Fq##C]ؔyhx3ż*=W?bxX2JœK PeD:<3zAT'h^K( <kϠ#̫b`Nm@#`%(I?xd2_r d4P΁ 0@A4LO3pz#J7zQ>KQ3 Qw8 P%AE,tiMʁh P$D&Ϋ` PD/ 0*A4LO3pz#JT0 P%AE,tiMʁ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JTp P%AE,tiMʁH PD/ PD/ ` 0*A4LO3pz#JU  P%AE,tiMʀ PD/ 8 PD/A  0A4LO3pz#J4mr鋿hIvtIq*S'q3Us(8ZIB@\n?stg[1u7 Nɬ|qs k +1vz,c 3/K^ruR6@Z-d@9ו/Qk;Щl9U{KF8#K_OA FƧ IRxQN+Rׂ؝(:7o<V(#xnE}L궿adE- .QG/ YL"p4ΨI|I9a695`*M^na3+]^"\`392G.W_O7)Yf ف  PKAE,tiM&B![lߪLC*݃Fϋ#Yr;tݹ'  P(=D^X4f+ ;  Pj?DsI#Jf@t'P&O㞒̀FR sdHvކ+}/ e_ I2'B:}8`yOYDq  0XA$4LO3pz#J'~zk>>[aVè~1p"Iɖ%5f6aŁ P P7ABE,tiMeV*`ˁ ( P=aDpq;>2#{41AWƱNY x PcD/ @ 03Ah4LO3pz#J%%GquP  P%AE,tiMʀ  P#Dtcb-  PD/  0*A4LO3pz#JU  P%AE,tiMʁ h PD/  PD/  0*A4LO3pz#JT 0 P%AE,tiMʁ  P-D/ X P/D/  0*A44LO3pz#JT  P%ARE,tiMʁ  PqD/  PsD/AW  0IAx4LO3pz#J4@I17A| wL@<*bg9gZ}lypQwpf'.%%pmկΤ&|YKHЉ.UV`̜*YPJLz᣺'`v:W+Or|F1m?j#E*C8cm~@ET(9Cg"ۓ@x;Q?:YXLEa#B^.6+JvZuREḁրV>>Q Cu~Ls]TꐃA. ApGʁ p PeTvYW)ԣVq\5<&TxsocMJB~l+7Xy棶8 P(D.HFIx֦T 0.A4LO3pz#J W P%AE,tiMʀ P#=D Öb[ P?D/ 0*A$4LO3pz#JUP P%ABE,tiMʀ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʀ PD/ PD/ 0*A4LO3pz#JU P%AE,tiMʁh PD/ PD/A 0A4LO3pz#J4^!& )msܿ w *$CJZ!]--E}PfMڔno{1 IkXwJHpPMj; 4rC[&bͬ}At.\)̰d)I)Jqܔ2xU.쯒s nFm`ߕv%a@ؓ>h>|Ȱܾ+u$'Zr.׏!6 Tw56[$QکS`R! 2!/Wr|cG)]0 P-AE,tiMnSK ĔzȠ} P-D/X P*/D9ﳜ, $4 O~(@  0vA44LO3pz#J%(WcJYx5bM)$ N4#6(7fh /9&@sTǵWjV.dJ PYARE,tiM`*K1ĺ pyPU,P, /4B*ϕ E'R70WMm~]@ PqDs9 d6n@fÂx:Dk[!$$7 BInrn͑{vK<+MSӁ PEsDOA~w>vΉM:>ZA_rBuOh"~I 03Ax4LO3pz#Ju.ӄ+J>p P%AE,tiMʁH PDnU PD/` 0*A4LO3pz#JU P%AE,tiMʀ PD/8 PD/ 0*A4LO3pz#JT P%AE,tiMʀ P=D/ P?D/ 0*A$4LO3pz#JUP P%ABE,tiMʀ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʀ PD/ PD/Aʁ 0A4LO3pz#J4Q rm3Qx?J?,B=Q[v Y*@DaG7r?<sd||F/+B6yEc{@ƈӯf}.5W۠Xc@rr~AK=c %=J`˪}6uOA~*8O@nk~se*n=.*<,{?pxdg6t, O0ƃaˍ w WֽѤu*YqQ" H6L{i&yDtXK҆6\ &YS97OX|I\!` Ҭ(ֶs`|NтÄ\%zsvyn'J89 PeAE,tiMs}~dA2Mc%c0@2Q0N'*+G8{hl';7vjA@h PD9Y+ngJ$5A  HUWCڒ' T-*:&5D:wFV8j1B3k"ǥhdf8[oNW =n33ǽ?gjk@ H@ PrDs꘴yGWj_jŏ=|ն[sGj[lҧ*5Mrݹ>nRFYTX?ΰM6`+9z|H2܁ 0NA4LO3pz#J'D7TRo%lw\V5L߹y/V4\p0 P%AE,tiM"jU P+-DÖkY䰀P@飭X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JTp P%AE,tiMʁH PD/ PD/` 0*A4LO3pz#JU P%AE,tiMʀ PD/8 PD/ 0*A4LO3pz#JT P%AE,tiMʀ P=D/ P?D/B 0A$4LO3pz#J4)>Am=K{9\)h'%cA,/cpY^EMe v\( ΝYᒎ& 8`4sVh6zG$ܴs6Z%T:mAp3@&W+n D/ O^55,go/ST پ4@~@s b& fk}΅(^>s+][uMh wG%1?Gz"t.x)Y=zZ ӥ/e(닻}*NA*Aj*"> ɣށP PPABE,tiM8%O~/9ySxXc|,|Cs_៷˹ࣺ( P,aD_]h% K]N@x PcDs^O5`fUX"]+1]N6|څ,dװgv|ASo9dՅm<1vf+$̹'d0+3@ 0\Ah4LO3pz#JcvHzaivŞ%'1c9Juqz]Vۛ~!$`Á P5AE,tiM'xR9yizIT_5 ʁ P<Dd|%ӕZz$`s PD/ 0,A4LO3pz#J6:K P(AE,tiM? ᣭh PD/ PD/ 0,A4LO3pz#J6:K0 P(AE,tiM? ᣭ P-D/X P/D/  0,A44LO3pz#J6:K P(ARE,tiM? ᣭ PqD/ PsD/ 0,Ax4LO3pz#J6:Kp P(AE,tiM? ᣭH PD/ PD/A` 0A4LO3pz#J4ug*UA7% کzT0ڸn^#1Vg@"f*g(12_͌wbnvzv׈)ZJFJ.ez` *D_#Z; ;hmEP~Q1ֱ:k:Jy٠z3Fq=(_04'.*;D<e29k`飣}_Bz 7S'ЇBdJr6{S W≪~:8\p謵?‹\VÂ1ot>D @ 87a@ԕo؄QlZZ:3IpҺyO>+UCAt _jaZ$35(Xߣ#Zⴥ*6c& ^hp"^G wY?NZۣā P6AE,tiMo0{ib?R=^Z?O`@ PD/@؁8 PDZ|LL.U},C l H1T tmm&eB`_ ]E}d &&yt4\CT3E+\^j $Q4rReu+*r{o$$!x+0ǃO.pf\") >Tt xX%l͌PPK@ 0A4LO3pz#J'56DGG+JRLy; dr*-_6I j}OOJP+t&"+S՗-sm"ܶFNд@6`Ł P7AE,tiMV\uݕ|Jj0$eJr@ P=DXV! eR=}_ցQͺ`]j;e&yznO!8;ܓ;ơMҧ\n |E$ lQJO0yi~ˈ eJL8D<ͣ P'?D.ٌs l% 01A$4LO3pz#J{ViP P%ABE,tiMʀ( PaD/x PcD/@ 0*Ah4LO3pz#JT P%AE,tiMʀ PD/ PD/ 0*A4LO3pz#JU P%AE,tiMʁh PD/ PD/  0*A4LO3pz#JT 0 P%AE,tiMʁ  P-D/ X P/D/B.!  0 A44LO3pz#J=:+#5xlu&)="1XSKajk$W 0c #VWM:+څъ'Q3wWIX DPΝ%p2kdOŖX݁s0&%[EjaCtLAQ6 }uNIgXgG] `NQ-F.O`/alg;)ad v&rl3 k€ ʶ%_(RB2DH62p6E3V8/1+Qs: Vs(]nNQeʚTT6zǿeDz2ŰZ|b"Vq}BiUGޥxET E0a8LLFt%jCq(5{9LzDl , cgIrS͍n[EjAiQM䷵l_MzjmܳTDlĬ@nw8E+(`ȁ  P:ARE,tiMoP ?^mC$Vkn+  PqD/  P&sD_^FA43]5'`A@! 0Ax4LO3pz#J@h-A?ow0OT.'YR@&F M'XAj0lt]=_GY H\*t !p P)AE,tiM;*ԁ@Ɓ!H PD>#W۶9 blҧPUoq;e{S6py yAV`>]8yMb<،׼l(5v2N}^b4aRYRA?aӈK.Y}`U{[,ہ! PMD/4Ł}ќ!WfCp^5 cb %dVVr<Ɂ"` 0;A4LO3pz#JS`#:,Rmb" P$AE,tiMM@䣭! PD|"8 PD/# 0*A4LO3pz#JT" P%AE,tiMʀ" P=D/" P?D/# 0*A$4LO3pz#JU#P P%ABE,tiMʀ#( PaD/#x PcD/$@ 0*Ah4LO3pz#JT# P%AE,tiMʀ# PD/$ PD/$ 0*A4LO3pz#JU$ P%AE,tiMʁ$h PD/$ PD/B% 0uA4LO3pz#J=:dLj]Mۃ/ jի(&GZB\M%ALnL -׬=/P$H h%Qu؜*Ɋ;JDy`of3SmvGͺ ! V)v9@͖{4 [R_=`D}VWϗqcur*DOJ_:L싞7Z{^dK5wRd=lqxp[PNxTI+ y̽, HA͎jMDrg`fg q&ĩ5s*P$\ܔV1m/ ^|dcU`٥wddOU{C&cTB}gƊ8kNnXǙ}a):hY} l]`|9>YzGAH I1D葲ai&r (%wTնO珱YE-UH.@]_"Gߤw-9$B? rPPrTݛC;,Y3^u ~ϛA@x{& Og,(*Nkb Ea1oy5kXM؟%$@QŦ9O 3a ɍUi6ށdr:$5H.ZKZ_ Gyn20U\ܓê&'9S?G{4;׼IrQ0~oqrS[sUJ+"caUPO"|dM:u^*@%X P/Dy@ģfCNym5w|ܚ/vCCBohr'}0bX<e *$ܟ} 4IקSxtA$Ca_6( Τ*p΁&  0@A44LO3pz#J(ɾqe0rxd`BvL% P%ARE,tiMʁ% P/qD9N&EU_n(4P.࣭% PsD/& 0*Ax4LO3pz#JT&p P%AE,tiMʁ&H PD/& PD/& 0*A4LO3pz#JUCu7炜@Mu "g(  @@@P(`hﱒ5_eǓ 5%Ǜy.$ɫFVQ#Ik#ǩ~QNMVGm7)  G JvDk6S9ظlqbQ 5Y^V|h1fAP {<% dڂߙ}iEkM< j*5\. %&((4yCl"DYU[gƮMN, ncޏ0ܡ' */M뻾+|k%,oFj7w|fƧS8Gnΰ@;e׬=:y03ѐ]4gWjqo(cD tǭ.{)(lP }/2?~o"Y<* 8-x/ij˒Rda cv}?D=پuy+S/fhYq j0o.: ||J|ZgQ-i*d,%:&wJv81?c;m^T{'7]1R'ꓐcNj<$Gށ:XU:xrlZ1: ӗAd_J^R6WhtCT&N}JWb(ns6WnNnWB>B{#)ʢ?)5,Md cZN>\Do"ݶ0cx@z9MW\/4g>XgAGE]*nbq~G$$Lap|U鎶ѭ2\=ߠgi;.̜JIQ1 DaCIj7 ˊ]3# G &\=$&vQ1ȲQaJF%kF~sVĎQK Xj9BYݥɜ`DĖx*qQ{{ֲr@eYd>r+7v22[dDi<1< ?;LF0,owƚ{w̸d@M)Ξ-׀(ú+Fq{xPxlSlC87K uƴm$w`܀ ]zu_K,ھaLrbQcDS(Gm9/q< qXLW<_lDTJWшejd B*n}^DyPZ>^dz)LnZ2 5.3s0w IVG'2):@jfVYCj:m&rU.\u2 ]ב>╠0E-{Jk.3qB|&c-VVwE26[:}bV4/v~ ŘQIG(&L) rb")D>عW7eAFpi\I6.,AbVj wIb4M;cХ觪*:4FhuK+jfhB.ʺN. {xlξ%ѣsːxz;]^VdD徧#(onlc$lQkY(MmПΣN2gV [݈ٮo`g # E4l:026Tknz)]w;`ktUWH[ *WX:!h1xj0''~EZ?7lj$5]WHEqwlz~hPlu7?,L g wqiX"wCPnUMsv+oEV±Y ǽQ`uMԋ蒔l*=q=w[_#Q^@٩QHep5.J"Pa#+Ӷk@Tne3bsg^>byrp#e/ Ww*XG !=w4 )9e, HVV-RrL7P W P]U5c4[+:jS\sG}:uf^zr{ =^|MdpŮ7ou·z6n6OLǿ+)cWֹE'fq&P›"v.|8񟥘:P o 8[d(DgEWaW^BPF1s6c=u37 wDk6r6Tǝ kxNm.j*]ԮNH~uF/(qC&:%'# 8*LR#ZވMc},Z}#22"5P}%IYϨgy;T`U!lL*Oa{> 츳 2 ZwN.ΊfLc NB_JS`vRĥ =;$|YXE[kL4_f*+w. W#Ӂ=|lu )ةUq-u?SCj gbcoX?z'xuR?46CsT$s-הђM"o/&O!(ܦQ׸!^h/;ܻYwH"6Mo ɴ~v^p/<:v4T׀BC1MR`1J &>^x1sZ%}|?"[d>: vzr8;,b.Ͱ5s[*au>.A3 C'Ϥɛ@Es6-`l8<=ۏWɀ2RXJ:Q8Iv)#=eeTH]9qUmPqSS|BC:}l\'i,v}Tڻ3C?B "RB,Uٶim 2F->9}MM]D]7=Q[7ͬD9;i F"=rK:A{[>0IȒ-æ  3n&[FӟFZ au*fm4 |T[bmŒoobpCtR WT!UHe[~N1\If!!BS~3Dݩ)84t͘ $[)Ul|:mxS&2焭`7K)mĜ˧lC}a6F&SII{KrNFC)oA HQNCJ02D\nD"ZJ?e){z^-;HiK{mr10 whό썜%]6_zhvd!JeT+1"6tďSv9a\oF޸}flPou.~-s` |"ÃL*P S TBюy̩tq- lT6ʩfJ_@V"͗)t~Mu<ybs"ԲK:[_7W$ \R8ؚAJAa @zX˥Cf"&~-KbD!m TE!Փ}k5wYMO~"MD`s_,\@`fܶ)]s >jR?ǝhM~cAg ejEŻC]^> @n)&Cý7ښIn2$4ZneWBq, j@v.p#u1ƥL8&s䣌yVweFNut b(Q0}YR _a$3h[?Wj[c4fpo7rOVnQu&uuwn&΢QiS=lO퐽x.]Y7ݫТgHYisޜZ>gxd #}kἣ>kWyn>1#KޠiNf{Daht>COA.>`@_Ropb "6 B֧}K0s p#vx WK]ݸC !B^mJ )SgHU_儶A2}-5o|J8#1׏|^t&I돵ʈwYj n' V--M1v-) *Sn>[;̃^(=`\p,0 j}<22)ÿRl3sbk#=zM8Vqil#YmVzۊh?UHe[\mE6DԃN8Q߀pY[#¡אڷZbMH,@!E3'wmcO*M $ CtP$ty/%͈ք,KEj  t߁ѫ"f 6Pb ͜/m9)'@Txع ɬy0~tS|253IY Vѵ3^ tqpZ耀kiEt ؀ʴ*4e#Xet֕OF:rf36SA]6?=]֑k 47sͭwUc!KNT|{az+/ܰ5HZᛉI 8PvUI 3!d:n(s4aN0⫻sx~.e C +$`{h,J@h/Y^@OD`߭PURnztC7,"+[ҁ /u ظ?3V`pI-"g x"B>D19^4) u֯`팳9>FE2)NU8S)Gv?x}}VxOSW0x ƛLnѠ_!">;P!8Ll6"sw&G#Z0}2iҥ{yQ% sϩ>gJK[(8?E~W_gjpCjUP[Iǘ.5lيlujzA\vϿ0sއ'l=QnM㾆: g+ 3rzaTSKlL  HLXJM>Xs%z4ܱeԩ4N's] g==xa\83tf' 5M+3׳,,k2XTiE2Y&P]d˪) hD@ˋu+cs2ܡl0t3sm&`j%i/~ۮĺgu`whx{^F/*HD n-3"OqI'$ `]W+Vo-ekƻ8HmI\?AQbDodZ\n~ p?܂34d(2KI݊Ə}ɝA@.e7sfԳBCwu_z Tn~I3@ sЄߗ #< -|@gve 3gYqk:3?]i"cDKu* {[ {D1o?។kqӌ?73{ {:BK|^Gݱf iW sɸz企bR?2h @pAP=J 2O0iLn~ma{!!`ou*e]6z[\:DݨHDD*- /~C❻ʏ.ۏDWt\Q_7:EA| le//0hfI0L)j|ؘjE`laGΔ&) qh*/.[7 QD%\0__Iٽ$c-,`4HLS}w!ТWt8X:u!Avw>O1C0f4hN>E(**g,}p6 Kdw,O;\A`UuK/ˠQy'(ր1o 'c8}M(ʨY}'#Db4]>řOIlfl.vH>= #4z_9I媊EApD^M=ǚ('-BDw-oɁN2hh>`@+Ħ֫.+elueiҊx*(i\PuYFBTiL?+(C&xdzRlgx { ӟ=Y!ns&-uY6֌'.#xC6'FhE8Z5Gg3Ni4 nl:jZY;tE]qDV9' K _G(O]/:$4 w!gP LkeC!tY m s% d'/SzR?kS~{K 2~ t@ʭetځ')JL_$l.I_c+`GVU\71%)vPP,CDȏj?P]Ac6ҼNmw*ڗW[\nJhAgElI=1q1[Ge,_X8Aџ`J Oun}|Hb dvџ= kNa MP?^4Of%d_ >$(2X̥D ֕z933-&p7[ zĴ8R;. >P[ݭSqK:]up"?vr3Uv]50#Xlָs !:90e+qf\fKЀ.H ,*ҥC3W)2拣3JSܝM¯m]$W *Fa#!$;(K0VU WSLawsdKB hj|6(/i'a$K?V߱Xaý,}T_mhiRXC;ϰ<㆞.+HnUOHM` Zy5/{ȃEoh?s?4jL$we$]YИ^m1eLGZ\OKt ·d]8ȊKy9"§Vꞣ~^J^sTV["*LOQ'HhDiu.b!`z}:r P$= }s%j+5܁o)enm7_NVVP:EcN#s;tgNeq=ΒC,a: j;44j נ;MZ+&|`]S/9P8tQIuo%O[b7oUH!e08gAj[6OM/Ա=P ]J 2@%xXzFi-GؾV/ \ɇ_TiraG='A[)x@{2 jawD4NM0B;PuPdl*]N05zo0 ZgyKʂzҽqq{-`FJ9W̑]+KJ3kxMR]Ź6!G^ a8dboz@Y2j6xa P4,ג^wa@,ʝ /2G}I;ܗACn}m7h0Û%@I2i1EnO![EOr}atdA*u@Y>n-5*6m6P>0j/~1(ڶ(U̪뷫! y.Ha /dN07_6e Y2M5d='~  X]I2Te An EMwUxWESnBQ~,IOܳ7&l.##t(j J.s}NRxiٗJd>IpR]@w;y>391df`Vz[Μ d=f+kҕA|^'rJH Rzc1Oܟ)4ٶȇK|* yF1TXƫ+l#!CFl}uT$U5QprD hQaZAq˴Jss|L@mAmL/mǸG,;fwmO%%0^VQ d&&w1E Ɋe/mer`p< r~vI>%ڷ2ek#19Wx Xbt,L r]F*^UiNMq {WvL@!Ŏ[ÀVT+7\-B|7tv9ytuq <[*[D,{=x3gi0LijqNCIk.RR'fA ܌i#b{\oz~?fAZzs~N߅ڎʫf3&' C2}j\v_dS𖗝 A\fZ(o\/H!<*XLׁ 0IA$\D!d@-dMyTڳV;M嘌o^ͤ rKGxnafYCH G0`; P{ϒY XL@OmEAYBK;؃ou~4 @ lFjq!q{/zZQ]F j@@rPYP P.AE,tiM >,9MkG̈Zwh PD/ P'D:|nT.>12A@ 02A4LO3pz#J+b6:sGEѭJ:Z[ h,3BIסL[ǯ`YhA9Z)kj-5uC7()Upe{f9ϊSBZ.@~O* MɷL~7Iy\PXR̲Uvt†+9فWՄj*t_ 3 U . #U'p$ ojJ6*77D2CW 6n^Ҟ&V>F٥jA:Âa@WBTo>{3/R \m)*Q|mD|Xx!т{P2 rPsrNj;J%9 246z_W@a݄{,3Ќ$Xlq i{[/\G%G>y*Vl\0;Z9e{#K70Q@0_? qN?o.=K2ې glQ7m1r Ĭd﹆>=2g;ǻ۞d W~Bws'B['lE!xhf`1FWYj-ޅ׍t-YMz&)ޣ2r~9?j7ʠVsUss8eela,#VΝeyZ^h&;]~964kt 02A4LO3pz#J\zSCXh:ࣳ P%AE,tiMʁh P"D#w="࣭ PD/ 0*A4LO3pz#JU0 P%AE,tiMʀ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/ ` 0*A4LO3pz#JT  P%AE,tiMʁ PD/ 8 PD/Bȁ  0A4LO3pz#J(8"H< ^j)a5ٟ1vOYNmgUQ[A5_AeWnBZqNpV=cڮ|I^`4~ [hn{y}5]S~ઁ^BՋ!B0V$fOlEqboe,W%حNCXW4 ۼe nDRx!E)U P7>+ p/Ňكu8U/(?V@Wvŷ,j{66@`۪Rdēߝ>JLKh'؋h*싃fENCZAl_QtygEc=eib*³n&/QB9AITXĤd(M wWVa(oiw7S S8φՐ?YLRQLy⥢)sF =gerx_C[Zu3&:FLP˿۲JR=NV?SOC$Zq<)e0"UB pE 4Gٲ :-˜N 8@b]^M* !x h@  PzAE,tiM'1An+CJez»A-nX9,EYR? Κޟ&ZL_96aBgCrTnja+V@ׁ  PI=D8%糦}݇zFC"D_mZleGCA  P?DvzZRI_6YLւ# `Hj\Tk$A t4xwEfb tqt\H&uh ]2x; Uw ۂY?a *t$8vs"͕ ^pKYy2Лr{?e~F]!FQe2R|,E2|̼:?ݬiCOM3ց  0HA$4LO3pz#J f+x6Nh͇5X!m̛n P P&ABE,tiM5IFmс ( PCaDo6 3'5|p*I-fR'%j4snwpYFP x PcD/ @ 0*Ah4LO3pz#JU  P%AE,tiMʁ  PD/  PD/  0*A4LO3pz#JT  P%AE,tiMʁ h PD/  PD/  0*A4LO3pz#JU 0 P%AE,tiMʀ  P-D/ X P/D/  0*A44LO3pz#JT  P%ARE,tiMʁ  PqD/  PsD/B'  0Ax4LO3pz#J=8㷶9o|őJ־0o_9ͤk0; m᩼iSgdY]E g~/:i2_DzA~]HxY p:b:턦([+ Iml$gKmső )Q )ncC wOCh?]`'03l159~KΙP&Y)خ !_ +Fڀ9ႝݣ<&k`c w}(z q^8L@a%@"ge貑=YdH=~*DzBwj7|YNG/Kd )֙95ݓ޽> U?GIOmSM9ş ux+\SgNԦeْ€ܨf 4PǚBU`QyUL0&s^0gi&81xāy~|@+ĤLۈ53˃wQ`|-W& p P-AE,tiM z쾷CMkPn>p H PD/A  PDi `~,P}*g!UB-OM7IZsr5a5M<:j9MЄ%,y~G&nݡ΀^C}oIsC=g-,?Ԧ(aՕŝEglez1Cm61_z?4܍q-){AIЫh<(1S H`NһOX/b#sW 4Z~ΟȺՒUo,Nっ@` 0A4LO3pz#JYmو =b (]v>q4J-pHwaJ .c>aJ|D_('g\LBwzZ5pmp*~0A^4@+)NQ$g8*ć3K{>>pDp 9֩JO sSlT8f3I91o#)B_] (M@ 0 P-AE,tiMo]w2pA P-D/X P&/D^FRqĔ"xA  0ZA44LO3pz#Jȳ r'ʩj[}`mfj_W:6@`=u}!.i!$͈, P(ARE,tiMoa@@ P~qDE6AeR]QXLP>I]Tts!r+8$x> 1?z %x.:3F@0<xHJ;u[{dH1с PCsD tcYLx}<5 9A4"(6NY@C:cGK4o6v;n21рA&\tQD|)g_dkW7qAYoAӐԴC0:=M uϧ\ۉP Oِ z: V# }~Aj`[3MXaz ӦqXj((nJT% 6Qg٭#k@π PcAE,tiM R?y؏3bڼʟXs9sQ frh.4NȠGᥟ]iH3z2e[v TXށ@ 0PAh4LO3pz#J!w7yX{1h8Մ5fV`}:HA P0AE,tiM ˺@NTZy/4Ɂ P;D*ߘc\>6Rh;{M$S%m5t PD/ 00A4LO3pz#J vtw^€ P$AE,tiMxh P$DT|$ݼ9 PD/ 0*A4LO3pz#JU0 P%AE,tiMʀ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʁ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʀH PD/ PD/AŁ` 0A4LO3pz#J=9d>FЍ#泿+o$)V?Ԅ_/@PmUJ㋼sVۉ9}.Q%>g[m1 "J4өqwUR&؈oPw65$ÛF 22M+u0K&әcS'"rg u-4ƥ˰{tD 񲕶fe!_~Cjb޷ro$]0) ӡ sm|f=ì 6I6@[F#q̏D;GqmOwSqQBExP$`Xl{y H+m c`_lהf?%9=⹴FMVelLCBxYcb/XŬLpǂ;76P=ԣi P4AE,tiMox+_f]h5 PD/8 P(DaA8;ǽ H%`^q@ 0A4LO3pz#J(cȒ+~3ɿ5!(&gkN#!",<..0zw8rĽ8u]t#od.ĂїGDd|XAO}[;k)Ł P7AE,tiMbbR(#L:. 1@ P{=D~?\mn;k"(SCtYS u#L< l ߱Juk4Ĩ\ZQ5<1=+Ť+}"YJpK{ ˯+ P+?D]!v!T4 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JU P%AE,tiMʁ PD/ PD/ 0*A4LO3pz#JT P%AE,tiMʁh PD/ PD/  0*A4LO3pz#JU 0 P%AE,tiMʀ  P-D/ X P/D/B!  0A44LO3pz#J=:f 3$m8Ӻ0i;%@ eg`9qF;`AànR̪3ҮTovPwzthFbtlVvVD]* ". 撙eXyLK I=^*n{YZe>)Vh ǰ)9po7F#>1^U{+aRiPyA8˴QDi]>ҤյQ-phL=Fq$Dr/?i\x:\%?94!n<_,oz[v@哐! )Jm.?38خ,Jf|8>}!+8*^i;`x,Vkg>ۗqp~F0"G eZ ~\>dWT>  P4ARE,tiMuV3^7r2GjO.z(  PqD/  P-sD$ >Wue`! 0oAx4LO3pz#J( ++ҿiLy4/ Rd :ZqS Rw7b|ZgeNn;pprm c/U0<+}@_!p P-AE,tiM٭9s7>@!H PqDҥp+%k~&}E^7|Ѩa~0gs-]8ڪ&; 屐Φ?BI [X+t?PvV2W%v X67 S~Oz`:WL5ΜDf4^'.>OSM둾H}塀eaR Yr( $,H)Y;3w&rJ0IRֳj&# tlGo+r n)QHڐ \}D3|% P-ARE,tiMΉq(zpʁǁ% P9qDo86FKʧN/nAMGnFo% PsD/& 0*Ax4LO3pz#JU&p P%AE,tiMʀ&H PD/& PD/& 0*A4LO3pz#JTCu~PCuc "g(  @@@P(`hﱒ5'e?Ǔ 5%Ǜy.$ɫFVQ#Ik#ǩ~QNMVGm7)  G JvDk6S9ظlqbQ 5Y^V|h1fAP {<% dڂߙ}iEkM< j*5\. %&((4yCl"DYU[gƮMN, ncޏ0ܡ' */M뻾+|k%,oFj7w|fƧS8Gnΰ@;e׬=:y03ѐ]4gWjqo(cD tǭ.{)(lP }/2?~o"Y<* 8-x/ij˒Rda cv}?D=پuy+S/fhYq j0o.: ||J|ZgQ-i*d,%:&wJv81?c;m^T{'7]1R'ꓐcNj<$Gށ:XU:xrlZ1: ӗAd_J^R6WhtCT&N}JWb(ns6WnNnWB>B{#)ʢ?)5,Md cZN>\Do"ݶ0cx@z9MW\/4g>XgAGE]*nbq~G$$Lap|U鎶ѭ2\=ߠgi;.̜JIQ1 DaCIj7 ˊ]3# G &\=$&vQ1ȲQaJF%kF~sVĎQK Xj9BYݥɜ`DĖx*qQ{{ֲr@eYd>r+7v22[dDi<1< ?;LF0,owƚ{w̸d@M)Ξ-׀(ú+Fq{xPxlSlC87K uƴm$w`܀ ]zu_K,ھaLrbQcDS(Gm9/q< qXLW<_lDTJWшejd B*n}^DyPZ>^dz)LnZ2 5.3s0w IVG'2):@jfVYCj:m&rU.\u2 ]ב>╠0E-{Jk.3qB|&c-VVwE26[:}bV4/v~ ŘQIG(&L) rb")D>عW7eAFpi\I6.,AbVj wIb4M;cХ觪*:4FhuK+jfhB.ʺN. {xlξ%ѣsːxz;]^VdD徧#(onlc$lQkY(MmПΣN2gV [݈ٮo`g # E4l:026Tknz)]w;`ktUWH[ *WX:!h1xj0''~EZ?7lj$5]WHEqwlz~hPlu7?,L g wqiX"wCPnUMsv+oEV±Y ǽQ`uMԋ蒔l*=q=w[_#Q^@٩QHep5.J"Pa#+Ӷk@Tne3bsg^>byrp#e/ Ww*XG !=w4 )9e, HVV-RrL7P W P]U5c4[+:jS\sG}:uf^zr{ =^|MdpŮ7ou·z6n6OLǿ+)cWֹE'fq&P›"v.|8񟥘:P o 8[d(DgEWaW^BPF1s6c=u37 wDk6r6Tǝ kxNm.j*]ԮNH~uF/(qC&:%'# 8*LR#ZވMc},Z}#22"5P}%IYϨgy;T`U!lL*Oa{> 츳 2 ZwN.ΊfLc NB_JS`vRĥ =;$|YXE[kL4_f*+w. W#Ӂ=|lu )ةUq-u?SCj gbcoX?z'xuR?46CsT$s-הђM"o/&O!(ܦQ׸!^h/;ܻYwH"6Mo ɴ~v^p/<:v4T׀BC1MR`1J &>^x1sZ%}|?"[d>: vzr8;,b.Ͱ5s[*au>.A3 C'Ϥɛ@Es6-`l8<=ۏWɀ2RXJ:Q8Iv)#=eeTH]9qUmPqSS|BC:}l\'i,v}Tڻ3C?B "RB,Uٶim 2F->9}MM]D]7=Q[7ͬD9;i F"=rK:A{[>0IȒ-æ  3n&[FӟFZ au*fm4 |T[bmŒoobpCtR WT!UHe[~N1\If!!BS~3Dݩ)84t͘ $[)Ul|:mxS&2焭`7K)mĜ˧lC}a6F&SII{KrNFC)oA HQNCJ02D\nD"ZJ?e){z^-;HiK{mr10 whό썜%]6_zhvd!JeT+1"6tďSv9a\oF޸}flPou.~-s` |"ÃL*P S TBюy̩tq- lT6ʩfJ_@V"͗)t~Mu<ybs"ԲK:[_7W$ \R8ؚAJAa @zX˥Cf"&~-KbD!m TE!Փ}k5wYMO~"MD`s_,\@`fܶ)]s >jR?ǝhM~cAg ejEŻC]^> @n)&Cý7ښIn2$4ZneWBq, j@v.p#u1ƥL8&s䣌yVweFNut b(Q0}YR _a$3h[?Wj[c4fpo7rOVnQu&uuwn&΢QiS=lO퐽x.]Y7ݫТgHYisޜZ>gxd #}kἣ>kWyn>1#KޠiNf{Daht>COA.>`@_Ropb "6 B֧}K0s p#vx WK]ݸC !B^mJ A7/  4m wxșUI]x1"(?|ayjtͱ@ӯ\P#Z!$5~\t6~0}" %@g臭јuEZɡ  |ag)*6akQʯļ)$O")W3{VudemBNsE$2֭.6\Y?QA WG8,-y\}P_-yi&{زQ]#Ql^ {"!GsJGJ2ONH2PNl ~\0bUqiғ 6k%N4vȴ8P֌.`ôR.Ha@tp9%b̌[{F٧*9[:N7'|wҌ/w8Y@Nh*՞Myb"A]6?=]֑lA=mݸ0ry>>% ha|>WV~$-;Il_!xp,@3}NuA)Zv54L{RK&xU΂/ A+֋ө.vmnY矀km >䛴ܤ0/iGG f,l"\K[ŇT%ƾ+x \{.XE񽶿ULU 3Ǯ^L@iW+z]nbz:dFE2M&}yfPSE H5tv[ 4%O6 VBn}B/ %x0lnP-ǖP /}5?1#lAF(ΦOu͸l0(ʽ_&[ד8?FΞ!TvN HZNkz0@iߘv\( 4 xEݛ3"WI+f'V3l2)Ce0aZ\`452O|A.iڌyp4CeJ_9! WSႦ߮K Z л,2}-QA\OhsQްO(<>ZUnXOnalj5Z[?P3]O="|/P a ͌]N_;c3w`1#FSj0R.?Gsp" ߛD]'l8٬ Fz@@:>X|`pV _k5ϡf _U|M:oz%ic(blղbP]9ad}3쪹?`d$.l2ʍ9Bga|V^«:˪)QLqe俵(z8=u\xmik< Y9,㭲E+sx.HuؗA6 {]X˙xD(GжD m5)5Dyb'q&n.Jǵ\ؖ;GmEɁ ) Jt&tj9N 7T)xAZyl9Bx;NBj g)"z큏f (WydbSb[!9g6KѲ*YILㄛ^9^-1@CsQRAHh΍rɣ#h0{P%^l|ކ׾N"NiH#8Ce{2.|TH9(:>Ҟھ7| *OgQsQGV ] @Bc\BͪYPW4h~J@o8។kߎül- o蜗" j"-˭H1&/ ? 4r=(9F uMf2 `fw=OhRBz&k8(b&7?x8p0[+7ǝ Xa%TT?NWDG֘y4h;7ݬԃv1T8U!ۊ; ?厈#Hl6{M+2z~Ñ!bBs:x* %A%7xA4ḖM,n@26?{E:Jl֢ž٠Dهpa9h29VP`NܜգكY*|WYCH_)P$U,Ed-m[,ym+Z~ %>0܉xM ]cc v_Tjv='\ae,DR"LV@-ߋĿߔ8K|f=vmVTKX|ykpٷҪ=w&fwh<CA9k&FUMGf%!^aF y8rҎmJ5貚Q>3MOZcuLkU~M L 0XTo@\k ڀ6ZPQ@'#Sj\jݩ?8DW<#J[`ԿzXͶ̐%,G[X:{;A(S#@@QF4X!Rnã.X㡆 H15<:,ڇَ}U<$'fNSkpp XvyAҹr]I蚧5U@έifN|N@$aJc&<nj6B\ZK^֑{58S],5̢ d a $ Dj02;hϛ;mjM @8n}+%d*gnFa3?VxP/D_F=luXlҺץ0rX-LJ(X32,0Jl3c0w e*cgF,zQ{MzQ\7uV ׳x;eCd.lUJ}L2˜H:7LCTm /ލIOkm̓~ muA{h}1:}/&ʚYlBaK56 0^SchWXpwiY~u&r] Q_oŬT%-0 ֲoˉrSZ}駑>QxQu,m-zqÎ*`K7~P#OPѪ[ݔqufBcoX_Co`D7O]HbIK(Þm}MgMiCcQ#sTqW@aV \PW[6lI[̷f l ǕqTb}::CGr#N0'l ʁq9:{IOEކc%'`P;ĜItW߮$7ج8@_i sMF8RDuX7uCE1f%UUܶ~cy| ˠ77/2=u(n&oEl=GE<.m34EX.X^b3X;eX"/GG1eɪ]\@l@I[iN$+M"N d]_Bmo7bQ=>Ӫ178U  ǻRӨ>DgqI #qhUoぽjj% sh+.%D8r|iN6֥! 䠡XǩbPQ(6ko[ݚ8}d:C %z}cJ~3(| "Ts?‡ ;Y9=ynQV$xdڕ:3K {?fl=u1&EPz%?O&\s<=֒_Qw{oU./6\!g4ZsKglB,ؽjˆ.qJ30گqfwʢ٪Fںk&&@г_{^KC zQd O탤f+Q슗 G'}x?%ZmtdHWHhc6q뾶*`֦̚)xM=]gY|(tѮS2473"ȇw|>+>%4~(&gKDDdB:܊EgZNpxJۺ@p널t+>H: r$HsYiD~m^+TmRv@0:/_zng{OՖͧ= uFj*v?+\ei3$+<(a_k%^M[oX$ '/HiF iF:h eUH?i=w3Rq\-ߜWq1szIh9{7\fxG(1tnS'׭ځ"9>ﰺ2 :,{6wKZPH)8MT)ϼ/ڌ9oDLA BUuՐ;Mصcd0y /dN0_ոe Y2M5d='~  X]I2Te A E-WESnBQ~,IOܳ7&l.##s(j J.s}NRxin4WJd>IpR]@w;y>3913dh`Vz[Μ dJ@kȕ&^'rJH Rzc1Oܟ)4ٶȇK|* yF1TXƫ+l#!CFl}y\{8 YǠ᝵ nѮ 2´t[İ ;,e2+>۫綃ڙZ_RۏqXv%y*JKza&.ʤ hǪ l@'&):{ɂǫx/uڣw$gjɔC!,v{ʻTb`n1RGt2M\ujo|`l", b9'^eApL=(WCwGcGWKN1cŲEM"!Ƞ"3; v ƜG4)%Fvd6*MWk<+bV}vѾCk9;QUtLzݹ<}VfO}_]N7Jx^H"3⋌Г4+P9HO #m4('ׁ 0IA$\D!d@-dMy~aUg~ǖfϲa~7OUhU q^DS6Ai,-o@h PD/ P*D:f[LQ* ~SIm 0dA4LO3pz#J(9*pCݼCHQމڪې9) 4c4>{GmK+0 P4AE,tiM<_y XO0\ds1ң Pe-Dsk fM4vM&*ΎwFqَ듑o- _9.I+Ur o i/dq奆5q9BρX PA/DdjuҸ)&ƧyTrDp(@=!  0*A44LO3pz#JT P%ARE,tiMʀ P)qD[U]1jzN g PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʁH PD/ PD/` 0*A4LO3pz#JT P%AE,tiMʁ PD/8 PD/ 0*A4LO3pz#JT P%AE,tiMʁ P=D/ P?D/ 0*A$4LO3pz#JTP P%ABE,tiMʁ( PaD/x PcD/A@ 0Ah4LO3pz#J=7;~Y[f-OH&:% fJaG"sy~d.¯X@S}~(d@P!<0ߞw>8`gPeXکg;7;Gtwʺϲ5q\N'l@uӁnZzEs( r(ҍ2CL7wfb뱬"-5VhagoNd1 PpAE,tiM'Hƒ"'R#9A8nOFC9O3L(V0u룖v(n3OteE1@ PD:$Ncj;i>]'&*I _0YyFɏK0|'[%h(60IS-av,F͏#|,Ӝ 9:iMGxѝ[.҄iOot PfDO9Ϡ!Qp+`)p#iP_cԁxwA+(PdOo wBcÁImCT ց 0HA4LO3pz#Jջ*7VI ւ \ʎI:+FTQր P3AE,tiM֑̓:gwMoxbIO h P'D> [D P(D!i7 g 0/A4LO3pz#J&O/p񁣳0 P%AE,tiMʀ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʀ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʁH PD/ PD/ ` 0*A4LO3pz#JT  P%AE,tiMʁ PD/ 8 PD/AÁ  0A4LO3pz#J=@9=>4lp&(.xw|oIHEh'ʨXIRu.*؋93aȴծFdZw'T2:JSkO\(u?h7M+_e,ꖏkgCHQHP҈m? 3!GϙI(D}'1Ldz)(ÄΟ{Е%U|0{1egu蒫6l1Q$Z9Imh.͡;Ku4_PwIL =eՙS9LhJ Ck{NRC|(d*Ax` hNSJzh/} *"eQ{'4|(0ـ@  P}AE,tiM'MoKRKl 0gBtjՇCWu0Jג[50V^ra8~?C,DoȤD"w?6Ł  P7=D;+k{atk |x;SCP  Pa?DtNj0;z1&rT/:d?=Ԩ]3BKP@&SK/v~yt>q  0RA$4LO3pz#J)?RCiG1ZD>z.%[埫m׶Ażq" =^<;tof} 湜$ _3K]T惀>ij>+Ԫ4zaQڨ:l?q,U87Vjm_Ub&W"8r֝,CDucY4HU,4Mg}Mei "gygNo| ij&B֜>c m:=r6b1 #zG;*gAL\_~и_1П+L1EMM3],|P=uIo:D}ZW&=TJ0s,W#˛ |Ȓ1^-TQ)/krj1 p P,AE,tiM'{-B i H P#DnBو@  PD:Qʙ~EZ6=RF`&}#QP=zj~ׯ|ᅰ`@D?zR zBZ޵7c%ro$OQ*_d8(x2Oa)7^>ti51<҅ԉ5_Φ0^hc@` 0|A4LO3pz#J=F)kɫM|ÆX6X-2R!K~ճ}Bsήm/aBp5HgcJޓsx%Hs2IFʁ P["V'  0VA44LO3pz#J,Չʈ@\9\7Yuz <叩H۠^uTk@x P)ARE,tiMj; PhqDsDM,YiDeU SqjP_z3uٿ/! wGiݠBP[y6;=#K yXM}hiYsD/D׉} ^T?f@tA@j¨;wT5R~Khʾ9V./M^g ϱi$3>a@h P(D=RmRa*&e PZD=FY%T65~F{mSۧ**a8"EnF07N>0Iqȁ 0:A4LO3pz#JD^?d(P2fMq-0 P)AE,tiM \OLR P*-D;xuIn tZX P/D/  00A44LO3pz#JN+9Xw@У P%ARE,tiMʀ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʁH PD/ PD/` 0*A4LO3pz#JT P%AE,tiMʁ PD/8 PD/ 0*A4LO3pz#JT P%AE,tiMʁ P=D/ P?D/A< 0.A$4LO3pz#JiV[J24 !R#ĸSp tVI@,Ms.br 405kSB | {OKp׮oHL%,X"sȓQ %Kf"EZR֒oeClD'dP P^ABE,tiM,GGSIKKD͌ܣᲬQD8&컕<Ե( P+aDBKyfg5:lџZi̵>W@x PcDBlF߸:65]حD]T^U];%yfO׀tr#uFB@@QUOS$l{9ϲHªpKh|dGnP@ 0\Ah4LO3pz#Jj'#O<%c ~\ nۻBC݆H0Ũ P*AE,tiM,D͒M(Á P5DB.Wc)ZǼjpUIU~ P"D\AEوI 0/A4LO3pz#J.fw:ࣶ P(AE,tiMh PD PD/ 0.A4LO3pz#J.i{ף0 P%AE,tiMʀ P-D/X P/D/  0*A44LO3pz#JT P%ARE,tiMʀ PqD/ PsD/ 0*Ax4LO3pz#JUp P%AE,tiMʁH PD/ PD/A` 0{A4LO3pz#JV%݂$)qV;ʛ- P/AE,tiM_Ce)@î PD/@8 PxDB:N8ٰ S܃k/ 䣘j?EvOXBx`EQEcBbR;[c$x+ da(KD՜{| 0dA4LO3pz#JV/k! BƛMh*N f yN䀯s2&?L?Ʉ.`ǁ P9AE,tiM^D}s,y[D$ PT=D++AN wEW\AA|R`T/w!$E  X P#?DA{f  03A$4LO3pz#JaF,(*DR` P P%ABE,tiMʁ( PaD/x PcD/@ 0*Ah4LO3pz#JU P%AE,tiMʀ PD/ PD/ 0*A4LO3pz#JT P%AE,tiMʀh PD/ PD/  0*A4LO3pz#JU 0 P%AE,tiMʀ  P-D/ X P/D/A!  0xA44LO3pz#JO+HC݃ȗ2xx /,V@Z#oBTVQ@~EǏVzoFgGεŹC?]q5ugS[4^aA1V*[<@2.{U*sCyx6BӥAkcٷ]?#> R._G1ݽ5גRvŜ8L"TOe_]vDw9 ed;W};w-ݼ_2kzUmnqo5XdQw 1sB=A:ޢxSr~Q| O*},$KfJ+d;/   P.ARE,tiMSpǢ ;o'/0  PqD/  P(sD{o1=4P@! 0`Ax4LO3pz#J?ohk[d>5re([QXl2ϣ!p P.AE,tiMZ&RnH8!H PWD{' t˿q\C|$n#+#l_X& ;NqnHvY9☤RyA6%ࣺ! P,D{ AIuVE"` 0*A4LO3pz#JT" P%AE,tiMʁ! PD/"8 PD/# 0*A4LO3pz#JT" P%AE,tiMʁ" P=D/" P?D/# 0*A$4LO3pz#JT#P P%ABE,tiMʁ#( PaD/#x PcD/$@ 0*Ah4LO3pz#JU# P%AE,tiMʀ# PD/$ PD/$ 0*A4LO3pz#JT$ P%AE,tiMʀ$h PD/$ PD/As% 0eA4LO3pz#JU;;ȣvH*A<i}%hVkwIVb2mD|J~@0|y8l/D6 w`yMBKtڋTt6K=Xg(8bWA v# OD沐.=Yp>/O# q:v6I,z*T*ۚ1;?D[U؉S :Qq &M j^n]#dn$4zEg;{l4D:L:ְ.UD)(`ѣ%0 PXAE,tiM.8Ol7\8Nk/`_A)[_hU#,r%X PZ/DI XI3M? ׄl)Ƥ=`4dC~8Bdn׃.=.B>*&  0RA44LO3pz#JfR`քQ#RZG69m8Z~0Zi D,הԀ% P,ARE,tiM}$a > _% P2qDk-r :GS % PsD/& 0*Ax4LO3pz#JU&p P%AE,tiMʁ&H PD/& PD/& 0*A4LO3pz#JTSk']N u0#@pPTg' > screencast.qrc echo "" >> screencast.qrc array=""$( find ./pictures/* -name *.png | cut -c 3- )"" echo $array | sed "s/ /<\/file>\n/g" >> screencast.qrc array=""$( find ./pictures/* -name *.license | cut -c 3- )"" echo $array | sed "s/ /<\/file>\n/g" >> screencast.qrc array=""$( find ./pictures/* -name *.qss | cut -c 3- )"" echo $array | sed "s/ /<\/file>\n/g" >> screencast.qrc ####### # Sound ####### array=""$( find ./sound/* -name *.wav | cut -c 3- )"" echo $array | sed "s/ /<\/file>\n/g" >> screencast.qrc ############################### # cisco openh264 binary license ############################### array=""$( find ./ciscoOpenh264/* -name *.txt | cut -c 3- )"" echo $array | sed "s/ /<\/file>\n/g" >> screencast.qrc ################ # language packs ################ array=''$( ls language/*.ts )'' echo $array | sed "s/ /<\/file>\n/g" >> screencast.qrc sed -i 's/\.ts/.qm/g' screencast.qrc echo '' >> screencast.qrc echo '' >> screencast.qrc echo ========== echo Script end echo ========== vokoscreenNG-3.7.0/src/000077500000000000000000000000001444746353100147265ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/QGlobalShortcut/000077500000000000000000000000001444746353100200035ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/QGlobalShortcut/AUTHORS000066400000000000000000000000331444746353100210470ustar00rootroot00000000000000Authors: Evgenii Legotckoi vokoscreenNG-3.7.0/src/QGlobalShortcut/LICENSE000066400000000000000000000635351444746353100210240ustar00rootroot00000000000000 GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. (This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.) Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. {description} Copyright (C) {year} {fullname} This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. {signature of Ty Coon}, 1 April 1990 Ty Coon, President of Vice That's all there is to it! vokoscreenNG-3.7.0/src/QGlobalShortcut/README.md000066400000000000000000000004711444746353100212640ustar00rootroot00000000000000# QGlobalShortcut Crossplatform Global HotKey for Qt5.1 and higher # Configuration of PRO File You have to download library to specials folder in your project. For example, name of folder is "QGlobalShortcut". And include this .pri project in your .pro file. ``` include(QGlobalShortcut/qglobalshortcut.pri) ``` vokoscreenNG-3.7.0/src/QGlobalShortcut/qglobalshortcut.h000066400000000000000000000016661444746353100234020ustar00rootroot00000000000000#ifndef QGLOBALSHORTCUTPRIVATE_H #define QGLOBALSHORTCUTPRIVATE_H #include #include class QKeySequence; class QGlobalShortcutPrivate; class QGlobalShortcut : public QObject, public QAbstractNativeEventFilter { Q_OBJECT public: explicit QGlobalShortcut(QObject *parent = nullptr); ~QGlobalShortcut(); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // QT5 bool nativeEventFilter(const QByteArray &eventType, void *message, long *result) override; #else // Qt6 bool nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) override; #endif QKeySequence shortcut(); bool isEmpty(); bool isEnabled(); signals: void activated(); public slots: bool setShortcut(const QKeySequence &keySequence); bool unsetShortcut(); void setEnabled(bool enable); private: QGlobalShortcutPrivate *sPrivate; }; #endif // QGLOBALSHORTCUTPRIVATE_H vokoscreenNG-3.7.0/src/QGlobalShortcut/qglobalshortcut.pri000066400000000000000000000005161444746353100237360ustar00rootroot00000000000000 INCLUDEPATH += $$PWD CONFIG += c++11 linux { CONFIG += link_pkgconfig PKGCONFIG += x11 } win32-mingw{ QMAKE_CXXFLAGS += -Wliteral-suffix } win32-msvc*{ LIBS += -luser32 } HEADERS += \ $$PWD/qglobalshortcut.h win32: SOURCES += $$PWD/win/qglobalshortcut.cpp linux: SOURCES += $$PWD/x11/qglobalshortcut.cpp vokoscreenNG-3.7.0/src/QGlobalShortcut/win/000077500000000000000000000000001444746353100206005ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/QGlobalShortcut/win/qglobalshortcut.cpp000066400000000000000000000127461444746353100245330ustar00rootroot00000000000000#include "qglobalshortcut.h" #include #include #include #include "windows.h" namespace { QString strShortcuts[56] = {"Esc","Tab","BackTab","Backspace","Return","Enter","Ins","Del", "Pause", "Print","SysReq","Clear","Home","End","Left","Up","Right", "Down","PgUp","PgDown","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12", "F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24", "Space","*",",","-","/","Media Next","Media Previous","Media Play","Media Stop", "Volume Down","Volume Up","Volume Mute"}; unsigned int codeShortcuts[56] = {VK_ESCAPE,VK_TAB,VK_TAB,VK_BACK,VK_RETURN,VK_RETURN,VK_INSERT,VK_DELETE, VK_PAUSE,VK_PRINT,VK_SNAPSHOT,VK_CLEAR,VK_HOME,VK_END,VK_LEFT,VK_UP,VK_RIGHT, VK_DOWN,VK_PRIOR,VK_NEXT,VK_F1,VK_F2,VK_F3,VK_F4,VK_F5,VK_F6,VK_F7,VK_F8,VK_F9,VK_F10,VK_F11,VK_F12, VK_F13,VK_F14,VK_F15,VK_F16,VK_F17,VK_F18,VK_F19,VK_F20,VK_F21,VK_F22,VK_F23,VK_F24, VK_SPACE,VK_MULTIPLY,VK_SEPARATOR,VK_SUBTRACT,VK_DIVIDE,VK_MEDIA_NEXT_TRACK,VK_MEDIA_PREV_TRACK,VK_MEDIA_PLAY_PAUSE,VK_MEDIA_STOP, VK_VOLUME_DOWN,VK_VOLUME_UP,VK_VOLUME_MUTE}; } class QGlobalData { Q_PROPERTY(unsigned int id READ id WRITE setId) public: QGlobalData() {} QGlobalData(const QGlobalData &other) : m_id(other.m_id) { } unsigned int id(){return m_id;} void setId(unsigned int id){m_id = id;} private: unsigned int m_id; }; class QGlobalShortcutPrivate { public: QKeySequence keys; QListlistKeys; QHash hash; bool enabled; QGlobalShortcutPrivate() { } void initHash() { for(int i = 0; i < 56; i++){ hash.insert(strShortcuts[i],codeShortcuts[i]); } } unsigned int winHotKey(const QKeySequence &sequence) { QStringList list = sequence.toString().split("+"); QString str = list.last(); if(str.length() == 0){ return VK_ADD; } else if(str.length() == 1){ return str.at(0).unicode(); // return Key Letters and Numbers } else { return this->hash.value(str); } return 0; } unsigned int winKeyModificator(const QKeySequence &sequence) { QStringList list = sequence.toString().split("+"); unsigned int keyModificator = 0; foreach (QString str, list) { if(str == "Ctrl"){ keyModificator |= MOD_CONTROL; continue; } else if(str == "Alt"){ keyModificator |= MOD_ALT; continue; } else if(str == "Shift"){ keyModificator |= MOD_SHIFT; continue; } else if(str == "Meta"){ keyModificator |= MOD_WIN; continue; } } return keyModificator; } unsigned int winId(const QKeySequence &keySequence) { return this->winHotKey(keySequence) ^ this->winKeyModificator(keySequence); } }; QGlobalShortcut::QGlobalShortcut(QObject *parent) : QObject(parent), sPrivate(new QGlobalShortcutPrivate) { sPrivate->enabled = true; sPrivate->initHash(); qApp->installNativeEventFilter(this); } QGlobalShortcut::~QGlobalShortcut() { unsetShortcut(); qApp->removeNativeEventFilter(this); delete sPrivate; } #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 bool QGlobalShortcut::nativeEventFilter(const QByteArray &eventType, void *message, long *result) #else // Qt6 bool QGlobalShortcut::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) #endif { Q_UNUSED(eventType) Q_UNUSED(result) if(!sPrivate->keys.isEmpty() && sPrivate->enabled){ MSG* msg = reinterpret_cast(message); if(msg->message == WM_HOTKEY){ foreach (QGlobalData *data, sPrivate->listKeys) { if(msg->wParam == data->id()){ emit activated(); return true; } } } } return false; } bool QGlobalShortcut::setShortcut(const QKeySequence &keySequence) { unsetShortcut(); sPrivate->keys = keySequence; QStringList list = sPrivate->keys.toString().split(", "); foreach (QString str, list) { QGlobalData * data = new QGlobalData(); data->setId(sPrivate->winId(QKeySequence(str))); sPrivate->listKeys.append(data); RegisterHotKey(0, data->id(), sPrivate->winKeyModificator(QKeySequence(str)), sPrivate->winHotKey(QKeySequence(str))); } return true; } bool QGlobalShortcut::unsetShortcut() { if(!sPrivate->keys.isEmpty()){ foreach (QGlobalData *data, sPrivate->listKeys) { UnregisterHotKey(0, data->id()); } sPrivate->listKeys.clear(); } return true; } QKeySequence QGlobalShortcut::shortcut() { if(!sPrivate->keys.isEmpty()){ return sPrivate->keys; } else { return QKeySequence(""); } } bool QGlobalShortcut::isEmpty() { return sPrivate->keys.isEmpty(); } void QGlobalShortcut::setEnabled(bool enable) { sPrivate->enabled = enable; } bool QGlobalShortcut::isEnabled() { return sPrivate->enabled; } vokoscreenNG-3.7.0/src/QGlobalShortcut/x11/000077500000000000000000000000001444746353100204145ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/QGlobalShortcut/x11/qglobalshortcut.cpp000066400000000000000000000156021444746353100243410ustar00rootroot00000000000000#include "qglobalshortcut.h" #include #include #include #include #include #include #include #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) #else #include #endif namespace { QString strShortcuts[49] = {"Esc","Tab","BackTab","Backspace","Return","Enter","Ins","Del", "Pause", "Print","SysReq","Clear","Home","End","Left","Up","Right", "Down","PgUp","PgDown","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12", "F13","F14","F15","F16","F17","F18","F19","F20","F21","F22","F23","F24", "Space","*",",","-","/"}; unsigned int codeShortcuts[49] = {XK_Escape,XK_Tab,XK_Tab,XK_BackSpace,XK_Return,XK_Return,XK_Insert,XK_Delete, XK_Pause,XK_Print,XK_Sys_Req,XK_Clear,XK_Home,XK_End,XK_Left,XK_Up,XK_Right, XK_Down,XK_Page_Up,XK_Page_Down,XK_F1,XK_F2,XK_F3,XK_F4,XK_F5,XK_F6,XK_F7,XK_F8,XK_F9,XK_F10,XK_F11,XK_F12, XK_F13,XK_F14,XK_F15,XK_F16,XK_F17,XK_F18,XK_F19,XK_F20,XK_F21,XK_F22,XK_F23,XK_F24, XK_space,XK_asterisk,XK_comma,XK_minus,XK_slash}; } class QGlobalData { Q_PROPERTY(unsigned int key READ key WRITE setKey) Q_PROPERTY(unsigned int modifier READ modifier WRITE setModifier) public: QGlobalData() {} QGlobalData(const QGlobalData &other) : m_key(other.m_key), m_modifier(other.m_modifier) { } unsigned int key(){return m_key;} unsigned int modifier(){return m_modifier;} void setkey(unsigned int key){m_key = key;} void setModifier(unsigned int modifier){m_modifier = modifier;} private: unsigned int m_key; unsigned int m_modifier; }; class QGlobalShortcutPrivate { public: QKeySequence keys; QListlistKeys; QHash hash; bool enabled; Display * m_display; Window m_win; QGlobalShortcutPrivate() { } void initHash() { for(int i = 0; i < 49; i++){ hash.insert(strShortcuts[i],codeShortcuts[i]); } } QVector maskModifiers(){ return QVector() << 0 << Mod2Mask << LockMask << (Mod2Mask | LockMask); } unsigned int X11KeyModificator(const QKeySequence &sequence) { QStringList list = sequence.toString().split("+"); unsigned int keyModificator = 0; foreach (QString str, list) { if(str == "Ctrl"){ keyModificator |= XCB_MOD_MASK_CONTROL; continue; } else if(str == "Alt"){ keyModificator |= XCB_MOD_MASK_1; continue; } else if(str == "Shift"){ keyModificator |= XCB_MOD_MASK_SHIFT; continue; } else if(str == "Meta"){ keyModificator |= XCB_MOD_MASK_4; continue; } } return keyModificator; } unsigned int X11HotKey(Display *display, const QKeySequence &sequence) { QStringList list = sequence.toString().split("+"); QString str = list.last(); if(str.length() == 0){ return XKeysymToKeycode(display, XK_plus); } else if(str.length() == 1){ return XKeysymToKeycode(display, str.at(0).unicode()); // return Key Letters and Numbers } else { return XKeysymToKeycode(display, this->hash.value(str)); } return 0; } }; QGlobalShortcut::QGlobalShortcut(QObject *parent) : QObject(parent), sPrivate(new QGlobalShortcutPrivate) { #if QT_VERSION >= QT_VERSION_CHECK(6, 2, 0) const QNativeInterface::QX11Application *x11Interface = qGuiApp->nativeInterface(); sPrivate->m_display = x11Interface->display(); #else sPrivate->m_display = QX11Info::display(); #endif sPrivate->m_win = DefaultRootWindow(sPrivate->m_display); sPrivate->enabled = true; sPrivate->initHash(); qApp->installNativeEventFilter(this); } QGlobalShortcut::~QGlobalShortcut() { unsetShortcut(); qApp->removeNativeEventFilter(this); delete sPrivate; } #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 bool QGlobalShortcut::nativeEventFilter(const QByteArray &eventType, void *message, long *result) #else // Qt6 bool QGlobalShortcut::nativeEventFilter(const QByteArray &eventType, void *message, qintptr *result) #endif { Q_UNUSED(eventType) Q_UNUSED(result) if(!sPrivate->keys.isEmpty() && sPrivate->enabled){ xcb_key_press_event_t *keyEvent = 0; if (eventType == "xcb_generic_event_t") { xcb_generic_event_t *event = static_cast(message); if ((event->response_type & 127) == XCB_KEY_PRESS){ keyEvent = static_cast(message); foreach (QGlobalData *data, sPrivate->listKeys) { foreach (quint32 maskMods, sPrivate->maskModifiers()) { if((keyEvent->state == (data->modifier() | maskMods )) && keyEvent->detail == data->key()){ emit activated(); return true; } } } } } } return false; } bool QGlobalShortcut::setShortcut(const QKeySequence &keySequence) { unsetShortcut(); sPrivate->keys = keySequence; QStringList list = sPrivate->keys.toString().split(", "); foreach (QString str, list) { QGlobalData * data = new QGlobalData(); data->setkey(sPrivate->X11HotKey(sPrivate->m_display, QKeySequence(str))); data->setModifier(sPrivate->X11KeyModificator(QKeySequence(str))); sPrivate->listKeys.append(data); foreach (quint32 maskMods, sPrivate->maskModifiers()) { XGrabKey(sPrivate->m_display, data->key() , data->modifier() | maskMods, sPrivate->m_win,True, GrabModeAsync, GrabModeAsync); } } return true; } bool QGlobalShortcut::unsetShortcut() { if(!sPrivate->keys.isEmpty()){ foreach (QGlobalData *data, sPrivate->listKeys) { foreach (quint32 maskMods, sPrivate->maskModifiers()) { XUngrabKey(sPrivate->m_display, data->key(),data->modifier() | maskMods, sPrivate->m_win); } } sPrivate->listKeys.clear(); } return true; } QKeySequence QGlobalShortcut::shortcut() { if(!sPrivate->keys.isEmpty()){ return sPrivate->keys; } else { return QKeySequence(""); } } bool QGlobalShortcut::isEmpty() { return sPrivate->keys.isEmpty(); } void QGlobalShortcut::setEnabled(bool enable) { sPrivate->enabled = enable; } bool QGlobalShortcut::isEnabled() { return sPrivate->enabled; } vokoscreenNG-3.7.0/src/QvkGlobalShortcut/000077500000000000000000000000001444746353100203445ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/QvkGlobalShortcut/QvkGlobalShortcut.cpp000066400000000000000000001062551444746353100244770ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkGlobalShortcut.h" #include "global.h" #include #include #include QvkGlobalShortcut::QvkGlobalShortcut(QMainWindow *mainWindow, Ui_formMainWindow *ui_mainwindow ) { Q_UNUSED(mainWindow); ui = ui_mainwindow; shortcutStart = new QGlobalShortcut( this ); connect( shortcutStart, SIGNAL( activated() ), this, SLOT( slot_startStop() ) ); connect( ui->checkBox_shortcut_start_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_start_clicked( bool ) ) ); connect( ui->checkBox_shortcut_start_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_start_clicked( bool ) ) ); connect( ui->checkBox_shortcut_start_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_start_clicked( bool ) ) ); connect( ui->checkBox_shortcut_start_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_start_clicked( bool ) ) ); connect( ui->comboBox_shortcut_start, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_start_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_start, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_start_reset() ) ); shortcutPause = new QGlobalShortcut( this ); connect( shortcutPause, SIGNAL( activated() ), this, SLOT( slot_pauseContinue() ) ); connect( ui->checkBox_shortcut_pause_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_pause_clicked( bool ) ) ); connect( ui->checkBox_shortcut_pause_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_pause_clicked( bool ) ) ); connect( ui->checkBox_shortcut_pause_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_pause_clicked( bool ) ) ); connect( ui->checkBox_shortcut_pause_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_pause_clicked( bool ) ) ); connect( ui->comboBox_shortcut_pause, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_pause_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_pause, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_pause_reset() ) ); shortcutMagnification = new QGlobalShortcut( this ); connect( shortcutMagnification, SIGNAL( activated() ), ui->checkBoxMagnifier, SLOT( click() ) ); connect( ui->checkBox_shortcut_magnification_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_magnification_clicked( bool ) ) ); connect( ui->checkBox_shortcut_magnification_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_magnification_clicked( bool ) ) ); connect( ui->checkBox_shortcut_magnification_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_magnification_clicked( bool ) ) ); connect( ui->checkBox_shortcut_magnification_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_magnification_clicked( bool ) ) ); connect( ui->comboBox_shortcut_magnification, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_magnification_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_magnification, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_magnification_reset() ) ); shortcutCamera = new QGlobalShortcut( this ); connect( shortcutCamera, SIGNAL( activated() ), ui->checkBoxCameraOnOff, SLOT( click() ) ); connect( ui->checkBox_shortcut_camera_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_camera_clicked( bool ) ) ); connect( ui->checkBox_shortcut_camera_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_camera_clicked( bool ) ) ); connect( ui->checkBox_shortcut_camera_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_camera_clicked( bool ) ) ); connect( ui->checkBox_shortcut_camera_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_camera_clicked( bool ) ) ); connect( ui->comboBox_shortcut_camera, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_camera_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_camera, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_camera_reset() ) ); QList listSpezialCheckboxShowclick = ui->centralWidget->findChildren(); for ( int i = 0; i < listSpezialCheckboxShowclick.count(); i++ ){ if ( listSpezialCheckboxShowclick.at(i)->objectName() == "spezialCheckboxShowclick" ){ spezialCheckboxShowclick = listSpezialCheckboxShowclick.at(i); } } shortcutShowclick = new QGlobalShortcut( this ); connect( shortcutShowclick, SIGNAL( activated() ), spezialCheckboxShowclick, SLOT( slot_click() ) ); connect( ui->checkBox_shortcut_showclick_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_showclick_clicked( bool ) ) ); connect( ui->checkBox_shortcut_showclick_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_showclick_clicked( bool ) ) ); connect( ui->checkBox_shortcut_showclick_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_showclick_clicked( bool ) ) ); connect( ui->checkBox_shortcut_showclick_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_showclick_clicked( bool ) ) ); connect( ui->comboBox_shortcut_showclick, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_showclick_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_showclick, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_showclick_reset() ) ); QList listSpezialCheckboxHalo = ui->centralWidget->findChildren(); for ( int i = 0; i < listSpezialCheckboxHalo.count(); i++ ){ if ( listSpezialCheckboxHalo.at(i)->objectName() == "spezialCheckboxHalo" ){ spezialCheckboxHalo = listSpezialCheckboxHalo.at(i); } } shortcutHalo = new QGlobalShortcut( this ); connect( shortcutHalo, SIGNAL( activated() ), spezialCheckboxHalo, SLOT( slot_click() ) ); connect( ui->checkBox_shortcut_halo_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_halo_clicked( bool ) ) ); connect( ui->checkBox_shortcut_halo_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_halo_clicked( bool ) ) ); connect( ui->checkBox_shortcut_halo_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_halo_clicked( bool ) ) ); connect( ui->checkBox_shortcut_halo_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_halo_clicked( bool ) ) ); connect( ui->comboBox_shortcut_halo, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_halo_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_halo, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_halo_reset() ) ); connect( ui->checkBoxStartTime, SIGNAL( clicked( bool ) ), this, SLOT( slot_setOrUnsetShortcut( bool ) ) ); shortcutSnapshot = new QGlobalShortcut( this ); connect( shortcutSnapshot, SIGNAL( activated() ), ui->pushButtonScreencastSnapshot, SLOT( click() ) ); connect( ui->checkBox_shortcut_snapshot_strg, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_snapshot_clicked( bool ) ) ); connect( ui->checkBox_shortcut_snapshot_shift, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_snapshot_clicked( bool ) ) ); connect( ui->checkBox_shortcut_snapshot_alt, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_snapshot_clicked( bool ) ) ); connect( ui->checkBox_shortcut_snapshot_meta, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkbox_shortcut_snapshot_clicked( bool ) ) ); connect( ui->comboBox_shortcut_snapshot, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_checkbox_shortcut_snapshot_currentIndexChanged( int ) ) ); connect( ui->toolButton_shortcut_reset_snapshot, SIGNAL( clicked() ), this, SLOT( slot_toolButton_shortcut_snapshot_reset() ) ); } QvkGlobalShortcut::~QvkGlobalShortcut() { } QString QvkGlobalShortcut::boolToString( bool bo ) { int i = QVariant( bo ).toUInt(); return QString::number( i ); } bool QvkGlobalShortcut::isBusy( QString check ) { // Beispiel: // 1010F QString start;; QString pause; QString magnification; QString camera; QString showclick; QString halo; QString snapshot; start.append( boolToString( ui->checkBox_shortcut_start_strg->isChecked() ) ); start.append( boolToString( ui->checkBox_shortcut_start_shift->isChecked() ) ); start.append( boolToString( ui->checkBox_shortcut_start_alt->isChecked() ) ); start.append( boolToString( ui->checkBox_shortcut_start_meta->isChecked() ) ); start.append( ui->comboBox_shortcut_start->currentText() ); pause.append( boolToString( ui->checkBox_shortcut_pause_strg->isChecked() ) ); pause.append( boolToString( ui->checkBox_shortcut_pause_shift->isChecked() ) ); pause.append( boolToString( ui->checkBox_shortcut_pause_alt->isChecked() ) ); pause.append( boolToString( ui->checkBox_shortcut_pause_meta->isChecked() ) ); pause.append( ui->comboBox_shortcut_pause->currentText() ); magnification.append( boolToString( ui->checkBox_shortcut_magnification_strg->isChecked() ) ); magnification.append( boolToString( ui->checkBox_shortcut_magnification_shift->isChecked() ) ); magnification.append( boolToString( ui->checkBox_shortcut_magnification_alt->isChecked() ) ); magnification.append( boolToString( ui->checkBox_shortcut_magnification_meta->isChecked() ) ); magnification.append( ui->comboBox_shortcut_magnification->currentText() ); camera.append( boolToString( ui->checkBox_shortcut_camera_strg->isChecked() ) ); camera.append( boolToString( ui->checkBox_shortcut_camera_shift->isChecked() ) ); camera.append( boolToString( ui->checkBox_shortcut_camera_alt->isChecked() ) ); camera.append( boolToString( ui->checkBox_shortcut_camera_meta->isChecked() ) ); camera.append( ui->comboBox_shortcut_camera->currentText() ); showclick.append( boolToString( ui->checkBox_shortcut_showclick_strg->isChecked() ) ); showclick.append( boolToString( ui->checkBox_shortcut_showclick_shift->isChecked() ) ); showclick.append( boolToString( ui->checkBox_shortcut_showclick_alt->isChecked() ) ); showclick.append( boolToString( ui->checkBox_shortcut_showclick_meta->isChecked() ) ); showclick.append( ui->comboBox_shortcut_showclick->currentText() ); halo.append( boolToString( ui->checkBox_shortcut_halo_strg->isChecked() ) ); halo.append( boolToString( ui->checkBox_shortcut_halo_shift->isChecked() ) ); halo.append( boolToString( ui->checkBox_shortcut_halo_alt->isChecked() ) ); halo.append( boolToString( ui->checkBox_shortcut_halo_meta->isChecked() ) ); halo.append( ui->comboBox_shortcut_halo->currentText() ); snapshot.append( boolToString( ui->checkBox_shortcut_snapshot_strg->isChecked() ) ); snapshot.append( boolToString( ui->checkBox_shortcut_snapshot_shift->isChecked() ) ); snapshot.append( boolToString( ui->checkBox_shortcut_snapshot_alt->isChecked() ) ); snapshot.append( boolToString( ui->checkBox_shortcut_snapshot_meta->isChecked() ) ); snapshot.append( ui->comboBox_shortcut_snapshot->currentText() ); if ( check == "start" ) { if ( ( start == pause ) or ( start == magnification ) or ( start == camera ) or ( start == showclick ) or ( start == halo ) or ( start == snapshot ) ) return true; } if ( check == "pause" ) { if ( ( pause == start ) or ( pause == magnification) or ( pause == camera ) or ( pause == showclick ) or ( pause == halo ) or ( pause == snapshot ) ) return true; } if ( check == "magnification" ) { if ( ( magnification == start ) or ( magnification == pause ) or ( magnification == camera ) or ( magnification == showclick ) or ( magnification == halo ) or ( magnification == snapshot ) ) return true; } if ( check == "camera" ) { if ( ( camera == start ) or ( camera == pause ) or ( camera == magnification ) or ( camera == showclick ) or ( camera == halo ) or ( camera == snapshot ) ) return true; } if ( check == "showclick" ) { if ( ( showclick == start ) or ( showclick == pause ) or ( showclick == magnification ) or ( showclick == camera ) or ( showclick == halo ) or ( showclick == snapshot ) ) return true; } if ( check == "halo" ) { if ( ( halo == start ) or ( halo == pause ) or ( halo == magnification ) or ( halo == camera ) or ( halo == showclick ) or( halo == snapshot ) ) return true; } if ( check == "snapshot" ) { if ( ( snapshot == start ) or ( snapshot == pause ) or ( snapshot == magnification ) or ( snapshot == camera ) or ( snapshot == showclick ) or ( snapshot == halo ) ) return true; } return false; } // Start void QvkGlobalShortcut::slot_checkbox_shortcut_start_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_start_strg->isChecked() | ui->checkBox_shortcut_start_shift->isChecked() | ui->checkBox_shortcut_start_alt->isChecked() | ui->checkBox_shortcut_start_meta->isChecked() ) and !isBusy( "start" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_start->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On ) ); QString shortcut; if ( ui->checkBox_shortcut_start_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_start_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_start_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_start_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_start->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutStart->unsetShortcut(); shortcutStart->setShortcut( QKeySequence( shortcut ) ); ui->pushButtonStart->setToolTip( shortcut ); ui->pushButtonStop->setToolTip( shortcut ); emit signal_shortcutSystray( "Start", shortcut ); emit signal_shortcutSystray( "Stop", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Start:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_start->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutStart->unsetShortcut(); ui->pushButtonStart->setToolTip( "None" ); ui->pushButtonStop->setToolTip( "None" ); emit signal_shortcutSystray( "Start", "None" ); emit signal_shortcutSystray( "Stop", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Start: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_start_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_start_clicked( true ); } // Pause void QvkGlobalShortcut::slot_checkbox_shortcut_pause_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_pause_strg->isChecked() | ui->checkBox_shortcut_pause_shift->isChecked() | ui->checkBox_shortcut_pause_alt->isChecked() | ui->checkBox_shortcut_pause_meta->isChecked() ) and !isBusy( "pause" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_pause->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QString shortcut; if ( ui->checkBox_shortcut_pause_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_pause_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_pause_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_pause_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_pause->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutPause->unsetShortcut(); shortcutPause->setShortcut( QKeySequence( shortcut ) ); ui->pushButtonPause->setToolTip( shortcut ); ui->pushButtonContinue->setToolTip( shortcut ); emit signal_shortcutSystray( "Pause", shortcut ); emit signal_shortcutSystray( "Continue", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Pause:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_pause->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutPause->unsetShortcut(); ui->pushButtonPause->setToolTip( "None" ); ui->pushButtonContinue->setToolTip( "None" ); emit signal_shortcutSystray( "Pause", "None" ); emit signal_shortcutSystray( "Continue", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Pause: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_pause_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_pause_clicked( true ); } // Magnifier void QvkGlobalShortcut::slot_checkbox_shortcut_magnification_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_magnification_strg->isChecked() | ui->checkBox_shortcut_magnification_shift->isChecked() | ui->checkBox_shortcut_magnification_alt->isChecked() | ui->checkBox_shortcut_magnification_meta->isChecked() ) and !isBusy( "magnification" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_magnification->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QString shortcut; if ( ui->checkBox_shortcut_magnification_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_magnification_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_magnification_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_magnification_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_magnification->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutMagnification->unsetShortcut(); shortcutMagnification->setShortcut( QKeySequence( shortcut ) ); ui->checkBoxMagnifier->setToolTip( shortcut ); emit signal_shortcutSystray( "magnification", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Magnification:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_magnification->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutMagnification->unsetShortcut(); ui->checkBoxMagnifier->setToolTip( "None" ); emit signal_shortcutSystray( "magnification", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Magnification: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_magnification_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_magnification_clicked( true ); } // Camera void QvkGlobalShortcut::slot_checkbox_shortcut_camera_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_camera_strg->isChecked() | ui->checkBox_shortcut_camera_shift->isChecked() | ui->checkBox_shortcut_camera_alt->isChecked() | ui->checkBox_shortcut_camera_meta->isChecked() ) and !isBusy( "camera" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_camera->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QString shortcut; if ( ui->checkBox_shortcut_camera_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_camera_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_camera_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_camera_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_camera->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutCamera->unsetShortcut(); shortcutCamera->setShortcut( QKeySequence( shortcut ) ); ui->checkBoxCameraOnOff->setToolTip( shortcut ); emit signal_shortcutSystray( "camera", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Camera:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_camera->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutCamera->unsetShortcut(); ui->checkBoxCameraOnOff->setToolTip( "None" ); emit signal_shortcutSystray( "camera", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Camera: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_camera_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_camera_clicked( true ); } // Showclick void QvkGlobalShortcut::slot_checkbox_shortcut_showclick_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_showclick_strg->isChecked() | ui->checkBox_shortcut_showclick_shift->isChecked() | ui->checkBox_shortcut_showclick_alt->isChecked() | ui->checkBox_shortcut_showclick_meta->isChecked() ) and !isBusy( "showclick" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_showclick->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QString shortcut; if ( ui->checkBox_shortcut_showclick_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_showclick_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_showclick_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_showclick_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_showclick->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutShowclick->unsetShortcut(); shortcutShowclick->setShortcut( QKeySequence( shortcut ) ); spezialCheckboxShowclick->setToolTip( shortcut ); emit signal_shortcutSystray( "showclick", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Showclick:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_showclick->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutShowclick->unsetShortcut(); spezialCheckboxShowclick->setToolTip( "None" ); emit signal_shortcutSystray( "showclick", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Showclick: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_showclick_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_showclick_clicked( true ); } // Halo void QvkGlobalShortcut::slot_checkbox_shortcut_halo_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_halo_strg->isChecked() | ui->checkBox_shortcut_halo_shift->isChecked() | ui->checkBox_shortcut_halo_alt->isChecked() | ui->checkBox_shortcut_halo_meta->isChecked() ) and !isBusy( "halo" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_halo->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QString shortcut; if ( ui->checkBox_shortcut_halo_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_halo_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_halo_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_halo_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_halo->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutHalo->unsetShortcut(); shortcutHalo->setShortcut( QKeySequence( shortcut ) ); spezialCheckboxHalo->setToolTip( shortcut ); emit signal_shortcutSystray( "halo", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Halo:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_halo->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutHalo->unsetShortcut(); spezialCheckboxHalo->setToolTip( "None" ); emit signal_shortcutSystray( "halo", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Halo: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_halo_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_halo_clicked( true ); } void QvkGlobalShortcut::slot_checkbox_shortcut_snapshot_clicked( bool value ) { Q_UNUSED(value) if ( ( ui->checkBox_shortcut_snapshot_strg->isChecked() | ui->checkBox_shortcut_snapshot_shift->isChecked() | ui->checkBox_shortcut_snapshot_alt->isChecked() | ui->checkBox_shortcut_snapshot_meta->isChecked() ) and !isBusy( "snapshot" ) ) { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_snapshot->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QString shortcut; if ( ui->checkBox_shortcut_snapshot_strg->isChecked() ) { shortcut.append( "+CTRL" ); } if ( ui->checkBox_shortcut_snapshot_shift->isChecked() ) { shortcut.append( "+SHIFT" ); } if ( ui->checkBox_shortcut_snapshot_alt->isChecked() ) { shortcut.append( "+ALT" ); } if ( ui->checkBox_shortcut_snapshot_meta->isChecked() ) { shortcut.append( "+META" ); } shortcut.append( "+" + ui->comboBox_shortcut_snapshot->currentText() ); if ( shortcut.startsWith( "+" ) == true ) { shortcut.remove( 0, 1 ); } shortcutSnapshot->unsetShortcut(); shortcutSnapshot->setShortcut( QKeySequence( shortcut ) ); ui->pushButtonScreencastSnapshot->setToolTip( shortcut ); ui->pushButtonSnapshotSnapshot->setToolTip( shortcut ); emit signal_shortcutSystray( "snapshot", shortcut ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Snapshot:" << shortcut; } else { QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->label_shortcut_picture_snapshot->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); shortcutSnapshot->unsetShortcut(); ui->pushButtonScreencastSnapshot->setToolTip( "None" ); ui->pushButtonSnapshotSnapshot->setToolTip( "None" ); emit signal_shortcutSystray( "snapshot", "None" ); qDebug().noquote() << global::nameOutput << "Set global shortcut for Snapshot: None"; } } void QvkGlobalShortcut::slot_checkbox_shortcut_snapshot_currentIndexChanged( int value ) { Q_UNUSED(value) slot_checkbox_shortcut_snapshot_clicked( true ); } void QvkGlobalShortcut::slot_startStop() { if ( ui->pushButtonStart->isEnabled() == true ) { ui->pushButtonStart->click(); } else { ui->pushButtonStop->click(); } } void QvkGlobalShortcut::slot_pauseContinue() { if ( ui->pushButtonContinue->isHidden() == true ) { ui->pushButtonPause->click(); } else { ui->pushButtonContinue->click(); } } void QvkGlobalShortcut::slot_setOrUnsetShortcut( bool value ) { if ( value == true ) { shortcutStart->setEnabled( false ); } else { shortcutStart->setEnabled( true ); } } void QvkGlobalShortcut::slot_toolButton_shortcut_start_reset() { if ( ui->checkBox_shortcut_start_strg->isChecked() == false ) ui->checkBox_shortcut_start_strg->click(); if ( ui->checkBox_shortcut_start_shift->isChecked() == false ) ui->checkBox_shortcut_start_shift->click(); if ( ui->checkBox_shortcut_start_alt->isChecked() == true ) ui->checkBox_shortcut_start_alt->click(); if ( ui->checkBox_shortcut_start_meta->isChecked() == true ) ui->checkBox_shortcut_start_meta->click(); ui->comboBox_shortcut_start->setCurrentText( "F10" ); } void QvkGlobalShortcut::slot_toolButton_shortcut_pause_reset() { if ( ui->checkBox_shortcut_pause_strg->isChecked() == false ) ui->checkBox_shortcut_pause_strg->click(); if ( ui->checkBox_shortcut_pause_shift->isChecked() == false ) ui->checkBox_shortcut_pause_shift->click(); if ( ui->checkBox_shortcut_pause_alt->isChecked() == true ) ui->checkBox_shortcut_pause_alt->click(); if ( ui->checkBox_shortcut_pause_meta->isChecked() == true ) ui->checkBox_shortcut_pause_meta->click(); ui->comboBox_shortcut_pause->setCurrentText( "F12" ); } void QvkGlobalShortcut::slot_toolButton_shortcut_magnification_reset() { if ( ui->checkBox_shortcut_magnification_strg->isChecked() == false ) ui->checkBox_shortcut_magnification_strg->click(); if ( ui->checkBox_shortcut_magnification_shift->isChecked() == false ) ui->checkBox_shortcut_magnification_shift->click(); if ( ui->checkBox_shortcut_magnification_alt->isChecked() == true ) ui->checkBox_shortcut_magnification_alt->click(); if ( ui->checkBox_shortcut_magnification_meta->isChecked() == true ) ui->checkBox_shortcut_magnification_meta->click(); ui->comboBox_shortcut_magnification->setCurrentText( "F9" ); } void QvkGlobalShortcut::slot_toolButton_shortcut_camera_reset() { if ( ui->checkBox_shortcut_camera_strg->isChecked() == false ) ui->checkBox_shortcut_camera_strg->click(); if ( ui->checkBox_shortcut_camera_shift->isChecked() == false ) ui->checkBox_shortcut_camera_shift->click(); if ( ui->checkBox_shortcut_camera_alt->isChecked() == true ) ui->checkBox_shortcut_camera_alt->click(); if ( ui->checkBox_shortcut_camera_meta->isChecked() == true ) ui->checkBox_shortcut_camera_meta->click(); ui->comboBox_shortcut_camera->setCurrentText( "F8" ); } void QvkGlobalShortcut::slot_toolButton_shortcut_showclick_reset() { if ( ui->checkBox_shortcut_showclick_strg->isChecked() == false ) ui->checkBox_shortcut_showclick_strg->click(); if ( ui->checkBox_shortcut_showclick_shift->isChecked() == false ) ui->checkBox_shortcut_showclick_shift->click(); if ( ui->checkBox_shortcut_showclick_alt->isChecked() == true ) ui->checkBox_shortcut_showclick_alt->click(); if ( ui->checkBox_shortcut_showclick_meta->isChecked() == true ) ui->checkBox_shortcut_showclick_meta->click(); ui->comboBox_shortcut_showclick->setCurrentText( "F7" ); } void QvkGlobalShortcut::slot_toolButton_shortcut_halo_reset() { if ( ui->checkBox_shortcut_halo_strg->isChecked() == false ) ui->checkBox_shortcut_halo_strg->click(); if ( ui->checkBox_shortcut_halo_shift->isChecked() == false ) ui->checkBox_shortcut_halo_shift->click(); if ( ui->checkBox_shortcut_halo_alt->isChecked() == true ) ui->checkBox_shortcut_halo_alt->click(); if ( ui->checkBox_shortcut_halo_meta->isChecked() == true ) ui->checkBox_shortcut_halo_meta->click(); ui->comboBox_shortcut_halo->setCurrentText( "F6" ); } void QvkGlobalShortcut::slot_toolButton_shortcut_snapshot_reset() { if ( ui->checkBox_shortcut_snapshot_strg->isChecked() == false ) ui->checkBox_shortcut_snapshot_strg->click(); if ( ui->checkBox_shortcut_snapshot_shift->isChecked() == false ) ui->checkBox_shortcut_snapshot_shift->click(); if ( ui->checkBox_shortcut_snapshot_alt->isChecked() == true ) ui->checkBox_shortcut_snapshot_alt->click(); if ( ui->checkBox_shortcut_snapshot_meta->isChecked() == true ) ui->checkBox_shortcut_snapshot_meta->click(); ui->comboBox_shortcut_snapshot->setCurrentText( "F5" ); } vokoscreenNG-3.7.0/src/QvkGlobalShortcut/QvkGlobalShortcut.h000066400000000000000000000063131444746353100241360ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKGLOBALSHORTCUT_H #define QVKGLOBALSHORTCUT_H #include "ui_formMainWindow.h" #include "qglobalshortcut.h" #include "QvkSpezialCheckbox.h" #include #include #include #include class QvkGlobalShortcut: public QObject { Q_OBJECT public: QvkGlobalShortcut( QMainWindow *mainWindow, Ui_formMainWindow *ui_mainwindow ); virtual ~QvkGlobalShortcut(); public slots: void slot_startStop(); void slot_checkbox_shortcut_start_clicked( bool value ); void slot_checkbox_shortcut_start_currentIndexChanged( int value ); void slot_toolButton_shortcut_start_reset(); void slot_checkbox_shortcut_pause_clicked( bool value ); void slot_checkbox_shortcut_pause_currentIndexChanged( int value ); void slot_toolButton_shortcut_pause_reset(); void slot_checkbox_shortcut_magnification_clicked( bool value ); void slot_checkbox_shortcut_magnification_currentIndexChanged( int value ); void slot_toolButton_shortcut_magnification_reset(); void slot_checkbox_shortcut_camera_clicked( bool value ); void slot_checkbox_shortcut_camera_currentIndexChanged( int value ); void slot_toolButton_shortcut_camera_reset(); void slot_checkbox_shortcut_showclick_clicked( bool value ); void slot_checkbox_shortcut_showclick_currentIndexChanged( int value ); void slot_toolButton_shortcut_showclick_reset(); void slot_checkbox_shortcut_halo_clicked( bool value ); void slot_checkbox_shortcut_halo_currentIndexChanged( int value ); void slot_toolButton_shortcut_halo_reset(); void slot_checkbox_shortcut_snapshot_clicked( bool value ); void slot_checkbox_shortcut_snapshot_currentIndexChanged( int value ); void slot_toolButton_shortcut_snapshot_reset(); private: Ui_formMainWindow *ui; bool isBusy(QString check); QString boolToString( bool bo ); QGlobalShortcut *shortcutStart; QGlobalShortcut *shortcutPause; QGlobalShortcut *shortcutMagnification; QGlobalShortcut *shortcutCamera; QGlobalShortcut *shortcutShowclick; QGlobalShortcut *shortcutHalo; QGlobalShortcut *shortcutSnapshot; QvkSpezialCheckbox *spezialCheckboxShowclick; QvkSpezialCheckbox *spezialCheckboxHalo; private slots: void slot_pauseContinue(); void slot_setOrUnsetShortcut( bool value ); protected: signals: void signal_shortcutSystray( QString, QString ); }; #endif vokoscreenNG-3.7.0/src/QvkGlobalShortcut/QvkGlobalShortcut.pri000066400000000000000000000002161444746353100244750ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkGlobalShortcut.h SOURCES += $$PWD/QvkGlobalShortcut.cpp vokoscreenNG-3.7.0/src/applications/000077500000000000000000000000001444746353100174145ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/applications/INFO000066400000000000000000000000461444746353100200720ustar00rootroot00000000000000vokoscreenNG.desktop vokoscreenNG.png vokoscreenNG-3.7.0/src/applications/vokoscreenNG.desktop000066400000000000000000000005451444746353100234160ustar00rootroot00000000000000[Desktop Entry] Name=vokoscreenNG GenericName=Screencast Creator GenericName[de]=Screencast-Erstellung Comment=Easy to use desktop recorder Comment[de]=Einfach zu bedienender Desktop-Recorder Exec=vokoscreenNG Icon=vokoscreenNG Terminal=false Type=Application Categories=AudioVideo;Player;Recorder; Keywords=Player;Capture;Audio;Video;Screencast;GStreamer; vokoscreenNG-3.7.0/src/applications/vokoscreenNG.png000066400000000000000000002161601444746353100225330ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGD pHYs B(xtIME.kIDATxy&y̬㽾뻧{n̉ E(JL꠬#d)7vc#,XKtش(ʖ")R$Mt.wwwUYUoV}o@'g~̬|䓄;4M4Mvwkz/po2 70`cfu "<x[-ߟnn9ᜋիW7ϖK"3k"e=" `|0ruvyp1~~+n~`-J;\$x>(fΨ%KuX"Zr;]J$4K*"?3%>aR^R[:R f !Fιs͈]nn/%؊ߙʕ+\""fCEv.Us.ckef""rcNKD93(AJ\NDŅ t9.[vys΍S yܮ(9^j;\\en:qh?3;EH"@ &!HoEQy/@b+KYGLd)F1*m"4/2CxhK`+? .8fΉ3"0&Νߩw"wsonwAsn4͎9Bz"Z"Э[/^Y3& 8V.bXq %tQ,YJ !$D$JA!vg D„8y_͒4EPXr 0ָ1y J-b0N&)@Q[$I?}|I[* p MW2?ٻ߽R1eu yۛ7o}Wf}w(!Xj)Z)}OH^] eY#II0DpLG *(? ACҘluuWR(&*%Y)J VJT C $@Xs  |¿ƿmZDНtcVQRք&ʿOPnc]k؊Tx I.o8/b V|`fll$E(ө$I0+1@`A%l0B0A+'^"˥l IF)W_Y u'dz)NB!#Gőpq$Rő8.])dAR R,)QqIoύw\rT""}DBÂIs;efS0qffRR{3ø}B3M@& #'Iy$IRJZVW'өPLSIc(,q0aX6Xfc /;O Gx"+b@0Jm bA)OƊh4h8'~Ď`Ig&QlX8bdӘl'!DI$mcrI$lM#D4.RNIJGJr$+?K)y*0,ùBaz9EQ/\0QAD9gTO><DosM#90ϲ,Kt5@߉I*XpaYaa11l#k:2a:Xq7X2;X`+[_ K:AL$H$/ X'LCM5bWY RXIkGRpJ%l4McݘL DD#RH=CqR*@TB{EØιbOɖ͏tQ{Sx<FB>{`.L 18(="Cf޷?svp'4[.p?@ txꜫ,۝\;{}* ~Tx~P*uFyP2%JRE܃unj :se9iQ2!7f6ȵC-:+SVS?]ޥQ" XRעr,p+ '$RMem'b^ĦcnqH VR5kk T_,;QHmܙ+|xơm7k0EJe_uiFP( .d|@D|`*FolD6O?%T@2e{sNkqs%\K8q &&r찿?B7T orr~a.%Ax-xB,^ EJ0*U_TD^i[e0Q F̠r˄c6qxBB;mXBZs0aKϮZ>J%9D[G@RH A`Af)bl"٦D]`3lE6ȥT%ݘ\'"+TM*+@B$Wx B ~.9SHfհ|'g,BٔHJv.S[2&”5C)|ܹs/=7&2F + Ù*{9‰L(Lq8"Uj\Ir}sZo2 F`Ka0jfӬ+.`:e٢T8բx]9~R Wc^8ZfFarmDž.C+ W>łICW w7;ۛ/1X H7C.p2rUl1L7lz1 aDb Df@BD Q>BTNS^{ELbHÓJ gv.\o~m:+Evvvfι* ps])9OTy@K]I1})X..zW﹖5A먵-Zc13 c U7]5\IHQe ԫBP=sT3 v_ ¼ȍ<7rV ,7<F#˭롭Po&+kI ]$x`SXR,5 A̩tąNbg1)뵔u/VJRE>Ի7IHB*C[TLevTTxbo̰Ο?sM~R1T< s) cMB9BE s !"렔l0Y"9<3-B( 0״C Q]#Ӄ[ TmjQ;yADžVQ=\" ^,~$hm1/ fY1yny8+E1C %elF=TYƁHٮrݏ\1b-uzD)X)dJ)rB()+uZeUO Aaw],U2 \ #ByOn?PyRftCk s )e'&?" J[ CmAE-%j#h3`hkʵ,Ͷ"ԂXcaCT3j>oXQ AntywʿًV"~%M\<^ v)'V-X 4A!">88(fYvmǎv20Iyny6^ <ӈ1F(jiHxt)C5=No޲CI- @ϋDEHP&i0eK(Xm}4׼he%̠&z *.8_j]p!5^N$9' ,Xs`IvM#61l7&dz#"%8VTgDTXP碌r>|GK* v oݺULl=B<dIIk>k[t"PuC"&/#ފ!8AXh#&6j=aW \6Bsf.u R])iMK9t̔pjC?׌EK yVrX!L`SM Le.-"L֦QnŦl0l ǂlK (v\uIr:o~t%<Y.o0d2ɖt=Ʌ]0lCJ?Z[h-EU_6%ϫڠD͢b6,(WL-¯SUYwx*B;d j&-ԸG8Kw{u ¤` ¿MC/LiQ5p]8J= &QY:-! g@f9"^_5s/;qb+6i(љHWxDZ+@ߏXT RnF:);@ 6әSDǓ," *a&-+kh_[!hn]hW/tCV~ZBm c@Ӛ6!'}OpӼl;l±טEh2CT! ZӂV/`\,2eD.U9\S14Carp"oɢ(CD$O?tq } (pƍ1 z[]׼I:>%BoR ~,jve<Xh/4І^QKr%&N)hA LU 2Q v"#r7DS / /ǫ̡/)Flj&NoQ;;Lbq[+QO~i 1Kr,c%F:۟(-5jߗIoT K.M{zȮL#f$”A-ˤa!4k-FA{ѴK`a>5fB^r_π5̏jvQ:"eD@-S `LkCxV|pKuh FDLn0 ༰lYu0*(DuL'M}Gf /¸ԺEn}-)xpcO9`C^rP*e 2/\!`!A7HxFlfVC5->oB mՁ^bI$q=_d*H 1*\cE^Ʌ ֿ^6q{_dtIիWG067Sҁu"k2a]M'$L+C`jBk %p,' hf $m1jOHdPJ2Rڸ jA1 XϷL[$.5?*.!fBK4ٵ4Ug8|-v}C:0y~]hE%a\XEB#LKc 5  h+ЖAYA]_o/(3$n:pVucjTPTevL-=b'mjQ6{ *ebG]A1;"[l 8 0"J TV?-(a@ V 4Yu>8!#P[i&}0+|u] @P90c.pͻ@8mpݶьyf*RNeк k}L0=g1~'KTMh!;8MS71OXDpNGZ ng&9AWFXdmKwBӮp7ro ! hgA%g(Ŕ(P,4)h.'krΠpZi5tQP5 ,JW8 p鱊;,cWXVN| ~@|@[IyACB*QK,M7  .:$xA-6ZLMFf662W<5l\%ur$).LcȬ !=)^GVL@)EW^={a5cGҜ9V6Jk ) R56Tjp()@R%-K;\fFBFRK[(7_;N8Nw&=ܺ~l Xc`A q_A7mnlB%Bdh7/ˍgxmt]g7be"9>˒oa.c[b*~O+%jJ !Jbb.hX0ڜ*pMP ,BcYc/vD\cP0Ԛ*'fm{2v@03GQD/rIn:yW#qݪ#_H+"cya1HG[/VLsBT`2[@86:E~]+7v?( d1n\/{7b6"Ok5ʄ~"i`⮻~hw߸8vl}_hzR;FaCJm],X=- )hdܞWeZo Ap &>QE&aj߰[hi^Ts`ޟd:τ֚['wNe `z[EJ/ɳ{J I$flr%vj_Ƽ0т o6،}AOi1 Il誰Hđ䳧O`cs3|dc2K_l<R((Ag5"Q"J"H%E IvMl=m8m֕qs]; z %ZX 0Ц3xi0,$C@\@-DfU.SO-/6WRc6̄v?kgBH&lyYppOzj 3 ]qɩSE末 G?}NX`~J(O&. \ t:]]=#۟Á H khMB=pI"ٶۮFpEn>/tp51ݿLFgX[v `*~#?skkX pd{k++grBLD'(|߸y.뼜O["Vˬ9$1H8:Фuu +B8l3 "ΰ Z&P{.ZQ 3`Z*xbb 9k{Z1&$L|B)/p1 <$3Ƹp8[[[YIf+ A3Fs>2*⯍ύT%ag*}c u/cvʗޭKk'!KHb`ss ??>>mg9 Gn "k- 12sYa'}IgϜG'S?SZvM'KPnUqG'7(Ch괸?DRj> vGۦGhauԌh:B=\j-ކu`ޙ(r2RISPQ9w <hҾURA!vwwwٳD4CH;S;2(7U%^ctUsѣHr*T쬦k/H҈ =Sy||OW^?nj,[(s0V8Ƿ 0y|5Mbq1LP%WU9텄.<( m u s9<ڰ%W(ew/))%E@s>`Ռ vv0ECm60w[?hqm)64``!&S͓yQ♙RUo&Y;4cT~8p;KfA!;;;Y.q$FWBT%6K'YfMcRp P."sf{ =%z.?|=t=w?yC\~|w~ Nl?)ER`uc>ѭ >$Ph qX{BRw\kc>?+3 8`Mm Fk;.':<|PXW&M92 `ˀȊ 9_=yhUL t-1AkhTS|0ލ٪z]%y`{L1/=} |wAnKϵ]k !nޚB@&/ 65%^!T-n 8N(*/~?{@!~Ռi܇Ǟy ?<=8ss{' {2ܼy W^Ko~ -ces{~1Y<8!|F9W|B"+ yO}S|jQ)JE]g=g܍`hL$!LNuTz\ܺ.}pC "PŗJ9o]`h_nyo[0BguH]Ddd2ȵmZmSб{( ޘ(DUG].wbf.;8\GQi#"){@ PˣIi*Rk &ܢRiFVEc/Dpb"IS})$iWe|xIԭQzKRl?G{>{cxM@c4 t,|#c|_wc\v @8 B%:J@m=88pu\>6~9(cSc,ޠfI(y 8e<{)%g5m^"fP N 9(𒲻eY6cJl=Éݛu8Gaǖ  @[* Xy[ȯWq4#[l/}c'?nHpBRJ x1O?> "MeX+r֝m8ebX1@>6hR 0:Ҋ5\n#4mj&hnqa8Ej} 30<2u@D__xh<'5iil 2n :mC2^dV6݃9kLx'pk>@a4gͳ69>8Li. DgpSeι``:aBA|ICEů± $)UgSz?>|?#?,FEZc( 4,ó=$Ad${e]UNv~/XzwiUYCmE uͰ/-@/7h>vW1 ` '&s At(pD]0cύ*tA9Rr|- ඞvv2h^~ pc5ґV#:eO:Xܕ`BktEHe&:5Al7K|/ 1tc3)O)@Ç{Bun Ϳp !88X9W_W1jn c0O?MaL_]|#?oBYCmJJ^2R4 $aT(J^\_1Fvз@]|n>P-^U4\fhecH|O%1q(ӃUf>!oI _V8 bfֺ9G\(B^ux:/x}ChIvpM)B`Xǘ(DJ$Gή4He=t/ރ8vyGS?c3sO"Mc(PhN`wow쟃0XYXa.x'px(Q !D@եF oe?3BW0%W2 3t"Nkvs;>3 eC^i…?>/i74o^jwL 2H9VAEuXw"hK4Cey!LL J&ҖaQ!tSV(S&sa&̲77Z+9c,7gfidk/.|(kgAB4܏܃g|+>RȊqaw/󿀔iP.@F)Q|> :xQ2~ eR2.~Z!#\; >)w̧p5(Bl>g^?GB#>M? ڠֲiu!VnĭkǸ51-oԏ& i sRY!1"j… ߉r'PdB'fu XHSbL>X0P@ jNo U05X(Ibe'k} 9BpC?yQ:cz+3}܊m7-@@TAmSzxl@%řt`tڮloc:d)YR c(5U֢~˛1;"7M&3Lʋ$ҭb,ӬM27ko CDl']V)cLfegS|)N:ݍRe,p8q$>;`E?@t9.^&QE@R >z?K` e*^Gl!N Nېjk_x챇$«oLXH!67~ z.*nܼ<ϰ|J̌g~1ڿ'rvk0*WXޞ/JuRׯKq&$C1Ɍh:%* b`C^Uց-*M,[Cup]\cg={<~4"LIX,3xkC+ 3RQEQPTtu/3%3H @D|ppPLDZ룧͵]>j֠L8P聻VFThܠ{#|Fw4 d .~}R6':i׿m"I:`@XD*O9`U%9pI<3z5C `%wvOOCJ )%^x0 ڗ|2Aۃ _:N}X8u 8v=__ 9 Gꮲ3.,ĵ+BFB޼)EތRYC)=wϕ\0xS(yأ߶j2!jQf1M3͓f.5C ( `14b ZЙQ$qĪtuBFEQc 8Mcsݖff</ H X\Cg5PCcH,&)2ҋqrC8L9}WWU>-T*Bܳ`{m NǯCIS:iE]\(O #AD##.7c>vIYl9gZׂH'`8xΫM.f 1Է/pjCDPa4_v /q 7.?" GnwiQp f/Hvwp&].*H `{[[=>d4ǟ/Gnq0L0zZc~Tf/Ute쀜3( ZS/vr w*FW۸'C<9 kr8g`YñckS'uK-P-&baTveC8bT'@`]1Ԍ$G^'c$B4 :/̧ gT03Z΁˼ eE^TIA*b'ю̈́pkUOowIc,=/"pW܋(C$$4Ogp76j`~)~q;b04(CO?+|,B^h28q N"N6>Hcbk{I#ojqk@*W_zۿ(J sƣ!n\b>A<@R'xƛ'xGS<B0Ɛ~Yo|I}QYhX[xW-Ȧ15٘l3 YQIDHzR>JJnv&9K+LeޏvZנ:">8R)cOLD='|p,Lk*M5Xt'Yl-n|jc@5!~18ծ k-'3|בφ9@o$!D½}+cM'W__B6ϑvzP  T=HFlYW5h'efƟxN^5tsş  z\"7JbD0/`orf >0&ík701H=Fq|}ַDHs N/HMZ<'sEa]$CdmksXSZ krnʼ#pGv}XsM",d--tAdy47;97=IYwh}# Fȸ,+iU-ő@w*ɋB v5+3oDk|6͵DwSeH( Ξ9~BkRKY/|[H;]$IA?rB }‹2, ywȌb:u=<?\qrU/I)  .1&)s7wgxsxk'+LߐtkR$/~Knv88ⲗ*ar8 JDրd)+Br,t=+b5+xp A\hKY\Zz^xB,O0jKӈg*I,ީ%0C $R]}''m`L|b!Wxǭ7 A8^sl;PQT܃RVQ%L4[oS**FڌCSkOle\ E0D = sZ"X_waK >໊was-nI)ǒ$_ޗ1k迳d(oT*\̶hggKqNlǙ%=Üfƺʮs}ହ4&tcld:C6a.'] OXS@\_5L1#0f簱b{Utn'x!H:Rt]lSQMt\] /y2p}8>D"07ю}-TgN9@Gf Rֺ$RHÖ4y])oh~W k @)7nȚyꀓGLH?R&2aEۇ&. `}̳=8ppY0;cQX_H$"0`gĵq!b {Փ[k(?dm7YIM2Yo:30f c'QpS (^~%X!XcmȨ R(|B\y~!q3h=.z|o!Dψ:-՜͵i7F4z8^4l6PuH Z'¤eIIù'\Ŧ ;"MDU`hu8R^e X HdQvz '[%bi8OaͫHYluLgȲiW^(I0A"gS@*ZAQ| ?H!*>8WA@y1믾^o Q7R}b1F!&1i킙aq܅$|y:rqHP1[Al/ {=gՑ,dT;@-"25; &Pc4L kB0iH`4SԬmSf-<%w:-) ~[h| WSJ/= (l*{{HƢ$=wG[ Liӂg2 “x ޮ* K2c``}A%Ċn+Ha#xS x3v "\$I=8RѬ L3׃`zh21v):`.!ˮBz-|OGm˜RwvDk-'DtRtqca ,!>zAx8݀X3J8Wdb86|[:IKBB 31uX8KTh1qͨ[t"!e 4XcxSU&|.o$F&ߐ/0ii^FQuxj?~ 6<[˺65K=Xs^BA( ɭh2tFK()lHVd N :~@FuuY^xw? )hZ*l !S$Q>v?zY51aM; ^ /kׯc:CInlbscAJ`8M(GQ@>s {tb\r^y#R3$PVTA9IiGU Xc$!..dg`Tˈ<4d]h)؁sTǙv/drBZY`$$_Y܏yP@Z0*ߗpx}`=8zKEIλSdY.p ι{fdtKĉacOc2"b)vmFrXLp9h c  OR1Sx{8BAk )$Bx`I!Mt "%AH!dP `m @Ptd N C/M@B#Q@,s&v"ꭲHܶm)بr- 0ֱq 1DH$Cnu:wO^[P@74մe*ТoN8Ӑ;cYS#@֝' .駟vh}iy; Aj55wQW^ !1COu':: ˓5Bk czke}ucH%D( &loY(oNp`^}]M繗XtR|O}Z{]I4tHI%H*1f0,zY-X[ 2h-*̦ۢsJA1ws74R) yݎ-eH`F&jḬmq-spֱ}Ȯ0K}H mlA7s6]ŸxzORc@ WV`dF(:WYI(o\#Zna\8k}YLVI!` )ÙGR9DD(r8:k NڂRଅvTf 1=LJZL*W+-)wSZ"IbtRO>n\~[[[HI Mt{z ~[A;7/cobޕr*XCȮǽؕ_~S'ʮ^]2DBuA*S%ǀ" fa/Ɖ#DPD][fF @ eE`r@&&JRf (ViFL*tAEr0?SO";V@'`)ho 2?鬲rrz‘ |IG$9X|RT-^;@H]c~?ow:Ȳ JJZZ$bX ¯CvkDc2!Mq^ ?]\y8'N߅7~1ovD1 l43>=Y) Ơ߃%˸r v3\AGGaAӁuA"PK D j-kނ9fkqkzQy*7/0OD`j~x \h1{Z@yޅo 3G Zi,bX'tcGޔ\K1Dg߱v@;Mtjy-L'b!;_4 ڛ+#6G~k`-a $[XShF()aR8Xʚ9%(& Jʵx7ہ]ܼvBHX(K_?'w#.́Hň>6q}} B";qO|׮_ŋ1Mps%<އ0 Xӗ,,,v뚼fQNfW;mul-tH~sO i\kz\G8DUu:wQ_UHR.Yˌ~Jk4;c`ӵ[pFdKk`T}|*`,_Mp8,lkkά^)%J2cpsoB`5)m(KdH. Fâ(6*S{pPlrq *"d1ItJ|_ޭ9J)\:3x)8N @KLU[>s\:kaKD*ɻp{+c5+}\W/_֏dI:(W5bDL>8D[nW7ynn5APc`^B Bke!PCE((l_{ : & 4ARԒչ_'WJ.0Mn4q0l2YUHHI#"hc-oѶ+%~١ze6/eÖ]! /낕Xg)oHR'5%ʈr.+ A%ZBU!xm` Uu?g!AA"X<wBNDŅ.J)@Q+ޱ] `aeEJI{{{ck.w"ғ`lcϷ0θ׉q\}u:0&GX]D6Gwujha9q}o{pS^ ll-t VVV.B "_o@7%5H%ύ1ʼn'1X .61R唄hU!W_&$Ǯf$DHq) HDR@l ` pEelZΈQے &Wj}+P& C3>xper =SeohDJZI~EL8vF( *ǂWZ̢4bF ',bFψMr>RUgea Zܜ32}E!Ձ e6B z¸Rx;X_ ":#1v=KHǤ4A`Fq`x璄U1qιjCsα/_cMYˢ:uyo-IF7"xl-qu@Y6|>>ۙ\àL^T.!d$$1$F)12 SO],pSonl80C?'ԳQ9<uw0k9nKW%wb)@+yꀞ MA83Pn@ROIrQ|LMEguy+-pcL8<4@T `ۇid8tO{-S  XIi՛mn7`#j8ʔpw,o;l0L\e`^GD#~d"E5x=}%ڭ F s DN-`<cR]U N@{\`z+ Qya4`ggǏs :`fI$֏??_}+xŹsOcks]*1pk&nݸtcDHQd0#(w0:Јd~XZMk()Ŝ 0 Q\Q-j*5; P_& uc i mB #C "ДXsi"ڏzj^! δ+yͬ";uRз~.U"\vm"%Ud,>%V{n;X\m`w*KSnlau}׮\s:=<.$YB>xc\_+Cv`+Cwױ$=w F>F cH3 #|ױ7@xא:U 8;F}83Eu uE)`^o77q1m9$QdlSbC D1S0ɨ=/Y 5q%̕l]- Q c>"qK5dnKJ$@D;cLPj&57k𭕷渃vx҆>P&Dȵ|dxqF&PYʈ J{9~ vo`]z@ޓlR2NCAcssS?u8voC6] (r_@z#)^x>u|h8׿U8WH 힄5s3ClºZ!2*^95cŃkkdC掳`];5 x'[z-0"*ռ(3(?wD귶Ju'"% ,@'X>睨s.b෩+ ޛd:˥1 ReS… N,n 9GDsE8$*(+`xlv vEz7_!,:k'80bNAy'," +@294H!ex ^qu,{?A(,00vhx70"1& q hA oB>L1^)w D A @B߃ w:?zAЂw&R2)#**hzj{(S@5PȐco~ςv8-I!Li &'`qf"8Rl!aE &wpbwVQb\"p+RLDY1R#t̼FD;'q'dz23sv<WVVi&Jҕ-Y^(',PʬDJqn{M2kNn#+߂\P*XvAR.\H;ې:qGvN$0v8Gu RxߓCILÚ4W3O'/!TĔ$@)HT5bBPE街 `l,H[b`F"-I &p8RVpnsKjH ʳheB$HW=T$asO LJWxaX"ùY!B&@y8+1]XSGaSMGݒsEQhΫ[rByn2lC~Q ̸'{ '`,.~]DQ}W鬅??"sW`zǙgIbvvޓ֕+cR)8ǐJZY$ˆ=fCau(v,uv-lq);W!D!;([ 9g n~jhǕ=6"N|OIEaT՞4$D1_Af3V./"v~7ڽJ.t۱ 8LC+р:ڴ}赩% H p}H.$"ʷf#=״\vvv&Lɫ=.dX .Oxs.eJu1ξY}!~ӕkqӘL&X]]p{p鍋>^!\c:xGgq,D._,fNyܹf;;;k'? IW=4:^ .0ލNŗ)D*pn؇VAB Y≧P19mzm( {ޱhexI]yߩ. 6HG)?[ǧU[5JB_J;ę4ߣk_Ku{]1tV DrЅd6t:d:|>d2ְH)wv:t2b8D !UMߣ{]U|Q~k|^m9$ .(붖vW$O$ E(IJ":~Rg|۠Fvo ^ hdrα(|J+O@%7W#FM` cdz7jo2lo b>Om=!uq0auu O=,>߃19: @rܟ? YDq^xvvwtzƫh w]}vQ+af &tO֬xMqQtWV!U4!vv] OƘNg Y =FRD(RibeeX_:.tQH}lm]oo|Q|c 3xdɽ{c(ZFBw &Rq.DT1{}b^Qsh[0:21q,]5:LfESTon;Jk|=מ]it,+W܏=ee \vO>Enn_PU9+ #<(RLxe dˠo?8>no`xS^6W*,~AVT#qʫ+ <xW!e (BP?' pdkg`<:Dt7/|KcG!`Vy|oV3;/)qE} t;3|{k88xlk%.s, yx ={{/Ϳ/H;׾t0+nLdi,x7^kň#8_) Dԅ64~<0F` OKky.ܽϞA> M;Ї?G{z SOm /"߂vr!OİK.^{*#N֛P`n\Sghd%6 2 L D0{7p1yo^0\px.]f}U;t!i Sdmwl R|1lLg2ć>^q ISTZ_mL&c3fsfS 8~NAc;c'Oa>coo.\Kpe9D0gƃ>#;H'kiiMB~<Dp8( Rw8gG|r悷rF1ƆϹa!qj'Z\-J"E8jM;kBعQ.^8y9u@\x#Óy WQU?#]\q{3la/| {l@Wey@2+`^xn_§sHBQX.%1]RlM&~>lcr_}e"GU_o1@-#۠вm1ňD_o(|q4"_Mb<c6b6رcg>G%ٚ IHqbccpI8s <.^{5<FȲ 7#{A`6C{C\~O?˕ӻcQycfFAJ['`4+eU䓄6@:!D7׫F֚C-"@viX\Kw/`H*>ц_?A8Mi4cc_}K!>3?n`1o^F^Uk{%9d\qA(>Gs cڽVHѸ3|_ ,Jv@́=a/_Tчt6GEM;gq >^l17!,[D-CQb7]@W&*Շ<'v:0o|:pxxb?>)|n!\7޸[1_VeS;W]yTJvp1 N>NԩS8u>O+_ 1e!GQLǣ>4M{0?q'G :I.ɼ.7 :{h3$ϴFfwO2aIDg%gEe? y'<{x>{0ƅ`<Ǎ[.lxY x/?QnUCHA$!D !;K. |;/? ]LKs`  9٤@o?H/Ig9;lt z\%GGXuz4-=+;4^HD_8g|UQ$fxgpEOOckk yc2bww~.]db: )  ȍ,+#ҫcksIWW?x/7d2FY(ya>>Ik??!l^of24BDy!˲KjcPlfD$=8RJI)`>U/kԘ'4l=EǶ֛]8PFNmHip.X! J#E̦ Yc{s#GkέWBEvq A$aSy/C ZgSMPc̦8ryܼ=ZRFHd<7.o~ ?sxp}E/CDͯC+0FR=TEJ:NO|$IO|Gs*mpbOE#8wuf{1|s?~86Kݽ]k%-]/ `HrV$Dqm nݺo`Ơ{;;G1qMEY߷NUDD",n_z#jYѴN_ߕCv軿;sE?`pJA E5g~?@V 3;^&916E㭝X*30TDYl:N7)ozqB>O`p*p 0s ((Q  \rP3 ī/|Q;tv0`c{Bu88vgq5,f$IiO.inb9fR,۠6gяWd6ωL6WSyR1/^5cooE'?-ܸq{Ng.3NR/2!0-yZ^? |p =ƳOˤwލIN cy.*W!)l~X=^Vu֚pf:ǎkM aAwϼf:dl4Cm.`wES P^|>l:nO'7b׿՟A)e P 9\K@ti~E<Ѓv&s`f3 by^˷'{OFH;=N=t*qۀ>dlAt7 u>5F|C'lB'p$oܹs,//⩧Ro&̳~cץ%>$\;&bS#۔tx2ŷ=⩏};;;?"ctV14<; t¿W#Z1Vh"lŰKhJADཀྵL"'$ (~XZAAYUx޾Ǫ3 wH($kxȊ5zmQ,0[fJ]yA!H?FmMAW._Ÿ=o0ϐ=QA@VjJD:Q!r/}U\~[u ro-@g3ĵ~pn|2Nۣ+w:=ll{[mT{y~Lwq :~GC!/^e~gds75\v@:XB"Xjc=orߗm+M$K0x㍋=zgP9 .^#/rDqLG~vI䗾)JyuK7;"%Dㅈ&BEI9 "ַmx{`Z9E5L7,输&g%z|.މ h`oCYc1nZk䠀v*Iv%ETK-@\k@Iԁ]J(dY:lc} `?QCٜ{!ͭ$Ɛ6Lw`E [;,O<ܧ^<¯71M{:0PJԶi }Gf+ϗU(!%ï/ao<ƠG%e=6WiY6|2B'<nO|8"RQ6(8{Kמ_@+@wX=轔')_۷0b< >O__RXg^'j$bK',u0 e0s؆Z@gٟI>s _pxxsAJ\xip8Dґa7/CG P]xdP/6 YA7TeN3($#] QZvzS˲87HPoU]t0p視j?ޖ/[5y+cig{Ҕ]$><8NN4ǟc'w{<(` od<`"ϱX!U'iM/呓g$5ƍF'8q~~/]W1/,Tj9 _}ܳ~*0e,95eZ~z @_ƳϾsگw~w0!۷]EJskoCT9[K,N*a ͑H2z[Vr[2J"Vm:w`!ˢ(8n&XJav*y4'{a6rwP""Z0-w\n`& T'NcQ'cd1ᇐ i b^):ijMLi4Mqõ ~?w7nJC 1ܾW1e8PPXdk/\CKJ0l۸68Ġ73d Aؽo<<>3}݋ٟ#NvwobsscG"NRR瘇wI[@$0 {Sgy&uAr?G'[$^^{|b;ZGߤv!Y| n\'d%fͦ3ܾiGqBJG!a@vh6LỈNnv?/^dz/޸4*Jd)tU`MiN:uf-&'"P*B룳CgP;u`/Y~cDRbfS;w{L&f'?|w۷k1XXRtm)K+0_e܄+xJ Af up1 X֊Wːbr Y(JIx 8q>㳟,^yȲp z=$IBiptpCTB O̓~K8uld[&:y,}f>sɧzjGǏB_& -@׮]y^K"(%ԑ(7tQ.Y9{ki{xoY3awTQ|BF-fSY!dAFQXIDid%0Bd`(QsLf0ps`|@U3'iހd`c(b:/~񋈢؅`G' c0$)=k;Hĺ,(H1&MxSKq!w}w[r"0*OE5[$Rc:+5iZbߵꀖHc-}gPMEOIsE(, *K_) Ӹ>I qBvYv,DjrȺ, PHXTr@gcCČIYx2{&2?hP/ ::.∥TtU\z ;;;x'kknbcy݇<}KVXҮI b1_`1=Χ(gctU@_e!p͋p"{| _7 L&$IF[Hqr2 ɀXo0 Xa6+qQ§ %!eQ@U0͛7=F( ( &I6|Gµw%͵h`ql, w5d>#Yf'U ]d*[V Z>KJ "H-3 DbcۈSd$IDLBJR$>&K^6+uf_sT>eQ6M݅TU•W0"lO~8rnܸ_| e?(C-=Ii !lMЕ!~)"$MHN+( ën_D5?%%b)/*> C|?g Ec>`R)Ʒ^jak m9NDGy!4NWby~(_uSFQWBߜxU,CɼhEZୱg8E8u݄D ѬFڌLdqJbSKHH@ELR*%)!!c5#< bGi"i3Ͽ7 nf"Q()1Lp%, fsloo'@Y8Lgs(W| XˏrG!)\tCԔ˴V_d3 ;qcN< uS<@kȯ}e'p\koࡇG?Q_F4x8Dq똟3 Ez׾uEaL&u{*$?Uc;)`pQiJM_ׯWZBm'n߅} *88vz!<.yH|,ϠDrÆ\UCs߮~H"j2TYDt2»Tח'ZЛpi/>wzA| %m`\ke0s+6&{^<7Wz85![>R̘e[cbhADBENnJ9EeX5 } jqיG; x<V-)4xT &yeܣxkn,z!"]i"%8ѣGa>oc:A)6~oR'A`HƷ*sʬERu8dhEnTt=l lAvG1,kA][zMFUХ`}}cF`pe<#8}4o*E<ˬQ*."ھ7M!t4f{6v#Tq撃x:i'g0?N@m4X;wdjXnE$OdZ<iR‹X"wzJZ~W7 됉/-» 9+D=C`f ^7`NzY0FWDml1hdiVU~cǎpʵځy@,w=3?=!Udr}$c6s`mp l%PW;|5eoڕ z뾗˿T)D`nj|S!&~P?:EyA1&ϑeЫ f>Xjx~wu x ?Etd\8ƭcvO$= (ϟo.ȧ1K+w@RH1a?FvUBfYb{^o]U(6Hp9뢹O -iTaCNJUEZ N ̰oo|xx8aI,f_u\8Y@n?6:joٗcV `D{hs k'.HZ@kBAyso"T_A% `8tU`8CUUȲ Ei(&?ɓ8?׾)Qه} I,*RJHtc3G1CŶMYVfFө=y!jnY zR!:<#9,Kp{g|bM_1lY@8MOIm!׷њ(Zr4vtBțF& nk8̽Hp ǟj!? WN\`9P6)l˸y^W IdS.Њ>_hMd^jO*N?d|vٳʕ /0R,Q9.+obV ՃSQ栃#=(P.63aX بk51W`+u֚D.Q'QU$S.7E#6CP:wq@Cl!G`nܸ1jU  U9ߩ҆dz<5YZ?`ۊ q>ljm@S5(<+-n!&p:,^#4\iLаgZ}YahGu-[`0X%|CVǾyQ`_), tW7o\Y71KPqJ#MSyݛWq`6b0%d3z`'DqpU6GDeYB)m  !ui-~)ڢcCc$ AgYNeYWi@u}<[n崦[UƊ2c`A-@jSCkc 34 KMg DB1 6X^Y" @VT%/RߍdD616+Z,M-y\|Y~5SH?!(.} 2d~. <L??>8FQX%Хfc`0 Oh$N闠Oy0~ϑv5{!oF~8< R=T.as,ޡ'L)RJ|Ad$p6q?&"'Xoi}C>_@ۅRPJʲB߯9mS1-6W&Qimi$) YVH|m};WWXIBbEފ 9Pe/KΎBZ6Ԕݶ26C֘Կ#XUwm(h"A 32U^FAm`YuR/z>V i}dd>> ?EL% O~F)e݅[w8+~lZWR"rwA\7'8IJJa}[aK(F NCfEA&s_sޱٚ,ln@:+׿֑:5av<`cf]whBn5̬`H"t[uP$eY<rP&R8pk>Afb6-#߅ۃwd|Q ڃMp?m\MM`olim6˅'!4m5%b MmPzDYiPjfr*By[aI IaUS Bt;@߆:d:sH$ GoHZ-ܼyYCy-n03j˲DWjqIt01wn?|:AR PU%8G'cPQd[XdƿK/btlmIoz,rMlPsyiUf^l0 C^A ^,z>W+@D#aKV. ya y K (߽n(!>s/4Sg o#e (B'I'qe.1zየSt:NWG;`UifFccJ @@]!:M &_ۧT\'W݄4ei&Bk]-8 %`60K  kC$p=; 3 x.D`1}N8Qh }w8iZzRLK/ ֿy NDķ80 EeB58FZc6 0xp*N )(h zf udP^~tzm?GV<8y yIlmoDӅ֖ !PU$|W$?&O.Q!#eenIL.YPVBÒ/łʲ@NP{THqxh& Zt:ͫZ&:eR GcEYxsNu?v?~1x-,:Vi 3p Ņ`mCb:rE.$F" $vhBކ\f?O"ok}YBN],"O/ɳP2µ ם/ӣQ c> 'ޅ KpAE8F|$F+"ˬ{&"ѺT$7{2w+\$F@sRiv*g?Ͽ#^#) 6!3ZtZhM@ 'wBJ_Pitm@yJ%XnBhT%hih~kC@C1B[IY oC\(5(d '/APtw8/ ʲJe'*!wr3 L`t"ͣg@V#޼k_kDk8q=Aڷ.Px>Noic@ll4MISb:%i}lS$jz{6g[G$)) p]F.|}p%X, 4MUUMZtj'#!3J/5G6l h(Z%-B` t =Dk u$Pq!v`jY qmpedi NgNqH,A28H:"\ 㫯?=/gx_ĩ#tg~O}3X,ǮE3_o ģlP:)'Ϝ Ln]G!O@y$Ո."tqKȲlٯ]PU6.@=Vש'<ˋ윁$+\܈3wx/u7Zk3LʪV&3a/Q;`ԜjړTcU BJB ~0 Vco50p w Qס`P2=6BTnk(KWvc.A$\.^GU A$p(W97nٳw{~D ll={q *gH)){?(}1d eQO<ƹku6{?>'qriJl _&35{쒭f5g ʲŋKD+PnP@T D#GI8**(6Ah mY0N,˲^&*r4sX75y!ePR3OHe &PAH״mx':A ;p"G˾ Z\{kވwXa15, !$q3q|OᮻBӱzM$I:-\9=ƖR+"n8ػrNƉgЉc"Ez]$LuӍckzۖ].3g 9Dey$,&I _tDIUg\poڈao=W8lHrQ!`}dqD ts.jK};8~-9LD97d3ܰ#'F>xvP 3~qBE^D:ZN'^o!v)l$9pi^!p'l6LǛ*_@kr_'z^}U!`cz>ƿ'#"ČY];IrO-gMU#R n2rɟ s?q,1I?_?ß;on[!MdS٤9+xK!8 &Id%!JwAE`зxA>0$)@t!]աKN{hEI:腼ߍFtк``k`Z2!him fz7{aLg%W՛?zG pZd 0Zf:]sV->p9!eij&BR?3ƬpJ`1#·_F,Kekq8qGN19vQd,C(Ke +᷈W*۪hT# ֥E*-!@Ơ*m|Ci()0L/ى<1:-3t 0L65s0fT%jyݒGo0@Y u<狒RUńmBSFo?Ekej)fi-VC* N!Rjo7P2+fw }HEA R0͑$):^n\,Pt^Cշn[k~Qүqq+%TU0F° x_tWe0*XT6Y(ROXk!uDUo et^0Z6oa iq)AC0i)fiCE a$1sd,㪬YQ Mh籽?!ll矊kQ@)A(ҥc Y<Dn|YH- R{٨FE r " /_Zt:=!Pd<';=߭ d=%gvkϠPQ8X:f0N2s˶}8O1n޼9Y`pt3._*;S YƆdp?\ݠ~Qk[7@b7#<Ӳl  7E ־xIsmU]fŞ9 6t:]]{'Aڐ`[}B.Cm ',X>xn_U1s#k*)`tcDĵ/} eYHNAVAbpJLk8^- @ӂ6Z7z1ʒi4Q,}"|+`} PJ͛݊$})FƬQp2C ۶/Ha'ܣA9Hr& D29ыAXUG~Ӆᵆnb?j"ƨ nni"Ib|_EJGOt\^o,D^HM[ ⃔ K@Br Af9~i\xIbZGgÝ,C-'w⃦VoFRmc)?@KH!iTz$l,9 Y |_Ǘ%£=elt0csp?v<冃؊>*4*F<OJU0x0bs0S^h3"bl 4Og[E5&!SyPmk05Mw6v%ͅkdi!?3DZ:{@ Dt\nPǽ_C>ט$d5M'=[*k6!.<đ^w D C׹`JT 9 fˀ/|^7!XOGТۏ|AK0p eH#5DY 9%ɲAA$tD:{܀8u4￷?g ~ \H֥વa;4(|!hy [ih'(KԮP:n_wvi ?Gb6|6p-&}/3cs8ލI`PN Ow0B{K [^|r>?(Uy'K8:49 OSo[?ϖV s'q, gdxs]?.XwpDQ/BE u<)jps ]pS#"K3RO+{XGmlB__O=Y{e\w(ϖ%ҌZ =:4Α1dT~EGy1b1 MllXa$X,]>& 8k4QNi|6%7b6Kyl/OLb ]arx 7< Fooꯜol 1nB <08rv>{'0V"`,׾ 9D~B@oq ?RH"8Yd\Y:N@"@ ᡵ֡)P/6 H͸$RO` Aؽ=Un@8e)" `'D0{!9ZuuΡfuC A~^i4U ![;EېD1gRPa6 pӣ~!X{{x"/GEFOrdO-kOVIzzSҹ;DclBf<ƘOnTxW/W\ACv]v (e gsγMpĔѓMw6*sa%DKa"Ik}}?DZX8BB:$"uu~\ ^Apm p؊G)rL\m!MgyD`RRͽ9 㽌 |$PW+kBs]b,k@a 7^{lP6-bɽ{eeV-lji F"˾)(ܭo?0NKCu"(o|o>O'~'pilmvQR3Dg#]5k!h]QU| ]fȳm/xkxgoycccnݮ{Obl>lJ3ё =4㋷ 1ti bJhK./$N{FkV<H)I,>ųy.ʲ 5EQdyN~~cWDž4W8@=1F,Vaۍ&te,Ȱ6P">E y)i 4X4_uo &(pTA^HBhh,[jZGͮ6阘 n.|n N&|K_³>O}Sx'q :h]AZ2)X6(aBCM 6j]ek+Ms\z< ^zeLS$Imt:6g1D'M`>![9[hnV؆t` CM﮽ $l4*)b 0#~{ } B!Ѩ RЉ83 H o,x{3%[wSk01K{#[??lȀujkoˆMDh"4A(+,2h _r4:u_~]0+xDH{=WoO)sV(r|O>$y9s[[[.& R#}^c@|=\x/"^{5y4M1n"Mv{6GQ oŴ%v -f|x8©GYIXthX֬ohADHbEJНFOZ <o>sM?n6JMg"PUG)$N$a;`?'f|tKV!ԢLNb;n!q-$ؔuZx|Xn{F f J (}LHn|納<+#i%}`'֜v;8EHl$I2~qY8q[[[p8 J#sL&`ww7oĥKpUH)t$I$zt;=$i /ȲlFYcT(_ʀ)Ԅ$Ds/W&{5)r5Y  = j@fIvШ"7Ac&hk z0Eu3D m"rn Oc}IS6|Hߒ.] oȪʑv$ u;)8B|>ba+ -.\E.b0 Ib&(ƘFx f # $Ivtfe* ysg4K><ǍS! T b@H@̼8i̱ YGJ=ܛ mY,V$>ȩJrA_m7Xn;f4ZS B+ڟAXTʩ>h6;rk+rxY;jU$Z39o^@"afY(tf _'c˵ƣOa{[i|ټMio"NRQnbׯ@(~eifYt7n8`'K:0nZ3iNڱeʉ`y*4]0hh,K!#P!NO $"@QD\GIax)4p0m_ 8X L[{y|TYClj4l\@VSx:YJ8 "w"ѓch:+t,#Y q܉_w~g*dh>y.qkjuY=i$&"I$MPUP"5Ur3kWepqHJܛ|ll埲,Q– .W" ݯ$A2b$cH$UQ xZ`(hAwڤ~L6GC InאQsCbH^/<\@v=nugb}V@+\y(3Uz/ˋ.1Pi4z( `Rf`cCV}#@nF?Р+z ?[&@Xj.mWX⃵x"-gnWv@ Ly.޻͛_WI1FR*XETu,QGg>ۏGJ)uHs0U(Q@Q=Aeu3P#CUxsVGJfkJ:L س>?> Z s8` ;"":l Ta`TZc2͹鑩=x^NQ?lR",} _A0ȩ 0{33yK?CwpK_'>Y-7)G)E2J\1HI8Biclo1<6EPUV\UEEV(cL"#TT $S2D|xOK0 ]\z{S-1'Di9o25_N2ئ5uJ2tbih9"mZ:Z)8NbxHُ*hW4 @ СVa}APs´m~l^v` yB3bG̳a$hȶ`Nh#.iH'|xoJ^eRI(T )HJ ep\bQx?+-Ǡ5tUAWV(ʂfY`%WH TeE]@vT )C$S@2e1ƩM;_x]slGgNlP7Uľ`V"=-&@4Or}N]ѣx`@n8ynyض 67")&0iO0֓pMcŲvRPi-XSt"X!g΅CMdfԕ,04E-w`_wum ~\GZXCs9e縙oHG"=HoJef$]~@!% !N@+d"6hhٰfYų\s,RPd_D=p.ePE"I)16p3.)e7v|p0gN ԱkCusoucE^uW>32@ ~ j0v1:p7,FT&՜a鼄\s+U_~5'I{m8cq@,r ^GEm;$5|#l⢪,ö5fzկL/657r,-jsMɖ65VrvWDu_-cIj_`ȠQgk|'@c{ gղ{ (B?G( 6\cܝaMwa:͆&%׏>棆*)՘A&' `!T6 @"JuT^V2aLD yUHw Ŀz:@d^O qlDY& uu(4QPZQK|b=ѧz?~q2XFЃ1FK))ۛQDR7f%B',r(N9%){YCiXz:5fE$@|a?85AGX~'B6 j: hS|; @"2#JTjN g` plJT1"DB$c&RSx+׋BNG\2fq eB HIV-/NF*H%\SΘ~/([d jSx ˺xeZkEQ+ UjD&v7{Oձ@KQW 6w-D PB~m>gA@W>ȉM`5gq'Acjm< Pd \͉˜\\uA Mʈ-[HP26$"LA"dD 0R q rέ HF Lѝ>6!`c 5ѻGW/c>il% ,("MӤ!%Dv,%P{?W+\[KРnDBB ؼ>+f_ PdhcCղ #{'WRtx`O%0c .UN\-˜ UT` $@ 3)"XUu~P 1y3 itFV \o9V`"#QUiܼ58.8:~/fmZ06 cM^̑~) jXp XϲfFI$ * "+fEjuE12SjY&#r O<AE^Tƺz8nm_ޮ\"̆Y[`Yb6˜'BsugIڂʲ"d  QB)LN@iCwP +!x͔g^pN."qlGCxl|Z'lU^}c?`X+M 8eifٺ”lmD  hmx6/k. CJa@O./7(;d[:coM|Ьb\b h?vkC04. UXW 봯n|!ٻ% )1EB({Ϋ]lءxۦk?DW`Ls}|؟)$st)H0Xj׉h>PeY:>(l8&pٺ1X,xB8 /fK[p7+H`%?.h+Y<@J[1q ,'1r}[;~wuZbͧ 9o"WL@Rzfm02J2]50mN ;군^dxo۞x61%Qh[S8ylǎDTU*1ػ]ЭE\7.5aG`8o l-3lR@IFT))e2 ,{ZB݆Vk#/Z@ޫ@KK3ʺ>#-h[ ֲo9kiɧ9n_^$§xRD.1*1l\1OvքMuXv%¯hGȵGCpm3z&׬ y/N}rO1UI^䢪o`\V,>O֚q҂5r0즤gsP5[0LWHѱ#hʶP+aX!BD|b ,l"m~y<9""3Zo_a9*GnS;Y48϶S=>[z=W' 2ڿ=5߻#XQtRU1#>,>/čqBF,"Mӎ|glJW.&K.J͑rZ/jo0A@*>*/@455!y}jf<,ш $qgG{*02dc7K6~{hM6P˵il`m_Ty7׷ ]έFkJ6߿cP3ںF:O`qth #IQ%\e)&2P_ Ea)%O&( tzf0~E,׉Z Y0KOڕo>, FB`p"A# p!$՜CRJ]:*Wr;|swF}G GC@99@,@F!؜K74G\P ~Y0 yfc,txW0H dQ{H9Z1}CeP Rv@"⃃Wyڷ.!U W?7Ȇ-j~A8XW*5Vbx@$ƣ 3{ETU6MRʏ@8G/ GQ@@#(,VL Bp`M|#KC${|q;X {`%dWQT@Pm"  9xAf ihbF^V\bZx+F hHb4}N5X5M8ckT: /D.-NxuzYo/U*GDL`P"3RB"2g}ߖ6;S >H@.,d $ABp81,td^ /ǯA@Ef껱!CEb(⥰ +%X;6S ؝{bVάP-nÞjA.d)du}'&z4je}jN`0faMw3.p]ᨇN^ `I`)A0$# R|cNf#y}*>Zj0G֚5@ڀO9b +)PE ~u5@M9S D4X`oqq/yYfrqeYKEy׿fUJZ@P}YX)dօ{"c#dFAXDpdLAl "@D`I #$X RfKVJ`%$#-K$TRJ>Q,FT]EVJ -63rTu_*1F)Escָ_ߦ53LHpp8Q2 wZij a# dhql |rۥpj,rvU LZ߆m\ԊڈQlD`MaC,RK*B\jjf6K6< H Z,`X?/JK X`i鲍Q @Zm,В:I,Rđ$Rؾ$ $, HR@ pTM]BV[nLH"W:V A,owEwP7IA!],m =J=$a`84'-͠Pi[tS9M JcHk2TiUŨJ[*mB m641ЮְA0n7 *tJ `EiI[Y%' +Ė`_^ۮ"KbY4J(&`%QL$GM$#AZ)XG :8,$ #ߎoB@IVDLf&"Yq=' .ʞ6E<\Sz(6ô0hߗJ%P2=X9B~f4UEQq78'%7gX1\z.3[,u2h+20AY(`OtR:u!2r[g,K=]!SQj,nNbJUaP l0d$L$a"$HĒ9lb)HB  p`bKp$ :Q-P4xuγ) QDI!}M܂ bJg 35+/a!Rn?nnoumVഀ$E%_wϕM]ͿvGX_Zc Fd0j;* :{"]>S *g~"(D#P+K`3g4W胏i8! Œ~B?2 TLB@I!"$@(b%5% RXH2N~Hes#a"'#*IY`(l);VԠCGIDATD+a"EL$cE)aTHh%+,")I%eZA6lN;{zf,*eмeۈKXYPۛІ胏l?o^dV&Ke)RĊG8D8"VJ0J jZUp$#HZ˒rHQbҙyسLRS#&}D]D }E\>w`tDx =8yc>x*D f~ڛg%Sg0X54Iyh4UeYV5V\*p+wj6 a!lӍ2a] Pa֦G!ewuyH<~0Y2瑙s"zoCh X{cLQ@*e:c3r9djWv DKa8Ƿ?=ADY*f~DVQlNS H*e,bP ry҉]$Vw@m]?ʣt$C(-yx}yYwGQtDePdefe 7֘fnݾ}M.5|$_4!p*bYK;P Xox]=nb{:i׆۰Ԯh PgmJkҾMUUFkmʲDď>@͓\oOl6ˎ;@wXFB+dtE%m?JumX]20ffmݧ2hf6 G`LUUֺX-kgY.RWUeYLUUw{N=\֭7wܹm!= 1l6+'I@e_-f&G޲wB]v+phcLa L KG{ʨM{OUUl᪪JE2eY;]oGsr|p !(D"{;w} lW@5,KLuփ=1|ppVEib0\ozE0@ \)DJ_/.3^U²[]5!es@z5?Ʋ`D~N \i'CV?qDDRJH)o1 .PK1|[QP@IDʵm<{n`B 0yk//_"駟9Oà 6Ƙ(xoooQUvAAXB IzVͲܱcW8`2UUeYy8ee(( >GIZk]孕;XYlǚB5G|3`Xs3{V۟3smkۭ5ub8:Wv{m FNo$".ʲ*U(ʲUUEQHKǦ(,<|-jXZ,z6<[ jVJwk㠰֗ۻ93=;kk`k )z+B ^H\;r BdNABB!()AL]?tW՗CW̮q?5==m?!t0Ff!F-O>=v=`MA-΢Xm~l_th0d2g5]i8`NR3}(wvvΎzDDL8DG9gcM0Rn?\1?[ X-$p02U hɢՌ<XbJnm]|ׂW|uop&AEQQq$ѥK'˲%վY]R3e~&ȨSDʳ.uPu̴4'!(FA*e%]X2$dE߮vq- HN Ϙ-:{#L`6ywkefmRn+|~5SJ 7,+8n;'Zk2&i _^8}Ss @ooo>ܯ:4͂:,.;s‹ + naB Pni[fXR9A"Mnrζ]sgZk!ZkTV-R/o+bQǸqn,1?kOV'H7AŮ8\JP)‹msKZv WJ1)%iq\Jɜ֚+i|s㜻9dvs.cqz7j ܐE E }nIOP 3++23J~oϝ;oD$5ZR5ٍp,;l Bym/VAzS=?}v|:|'8277v:DZtZIa}3Ƥy;mU nNnB06>+@k>{5p}=kkk<4 gAQIl89K4Vݞ E:4!3J٦> 7y.pQ:w!ny1ƊQ 64|ۀ;$O?M?wvv~_&gd}@)3_iP&p,c0ͅvk{AA77޸f'ykbDt`069FxEp7>{:[:;N ` ntY{ Ο?y֯Y/-0ԯ$&4VQu^C)ʍCG}Zm7AmA{.1voejBϴM֐?4{^vv1`uR:&RQ́pRJZ99`6Q2]T*e^qlKM&E#ÇhYKnTǃVAcTXf&\: yoz]Dj 9 ZD*kR 7+Ǩ2S;m!h滺sz]pyp0 5'44cE%^e?8$:n`ڥBI*pRo A#((0 ]-[kW[URp>' 0)А&E#!ĝqw8"y)4bI?M;cf# O뾿 C# V;0 WV:S;0ͽ0 'O꾿 C#vcl>V5O{b>%1Q2QMglP"f cx{ܠ>4`A =$0}%7;B۾ԶEt Fp{p 9s[ݠ4` @ppaaa5I͕K\B}c2k#nR4` AD ZmƄ%sl*m;X;,>m9KCK/TnP0q+sqˎ&n$woi_J+j?wuWA hlDw-//ǝN,+̳b3H>}@C`iiȁn[ ]v+1F뫯ȑ#WnP0cnnU`jo1v}Vl@+X__ 30Iۇ(Xmqw{fmWK;hsɅM^H=miZ}yQĖ/`QJ՗_~gGguHw]xwUc9sI^EBWa,ˊJ 6RIJISk^D2oܐC#0nBܮDwcc DdZ&1Ғh{ݶLٱ11 c|7ɓ' 0"k.@1`IQcRJ!2KhKDKPrHiUw,g9cct~ϽǏٳupycccs0deֆT"vnON?W{뒶N Wԯ4'8u)ywO ~/,˴CβI^]^JRJ]Uf<6Ջ@ Ar@)[[[^$o9sfɓ6Q mJX`W?^y啿>zhטjKZKf# k;8*];YK)m\`LX%s>*bB_!By^c1v ỳ6lѦYb 0ry Vq캝Ph p[B{Z6澵 {w}iBwb0T5fsclƺ;׮P1m%ޕR\ 4?裏wީ/uC`nnN߬ !2'Wjg ",g̶071p=ι0m>˙aDrRisD җL;v1` Jp+w/fL0nxpɀő2Ɗs%a~vfq|UyhEv[+4)6Ҡ#n|g'(n(;8^Mpv$I7Iv$I0s"MS.^mllõ`{{;K4ͲL,˲,ML) 2FC (TȅE9YSzk۬Gub>ZkNDLkku@DܝPJ1"rImF3TΈhhZki%I4ǤZ9&%wɼ|PFEcǎᅬ3g\p }D[D"VJ(nͲPeA-IJQ14MBi*z=nnn`0i4MRaeʘVj2o*,@^13d#8xF<p3 5(nҐ efjpKk `1c c;gvzl!]*-6~`  *3_hא$H$I“$8x>I$I8>E]~!\Rf> 62"MSeβLfY&4&>2}I)Ō_̕R\k͌y\M)c>Kp8ZDlM:2ceZKJu{i׵}CkkJ!F{Rʔ2`ғZw5̯ *P&l>ʊ8p/^o3%tEXtdate:create2021-08-07T22:15:04+02:00?n8%tEXtdate:modify2021-08-07T22:15:04+02:00fbքIENDB`vokoscreenNG-3.7.0/src/audio/000077500000000000000000000000001444746353100160275ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/audio/linux/000077500000000000000000000000001444746353100171665ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/audio/linux/QvkAudioController.cpp000066400000000000000000000135731444746353100234720ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include #include #include #include #include "QvkAudioController.h" #include "QvkPulseAudioWatcher.h" #include "QvkPulseAudioServer.h" #include "QvkPulseAudioDevices.h" #include "global.h" QvkAudioController::QvkAudioController( Ui_formMainWindow *ui_mainwindow ) { ui = ui_mainwindow; } QvkAudioController::~QvkAudioController() { } void QvkAudioController::init() { connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->labelAudioCodec, SLOT( setEnabled( bool ) ) ); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->comboBoxAudioCodec, SLOT( setEnabled( bool ) ) ); getAllDevices(); } void QvkAudioController::getAllDevices() { QStringList list; if ( QvkPulseAudioServer::isAvailable() ) { list << QvkPulseAudioDevices::getAllDevices(); if ( !list.empty() ) { for ( int i = 0; i < list.count(); i++ ) { QCheckBox *checkboxAudioDevice = new QCheckBox(); connect( checkboxAudioDevice, SIGNAL( clicked( bool ) ), this, SLOT( slot_audioDeviceSelected() ) ); checkboxAudioDevice->setText( QString( list.at(i) ).section( ":::", 1, 1 ) ); checkboxAudioDevice->setAccessibleName( QString( list.at(i) ).section( ":::", 0, 0 ) ); checkboxAudioDevice->setObjectName( "checkboxAudioDevice-" + QString::number( i ) ); checkboxAudioDevice->setToolTip( tr ( "Select one or more devices" ) ); ui->verticalLayoutAudioDevices->addWidget( checkboxAudioDevice ); qDebug().noquote() << global::nameOutput << "[Audio] Found:" << QString( list.at(i) ).section( ":::", 1, 1 ) << "Device:" << QString( list.at(i) ).section( ":::", 0, 0 ); } qDebug().noquote(); QSpacerItem *verticalSpacerAudioDevices = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding ); ui->verticalLayoutAudioDevices->addSpacerItem( verticalSpacerAudioDevices ); QvkPulseAudioWatcher *vkPulseAudioWatcher = new QvkPulseAudioWatcher( ui ); vkPulseAudioWatcher->start_monitor(); } else { QLabel *label = new QLabel(); label->setText( "PulseAudio\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "No device found for audio recording." ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); QvkPulseAudioWatcher *vkPulseAudioWatcher = new QvkPulseAudioWatcher( ui ); vkPulseAudioWatcher->start_monitor(); } } else { QLabel *label = new QLabel(); label->setText( "PulseAudio not found\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "Please install or start Pulseaudio" ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); QvkPulseAudioWatcher *vkPulseAudioWatcher = new QvkPulseAudioWatcher( ui ); vkPulseAudioWatcher->start_monitor(); } slot_audioDeviceSelected(); } void QvkAudioController::slot_audioDeviceSelected() { audioIconOnOff( isAudioDeviceSelected() ); } bool QvkAudioController::isAudioDeviceSelected() { bool value = false; QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->checkState() == Qt::Checked ) { value = true; break; } } return value; } /* * Set a new icon with a red cross */ void QvkAudioController::audioIconOnOff( bool state ) { QIcon myIcon( ":/pictures/screencast/microphone.png" ); if ( state == false ) { QSize size = ui->tabWidgetScreencast->iconSize(); QPixmap workPixmap( myIcon.pixmap( size ) ); QPainter painter; QPen pen; painter.begin( &workPixmap ); pen.setColor( QString( "#3daee9" ) ); pen.setWidth( 2 ); painter.setPen( pen ); painter.drawLine ( 5, 5, size.width()-5, size.height()-5 ); painter.drawLine ( 5, size.height()-5, size.width()-5, 5 ); painter.end(); int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, workPixmap ); emit signal_haveAudioDeviceSelected( false ); } else { int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, myIcon ); emit signal_haveAudioDeviceSelected( true ); } } vokoscreenNG-3.7.0/src/audio/linux/QvkAudioController.h000066400000000000000000000025661444746353100231370ustar00rootroot00000000000000 /* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKAUDIOCONTROLLER_H #define QVKAUDIOCONTROLLER_H #include #include "ui_formMainWindow.h" class QvkAudioController: public QObject { Q_OBJECT public: QvkAudioController( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkAudioController(); void init(); public slots: private: Ui_formMainWindow *ui; void getAllDevices(); bool isAudioDeviceSelected(); void audioIconOnOff( bool state ); private slots: void slot_audioDeviceSelected(); protected: signals: void signal_haveAudioDeviceSelected( bool ); }; #endif vokoscreenNG-3.7.0/src/audio/linux/QvkDevices.c000066400000000000000000000205001444746353100213730ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include #include #include "QvkDevices.h" // The code is from here // https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/Clients/Samples/AsyncDeviceList/ // Field list is here: http://0pointer.de/lennart/projects/pulseaudio/doxygen/structpa__sink__info.html typedef struct pa_devicelist { uint8_t initialized; char name[512]; uint32_t index; char description[256]; } pa_devicelist_t; // This callback gets called when our context changes state. We really only // care about when it's ready or if it has failed void pa_state_cb(pa_context *c, void *userdata) { pa_context_state_t state; int *pa_ready = userdata; state = pa_context_get_state(c); switch (state) { // There are just here for reference case PA_CONTEXT_UNCONNECTED: case PA_CONTEXT_CONNECTING: case PA_CONTEXT_AUTHORIZING: case PA_CONTEXT_SETTING_NAME: default: break; case PA_CONTEXT_FAILED: case PA_CONTEXT_TERMINATED: *pa_ready = 2; break; case PA_CONTEXT_READY: *pa_ready = 1; break; } } // pa_mainloop will call this function when it's ready to tell us about a sink. // Since we're not threading, there's no need for mutexes on the devicelist // structure void pa_sinklist_cb(pa_context *c, const pa_sink_info *l, int eol, void *userdata) { (void)c; pa_devicelist_t *pa_devicelist = userdata; int ctr = 0; // If eol is set to a positive number, you're at the end of the list if (eol > 0) { return; } // We know we've allocated 16 slots to hold devices. Loop through our // structure and find the first one that's "uninitialized." Copy the // contents into it and we're done. If we receive more than 16 devices, // they're going to get dropped. You could make this dynamically allocate // space for the device list, but this is a simple example. for (ctr = 0; ctr < 16; ctr++) { if (! pa_devicelist[ctr].initialized) { strncpy(pa_devicelist[ctr].name, l->name, 511); strncpy(pa_devicelist[ctr].description, l->description, 255); pa_devicelist[ctr].index = l->index; pa_devicelist[ctr].initialized = 1; break; } } } // See above. This callback is pretty much identical to the previous void pa_sourcelist_cb(pa_context *c, const pa_source_info *l, int eol, void *userdata) { (void)c; pa_devicelist_t *pa_devicelist = userdata; int ctr = 0; if (eol > 0) { return; } for (ctr = 0; ctr < 16; ctr++) { if (! pa_devicelist[ctr].initialized) { strncpy(pa_devicelist[ctr].name, l->name, 511); strncpy(pa_devicelist[ctr].description, l->description, 255); pa_devicelist[ctr].index = l->index; pa_devicelist[ctr].initialized = 1; break; } } } int pa_get_devicelist(pa_devicelist_t *input, pa_devicelist_t *output) { // Define our pulse audio loop and connection variables pa_mainloop *pa_ml; pa_mainloop_api *pa_mlapi; pa_operation *pa_op; pa_context *pa_ctx; // We'll need these state variables to keep track of our requests int state = 0; int pa_ready = 0; // Initialize our device lists memset(input, 0, sizeof(pa_devicelist_t) * 16); memset(output, 0, sizeof(pa_devicelist_t) * 16); // Create a mainloop API and connection to the default server pa_ml = pa_mainloop_new(); pa_mlapi = pa_mainloop_get_api(pa_ml); pa_ctx = pa_context_new(pa_mlapi, "test"); // This function connects to the pulse server pa_context_connect(pa_ctx, NULL, 0, NULL); // This function defines a callback so the server will tell us it's state. // Our callback will wait for the state to be ready. The callback will // modify the variable to 1 so we know when we have a connection and it's // ready. // If there's an error, the callback will set pa_ready to 2 pa_context_set_state_callback(pa_ctx, pa_state_cb, &pa_ready); // Now we'll enter into an infinite loop until we get the data we receive // or if there's an error for (;;) { // We can't do anything until PA is ready, so just iterate the mainloop // and continue if ( pa_ready == 0 ) { pa_mainloop_iterate(pa_ml, 1, NULL); continue; } // We couldn't get a connection to the server, so exit out if ( pa_ready == 2 ) { pa_context_disconnect(pa_ctx); pa_context_unref(pa_ctx); pa_mainloop_free(pa_ml); return -1; } // At this point, we're connected to the server and ready to make // requests switch ( state ) { // State 0: we haven't done anything yet case 0: // This sends an operation to the server. pa_sinklist_info is // our callback function and a pointer to our devicelist will // be passed to the callback The operation ID is stored in the // pa_op variable pa_op = pa_context_get_sink_info_list( pa_ctx, pa_sinklist_cb, output ); // Update state for next iteration through the loop state++; break; case 1: // Now we wait for our operation to complete. When it's // complete our pa_output_devicelist is filled out, and we move // along to the next state if ( pa_operation_get_state( pa_op ) == PA_OPERATION_DONE ) { pa_operation_unref( pa_op ); // Now we perform another operation to get the source // (input device) list just like before. This time we pass // a pointer to our input structure pa_op = pa_context_get_source_info_list( pa_ctx, pa_sourcelist_cb, input ); // Update the state so we know what to do next state++; } break; case 2: if ( pa_operation_get_state( pa_op ) == PA_OPERATION_DONE ) { // Now we're done, clean up and disconnect and return pa_operation_unref(pa_op); pa_context_disconnect(pa_ctx); pa_context_unref(pa_ctx); pa_mainloop_free(pa_ml); return 0; } break; default: // We should never see this state fprintf(stderr, "in state %d\n", state); return -1; } // Iterate the main loop and go again. The second argument is whether // or not the iteration should block until something is ready to be // done. Set it to zero for non-blocking. pa_mainloop_iterate(pa_ml, 1, NULL); } // end for } const char *get_all_audio_devices() { // This is where we'll store the input device list pa_devicelist_t pa_input_devicelist[16]; // This is where we'll store the output device list pa_devicelist_t pa_output_devicelist[16]; static char s[4096]; for(int i = 0; i < 4096; ++i) s[i] = 0; if ( pa_get_devicelist(pa_input_devicelist, pa_output_devicelist) < 0 ) { fprintf(stderr, "failed to get device list\n"); return s; } for ( int ctr = 0; ctr < 16; ctr++) { if ( ! pa_input_devicelist[ctr].initialized ) { break; } strcat( s, pa_input_devicelist[ctr].name); strcat( s, ":::" ); strcat( s, pa_input_devicelist[ctr].description); strcat( s, "---" ); } return s; } vokoscreenNG-3.7.0/src/audio/linux/QvkDevices.h000066400000000000000000000001531444746353100214020ustar00rootroot00000000000000#ifdef __cplusplus extern "C" { #endif const char *get_all_audio_devices(); #ifdef __cplusplus } #endif vokoscreenNG-3.7.0/src/audio/linux/QvkPulseAudioDevices.cpp000066400000000000000000000025511444746353100237340ustar00rootroot00000000000000 /* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include "QvkDevices.h" #include "QvkPulseAudioDevices.h" #include "QvkPulseAudioServer.h" QvkPulseAudioDevices::QvkPulseAudioDevices() { } QvkPulseAudioDevices::~QvkPulseAudioDevices() { } QStringList QvkPulseAudioDevices::getAllDevices() { QStringList list; if ( QvkPulseAudioServer::isAvailable() ) { const char *ss = get_all_audio_devices(); QString s1 = QString::fromUtf8( ss ); QString s2 = s1.left( QString::fromUtf8( ss ).count() - 3 ); list = s2.split( "---" ); } return list; } vokoscreenNG-3.7.0/src/audio/linux/QvkPulseAudioDevices.h000066400000000000000000000022021444746353100233720ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKPULSEAUDIODEVICES_H #define QVKPULSEAUDIODEVICES_H #include class QvkPulseAudioDevices: public QObject { Q_OBJECT public: QvkPulseAudioDevices(); virtual ~QvkPulseAudioDevices(); static QStringList getAllDevices(); public slots: private: private slots: protected: signals: }; #endif vokoscreenNG-3.7.0/src/audio/linux/QvkPulseAudioServer.cpp000066400000000000000000000032311444746353100236140ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include #include #include "QvkPulseAudioServer.h" QvkPulseAudioServer::QvkPulseAudioServer() { } QvkPulseAudioServer::~QvkPulseAudioServer() { } bool QvkPulseAudioServer::isAvailable() { bool value = false; pa_mainloop *pa_ml; pa_mainloop_api *pa_mlapi; pa_context *context = NULL; // Create a mainloop API and connection to the default server pa_ml = pa_mainloop_new(); pa_mlapi = pa_mainloop_get_api( pa_ml ); context = pa_context_new( pa_mlapi, NULL ); // This function connects to the pulse server int status = pa_context_connect( context, NULL, PA_CONTEXT_NOAUTOSPAWN, NULL ); if ( status < 0 ) { value = false; } else { value = true; } pa_context_unref( context ); pa_mainloop_free( pa_ml ); return value; } vokoscreenNG-3.7.0/src/audio/linux/QvkPulseAudioServer.h000066400000000000000000000021631444746353100232640ustar00rootroot00000000000000 /* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKPULSEAUDIOSERVER_H #define QVKPULSEAUDIOSERVER_H #include class QvkPulseAudioServer: public QObject { Q_OBJECT public: QvkPulseAudioServer(); virtual ~QvkPulseAudioServer(); static bool isAvailable(); public slots: private: private slots: protected: signals: }; #endif vokoscreenNG-3.7.0/src/audio/linux/QvkPulseAudioWatcher.cpp000066400000000000000000000215431444746353100237510ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkPulseAudioWatcher.h" #include "QvkPulseAudioDevices.h" #include "QvkPulseAudioServer.h" #include "global.h" #include #include #include #include #include /* * QvkWatcherPlug monitoring only new or removed Audiodevices. */ QvkPulseAudioWatcher::QvkPulseAudioWatcher( Ui_formMainWindow *ui_mainwindow ) { ui = ui_mainwindow; timer = new QTimer( this ); timer->setTimerType( Qt::PreciseTimer ); timer->setInterval( 3000 ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_update() ) ); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->labelAudioCodec, SLOT( setEnabled( bool ) ) ); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->comboBoxAudioCodec, SLOT( setEnabled( bool ) ) ); } QvkPulseAudioWatcher::~QvkPulseAudioWatcher() {} void QvkPulseAudioWatcher::start_monitor() { timer->start(); } void QvkPulseAudioWatcher::slot_update() { ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignLeft ); QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); QStringList list = QvkPulseAudioDevices::getAllDevices(); QStringList stringListCheckBox; for ( int i = 0; i < listCheckBox.count(); i++ ) { stringListCheckBox.append( listCheckBox.at(i)->accessibleName() ); } QStringList stringListAudio_Device; for ( int i = 0; i < list.count(); i++ ) { stringListAudio_Device.append( list.at(i).section( ":::", 0, 0 ) ); } QList deleteLabel = ui->scrollAreaAudioDevice->findChildren(); for ( int x = 0; x < deleteLabel.count(); x ++ ) { delete deleteLabel.at(x); } // Add new Device if ( list.count() > listCheckBox.count() ) { // Remove SpacerItem for (int i = 0; i < ui->verticalLayoutAudioDevices->count(); ++i) { QLayoutItem *layoutItem = ui->verticalLayoutAudioDevices->itemAt(i); if ( layoutItem->spacerItem() ) { ui->verticalLayoutAudioDevices->removeItem( layoutItem ); delete layoutItem; --i; } } for ( int i = 0; i < stringListAudio_Device.count(); i++ ) { if ( stringListCheckBox.contains( stringListAudio_Device.at(i) ) == false ) { QString name = list.at(i).section( ":::", 1, 1 ); QString device = list.at(i).section( ":::", 0, 0 ); qDebug().noquote() << global::nameOutput << "[PulseAudio] Added:" << name << "Device:" << device; QCheckBox *checkboxAudioDevice = new QCheckBox(); connect( checkboxAudioDevice, SIGNAL( clicked( bool ) ), this, SLOT( slot_audioDeviceSelected() ) ); checkboxAudioDevice->setText( name ); checkboxAudioDevice->setAccessibleName( device ); QList listAudioDevices = ui->scrollAreaAudioDevice->findChildren(); checkboxAudioDevice->setObjectName( "checkboxAudioDevice-" + QString::number( listAudioDevices.count() ) ); checkboxAudioDevice->setToolTip( tr ( "Select one or more devices" ) ); ui->verticalLayoutAudioDevices->addWidget( checkboxAudioDevice ); } } QSpacerItem *verticalSpacerAudioDevices = new QSpacerItem( 20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding ); ui->verticalLayoutAudioDevices->addSpacerItem( verticalSpacerAudioDevices ); slot_audioDeviceSelected(); } // Remove device if ( list.count() < listCheckBox.count() ) { for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( stringListAudio_Device.contains( listCheckBox.at(i)->accessibleName() ) == false ) { qDebug().noquote() << global::nameOutput << "[PulseAudio] Removed:" << listCheckBox.at(i)->text() << "Device:" << listCheckBox.at(i)->accessibleName(); delete listCheckBox.at(i); } } slot_audioDeviceSelected(); } if ( list.empty() and ( QvkPulseAudioServer::isAvailable() == false ) ) { // Remove SpacerItem for (int i = 0; i < ui->verticalLayoutAudioDevices->count(); ++i) { QLayoutItem *layoutItem = ui->verticalLayoutAudioDevices->itemAt(i); if ( layoutItem->spacerItem() ) { ui->verticalLayoutAudioDevices->removeItem( layoutItem ); delete layoutItem; --i; } } QList deleteLabel = ui->verticalLayoutAudioDevices->findChildren(); for ( int x = 0; x < deleteLabel.count(); x ++ ) { delete deleteLabel.at(x); } QLabel *label = new QLabel(); label->setText( "PulseAudio not found\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "Please install or start Pulseaudio" ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); slot_audioDeviceSelected(); } if ( list.empty() and ( QvkPulseAudioServer::isAvailable() == true ) ) { // Remove SpacerItem for (int i = 0; i < ui->verticalLayoutAudioDevices->count(); ++i) { QLayoutItem *layoutItem = ui->verticalLayoutAudioDevices->itemAt(i); if ( layoutItem->spacerItem() ) { ui->verticalLayoutAudioDevices->removeItem( layoutItem ); delete layoutItem; --i; } } QList deleteLabel = ui->verticalLayoutAudioDevices->findChildren(); for ( int x = 0; x < deleteLabel.count(); x ++ ) { delete deleteLabel.at(x); } QLabel *label = new QLabel(); label->setText( "PulseAudio\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "No device found for audio recording." ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); slot_audioDeviceSelected(); } } void QvkPulseAudioWatcher::slot_audioDeviceSelected() { audioIconOnOff( isAudioDeviceSelected() ); } bool QvkPulseAudioWatcher::isAudioDeviceSelected() { bool value = false; QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->checkState() == Qt::Checked ) { value = true; break; } } return value; } /* * Set a new icon with a red cross */ void QvkPulseAudioWatcher::audioIconOnOff( bool state ) { QIcon myIcon( ":/pictures/screencast/microphone.png" ); if ( state == false ) { QSize size = ui->tabWidgetScreencast->iconSize(); QPixmap workPixmap( myIcon.pixmap( size ) ); QPainter painter; QPen pen; painter.begin( &workPixmap ); pen.setColor( QString( "#3daee9" ) ); pen.setWidth( 2 ); painter.setPen( pen ); painter.drawLine ( 5, 5, size.width()-5, size.height()-5 ); painter.drawLine ( 5, size.height()-5, size.width()-5, 5 ); painter.end(); int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, workPixmap ); emit signal_haveAudioDeviceSelected( false ); } else { int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, myIcon ); emit signal_haveAudioDeviceSelected( true ); } } vokoscreenNG-3.7.0/src/audio/linux/QvkPulseAudioWatcher.h000066400000000000000000000026531444746353100234170ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKPULSEAUDIOWATCHER_H #define QVKPULSEAUDIOWATCHER_H #include "ui_formMainWindow.h" #include #include class QvkPulseAudioWatcher: public QObject { Q_OBJECT public: QvkPulseAudioWatcher( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkPulseAudioWatcher(); void start_monitor(); public slots: private: Ui_formMainWindow *ui; QTimer *timer; bool isAudioDeviceSelected(); void audioIconOnOff(bool state); private slots: void slot_update(); void slot_audioDeviceSelected(); protected: signals: void signal_haveAudioDeviceSelected( bool ); }; #endif vokoscreenNG-3.7.0/src/audio/linux/audioLinux.pri000066400000000000000000000007641444746353100220320ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkAudioController.h \ $$PWD/QvkPulseAudioWatcher.h \ $$PWD/QvkPulseAudioServer.h \ $$PWD/QvkPulseAudioDevices.h \ $$PWD/QvkDevices.h SOURCES += $$PWD/QvkAudioController.cpp \ $$PWD/QvkPulseAudioWatcher.cpp \ $$PWD/QvkPulseAudioServer.cpp \ $$PWD/QvkPulseAudioDevices.cpp \ $$PWD/QvkDevices.c vokoscreenNG-3.7.0/src/audio/windows/000077500000000000000000000000001444746353100175215ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/audio/windows/DirectSound/000077500000000000000000000000001444746353100217445ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/audio/windows/DirectSound/QvkDirectSoundController.cpp000066400000000000000000000172201444746353100274230ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "global.h" #include "QvkDirectSoundController.h" #include #include #include QvkDirectSoundController::QvkDirectSoundController( Ui_formMainWindow *ui_mainwindow ) { ui = ui_mainwindow; } QvkDirectSoundController::~QvkDirectSoundController() { } /* * Set a new icon with a red cross */ void QvkDirectSoundController::slot_audioIconOnOff( bool state ) { QIcon myIcon( ":/pictures/screencast/microphone.png" ); if ( state == false ) { QSize size = ui->tabWidgetScreencast->iconSize(); QPixmap workPixmap( myIcon.pixmap( size ) ); QPainter painter; QPen pen; painter.begin( &workPixmap ); pen.setColor( QString( "#3daee9" ) ); pen.setWidth( 2 ); painter.setPen( pen ); painter.drawLine ( 5, 5, size.width()-5, size.height()-5 ); painter.drawLine ( 5, size.height()-5, size.width()-5, 5 ); painter.end(); int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, workPixmap ); } else { int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, myIcon ); } } void QvkDirectSoundController::init() { vkDirectSoundWatcher = new QvkDirectSoundWatcher( ui ); vkDirectSoundWatcher->start_monitor(); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->labelAudioCodec, SLOT( setEnabled( bool ) ) ); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->comboBoxAudioCodec, SLOT( setEnabled( bool ) ) ); connect( vkDirectSoundWatcher->lineEditDiretSoundAudioPlug, SIGNAL( textChanged( QString ) ), this, SLOT( slot_pluggedInOutDevice( QString ) ) ); } void QvkDirectSoundController::getAllDevices() { QList listLabel = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listLabel.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listLabel.at(i) ); delete listLabel.at(i); } QList list = QAudioDeviceInfo::availableDevices( QAudio::AudioInput ); if ( !list.empty() ) { for ( int i = 0; i < list.count(); i++ ) { QCheckBox *checkboxAudioDevice = new QCheckBox(); checkboxAudioDevice->setText( list.at(i).deviceName() ); checkboxAudioDevice->setAccessibleName( list.at(i).deviceName() ); checkboxAudioDevice->setObjectName( "checkboxAudioDevice-" + QString::number( i ) ); checkboxAudioDevice->setToolTip( tr ( "Select one or more devices" ) ); checkboxAudioDevice->setAutoExclusive( false ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignLeft | Qt::AlignTop ); ui->verticalLayoutAudioDevices->addWidget( checkboxAudioDevice ); qDebug().noquote() << global::nameOutput << "[Audio DirectSound] found device:" << list.at(i).deviceName(); connect( checkboxAudioDevice, SIGNAL(clicked(bool)),this,SLOT(slot_audioDeviceSelected() ) ); } qDebug(); } else { QList listLabel = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listLabel.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listLabel.at(i) ); delete listLabel.at(i); } QLabel *label = new QLabel(); label->setText( "DirectSound\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "No device found for audio recording." ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); emit signal_haveAudioDeviceSelected( false ); } } void QvkDirectSoundController::slot_audioDeviceSelected() { bool value = false; QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->checkState() == Qt::Checked ) { value = true; break; } } slot_audioIconOnOff( value ); emit signal_haveAudioDeviceSelected( value ); } void QvkDirectSoundController::slot_pluggedInOutDevice( QString string ) { QString header = string.section( ":", 0, 0 ); QString name = string.section( ":", 1, 1 ); QString device = string.section( ":", 2, 2 ); if ( header == "[Audio-device-added]" ) { QList listLabel = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listLabel.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listLabel.at(i) ); delete listLabel.at(i); } QCheckBox *checkboxAudioDevice = new QCheckBox(); connect( checkboxAudioDevice, SIGNAL( clicked( bool ) ), this, SLOT( slot_audioDeviceSelected() ) ); checkboxAudioDevice->setText( name ); checkboxAudioDevice->setAccessibleName( device ); QList listAudioDevices = ui->scrollAreaAudioDevice->findChildren(); checkboxAudioDevice->setObjectName( "checkboxAudioDevice-" + QString::number( listAudioDevices.count() ) ); checkboxAudioDevice->setToolTip( tr ( "Select one or more devices" ) ); checkboxAudioDevice->setAutoExclusive( false ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignLeft | Qt::AlignTop ); ui->verticalLayoutAudioDevices->insertWidget( ui->verticalLayoutAudioDevices->count()-1, checkboxAudioDevice ); // Besser ein Add ????????????????????????????? } if ( header == "[Audio-device-removed]" ) { QList listAudioDevices = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listAudioDevices.count(); i++ ) { if ( listAudioDevices.at(i)->accessibleName() == device ) { delete listAudioDevices.at(i); listAudioDevices.removeAt(i); } } slot_audioDeviceSelected(); if ( listAudioDevices.empty() ) { QLabel *label = new QLabel(); label->setText( "DirectSound\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "No device found for audio recording." ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); } } } vokoscreenNG-3.7.0/src/audio/windows/DirectSound/QvkDirectSoundController.h000066400000000000000000000030221444746353100270630ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKDIRECTSOUNDCONTROLLER_H #define QVKDIRECTSOUNDCONTROLLER_H #include "ui_formMainwindow.h" #include #include "QvkDirectSoundWatcher.h" class QvkDirectSoundController: public QObject { Q_OBJECT public: QvkDirectSoundController( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkDirectSoundController(); void init(); void getAllDevices(); QvkDirectSoundWatcher *vkDirectSoundWatcher; public slots: void slot_audioDeviceSelected(); private: Ui_formMainWindow *ui; private slots: void slot_pluggedInOutDevice( QString string ); void slot_audioIconOnOff( bool state ); protected: signals: void signal_haveAudioDeviceSelected( bool ); }; #endif vokoscreenNG-3.7.0/src/audio/windows/DirectSound/QvkDirectSoundWatcher.cpp000066400000000000000000000075621444746353100267050ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkDirectSoundWatcher.h" #include "global.h" #include #include /* * QvkWatcherPlug monitoring only new or removed Audiodevices. */ QvkDirectSoundWatcher::QvkDirectSoundWatcher( Ui_formMainWindow *ui_mainwindow ) { lineEditDiretSoundAudioPlug = new QLineEdit; ui = ui_mainwindow; timer = new QTimer( this ); timer->setTimerType( Qt::PreciseTimer ); timer->setInterval( 3000 ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_update() ) ); } QvkDirectSoundWatcher::~QvkDirectSoundWatcher() {} void QvkDirectSoundWatcher::start_monitor() { timer->start(); } void QvkDirectSoundWatcher::slot_update() { QList listCheckBox = ui->scrollAreaWidgetContentsAudioDevices->findChildren(); QList listAudioDeviceInfo = QAudioDeviceInfo::availableDevices( QAudio::AudioInput ); QStringList stringListCheckBox; for ( int i = 0; i < listCheckBox.count(); i++ ) { stringListCheckBox.append( listCheckBox.at(i)->accessibleName() ); } QStringList stringListAudioDeviceInfo; for ( int i = 0; i < listAudioDeviceInfo.count(); i++ ) { stringListAudioDeviceInfo.append( listAudioDeviceInfo.at(i).deviceName() ); } // Add new Device if ( listAudioDeviceInfo.count() > listCheckBox.count() ) { for ( int i = 0; i < stringListAudioDeviceInfo.count(); i++ ) { if ( stringListCheckBox.contains( stringListAudioDeviceInfo.at(i) ) == false ) { QString name = listAudioDeviceInfo.at(i).deviceName(); QString device = listAudioDeviceInfo.at(i).deviceName(); qDebug().noquote() << global::nameOutput << "[Audio DirectSound] Added:" << name << "Device:" << device; QString audioDevicePlug = ""; audioDevicePlug.append( "[Audio-device-added]" ); audioDevicePlug.append( ":"); audioDevicePlug.append( name ); audioDevicePlug.append( ":"); audioDevicePlug.append( device ); lineEditDiretSoundAudioPlug->setText( audioDevicePlug ); } } } // Remove device if ( listAudioDeviceInfo.count() < listCheckBox.count() ) { for ( int i = 0; i < stringListCheckBox.count(); i++ ) { if ( stringListAudioDeviceInfo.contains( stringListCheckBox.at(i) ) == false ) { QString name = stringListCheckBox.at(i); QString device = stringListCheckBox.at(i); qDebug().noquote() << global::nameOutput << "[Audio DirectSound] Removed:" << name << "Device:" << device; QString audioDevicePlug = ""; audioDevicePlug.append( "[Audio-device-removed]" ); audioDevicePlug.append( ":"); audioDevicePlug.append( name ); audioDevicePlug.append( ":"); audioDevicePlug.append( device ); lineEditDiretSoundAudioPlug->setText( audioDevicePlug ); } } } } vokoscreenNG-3.7.0/src/audio/windows/DirectSound/QvkDirectSoundWatcher.h000066400000000000000000000025201444746353100263370ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKDIRECTSOUNDWATCHER_H #define QVKDIRECTSOUNDWATCHER_H #include "ui_formMainWindow.h" #include #include class QvkDirectSoundWatcher: public QObject { Q_OBJECT public: QvkDirectSoundWatcher( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkDirectSoundWatcher(); void start_monitor(); QLineEdit *lineEditDiretSoundAudioPlug; QTimer *timer; public slots: private: Ui_formMainWindow *ui; int counter; private slots: void slot_update(); protected: signals: }; #endif vokoscreenNG-3.7.0/src/audio/windows/QvkAudioController.cpp000066400000000000000000000071631444746353100240230ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkAudioController.h" #include QvkAudioController::QvkAudioController( Ui_formMainWindow *ui_mainwindow ) { ui = ui_mainwindow; radioButtonDirectSound = new QRadioButton(); radioButtonDirectSound->setObjectName( "radioButtonDirectSound" ); radioButtonDirectSound->setText( "DirectSound" ); radioButtonWASAPI = new QRadioButton(); radioButtonWASAPI->setObjectName( "radioButtonWASAPI" ); radioButtonWASAPI->setText( "WASAPI" ); QHBoxLayout *hBoxLayout = new QHBoxLayout; ui->verticalLayout_4->insertLayout( 0, hBoxLayout ); hBoxLayout->addWidget( radioButtonDirectSound ); hBoxLayout->addWidget( radioButtonWASAPI ); QSpacerItem *spacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum); hBoxLayout->addSpacerItem( spacer ); vkWASAPIController = new QvkWASAPIController( ui ); vkDirectSoundController = new QvkDirectSoundController( ui ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), radioButtonDirectSound, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), radioButtonWASAPI, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), radioButtonDirectSound, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), radioButtonWASAPI, SLOT( setDisabled( bool ) ) ); connect( radioButtonWASAPI, SIGNAL( clicked( bool ) ), this, SLOT( slot_WASAPI( bool ) ) ); connect( radioButtonDirectSound, SIGNAL( clicked( bool ) ), this, SLOT( slot_DirectSound( bool ) ) ); vkWASAPIController->init(); vkDirectSoundController->init(); } QvkAudioController::~QvkAudioController() { } void QvkAudioController::slot_WASAPI( bool value ) { Q_UNUSED(value); vkDirectSoundController->vkDirectSoundWatcher->timer->stop(); QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listCheckBox.at(i) ); delete listCheckBox.at(i); } vkWASAPIController->getAllDevices(); vkWASAPIController->slot_audioDeviceSelected(); vkWASAPIController->vkWASAPIWatcher->timer->start(); } void QvkAudioController::slot_DirectSound( bool value ) { Q_UNUSED(value); vkWASAPIController->vkWASAPIWatcher->timer->stop(); QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listCheckBox.at(i) ); delete listCheckBox.at(i); } vkDirectSoundController->getAllDevices(); vkDirectSoundController->slot_audioDeviceSelected(); vkDirectSoundController->vkDirectSoundWatcher->timer->start(); } vokoscreenNG-3.7.0/src/audio/windows/QvkAudioController.h000066400000000000000000000030061444746353100234600ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKAUDIOCONTROLLER_H #define QVKAUDIOCONTROLLER_H #include "ui_formMainWindow.h" #include "WASAPI/QvkWASAPIController.h" #include "DirectSound/QvkDirectSoundController.h" #include class QvkAudioController: public QObject { Q_OBJECT public: QvkAudioController( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkAudioController(); Ui_formMainWindow *ui; QRadioButton *radioButtonWASAPI; QRadioButton *radioButtonDirectSound; QvkWASAPIController *vkWASAPIController; QvkDirectSoundController *vkDirectSoundController; public slots: private: private slots: void slot_WASAPI( bool value ); void slot_DirectSound( bool value ); protected: signals: }; #endif vokoscreenNG-3.7.0/src/audio/windows/WASAPI/000077500000000000000000000000001444746353100205055ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/audio/windows/WASAPI/QvkWASAPIController.cpp000066400000000000000000000204231444746353100247240ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkWASAPIController.h" #include "global.h" #include #include #include QvkWASAPIController::QvkWASAPIController(Ui_formMainWindow *ui_mainwindow) { ui = ui_mainwindow; } QvkWASAPIController::~QvkWASAPIController() { } /* * Set a new icon with a red cross */ void QvkWASAPIController::slot_audioIconOnOff( bool state ) { QIcon myIcon( ":/pictures/screencast/microphone.png" ); if ( state == false ) { QSize size = ui->tabWidgetScreencast->iconSize(); QPixmap workPixmap( myIcon.pixmap( size ) ); QPainter painter; QPen pen; painter.begin( &workPixmap ); pen.setColor( QString( "#3daee9" ) ); pen.setWidth( 2 ); painter.setPen( pen ); painter.drawLine ( 5, 5, size.width()-5, size.height()-5 ); painter.drawLine ( 5, size.height()-5, size.width()-5, 5 ); painter.end(); int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, workPixmap ); } else { int index = ui->tabWidgetScreencast->indexOf( ui->tabAudio ); ui->tabWidgetScreencast->setTabIcon( index, myIcon ); } } void QvkWASAPIController::init() { vkWASAPIWatcher = new QvkWASAPIWatcher( ui ); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->labelAudioCodec, SLOT( setEnabled( bool ) ) ); connect( this, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), ui->comboBoxAudioCodec, SLOT( setEnabled( bool ) ) ); connect( vkWASAPIWatcher->lineEditWASAPIAudioPlug, SIGNAL( textChanged( QString ) ), this, SLOT( slot_pluggedInOutDevice( QString ) ) ); } void QvkWASAPIController::getAllDevices() { QList listLabel = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listLabel.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listLabel.at(i) ); delete listLabel.at(i); } QvkWASAPIGstreamer vkWASAPIGstreamer; QStringList list; list << vkWASAPIGstreamer.get_all_Audio_Source_devices(); list << vkWASAPIGstreamer.get_all_Audio_Playback_devices(); if ( !list.empty() ) { for ( int i = 0; i < list.count(); i++ ) { QCheckBox *checkboxAudioDevice = new QCheckBox(); checkboxAudioDevice->setText( QString( list.at(i) ).section( ":::", 1, 1 ) ); QString device = QString( list.at(i).section( ":::", 0, 0 ) ); device.append( ":::" ); device.append( QString( list.at(i).section( ":::", 2, 2 ) ) ); checkboxAudioDevice->setAccessibleName( device ); checkboxAudioDevice->setObjectName( "checkboxAudioDevice-" + QString::number( i ) ); checkboxAudioDevice->setToolTip( tr ( "Select one or more devices" ) ); ui->verticalLayoutAudioDevices->addWidget( checkboxAudioDevice ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignLeft | Qt::AlignTop ); connect( checkboxAudioDevice, SIGNAL( clicked( bool ) ), this, SLOT( slot_runTestWASAPI( bool ) ) ); qDebug().noquote() << global::nameOutput << "[Audio WASAPI] Found:" << QString( list.at(i) ).section( ":::", 1, 1 ) << "Device:" << QString( list.at(i) ).section( ":::", 0, 0 ) << "Input/Output:" << QString( list.at(i) ).section( ":::", 2, 2 ); connect( checkboxAudioDevice, SIGNAL( clicked( bool ) ), this, SLOT( slot_audioDeviceSelected() ) ); } qDebug().noquote(); } else { QLabel *label = new QLabel(); label->setText( "WASAPI\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "No device found for audio recording." ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); } } /* * Run WASAPI test * bool zeigt den Status der Checkbox an, ob es auf checked oder unchecked gesetzt wurde. */ void QvkWASAPIController::slot_runTestWASAPI( bool bo ) { if ( bo == true ) { QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); int counter = 0; for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->isChecked() == true ) { counter++; } } if ( counter > 1 ) { global::testWASAPI = true; wantCountdown = false; ui->pushButtonStart->click(); QTimer::singleShot( 2000, Qt::PreciseTimer, ui->pushButtonStop, SLOT( click() ) ); } } } void QvkWASAPIController::slot_audioDeviceSelected() { bool value = false; QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->checkState() == Qt::Checked ) { value = true; break; } } slot_audioIconOnOff( value ); emit signal_haveAudioDeviceSelected( value ); } void QvkWASAPIController::slot_pluggedInOutDevice( QString string ) { QList listLabel = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listLabel.count(); i++ ) { ui->verticalLayoutAudioDevices->removeWidget( listLabel.at(i) ); delete listLabel.at(i); } QString header = string.section( "---", 0, 0 ); QString name = string.section( "---", 1, 1 ); QString device = string.section( "---", 2, 2 ); if ( header == "[Audio-device-added]" ) { QCheckBox *checkboxAudioDevice = new QCheckBox(); connect( checkboxAudioDevice, SIGNAL( clicked( bool ) ), this, SLOT( slot_audioDeviceSelected() ) ); checkboxAudioDevice->setText( name ); checkboxAudioDevice->setAccessibleName( device ); QList listAudioDevices = ui->scrollAreaAudioDevice->findChildren(); checkboxAudioDevice->setObjectName( "checkboxAudioDevice-" + QString::number( listAudioDevices.count() ) ); ui->verticalLayoutAudioDevices->insertWidget( ui->verticalLayoutAudioDevices->count()-1, checkboxAudioDevice ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignLeft | Qt::AlignTop ); } if ( header == "[Audio-device-removed]" ) { QList listAudioDevices = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listAudioDevices.count(); i++ ) { if ( listAudioDevices.at(i)->accessibleName() == device ) { delete listAudioDevices.at(i); listAudioDevices.removeAt(i); } } slot_audioDeviceSelected(); if ( listAudioDevices.empty() ) { QLabel *label = new QLabel(); label->setText( "WASAPI\n" ); label->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( label ); QLabel *labelText = new QLabel(); labelText->setText( "No device found for audio recording." ); ui->verticalLayoutAudioDevices->setAlignment( Qt::AlignCenter ); ui->verticalLayoutAudioDevices->addWidget( labelText ); } } } vokoscreenNG-3.7.0/src/audio/windows/WASAPI/QvkWASAPIController.h000066400000000000000000000030731444746353100243730ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKWASAPICONTROLLER_H #define QVKWASAPICONTROLLER_H #include "ui_formMainWindow.h" #include "QvkWASAPIGstreamer.h" #include "QvkWASAPIWatcher.h" #include class QvkWASAPIController: public QObject { Q_OBJECT public: QvkWASAPIController(Ui_formMainWindow *ui_mainwindow); virtual ~QvkWASAPIController(); void init(); void getAllDevices(); QvkWASAPIWatcher *vkWASAPIWatcher; bool wantCountdown = true; public slots: void slot_audioDeviceSelected(); void slot_runTestWASAPI( bool bo ); private: Ui_formMainWindow *ui; private slots: void slot_pluggedInOutDevice( QString string ); void slot_audioIconOnOff( bool state ); protected: signals: void signal_haveAudioDeviceSelected( bool ); }; #endif vokoscreenNG-3.7.0/src/audio/windows/WASAPI/QvkWASAPIGstreamer.cpp000066400000000000000000000127021444746353100245330ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkWASAPIGstreamer.h" #include QvkWASAPIGstreamer::QvkWASAPIGstreamer() { } QvkWASAPIGstreamer::~QvkWASAPIGstreamer() { } QString QvkWASAPIGstreamer::get_AudioDeviceString( GstDevice *device ) { static const char *const ignored_propnames[] = { "name", "parent", "direction", "template", "caps", Q_NULLPTR }; GString *launch_line = Q_NULLPTR; GstElement *element; GstElement *pureelement; GParamSpec **properties, *property; GValue value = G_VALUE_INIT; GValue pvalue = G_VALUE_INIT; guint i, number_of_properties; GstElementFactory *factory; element = gst_device_create_element( device, Q_NULLPTR ); if ( !element ) return Q_NULLPTR; factory = gst_element_get_factory( element ); if ( !factory ) { gst_object_unref( element ); return Q_NULLPTR; } if ( !gst_plugin_feature_get_name( factory ) ) { gst_object_unref( element ); return Q_NULLPTR; } pureelement = gst_element_factory_create( factory, Q_NULLPTR ); properties = g_object_class_list_properties( G_OBJECT_GET_CLASS( element ), &number_of_properties ); if ( properties ) { for ( i = 0; i < number_of_properties; i++ ) { gint j; gboolean ignore = FALSE; property = properties[i]; if ( ( property->flags & G_PARAM_READWRITE ) != G_PARAM_READWRITE ) continue; for ( j = 0; ignored_propnames[j]; j++ ) if ( !g_strcmp0( ignored_propnames[j], property->name ) ) ignore = TRUE; if ( ignore ) continue; g_value_init( &value, property->value_type ); g_value_init( &pvalue, property->value_type ); g_object_get_property( G_OBJECT( element ), property->name, &value ); g_object_get_property( G_OBJECT( pureelement ), property->name, &pvalue ); if (gst_value_compare( &value, &pvalue ) != GST_VALUE_EQUAL ) { gchar *valuestr = gst_value_serialize( &value ); if ( !valuestr ) { GST_WARNING( "Could not serialize property %s:%s", GST_OBJECT_NAME( element ), property->name ); g_free( valuestr ); goto next; } launch_line = g_string_new( valuestr ); g_free( valuestr ); } next: g_value_unset( &value ); g_value_unset( &pvalue ); } g_free( properties ); } gst_object_unref( GST_OBJECT( element ) ); gst_object_unref( GST_OBJECT( pureelement ) ); QString string = ""; if ( launch_line != Q_NULLPTR ) { string = g_string_free( launch_line, FALSE ); } return string; } QStringList QvkWASAPIGstreamer::get_all_Audio_Source_devices() { GstDeviceMonitor *monitor; GstCaps *caps; GstDevice *device; gchar *name; GList *iterator = Q_NULLPTR; GList *list = Q_NULLPTR; QString stringDevice; QStringList stringList; monitor = gst_device_monitor_new(); caps = gst_caps_new_empty_simple( "audio/x-raw" ); gst_device_monitor_add_filter( monitor, "Audio/Source", caps ); bool isMonitorStart = gst_device_monitor_start( monitor ); list = gst_device_monitor_get_devices( monitor ); for ( iterator = list; iterator; iterator = iterator->next ) { device = (GstDevice*)iterator->data; name = gst_device_get_display_name( device ); stringDevice = get_AudioDeviceString( device ); stringDevice.append( ":::" ).append( name ).append( ":::" ).append( "Source" ); if ( stringDevice.contains( ".") ) { stringList.append( stringDevice ); } } if ( isMonitorStart == true ) { gst_device_monitor_stop( monitor ); } return stringList; } QStringList QvkWASAPIGstreamer::get_all_Audio_Playback_devices() { GstDeviceMonitor *monitor; GstCaps *caps; GstDevice *device; gchar *name; GList *iterator = Q_NULLPTR; GList *list = Q_NULLPTR; QString stringDevice; QStringList stringList; monitor = gst_device_monitor_new(); caps = gst_caps_new_empty_simple( "audio/x-raw" ); gst_device_monitor_add_filter( monitor, "Audio/Sink", caps ); bool isMonitorStart = gst_device_monitor_start( monitor ); list = gst_device_monitor_get_devices( monitor ); for ( iterator = list; iterator; iterator = iterator->next ) { device = (GstDevice*)iterator->data; name = gst_device_get_display_name( device ); stringDevice = get_AudioDeviceString( device ); stringDevice.append( ":::" ).append( name ).append( ":::" ).append( "Playback" ); if ( stringDevice.contains( ".") ) { stringList.append( stringDevice ); } } if ( isMonitorStart == true ) { gst_device_monitor_stop( monitor ); } return stringList; } vokoscreenNG-3.7.0/src/audio/windows/WASAPI/QvkWASAPIGstreamer.h000066400000000000000000000024121444746353100241750ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKWASAPIGSTREAMER_H #define QVKWASAPIGSTREAMER_H #include #include class QvkWASAPIGstreamer: public QObject { Q_OBJECT public: QvkWASAPIGstreamer(); virtual ~QvkWASAPIGstreamer(); QString get_AudioDeviceString( GstDevice *device ); public slots: QStringList get_all_Audio_Source_devices(); QStringList get_all_Audio_Playback_devices(); private: private slots: protected: signals: }; #endif vokoscreenNG-3.7.0/src/audio/windows/WASAPI/QvkWASAPIWatcher.cpp000066400000000000000000000103301444746353100241720ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkWASAPIWatcher.h" #include "QvkWASAPIGstreamer.h" #include "global.h" #include #include #include QvkWASAPIWatcher::QvkWASAPIWatcher( Ui_formMainWindow *ui_mainwindow ) { lineEditWASAPIAudioPlug = new QLineEdit; ui = ui_mainwindow; timer = new QTimer( this ); timer->setTimerType( Qt::PreciseTimer ); timer->setInterval( 3000 ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_update() ) ); } QvkWASAPIWatcher::~QvkWASAPIWatcher() {} void QvkWASAPIWatcher::slot_update() { QvkWASAPIGstreamer vkWASAPIGstreamer; QStringList listDevices; listDevices << vkWASAPIGstreamer.get_all_Audio_Source_devices(); listDevices << vkWASAPIGstreamer.get_all_Audio_Playback_devices(); QList listCheckBox = ui->scrollAreaWidgetContentsAudioDevices->findChildren(); QStringList stringListCheckBox; for ( int i = 0; i < listCheckBox.count(); i++ ) { stringListCheckBox << listCheckBox.at(i)->accessibleName(); } // Add new Device if ( listDevices.count() > listCheckBox.count() ) { for ( int i = 0; i < listDevices.count(); i++ ) { QString device = QString( listDevices.at(i) ).section( ":::", 0, 0 ) + ":::" + QString( listDevices.at(i) ).section( ":::", 2, 2 ) ; if ( stringListCheckBox.contains( device ) == false ) { QString name = QString( listDevices.at(i) ).section( ":::", 1, 1 ); qDebug().noquote() << global::nameOutput << "[Audio WASAPI] Added:" << name << "Device:" << device; QString audioDevicePlug = ""; audioDevicePlug.append( "[Audio-device-added]" ); audioDevicePlug.append( "---"); audioDevicePlug.append( name ); audioDevicePlug.append( "---"); audioDevicePlug.append( device ); lineEditWASAPIAudioPlug->setText( audioDevicePlug ); } } } // listDevices --> Device ::: Name ::: Typ // listDeviceTyp --> Device ::: Typ // listCheckbox --> Device ::: Typ QStringList listDeviceTyp; for ( int i = 0; i < listDevices.count(); i++ ) { listDeviceTyp << QString( listDevices.at(i) ).section( ":::", 0, 0 ) + ":::" + QString( listDevices.at(i) ).section( ":::", 2, 2 ); } // Remove device if ( listDevices.count() < listCheckBox.count() ) { for ( int i = 0; i < listCheckBox.count(); i++ ) { QString string = QString( listCheckBox.at(i)->accessibleName() ); if ( listDeviceTyp.contains( string ) == false ) { QString name = listCheckBox.at(i)->text(); QString device = listCheckBox.at(i)->accessibleName(); qDebug().noquote() << global::nameOutput << "[Audio WASAPI] Removed:" << name << "Device:" << device; qDebug().noquote(); QString audioDevicePlug = ""; audioDevicePlug.append( "[Audio-device-removed]" ); audioDevicePlug.append( "---"); audioDevicePlug.append( name ); audioDevicePlug.append( "---"); audioDevicePlug.append( device ); lineEditWASAPIAudioPlug->setText( audioDevicePlug ); } } } } vokoscreenNG-3.7.0/src/audio/windows/WASAPI/QvkWASAPIWatcher.h000066400000000000000000000024361444746353100236470ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKWASAPIWATCHER_H #define QVKWASAPIWATCHER_H #include #include "ui_formMainWindow.h" #include #include class QvkWASAPIWatcher: public QObject { Q_OBJECT public: QvkWASAPIWatcher(Ui_formMainWindow *ui_mainwindow); virtual ~QvkWASAPIWatcher(); QTimer *timer; QLineEdit *lineEditWASAPIAudioPlug; public slots: private: Ui_formMainWindow *ui; private slots: void slot_update(); protected: signals: }; #endif vokoscreenNG-3.7.0/src/audio/windows/audioWindows.pri000066400000000000000000000013001444746353100227030ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkAudioController.h \ $$PWD/DirectSound/QvkDirectSoundController.h \ $$PWD/DirectSound/QvkDirectSoundWatcher.h \ $$PWD/WASAPI/QvkWASAPIController.h \ $$PWD/WASAPI/QvkWASAPIGstreamer.h \ $$PWD/WASAPI/QvkWASAPIWatcher.h SOURCES += $$PWD/QvkAudioController.cpp \ $$PWD/DirectSound/QvkDirectSoundController.cpp \ $$PWD/DirectSound/QvkDirectSoundWatcher.cpp \ $$PWD/WASAPI/QvkWASAPIController.cpp \ $$PWD/WASAPI/QvkWASAPIGstreamer.cpp \ $$PWD/WASAPI/QvkWASAPIWatcher.cpp vokoscreenNG-3.7.0/src/camera-qt6/000077500000000000000000000000001444746353100166665ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/camera-qt6/QvkCameraController.cpp000066400000000000000000000064371444746353100233220ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2023 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCameraController.h" #include "global.h" #include #include #include #include #include #include #include #include QvkCameraController::QvkCameraController( Ui_formMainWindow *ui_surface ) { ui = ui_surface; ui->checkBoxCameraOnOff->deleteLater(); ui->comboBoxCamera->deleteLater(); ui->comboBoxCameraResolution->deleteLater(); ui->labelCameraWindowSize->deleteLater(); ui->toolButton_camera_view_rectangle->deleteLater(); ui->toolButton_camera_view_ellipse->deleteLater(); ui->toolButton_camera_view_circle->deleteLater(); ui->checkBoxCameraWindowFrame->deleteLater(); ui->checkBoxCameraMirrorHorizontal->deleteLater(); ui->checkBoxCameraMirrorVertical->deleteLater(); ui->checkBoxCameraInvert->deleteLater(); ui->checkBoxCameraGray->deleteLater(); ui->checkBoxCameraMono->deleteLater(); // SpacerItems aus GUI löschen for (int i = 0; i < ui->horizontalLayout_65->count(); ++i) { QLayoutItem *layoutItem = ui->horizontalLayout_65->itemAt(i); if (layoutItem->spacerItem()) { ui->horizontalLayout_65->removeItem( layoutItem ); delete layoutItem; --i; } } // Create a vertical layout QVBoxLayout *layoutAllCameras = new QVBoxLayout; ui->horizontalLayout_63->addLayout( layoutAllCameras ); layoutAllCameras->setObjectName( "layoutAllCameras" ); // Add Devices const QList camerasInfoList = QMediaDevices::videoInputs(); for ( int i = 0; i < camerasInfoList.count(); i++ ) { vkCameraSingle = new QvkCameraSingle( ui, camerasInfoList.at(i) ); buttonGroup->addButton( vkCameraSingle->radioButtonCamera ); } // Am Ende ein spaceritem einfügen QSpacerItem *spacerItem = new QSpacerItem( 100,100, QSizePolicy::Expanding, QSizePolicy::Expanding ); layoutAllCameras->addItem( spacerItem ); // Dann ein Label für den Kameratext hinzufügen labelCurrentCamera->setObjectName( "labelCurrentCamera" ); labelCurrentCamera->setAlignment( Qt::AlignHCenter ); QFont font; font.setBold( true ); labelCurrentCamera->setFont( font ); layoutAllCameras->addWidget( labelCurrentCamera ); // Hide Widget if only one camera if ( camerasInfoList.count() == 1 ) { vkCameraSingle->radioButtonCamera->hide(); labelCurrentCamera->hide(); } } QvkCameraController::~QvkCameraController() { } vokoscreenNG-3.7.0/src/camera-qt6/QvkCameraController.h000066400000000000000000000026301444746353100227560ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2023 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERACONTROLLER_H #define QVKCAMERACONTROLLER_H #include "ui_formMainWindow.h" #include "QvkSpezialSlider.h" #include "QvkCameraSingle.h" #include #include #include class QvkCameraController : public QObject { Q_OBJECT public: QvkCameraController( Ui_formMainWindow *ui_surface ); virtual ~QvkCameraController(); QvkCameraSingle *vkCameraSingle; public slots: private slots: private: Ui_formMainWindow *ui; QButtonGroup *buttonGroup = new QButtonGroup; QLabel *labelCurrentCamera = new QLabel; protected: signals: }; #endif vokoscreenNG-3.7.0/src/camera-qt6/QvkCameraSingle.cpp000066400000000000000000001041251444746353100224110ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2023 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "ui_formMainWindow.h" #include "QvkCameraController.h" #include "QvkCameraSingle.h" #include "global.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include QvkCameraSingle::QvkCameraSingle( Ui_formMainWindow *ui_surface, QCameraDevice m_cameraDevice ) { ui = ui_surface; cameraDevice = m_cameraDevice; qDebug().noquote() << global::nameOutput << "[Camera] Added:" << cameraDevice.description() << "Device:" << cameraDevice.id(); QList listQVBoxLayout = ui->centralWidget->findChildren( "layoutAllCameras" ); QHBoxLayout *layoutCamera = new QHBoxLayout; layoutCamera->setObjectName( "layoutCamera-" + QString::number( 0 ) ); listQVBoxLayout.at(0)->addLayout( layoutCamera ); QList listRadioButton = ui->centralWidget->findChildren(); int counter = 0; for ( int i = 0; i < listRadioButton.count(); i++ ) { if ( listRadioButton.at(i)->objectName().contains( "radioButtonCamera-" ) ) { counter++; } } labelCameraWindowSize = new QLabel; ui->horizontalLayout_66->addWidget( labelCameraWindowSize ); labelCameraWindowSize->setObjectName( "labelCameraWindowSize-" + QString::number( counter ) ); labelCameraWindowSize->setText( "---x---" ); sliderCameraWindowSize = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_45->insertWidget( 0, sliderCameraWindowSize ); sliderCameraWindowSize->setObjectName( "sliderCameraWindowSize-" + QString::number( counter ) ); sliderCameraWindowSize->setMinimum( 0 ); sliderCameraWindowSize->setMaximum( 1 ); sliderCameraWindowSize->setValue( 0 ); sliderCameraWindowSize->show(); sliderCameraWindowSize->setShowValue( false ); sliderCameraWindowSize->setBigHandel( true ); sliderCameraWindowSize->setEnabled( true ); sliderCameraWindowZoom = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_zoom->insertWidget( 0, sliderCameraWindowZoom ); sliderCameraWindowZoom->setObjectName( "sliderCameraWindowZoom-" + QString::number( counter ) ); sliderCameraWindowZoom->setMinimum( 0 ); sliderCameraWindowZoom->setMaximum( 1 ); sliderCameraWindowZoom->setValue( 0 ); sliderCameraWindowZoom->show(); sliderCameraWindowZoom->setShowValue( true ); sliderCameraWindowZoom->setEnabled( true ); radioButtonCamera = new QRadioButton; layoutCamera->addWidget( radioButtonCamera ); radioButtonCamera->setObjectName( "radioButtonCamera-" + QString::number( counter ) ); radioButtonCamera->setAutoExclusive( true ); connect( radioButtonCamera, SIGNAL( clicked( bool ) ), this, SLOT( slot_radioButtonCurrentCameraClicked( bool ) ) ); checkBoxCameraOnOff = new QCheckBox; layoutCamera->addWidget( checkBoxCameraOnOff ); checkBoxCameraOnOff->setText( cameraDevice.description() ); checkBoxCameraOnOff->setAccessibleName( cameraDevice.id() ); checkBoxCameraOnOff->setObjectName( "checkBoxCameraOnOff-" + QString::number( counter ) ); connect( checkBoxCameraOnOff, SIGNAL( clicked( bool ) ), this, SLOT( slot_checkBoxCameraOnOff( bool ) ) ); layoutCamera->setStretchFactor( checkBoxCameraOnOff, 2 ); comboBoxCameraVideoFormat = new QComboBox; comboBoxCameraVideoFormat->setMinimumWidth( 100 ); comboBoxCameraVideoFormat->setObjectName( "comboBoxCameraVideoFormat-" + QString::number( counter ) ); connect( comboBoxCameraVideoFormat, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_comboboxCameraResolutionsInsertValues( int ) ) ); // Wird im Slot dosconnected connect( comboBoxCameraVideoFormat, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_comboboxCameraFormatCurrentIndexChanged( int ) ) ); layoutCamera->addWidget( comboBoxCameraVideoFormat ); comboBoxCameraResolution = new QComboBox; comboBoxCameraResolution->setMinimumWidth( 100 ); comboBoxCameraResolution->setObjectName( "comboBoxCameraResolution-" + QString::number( counter ) ); connect( comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_comboboxCameraResolutionsCurrentIndexChanged( int ) ) ); layoutCamera->addWidget( comboBoxCameraResolution ); toolButton_camera_view_rectangle = new QToolButton; toolButton_camera_view_rectangle->setObjectName( "toolButton_camera_view_rectangle-" + QString::number( counter ) ); toolButton_camera_view_rectangle->setCheckable( true ); toolButton_camera_view_rectangle->setChecked( true ); toolButton_camera_view_rectangle->setAutoExclusive( true ); toolButton_camera_view_rectangle->setAutoRaise( true ); toolButton_camera_view_rectangle->setIconSize( QSize( 34, 34 ) ); toolButton_camera_view_rectangle->setIcon( QIcon( ":/pictures/camera/window-rectangle-off.png" ) ); connect( toolButton_camera_view_rectangle, SIGNAL( clicked( bool ) ), this, SLOT( slot_toolButtonRectangleClicked( bool ) ) ); toolButton_camera_view_ellipse = new QToolButton; toolButton_camera_view_ellipse->setObjectName( "toolButton_camera_view_ellipse-" + QString::number( counter ) ); toolButton_camera_view_ellipse->setCheckable( true ); toolButton_camera_view_ellipse->setAutoExclusive( true ); toolButton_camera_view_ellipse->setAutoRaise( true ); toolButton_camera_view_ellipse->setIconSize( QSize( 34, 34 ) ); toolButton_camera_view_ellipse->setIcon( QIcon( ":/pictures/camera/window-ellipse-off.png" ) ); connect( toolButton_camera_view_ellipse, SIGNAL( clicked( bool ) ), this, SLOT( slot_toolButtonEllipseClicked( bool ) ) ); toolButton_camera_view_circle = new QToolButton; toolButton_camera_view_circle->setObjectName( "toolButton_camera_view_circle-" + QString::number( counter ) ); toolButton_camera_view_circle->setCheckable( true ); toolButton_camera_view_circle->setAutoExclusive( true ); toolButton_camera_view_circle->setAutoRaise( true ); toolButton_camera_view_circle->setIconSize( QSize( 34, 34 ) ); toolButton_camera_view_circle->setIcon( QIcon( ":/pictures/camera/window-circle-off.png" ) ); connect( toolButton_camera_view_circle, SIGNAL( clicked( bool ) ), this, SLOT( slot_toolButtonCircleClicked( bool ) ) ); // Widget zur aufnahme der Toolbutton Rectangle, Ellipse und Circle widgetToolButton = new QWidget; widgetToolButton->setObjectName( "widgetToolButton-" + QString::number( counter ) ); ui->horizontalLayout_65->addWidget( widgetToolButton ); widgetToolButton->show(); QHBoxLayout *widgetLayout = new QHBoxLayout( widgetToolButton ); QSpacerItem *spacerItem_1 = new QSpacerItem( 40, 20, QSizePolicy::Expanding ); widgetLayout->addSpacerItem( spacerItem_1 ); widgetLayout->addWidget( toolButton_camera_view_rectangle ); QSpacerItem *spacerItem_2 = new QSpacerItem( 40, 20, QSizePolicy::Preferred ); widgetLayout->addSpacerItem( spacerItem_2 ); widgetLayout->addWidget( toolButton_camera_view_ellipse ); QSpacerItem *spacerItem_3 = new QSpacerItem( 40, 20, QSizePolicy::Preferred ); widgetLayout->addSpacerItem( spacerItem_3 ); widgetLayout->addWidget( toolButton_camera_view_circle ); QSpacerItem *spacerItem_4 = new QSpacerItem( 40, 20, QSizePolicy::Expanding ); widgetLayout->addSpacerItem( spacerItem_4 ); // End checkBoxCameraWindowFrame = new QCheckBox; checkBoxCameraWindowFrame->setText( tr( "Remove window frame" ) ); checkBoxCameraWindowFrame->setObjectName( "checkBoxCameraWindowFrame-" + QString::number( counter ) ); ui->horizontalLayout_42->insertWidget( 0, checkBoxCameraWindowFrame, 1 ); checkBoxCameraMirrorVertical = new QCheckBox; checkBoxCameraMirrorVertical->setText( tr( "Flip vertical" ) ); checkBoxCameraMirrorVertical->setObjectName( "checkBoxCameraMirrorVertical-" + QString::number( counter ) ); ui->horizontalLayout_12->insertWidget( 0, checkBoxCameraMirrorVertical, 1 ); checkBoxCameraMirrorHorizontal = new QCheckBox; checkBoxCameraMirrorHorizontal->setText( tr( "Flip horizontal" ) ); checkBoxCameraMirrorHorizontal->setObjectName( "checkBoxCameraMirrorHorizontal-" + QString::number( counter ) ); ui->horizontalLayout_12->insertWidget( 1, checkBoxCameraMirrorHorizontal, 2 ); checkBoxCameraInvert = new QCheckBox; checkBoxCameraInvert->setText( tr( "Invert" ) ); checkBoxCameraInvert->setObjectName( "checkBoxCameraInvert-" + QString::number( counter ) ); ui->horizontalLayout_14->insertWidget( 0, checkBoxCameraInvert, 1 ); checkBoxCameraGray = new QCheckBox; checkBoxCameraGray->setText( tr( "Gray" ) ); checkBoxCameraGray->setObjectName( "checkBoxCameraGray-" + QString::number( counter ) ); ui->horizontalLayout_14->insertWidget( 1, checkBoxCameraGray, 1 ); checkBoxCameraMono = new QCheckBox; checkBoxCameraMono->setText( tr( "Black-and-white" ) ); checkBoxCameraMono->setObjectName( "checkBoxCameraMono-" + QString::number( counter ) ); ui->horizontalLayout_14->insertWidget( 2, checkBoxCameraMono, 2 ); vkCameraWindow = new QvkCameraWindow( ui, checkBoxCameraWindowFrame ); vkCameraWindow->setObjectName( "vkCameraWindow-" + QString::number( counter )); connect( vkCameraWindow, SIGNAL( signal_cameraWindow_close( bool ) ), checkBoxCameraOnOff, SLOT( click() ) ); connect( checkBoxCameraWindowFrame, SIGNAL( clicked( bool ) ), this, SLOT( slot_cameraWindowFrameOnOff( bool ) ) ); vkCameraSettingsDialog = new cameraSettingsDialog; connect( sliderCameraWindowSize, SIGNAL( rangeChanged( int, int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowSize, SLOT( setRange( int, int ) ) ); connect( sliderCameraWindowSize, SIGNAL( valueChanged( int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowSize, SLOT( setValue( int ) ) ); connect( sliderCameraWindowZoom, SIGNAL( rangeChanged( int, int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowZoom, SLOT( setRange( int, int ) ) ); connect( sliderCameraWindowZoom, SIGNAL( valueChanged( int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowZoom, SLOT( setValue( int ) ) ); connect( vkCameraSettingsDialog->dialog_sliderCameraWindowSize, SIGNAL( valueChanged( int ) ), sliderCameraWindowSize, SLOT( setValue( int ) ) ); connect( vkCameraSettingsDialog->dialog_sliderCameraWindowZoom, SIGNAL( valueChanged( int ) ), sliderCameraWindowZoom, SLOT( setValue( int ) ) ); connect( checkBoxCameraMirrorHorizontal, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraMirrorHorizontal, SLOT( setChecked( bool ) ) ); connect( checkBoxCameraMirrorVertical, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraMirrorVertical, SLOT( setChecked( bool ) ) ); connect( checkBoxCameraInvert, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraInvert, SLOT( setChecked( bool ) ) ); connect( checkBoxCameraGray, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraGray, SLOT( setChecked( bool ) ) ); connect( checkBoxCameraMono, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraMono, SLOT( setChecked( bool ) ) ); connect( checkBoxCameraWindowFrame, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame, SLOT( setChecked( bool ) ) ); connect( toolButton_camera_view_rectangle, SIGNAL( clicked( bool ) ), vkCameraSettingsDialog->ui->toolButton_camera_view_rectangle, SLOT( setChecked( bool )) ); connect( toolButton_camera_view_ellipse, SIGNAL( clicked( bool ) ), vkCameraSettingsDialog->ui->toolButton_camera_view_ellipse, SLOT( setChecked( bool ) ) ); connect( toolButton_camera_view_circle, SIGNAL( clicked( bool ) ), vkCameraSettingsDialog->ui->toolButton_camera_view_circle, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraMirrorHorizontal, SIGNAL( toggled( bool ) ), checkBoxCameraMirrorHorizontal, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraMirrorVertical, SIGNAL( toggled( bool ) ), checkBoxCameraMirrorVertical, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraInvert, SIGNAL( toggled( bool ) ), checkBoxCameraInvert, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraGray, SIGNAL( toggled( bool ) ), checkBoxCameraGray, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraMono, SIGNAL( toggled( bool ) ), checkBoxCameraMono, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame, SIGNAL( toggled( bool ) ), checkBoxCameraWindowFrame, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), comboBoxCameraResolution, SLOT( setCurrentIndex( int ) ) ); connect( vkCameraSettingsDialog->ui->toolButton_camera_view_rectangle, SIGNAL( clicked( bool ) ), toolButton_camera_view_rectangle, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->toolButton_camera_view_ellipse, SIGNAL( clicked( bool ) ), toolButton_camera_view_ellipse, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->toolButton_camera_view_circle, SIGNAL( clicked( bool ) ), toolButton_camera_view_circle, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->buttonBox, SIGNAL( accepted() ), vkCameraSettingsDialog, SLOT( close() ) ); connect( vkCameraSettingsDialog->ui->pushButtonSwitchToFullscreen, SIGNAL( clicked( bool ) ), this, SLOT( slot_switchToFullscreen() ) ); connect( vkCameraSettingsDialog->ui->comboBoxCameraVideoFormat, SIGNAL( currentIndexChanged( int ) ), comboBoxCameraVideoFormat, SLOT( setCurrentIndex( int ) ) ); connect( comboBoxCameraVideoFormat, SIGNAL( currentIndexChanged( int ) ), vkCameraSettingsDialog->ui->comboBoxCameraVideoFormat, SLOT( setCurrentIndex( int ) ) ); connect( vkCameraWindow, SIGNAL( signal_mousePressEvent( QMouseEvent* ) ), this, SLOT( slot_vkCameraSettingsDialogShow()) ); connect( vkCameraWindow, SIGNAL( signal_changelabelCameraWindowSize( QString ) ), labelCameraWindowSize, SLOT( setText( QString) ) ); connect( vkCameraWindow, SIGNAL( signal_changelabelCameraWindowSize( QString ) ), vkCameraSettingsDialog->ui->labelCameraWindowSize, SLOT( setText( QString) ) ); for ( int i = 0; i < cameraDevice.videoFormats().count(); i++ ) { QString format = QVideoFrameFormat::pixelFormatToString( cameraDevice.videoFormats().at(i).pixelFormat() ).toUpper(); if ( comboBoxCameraVideoFormat->findText( format ) == -1 ) { comboBoxCameraVideoFormat->addItem( format, cameraDevice.videoFormats().at(i).pixelFormat() ); // bei der Philips wird der Wert 17 für YUYV eingetragen und für JPEG der Wert 29 vkCameraSettingsDialog->ui->comboBoxCameraVideoFormat->addItem( format, cameraDevice.videoFormats().at(i).pixelFormat() ); } } slot_radioButtonCurrentCameraClicked( false ); } QvkCameraSingle::~QvkCameraSingle() { } void QvkCameraSingle::slot_vkCameraSettingsDialogShow() { vkCameraSettingsDialog->show(); if ( vkCameraWindow->isFullScreen() == true ) { vkCameraSettingsDialog->ui->widgetCameraWindowSize->hide(); vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame->hide(); vkCameraSettingsDialog->ui->pushButtonSwitchToFullscreen->setText( tr( "Switch to Window" ) ); } else { vkCameraSettingsDialog->ui->widgetCameraWindowSize->show(); vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame->show(); vkCameraSettingsDialog->ui->pushButtonSwitchToFullscreen->setText( tr( "Switch to Fullscreen" ) ); } } void QvkCameraSingle::slot_switchToFullscreen() { if ( vkCameraWindow->isFullScreen() == true ) { vkCameraSettingsDialog->close(); vkCameraWindow->showNormal(); } else { vkCameraSettingsDialog->close(); vkCameraWindow->setWindowState( Qt::WindowFullScreen ); } } void QvkCameraSingle::slot_comboboxCameraFormatCurrentIndexChanged( int value ) { Q_UNUSED(value) if ( camera != Q_NULLPTR ) { slot_checkBoxCameraOnOff( false ); slot_checkBoxCameraOnOff( true ); } } void QvkCameraSingle::slot_comboboxCameraResolutionsCurrentIndexChanged( int value ) { Q_UNUSED(value) sliderCameraWindowSize->setMaximum( comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - 100 ); sliderCameraWindowZoom->setMaximum( comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() / 2 ); if ( camera != Q_NULLPTR ) { slot_checkBoxCameraOnOff( false ); slot_checkBoxCameraOnOff( true ); } } void QvkCameraSingle::slot_comboboxCameraResolutionsInsertValues( int value ) { Q_UNUSED(value) disconnect( comboBoxCameraResolution, nullptr, nullptr, nullptr ); comboBoxCameraResolution->clear(); vkCameraSettingsDialog->ui->comboBoxCameraResolution->clear(); const QList cameraFormatList = cameraDevice.videoFormats(); for ( int i = 0; i < cameraFormatList.count(); i++ ) { if ( cameraFormatList.at(i).pixelFormat() == comboBoxCameraVideoFormat->currentData() ) { QString resolution; resolution.append( QString::number( cameraFormatList.at(i).resolution().width() ) ); resolution.append( "x" ); resolution.append( QString::number( cameraFormatList.at(i).resolution().height() ) ); if ( comboBoxCameraResolution->findText( resolution ) == -1 ) { comboBoxCameraResolution->addItem( resolution, cameraFormatList.at(i).resolution() ); vkCameraSettingsDialog->ui->comboBoxCameraResolution->addItem( resolution, cameraDevice.videoFormats().at(i).pixelFormat() ); } } } sliderCameraWindowSize->setMaximum( comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - 100 ); sliderCameraWindowZoom->setMaximum( comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() / 2 ); vkCameraSettingsDialog->dialog_sliderCameraWindowSize->setMaximum( comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - 100 ); vkCameraSettingsDialog->dialog_sliderCameraWindowZoom->setMaximum( comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() / 2 ); connect( comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_comboboxCameraResolutionsCurrentIndexChanged( int ) ) ); connect( comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), vkCameraSettingsDialog->ui->comboBoxCameraResolution, SLOT( setCurrentIndex( int ) ) ); } void QvkCameraSingle::slot_toolButtonRectangleClicked( bool value ) { Q_UNUSED(value) toolButton_camera_view_rectangle->setIcon( QIcon( ":/pictures/camera/window-rectangle-on.png" ) ); toolButton_camera_view_ellipse->setIcon( QIcon( ":/pictures/camera/window-ellipse-off.png" ) ); toolButton_camera_view_circle->setIcon( QIcon( ":/pictures/camera/window-circle-off.png" ) ); } void QvkCameraSingle::slot_toolButtonEllipseClicked( bool value ) { Q_UNUSED(value) toolButton_camera_view_ellipse->setIcon( QIcon( ":/pictures/camera/window-ellipse-on.png" ) ); toolButton_camera_view_rectangle->setIcon( QIcon( ":/pictures/camera/window-rectangle-off.png" ) ); toolButton_camera_view_circle->setIcon( QIcon( ":/pictures/camera/window-circle-off.png" ) ); } void QvkCameraSingle::slot_toolButtonCircleClicked( bool value ) { Q_UNUSED(value) toolButton_camera_view_circle->setIcon( QIcon( ":/pictures/camera/window-circle-on.png" ) ); toolButton_camera_view_rectangle->setIcon( QIcon( ":/pictures/camera/window-rectangle-off.png" ) ); toolButton_camera_view_ellipse->setIcon( QIcon( ":/pictures/camera/window-ellipse-off.png" ) ); } void QvkCameraSingle::slot_checkBoxCameraOnOff( bool value ) { // Camera starten if ( value == true ) { camera = new QCamera( cameraDevice ); connect( camera, SIGNAL( errorChanged() ), this, SLOT( slot_cameraError() ) ); // Format und Resolution von Widget ermitteln und anwenden const QList cameraFormatList = cameraDevice.videoFormats(); for ( int i = 0; i < cameraFormatList.count(); i++ ) { if ( cameraFormatList.at(i).pixelFormat() == comboBoxCameraVideoFormat->currentData() ) { if ( cameraFormatList.at(i).resolution() == comboBoxCameraResolution->currentData() ) { camera->setCameraFormat( cameraFormatList.at(i) ); QString width = QString::number( cameraFormatList.at(i).resolution().width() ); QString height = QString::number( cameraFormatList.at(i).resolution().height() ); qDebug().noquote() << global::nameOutput << "[Camera] Start with format:" << cameraFormatList.at(i).pixelFormat() << "and resolution:" << width + "x" + height; } } } videoSink = new QVideoSink; connect( videoSink, SIGNAL( videoFrameChanged( QVideoFrame ) ), this, SLOT( slot_videoFrameChanged( QVideoFrame ) ) ); vkCameraWindow->show(); captureSession = new QMediaCaptureSession; captureSession->setCamera( camera ); captureSession->setVideoOutput( videoSink ); camera->start(); } // Camera stopen if ( value == false ) { camera->stop(); delete camera; camera = Q_NULLPTR; delete captureSession; disconnect( videoSink ); delete videoSink; vkCameraWindow->hide(); } } void QvkCameraSingle::slot_cameraError() { vkCameraWindow->error = camera->errorString(); vkCameraWindow->repaint(); } void QvkCameraSingle::slot_cameraWindowFrameOnOff( bool value ) { if ( vkCameraWindow->isFullScreen() == false ) { Qt::WindowFlags flags; #ifdef Q_OS_WIN if ( value == true ) { vkCameraWindow->setWindowFlag( Qt::Window, false ); vkCameraWindow->setWindowFlag( Qt::ToolTip, true ); } if ( value == false ) { vkCameraWindow->setWindowFlag( Qt::Window, true ); vkCameraWindow->setWindowFlag( Qt::ToolTip, false ); } #endif #ifdef Q_OS_LINUX if ( value == true ) { flags = Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint; vkCameraWindow->setWindowFlags( flags ); } if ( value == false ) { flags = Qt::WindowStaysOnTopHint; vkCameraWindow->setWindowFlags( flags ); } #endif if ( checkBoxCameraOnOff->isChecked() == true ) { vkCameraWindow->show(); } } } void QvkCameraSingle::slot_radioButtonCurrentCameraClicked( bool value ) { Q_UNUSED(value) // Set text from current camera QList listLabel = ui->centralWidget->findChildren( "labelCurrentCamera" ); if ( radioButtonCamera->isChecked() == true ) { listLabel.at(0)->setText( checkBoxCameraOnOff->text() ); } // Hide widgetToolButton from other camera QList listWidget = ui->centralWidget->findChildren(); if ( listWidget.empty() == false ) { for ( int i = 0; i < listWidget.count(); i++ ) { if ( listWidget.at(i)->objectName().contains( "widgetToolButton-" ) ) { listWidget.at(i)->hide(); } } } // Hide all Checkbox from other camera QList listCheckBox = ui->centralWidget->findChildren(); if ( listCheckBox.empty() == false ) { for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->objectName().contains( "checkBoxCameraWindowFrame" ) ) { listCheckBox.at(i)->hide(); } if ( listCheckBox.at(i)->objectName().contains( "checkBoxCameraMirrorVertical" ) ) { listCheckBox.at(i)->hide(); } if ( listCheckBox.at(i)->objectName().contains( "checkBoxCameraMirrorHorizontal" ) ) { listCheckBox.at(i)->hide(); } if ( listCheckBox.at(i)->objectName().contains( "checkBoxCameraInvert" ) ) { listCheckBox.at(i)->hide(); } if ( listCheckBox.at(i)->objectName().contains( "checkBoxCameraGray" ) ) { listCheckBox.at(i)->hide(); } if ( listCheckBox.at(i)->objectName().contains( "checkBoxCameraMono" ) ) { listCheckBox.at(i)->hide(); } } } // Hide all Slider from Other camera QList listSpezialSlider = ui->centralWidget->findChildren(); if ( listSpezialSlider.empty() == false ) { for ( int i = 0; i < listSpezialSlider.count(); i++ ) { if ( listSpezialSlider.at(i)->objectName().contains( "sliderCameraWindowSize" ) ) { listSpezialSlider.at(i)->hide(); } if ( listSpezialSlider.at(i)->objectName().contains( "sliderCameraWindowZoom" ) ) { listSpezialSlider.at(i)->hide(); } } } QList listLabelCameraWindowSize = ui->centralWidget->findChildren(); if ( listLabelCameraWindowSize.empty() == false ) { for ( int i = 0; i < listLabelCameraWindowSize.count(); i++ ) { if ( listLabelCameraWindowSize.at(i)->objectName().contains( "labelCameraWindowSize" ) ) { listLabelCameraWindowSize.at(i)->hide(); } } } // If the config emmpty the last camera is set radioButtonCamera->setChecked( true ); // Show all Widget from current camera sliderCameraWindowZoom->show(); sliderCameraWindowSize->show(); labelCameraWindowSize->show(); widgetToolButton->show(); toolButton_camera_view_rectangle->show(); toolButton_camera_view_ellipse->show(); toolButton_camera_view_circle->show(); checkBoxCameraWindowFrame->show(); checkBoxCameraMirrorHorizontal->show(); checkBoxCameraMirrorVertical->show(); checkBoxCameraInvert->show(); checkBoxCameraGray->show(); checkBoxCameraMono->show(); } void QvkCameraSingle::slot_videoFrameChanged( QVideoFrame videoFrame ) { if ( videoFrame.isValid() == false ) { return; } QImage image = videoFrame.toImage(); image.convertTo( QImage::Format_RGB32 ); if ( checkBoxCameraMirrorHorizontal->isChecked() == true ) { image = image.mirrored( true, false ); } if ( checkBoxCameraMirrorVertical->isChecked() == true ) { image = image.mirrored( false, true ); } if ( checkBoxCameraInvert->isChecked() == true ) { image.invertPixels( QImage::InvertRgb ); } if ( checkBoxCameraGray->isChecked() == true ) { image = image.convertToFormat( QImage::Format_Grayscale8 ); } if ( checkBoxCameraMono->isChecked() == true ) { image = image.convertToFormat( QImage::Format_Mono ); } // Zoom if ( sliderCameraWindowZoom->value() > 0 ) { qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; qreal minusPixel = sliderCameraWindowZoom->value(); QImage image_zoom = image.copy( minusPixel, minusPixel / quotient, width - ( 2 * minusPixel ), height - ( 2 * minusPixel / quotient ) ); image = image_zoom.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); } // Zoom end // Rectangel if ( toolButton_camera_view_rectangle->isChecked() == true ) { if ( vkCameraWindow->isFullScreen() == false ) { qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; int w = comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); int h = comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; image = image.scaled( w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); vkCameraWindow->setFixedSize( image.width(), image.height() ); vkCameraWindow->setNewImage( image ); return; } else { vkCameraWindow->setNewImage( image ); return; } } // Rectangel end // Ellipse if ( toolButton_camera_view_ellipse->isChecked() == true ) { if ( vkCameraWindow->isFullScreen() == false ) { qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; int w = comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); int h = comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; image = image.scaled( w, h, Qt::KeepAspectRatio, Qt::SmoothTransformation ); } QPixmap pixmap( image.width(), image.height() ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); QPainterPath path; path.addEllipse( 0, 0, image.width(), image.height() ); painter.setClipPath( path ); painter.drawImage( QPoint( 0, 0 ), image ); painter.end(); image = pixmap.toImage(); if ( vkCameraWindow->isFullScreen() == false ) { vkCameraWindow->setFixedSize( image.width(), image.height() ); } } // Ellipse end // Circle if ( toolButton_camera_view_circle->isChecked() == true ) { if ( vkCameraWindow->isFullScreen() == true ){ int w = image.width(); int h = image.height(); QPixmap pixmap( w, h ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); QPainterPath path; path.addEllipse( (w-h)/2, 0, h, h ); painter.setClipPath( path ); image = image.scaled( w, h, Qt::KeepAspectRatio, Qt::SmoothTransformation ); painter.drawImage( 0, 0, image ); painter.end(); image = pixmap.toImage(); } else { #ifdef Q_OS_LINUX // Under linux absolute perfect. Under Windows outer black line. qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; qreal w = comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); qreal h = comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; QPixmap pixmap( h, h ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); QPainterPath path; path.addEllipse( 0, 0, h, h ); painter.setClipPath( path ); QRectF target( 0.0, 0.0, h, h ); QRectF source( (w-h)/2, 0.0, image.height(), image.height() ); painter.drawImage( target, image, source ); painter.end(); image = pixmap.toImage(); vkCameraWindow->setFixedSize( h, h ); #endif // Under Windows a bit better as the other code #ifdef Q_OS_WIN qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; qreal w = comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); qreal h = comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; QPixmap pixmap( h, h ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHint( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); QRegion region( QRect( 0, 0, h, h ), QRegion::Ellipse ); painter.setClipRegion( region ); painter.drawImage( QPointF( 0.0, 0.0 ), image ); QRectF target( 0.0, 0.0, h, h ); QRectF source( (w-h)/2, 0.0, image.height(), image.height() ); painter.drawImage( target, image, source ); painter.end(); image = pixmap.toImage(); vkCameraWindow->setFixedSize( h, h ); #endif } } // Circle end vkCameraWindow->setNewImage( image ); } vokoscreenNG-3.7.0/src/camera-qt6/QvkCameraSingle.h000066400000000000000000000061221444746353100220540ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2023 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERASINGLE_H #define QVKCAMERASINGLE_H #include "ui_formMainWindow.h" #include "QvkSpezialSlider.h" #include "QvkCameraWindow.h" #include "camerasettingsdialog.h" #include #include #include #include #include #include #include #include #include #include #include class QvkCameraSingle : public QObject { Q_OBJECT public: QvkCameraSingle( Ui_formMainWindow *ui_surface, QCameraDevice m_cameraDevice ); virtual ~QvkCameraSingle(); QRadioButton *radioButtonCamera; QvkCameraWindow *vkCameraWindow; cameraSettingsDialog *vkCameraSettingsDialog; public slots: private slots: void slot_checkBoxCameraOnOff( bool value ); void slot_videoFrameChanged( QVideoFrame videoFrame ); void slot_radioButtonCurrentCameraClicked( bool value ); void slot_toolButtonRectangleClicked( bool value ); void slot_toolButtonEllipseClicked( bool value ); void slot_toolButtonCircleClicked( bool value ); void slot_cameraWindowFrameOnOff( bool value ); void slot_cameraError(); void slot_comboboxCameraResolutionsInsertValues( int value ); void slot_comboboxCameraFormatCurrentIndexChanged( int value ); void slot_comboboxCameraResolutionsCurrentIndexChanged( int value ); void slot_vkCameraSettingsDialogShow(); void slot_switchToFullscreen(); private: Ui_formMainWindow *ui; QCameraDevice cameraDevice; QCamera *camera = Q_NULLPTR; QMediaCaptureSession *captureSession; QVideoSink *videoSink; QCheckBox *checkBoxCameraOnOff; QComboBox *comboBoxCameraVideoFormat; QComboBox *comboBoxCameraResolution; QvkSpezialSlider *sliderCameraWindowSize; QLabel *labelCameraWindowSize; QvkSpezialSlider *sliderCameraWindowZoom; QWidget *widgetToolButton; QToolButton *toolButton_camera_view_rectangle; QToolButton *toolButton_camera_view_ellipse; QToolButton *toolButton_camera_view_circle; QCheckBox *checkBoxCameraWindowFrame; QCheckBox *checkBoxCameraMirrorHorizontal; QCheckBox *checkBoxCameraMirrorVertical; QCheckBox *checkBoxCameraInvert; QCheckBox *checkBoxCameraGray; QCheckBox *checkBoxCameraMono; protected: signals: }; #endif vokoscreenNG-3.7.0/src/camera-qt6/QvkCameraWindow.cpp000066400000000000000000000160121444746353100224340ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2023 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCameraWindow.h" #include "global.h" #include #include QvkCameraWindow::QvkCameraWindow( Ui_formMainWindow *ui_surface, QCheckBox *checkBox ) { ui = ui_surface; setAttribute( Qt::WA_TranslucentBackground, true ); checkBoxCameraWindowFrame = checkBox; setWindowFlags( windowFlags() | Qt::WindowStaysOnTopHint ); setWindowIcon( QIcon( QString::fromUtf8( ":/pictures/logo/logo.png" ) ) ); setWindowTitle( QString( tr( "Camera") ) + " " + global::version ); resize( 100, 100 ); move( 100, 100 ); } QvkCameraWindow::~QvkCameraWindow() { } void QvkCameraWindow::paintEvent( QPaintEvent *event ) { Q_UNUSED(event) if ( image.format() == QImage::Format_Invalid ) { if ( error > "" ) { int w = 480; int h = 300; int pointSize = 14; int frameWidth = 8; resize( w, h ); QPainter painter; painter.begin( this ); painter.setRenderHints( QPainter::Antialiasing, true ); // Background QBrush brush( Qt::white ); painter.fillRect( 0, 0, w, h, brush ); // Frame if ( checkBoxCameraWindowFrame->isChecked() == true ) { QPen pen; pen.setWidth( frameWidth ); pen.setColor( QString( "#9EBBD8" ) ); painter.setPen( pen ); painter.drawRect( frameWidth/2, frameWidth/2, w-frameWidth, h-frameWidth ); } // Text QFont font; font.setPointSize( pointSize ); painter.setFont( font ); QPen pen; pen.setColor( Qt::black ); painter.setPen( pen ); painter.drawText( QRect( 0, 0, w, h/2 ), Qt::AlignCenter, global::name + " " + global::version ); painter.drawText( QRectF( 0, 0, w, h ), Qt::AlignCenter, error ); // Close button if ( checkBoxCameraWindowFrame->isChecked() == true ) { int width = 20; int height = 20; int distanceToFrame = 3; rectCloseButton.setRect( w - frameWidth - distanceToFrame - width, frameWidth + distanceToFrame, width, height ); QPen pen; pen.setWidth( 2 ); pen.setColor( Qt::red ); painter.setPen( pen ); painter.drawLine( rectCloseButton.topRight(), rectCloseButton.bottomLeft() ); painter.drawLine( rectCloseButton.topLeft(), rectCloseButton.bottomRight() ); } painter.end(); return; } return; } int displayedWidth = 0; int displayedHeight = 0; if ( isFullScreen() == true ) { displayedWidth = width(); displayedHeight = height(); image = image.scaled( displayedWidth, displayedHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation ); } else { displayedWidth = image.width(); displayedHeight = image.height(); } QPixmap pixmap( displayedWidth, displayedHeight ); if ( checkBoxCameraWindowFrame->isChecked() == true ) { if ( isFullScreen() == true ) { pixmap.fill( Qt::black ); } else { pixmap.fill( Qt::transparent ); } } else { pixmap.fill( Qt::black ); } QPainter painterPixmap; painterPixmap.begin( &pixmap ); painterPixmap.setRenderHint( QPainter::Antialiasing, true ); painterPixmap.setRenderHint( QPainter::SmoothPixmapTransform, true ); painterPixmap.drawImage( ( width() - image.width() ) / 2 , 0, image ); painterPixmap.end(); QPainter painter; painter.begin( this ); painter.setRenderHint( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); painter.drawPixmap( QPoint( 0, 0 ), pixmap ); painter.end(); if ( checkBoxCameraWindowFrame->isChecked() == true ) { setMask( pixmap.mask() ); } else { clearMask(); } } void QvkCameraWindow::setNewImage( QImage _image ) { image = _image; repaint(); } void QvkCameraWindow::closeEvent( QCloseEvent *event ) { Q_UNUSED(event); emit signal_cameraWindow_close( false ); } void QvkCameraWindow::resizeEvent( QResizeEvent *event ) { Q_UNUSED(event); QString size = QString::number( width() ) + "x" + QString::number( height() ); emit signal_changelabelCameraWindowSize( size ); } void QvkCameraWindow::keyPressEvent( QKeyEvent *event ) { if ( event->key() == Qt::Key_Escape ) { showNormal(); } if ( ( event->key() == Qt::Key_F11 ) or ( event->key() == Qt::Key_F ) ) { if ( isFullScreen() == true ) { showNormal(); } else { setWindowState( Qt::WindowFullScreen ); } } } void QvkCameraWindow::mouseDoubleClickEvent( QMouseEvent *event ) { if ( event->button() == Qt::LeftButton ) { if ( isFullScreen() == true ) { showNormal(); } else { setWindowState( Qt::WindowFullScreen ); } } } void QvkCameraWindow::mousePressEvent( QMouseEvent *event ) { if ( rectCloseButton.contains( event->pos() ) ) { close(); return; } if ( event->button() == Qt::RightButton ) { emit signal_mousePressEvent( event ); } if ( ( checkBoxCameraWindowFrame->isChecked() == true ) and ( event->button() == Qt::LeftButton ) and ( isFullScreen() == false ) ) { QPixmap pixmap( ":/pictures/cursor/size_all.png" ); QCursor cursor( pixmap ); setCursor( cursor ); mousePressed = true; mouseLocal_X = event->position().x(); mouseLocal_Y = event->position().y(); } } void QvkCameraWindow::mouseReleaseEvent( QMouseEvent *event ) { Q_UNUSED(event) if ( ( checkBoxCameraWindowFrame->isChecked() == true ) and ( isFullScreen() == false ) ) { unsetCursor(); mousePressed = false; } } void QvkCameraWindow::mouseMoveEvent( QMouseEvent *event ) { Q_UNUSED(event) if ( ( checkBoxCameraWindowFrame->isChecked() == true ) and ( mousePressed == true ) ) { move( QCursor::pos().x() - mouseLocal_X, QCursor::pos().y() - mouseLocal_Y ); } } vokoscreenNG-3.7.0/src/camera-qt6/QvkCameraWindow.h000066400000000000000000000043451444746353100221070ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2023 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERAWINDOW_H #define QVKCAMERAWINDOW_H #include "ui_formMainWindow.h" #include "ui_camerasettingsdialog.h" #include "camerasettingsdialog.h" #include "QvkSpezialSlider.h" #include #include #include #include #include #include #include #include #include #include #include class QvkCameraWindow : public QWidget { Q_OBJECT public: QvkCameraWindow(Ui_formMainWindow *ui_surface, QCheckBox *checkBox ); virtual ~QvkCameraWindow(); QString error; void setNewImage( QImage _image ); private: Ui_formMainWindow *ui; bool mousePressed = false; int mouseLocal_X; int mouseLocal_Y; QImage image; QRect rectCloseButton; QCheckBox *checkBoxCameraWindowFrame; public slots: private slots: protected: void closeEvent( QCloseEvent *event ); void mouseDoubleClickEvent( QMouseEvent *event ); void keyPressEvent( QKeyEvent *event ); void mousePressEvent( QMouseEvent *event ); void resizeEvent( QResizeEvent *event ); void mouseReleaseEvent( QMouseEvent *event ); void mouseMoveEvent( QMouseEvent *event ); void paintEvent( QPaintEvent *event ); signals: void signal_cameraWindow_close( bool ); void signal_mousePressEvent( QMouseEvent *event ); void signal_changelabelCameraWindowSize( QString value ); }; #endif // QVKCAMERAWINDOW_H vokoscreenNG-3.7.0/src/camera-qt6/camera-qt6.pri000066400000000000000000000006221444746353100213420ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkCameraController.h \ $$PWD/QvkCameraSingle.h \ $$PWD/QvkCameraWindow.h \ $$PWD/camerasettingsdialog.h SOURCES += $$PWD/QvkCameraController.cpp \ $$PWD/QvkCameraSingle.cpp \ $$PWD/QvkCameraWindow.cpp \ $$PWD/camerasettingsdialog.cpp FORMS += $$PWD/camerasettingsdialog.ui vokoscreenNG-3.7.0/src/camera-qt6/camerasettingsdialog.cpp000066400000000000000000000044021444746353100235630ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "ui_camerasettingsdialog.h" #include "camerasettingsdialog.h" #include "global.h" cameraSettingsDialog::cameraSettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::cameraSettingsDialog) { setModal( true ); setWindowFlags( Qt::Window | Qt::WindowStaysOnTopHint | Qt::Tool ); ui->setupUi(this); setWindowIcon( QIcon( ":/pictures/logo/logo.png" ) ); setWindowTitle( tr( "Camera settings" ) ); dialog_sliderCameraWindowSize = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_3->insertWidget( 1, dialog_sliderCameraWindowSize ); dialog_sliderCameraWindowSize->setObjectName( "sliderCameraWindowSize" ); dialog_sliderCameraWindowSize->setMinimum( 0 ); dialog_sliderCameraWindowSize->setMaximum( 3000 ); dialog_sliderCameraWindowSize->setValue( 0 ); dialog_sliderCameraWindowSize->show(); dialog_sliderCameraWindowSize->setShowValue( true ); dialog_sliderCameraWindowZoom = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_2->insertWidget( 1, dialog_sliderCameraWindowZoom ); dialog_sliderCameraWindowZoom->setObjectName( "sliderCameraWindowZoom" ); dialog_sliderCameraWindowZoom->setMinimum( 0 ); dialog_sliderCameraWindowZoom->setMaximum( 3000 ); dialog_sliderCameraWindowZoom->setValue( 0 ); dialog_sliderCameraWindowZoom->show(); dialog_sliderCameraWindowZoom->setShowValue( true ); } cameraSettingsDialog::~cameraSettingsDialog() { delete ui; } vokoscreenNG-3.7.0/src/camera-qt6/camerasettingsdialog.h000066400000000000000000000024611444746353100232330ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef CAMERASETTINGSDIALOG_H #define CAMERASETTINGSDIALOG_H #include "QvkSpezialSlider.h" #include namespace Ui { class cameraSettingsDialog; } class cameraSettingsDialog : public QDialog { Q_OBJECT public: explicit cameraSettingsDialog( QWidget *parent = Q_NULLPTR ); ~cameraSettingsDialog(); Ui::cameraSettingsDialog *ui; QvkSpezialSlider *dialog_sliderCameraWindowSize; QvkSpezialSlider *dialog_sliderCameraWindowZoom; private: }; #endif // CAMERASETTINGSDIALOG_H vokoscreenNG-3.7.0/src/camera-qt6/camerasettingsdialog.ui000066400000000000000000000301201444746353100234120ustar00rootroot00000000000000 cameraSettingsDialog 0 0 375 429 Dialog 0 48 48 :/pictures/camera/camera.png:/pictures/camera/camera.png Qt::Horizontal 40 20 0 0 0 0 0 12 34 34 :/pictures/camera/window-resize.png true ---x--- Qt::AlignCenter 12 34 34 :/pictures/systray/magnification.png true 0 0 Qt::Horizontal 40 20 :/pictures/camera/window-rectangle-off.png :/pictures/camera/window-rectangle-on.png:/pictures/camera/window-rectangle-off.png 34 34 true true true true Qt::Horizontal QSizePolicy::Preferred 40 20 :/pictures/camera/window-ellipse-off.png :/pictures/camera/window-ellipse-on.png:/pictures/camera/window-ellipse-off.png 34 34 true true true Qt::Horizontal QSizePolicy::Preferred 40 20 :/pictures/camera/window-circle-off.png :/pictures/camera/window-circle-on.png:/pictures/camera/window-circle-off.png 34 34 true true true Qt::Horizontal 40 20 Remove window frame Flip vertical Flip horizontal Invert Gray Black-and-white Switch to Fullscreen Qt::Vertical 20 40 QDialogButtonBox::Ok vokoscreenNG-3.7.0/src/camera/000077500000000000000000000000001444746353100161565ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/camera/QvkCameraController.cpp000066400000000000000000000522741444746353100226120ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCameraController.h" #include "QvkCameraResolution.h" #include "global.h" #include "camerasettingsdialog.h" #include #include #include #include QvkCameraController::QvkCameraController( Ui_formMainWindow *ui_surface ):videoSurface(new QvkVideoSurface()) { ui_formMainWindow = ui_surface; sliderCameraWindowSize = new QvkSpezialSlider( Qt::Horizontal ); ui_formMainWindow->horizontalLayout_45->insertWidget( 1, sliderCameraWindowSize ); sliderCameraWindowSize->setObjectName( "sliderCameraWindowSize" ); sliderCameraWindowSize->setMinimum( 0 ); sliderCameraWindowSize->setMaximum( 1 ); sliderCameraWindowSize->setValue( 0 ); sliderCameraWindowSize->show(); sliderCameraWindowSize->setShowValue( false ); sliderCameraWindowSize->setBigHandel( true ); sliderCameraWindowSize->setEnabled( true ); sliderCameraWindowZoom = new QvkSpezialSlider( Qt::Horizontal ); ui_formMainWindow->horizontalLayout_zoom->insertWidget( 1, sliderCameraWindowZoom ); sliderCameraWindowZoom->setObjectName( "sliderCameraWindowZoom" ); sliderCameraWindowZoom->setMinimum( 0 ); sliderCameraWindowZoom->setMaximum( 1 ); sliderCameraWindowZoom->setValue( 0 ); sliderCameraWindowZoom->show(); sliderCameraWindowZoom->setShowValue( true ); sliderCameraWindowZoom->setEnabled( true ); vkCameraSettingsDialog = new cameraSettingsDialog; connect( sliderCameraWindowSize, SIGNAL( rangeChanged( int, int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowSize, SLOT( setRange( int, int ) ) ); connect( sliderCameraWindowSize, SIGNAL( valueChanged( int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowSize, SLOT( setValue( int ) ) ); connect( sliderCameraWindowZoom, SIGNAL( rangeChanged( int, int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowZoom, SLOT( setRange( int, int ) ) ); connect( sliderCameraWindowZoom, SIGNAL( valueChanged( int ) ), vkCameraSettingsDialog->dialog_sliderCameraWindowZoom, SLOT( setValue( int ) ) ); connect( vkCameraSettingsDialog->dialog_sliderCameraWindowSize, SIGNAL( valueChanged( int ) ), sliderCameraWindowSize, SLOT( setValue( int ) ) ); connect( vkCameraSettingsDialog->dialog_sliderCameraWindowZoom, SIGNAL( valueChanged( int ) ), sliderCameraWindowZoom, SLOT( setValue( int ) ) ); QvkCameraResolution *vkCameraResolution = new QvkCameraResolution( ui_formMainWindow, vkCameraSettingsDialog ); connect( ui_formMainWindow->comboBoxCamera, SIGNAL( currentIndexChanged( int ) ), vkCameraResolution, SLOT( slot_resolution( int ) ) ); connect( ui_formMainWindow->comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_resolutionChanged( int ) ) ); getAllDevices(); vkCameraWindow = new QvkCameraWindow( ui_surface, vkCameraSettingsDialog ); connect( vkCameraWindow, SIGNAL( signal_cameraWindow_close( bool ) ), ui_formMainWindow->checkBoxCameraOnOff, SLOT( setChecked( bool ) ) ); vkCameraWindow->setWindowTitle( QString( tr( "Camera") ) + " " + global::version ); vkCameraWindow->setAttribute( Qt::WA_TranslucentBackground, true ); QIcon icon( QString::fromUtf8( ":/pictures/logo/logo.png" ) ); vkCameraWindow->setWindowIcon( icon ); QvkCameraWatcher *cameraWatcher = new QvkCameraWatcher( ui_formMainWindow ); connect( cameraWatcher, SIGNAL( signal_addedCamera( QString, QString ) ), this, SLOT( slot_addedCamera( QString, QString ) ) ); connect( cameraWatcher, SIGNAL( signal_removedCamera( QString ) ), this, SLOT( slot_removedCamera( QString ) ) ); connect( ui_formMainWindow->checkBoxCameraOnOff, SIGNAL( toggled( bool ) ), ui_formMainWindow->comboBoxCamera, SLOT( setDisabled( bool ) ) ); connect( ui_formMainWindow->checkBoxCameraOnOff, SIGNAL( toggled( bool ) ), this, SLOT( slot_startCamera( bool ) ) ); connect( videoSurface, SIGNAL( signal_newPicture( QImage ) ), this, SLOT( slot_setNewImage( QImage ) ) ); connect( ui_formMainWindow->checkBoxCameraWindowFrame, SIGNAL( toggled( bool ) ), this, SLOT( slot_frameOnOff( bool ) ) ); } QvkCameraController::~QvkCameraController() { } void QvkCameraController::slot_resolutionChanged( int index ) { Q_UNUSED(index) qDebug().noquote() << global::nameOutput << "[Camera] Changed resolution to: " << ui_formMainWindow->comboBoxCameraResolution->currentText(); int minimumSize = 100; sliderCameraWindowSize->setMaximum( ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - minimumSize); sliderCameraWindowZoom->setMaximum( ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() / 2 ); if ( ui_formMainWindow->checkBoxCameraOnOff->checkState() == Qt::Checked ) { if ( vkCameraWindow->isFullScreen() == false ) { ui_formMainWindow->checkBoxCameraOnOff->click(); ui_formMainWindow->checkBoxCameraOnOff->click(); if ( vkCameraSettingsDialog->isVisible() == true ) { vkCameraSettingsDialog->close(); vkCameraSettingsDialog->show(); } } else{ vkCameraWindow->showNormal(); ui_formMainWindow->checkBoxCameraOnOff->click(); ui_formMainWindow->checkBoxCameraOnOff->click(); if ( vkCameraSettingsDialog->isVisible() == true ) { vkCameraSettingsDialog->close(); vkCameraSettingsDialog->show(); } vkCameraWindow->showFullScreen(); } } } void QvkCameraController::getAllDevices() { QList camerasInfoList = QCameraInfo::availableCameras(); if ( !camerasInfoList.empty() ) { for ( int i = 0; i < camerasInfoList.count(); i++ ) { if ( ( camerasInfoList.at(i).description() > "" ) and ( !camerasInfoList.at(i).description().contains( "@device:pnp" ) ) ) { qDebug().noquote() << global::nameOutput << "[Camera] Found:" << camerasInfoList.at(i).description() << camerasInfoList.at(i).deviceName(); slot_addedCamera( camerasInfoList.at(i).description(), camerasInfoList.at(i).deviceName() ); } } } } void QvkCameraController::slot_frameOnOff( bool value ) { if ( vkCameraWindow->isFullScreen() == false ) { Qt::WindowFlags flags; #ifdef Q_OS_WIN if ( value == true ) { vkCameraWindow->setWindowFlag( Qt::Window, false ); vkCameraWindow->setWindowFlag( Qt::ToolTip, true ); } if ( value == false ) { vkCameraWindow->setWindowFlag( Qt::Window, true ); vkCameraWindow->setWindowFlag( Qt::ToolTip, false ); } #endif #ifdef Q_OS_LINUX if ( value == true ) { flags = Qt::Window | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint; vkCameraWindow->setWindowFlags( flags ); } if ( value == false ) { flags = Qt::WindowStaysOnTopHint; vkCameraWindow->setWindowFlags( flags ); } #endif if ( ui_formMainWindow->checkBoxCameraOnOff->isChecked() == true ) { vkCameraWindow->show(); } } } void QvkCameraController::slot_setNewImage( QImage image ) { #ifdef Q_OS_LINUX if ( ui_formMainWindow->checkBoxCameraMirrorHorizontal->isChecked() == true ) { image = image.mirrored( true, false ); } if ( ui_formMainWindow->checkBoxCameraMirrorVertical->isChecked() == true ) { image = image.mirrored( false, true ); } #endif #ifdef Q_OS_WIN if ( ui_formMainWindow->checkBoxCameraMirrorHorizontal->isChecked() == true ) { image = image.mirrored( true, false ); } if ( ui_formMainWindow->checkBoxCameraMirrorVertical->isChecked() == false ) { image = image.mirrored( false, true ); } #endif if ( ui_formMainWindow->checkBoxCameraInvert->isChecked() == true ) { image.invertPixels( QImage::InvertRgb ); } if ( ui_formMainWindow->checkBoxCameraGray->isChecked() == true ) { image = image.convertToFormat( QImage::Format_Grayscale8 ); } if ( ui_formMainWindow->checkBoxCameraMono->isChecked() == true ) { image = image.convertToFormat( QImage::Format_Mono ); } // Zoom if ( sliderCameraWindowZoom->value() > 0 ) { qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; qreal minusPixel = sliderCameraWindowZoom->value(); QImage image_zoom = image.copy( minusPixel, minusPixel / quotient, width - ( 2 * minusPixel ), height - ( 2 * minusPixel / quotient ) ); image = image_zoom.scaled( width, height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); } // Zoom end // Rectangel if ( ui_formMainWindow->toolButton_camera_view_rectangle->isChecked() == true ) { if ( vkCameraWindow->isFullScreen() == false ) { qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; int w = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); int h = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; image = image.scaled( w, h, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); vkCameraWindow->setFixedSize( image.width(), image.height() ); vkCameraWindow->setNewImage( image ); return; } else { vkCameraWindow->setNewImage( image ); return; } } // Rectangel end // Ellipse if ( ui_formMainWindow->toolButton_camera_view_ellipse->isChecked() == true ) { if ( vkCameraWindow->isFullScreen() == false ) { qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; int w = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); int h = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; image = image.scaled( w, h, Qt::KeepAspectRatio, Qt::SmoothTransformation ); } QPixmap pixmap( image.width(), image.height() ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); QPainterPath path; path.addEllipse( 0, 0, image.width(), image.height() ); painter.setClipPath( path ); painter.drawImage( QPoint( 0, 0 ), image ); painter.end(); image = pixmap.toImage(); if ( vkCameraWindow->isFullScreen() == false ) { vkCameraWindow->setFixedSize( image.width(), image.height() ); } } // Circle if ( ui_formMainWindow->toolButton_camera_view_circle->isChecked() == true ) { if ( vkCameraWindow->isFullScreen() == true ){ int w = image.width(); int h = image.height(); QPixmap pixmap( w, h ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); QPainterPath path; path.addEllipse( (w-h)/2, 0, h, h ); painter.setClipPath( path ); image = image.scaled( w, h, Qt::KeepAspectRatio, Qt::SmoothTransformation ); painter.drawImage( 0, 0, image ); painter.end(); image = pixmap.toImage(); } else { #ifdef Q_OS_LINUX // Under linux absolute perfect. Under Windows outer black line. qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; qreal w = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); qreal h = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; QPixmap pixmap( h, h ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); QPainterPath path; path.addEllipse( 0, 0, h, h ); painter.setClipPath( path ); QRectF target( 0.0, 0.0, h, h ); QRectF source( (w-h)/2, 0.0, image.height(), image.height() ); painter.drawImage( target, image, source ); painter.end(); image = pixmap.toImage(); vkCameraWindow->setFixedSize( h, h ); #endif // Under Windows a bit better as the other code #ifdef Q_OS_WIN qreal width = image.width(); qreal height = image.height(); qreal quotient = width / height; qreal w = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt() - sliderCameraWindowSize->value(); qreal h = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt() - sliderCameraWindowSize->value() / quotient; QPixmap pixmap( h, h ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &pixmap ); painter.setRenderHint( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); QRegion region( QRect( 0, 0, h, h ), QRegion::Ellipse ); painter.setClipRegion( region ); painter.drawImage( QPointF( 0.0, 0.0 ), image ); QRectF target( 0.0, 0.0, h, h ); QRectF source( (w-h)/2, 0.0, image.height(), image.height() ); painter.drawImage( target, image, source ); painter.end(); image = pixmap.toImage(); vkCameraWindow->setFixedSize( h, h ); #endif } } // Circle end vkCameraWindow->setNewImage( image ); } void QvkCameraController::slot_addedCamera( QString description, QString device ) { ui_formMainWindow->checkBoxCameraOnOff->setEnabled( true ); ui_formMainWindow->comboBoxCamera->setEnabled( true ); ui_formMainWindow->comboBoxCameraResolution->setEnabled( true ); ui_formMainWindow->comboBoxCamera->addItem( description, device.toLatin1() ); ui_formMainWindow->checkBoxCameraGray->setEnabled( true ); ui_formMainWindow->checkBoxCameraInvert->setEnabled( true ); ui_formMainWindow->checkBoxCameraMirrorHorizontal->setEnabled( true ); ui_formMainWindow->checkBoxCameraMirrorVertical->setEnabled( true ); ui_formMainWindow->checkBoxCameraMono->setEnabled( true ); sliderCameraWindowSize->setEnabled( true ); sliderCameraWindowZoom->setEnabled( true ); ui_formMainWindow->checkBoxCameraWindowFrame->setEnabled( true ); } void QvkCameraController::slot_removedCamera( QString device ) { if ( ( ui_formMainWindow->checkBoxCameraOnOff->isChecked() == true ) and ( ui_formMainWindow->comboBoxCamera->currentData().toString() == device ) ) { vkCameraWindow->close(); } int x = ui_formMainWindow->comboBoxCamera->findData( device.toLatin1() ); ui_formMainWindow->comboBoxCamera->removeItem( x ); if ( ui_formMainWindow->comboBoxCamera->count() == 0 ) { ui_formMainWindow->checkBoxCameraOnOff->setEnabled( false ); ui_formMainWindow->comboBoxCamera->setEnabled( false ); ui_formMainWindow->comboBoxCameraResolution->clear(); ui_formMainWindow->comboBoxCameraResolution->setEnabled( false ); ui_formMainWindow->checkBoxCameraGray->setEnabled( false ); ui_formMainWindow->checkBoxCameraInvert->setEnabled( false ); ui_formMainWindow->checkBoxCameraMirrorHorizontal->setEnabled( false ); ui_formMainWindow->checkBoxCameraMirrorVertical->setEnabled( false ); ui_formMainWindow->checkBoxCameraMono->setEnabled( false ); sliderCameraWindowSize->setEnabled( false ); sliderCameraWindowZoom->setEnabled( false ); ui_formMainWindow->checkBoxCameraWindowFrame->setEnabled( false ); } } void QvkCameraController::slot_startCamera( bool value ) { if ( value == true ) { QByteArray device = ui_formMainWindow->comboBoxCamera->currentData().toByteArray(); delete camera; camera = new QCamera( device ); camera->setCaptureMode( QCamera::CaptureViewfinder ); connect( camera, SIGNAL( statusChanged( QCamera::Status ) ), this, SLOT( slot_statusChanged( QCamera::Status ) ) ); connect( camera, SIGNAL( stateChanged( QCamera::State ) ), this, SLOT( slot_stateChanged( QCamera::State ) ) ); connect( camera, QOverload::of( &QCamera::error ), this, [=]( QCamera::Error value ){ slot_error( value ); }); int frameWidth = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 0, 0 ).toInt(); int frameHeight = ui_formMainWindow->comboBoxCameraResolution->currentText().section( "x", 1, 1 ).toInt(); QCameraViewfinderSettings viewfinderSettings; viewfinderSettings.setResolution( frameWidth, frameHeight ); viewfinderSettings.setMinimumFrameRate( 0.0 ); viewfinderSettings.setMaximumFrameRate( 0.0 ); camera->setViewfinderSettings( viewfinderSettings ); camera->setViewfinder( videoSurface ); vkCameraWindow->setStyleSheet( "background-color:black;" ); vkCameraWindow->show(); #ifdef Q_OS_LINUX camera->load(); #endif #ifdef Q_OS_WIN camera->start(); #endif } else { disconnect( camera, nullptr, nullptr, nullptr ); camera->stop(); camera->unload(); vkCameraWindow->close(); } } void QvkCameraController::slot_statusChanged( QCamera::Status status ) { switch ( status ) { case QCamera::UnavailableStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 0 case QCamera::UnloadedStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 1 case QCamera::LoadingStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 2 case QCamera::UnloadingStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 3 case QCamera::LoadedStatus : { qDebug().noquote() << global::nameOutput << status; #ifdef Q_OS_LINUX camera->start(); #endif break; }// 4 case QCamera::StandbyStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 5 case QCamera::StartingStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 6 case QCamera::StoppingStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 7 case QCamera::ActiveStatus : { qDebug().noquote() << global::nameOutput << status; break; }// 8 } } void QvkCameraController::slot_stateChanged( QCamera::State state ) { switch ( state ) { case QCamera::UnloadedState : { qDebug().noquote() << global::nameOutput << state; break; }// 0 case QCamera::LoadedState : { qDebug().noquote() << global::nameOutput << state; break; }// 1 case QCamera::ActiveState : { qDebug().noquote() << global::nameOutput << state; break; }// 2 } } void QvkCameraController::slot_error( QCamera::Error error ) { switch ( error ) { case QCamera::NoError: { break; } case QCamera::CameraError: { qDebug().noquote() << global::nameOutput << "General Camera error"; vkCameraWindow->error = "Camera is busy"; vkCameraWindow->repaint(); break; } case QCamera::InvalidRequestError: { qDebug().noquote() << global::nameOutput << "Camera invalid request error"; break; } case QCamera::ServiceMissingError: { qDebug().noquote() << global::nameOutput << "Camera service missing error"; break; } case QCamera::NotSupportedFeatureError : { qDebug().noquote() << global::nameOutput << "Camera not supported error"; break; } } } vokoscreenNG-3.7.0/src/camera/QvkCameraController.h000066400000000000000000000042151444746353100222470ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERACONTROLLER_H #define QVKCAMERACONTROLLER_H #include "ui_formMainWindow.h" #include "QvkCameraWatcher.h" #include "QvkCameraWindow.h" #include "QvkVideoSurface.h" #include "QvkSpezialSlider.h" #include #include class QvkCameraController : public QObject { Q_OBJECT public: QvkCameraController( Ui_formMainWindow *ui_surface ); virtual ~QvkCameraController(); QvkCameraWindow *vkCameraWindow; void getAllDevices(); cameraSettingsDialog *vkCameraSettingsDialog; Ui_cameraSettingsDialog *uiCameraSettingsDialog; public slots: private slots: void slot_addedCamera( QString description, QString device ); void slot_removedCamera( QString device ); void slot_startCamera( bool value ); void slot_statusChanged( QCamera::Status status ); void slot_stateChanged( QCamera::State state ); void slot_error( QCamera::Error error ); void slot_setNewImage( QImage image ); void slot_frameOnOff( bool value ); void slot_resolutionChanged( int index); private: Ui_formMainWindow *ui_formMainWindow; QCamera *camera = nullptr; QvkCameraWatcher *cameraWatcher; QvkVideoSurface *videoSurface; QvkSpezialSlider *sliderCameraWindowSize; QvkSpezialSlider *sliderCameraWindowZoom; protected: signals: void signal_setNewImage( QImage ); }; #endif vokoscreenNG-3.7.0/src/camera/QvkCameraResolution.cpp000066400000000000000000000130671444746353100226270ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCameraResolution.h" #include "global.h" #include #include QvkCameraResolution::QvkCameraResolution( Ui_formMainWindow *ui, cameraSettingsDialog *settingsDialog ) { ui_formMainWindow = ui; vkCameraSettingsDialog = settingsDialog; } QvkCameraResolution::~QvkCameraResolution() { } void QvkCameraResolution::slot_resolution( int value ) { Q_UNUSED(value); QByteArray device = ui_formMainWindow->comboBoxCamera->currentData().toByteArray(); delete camera; camera = new QCamera( device ); connect( camera, SIGNAL( statusChanged( QCamera::Status ) ), this, SLOT( slot_statusChanged( QCamera::Status ) ) ); connect( camera, SIGNAL( stateChanged( QCamera::State ) ), this, SLOT( slot_stateChanged( QCamera::State ) ) ); camera->load(); } void QvkCameraResolution::slot_statusChanged( QCamera::Status status ) { switch ( status ) { case QCamera::UnavailableStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 0 case QCamera::UnloadedStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 1 case QCamera::LoadingStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 2 case QCamera::UnloadingStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 3 case QCamera::LoadedStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; ui_formMainWindow->comboBoxCameraResolution->clear(); vkCameraSettingsDialog->ui->comboBoxCameraResolution->clear(); QCameraViewfinderSettings cameraViewfinderSettings; QList resolution = camera->supportedViewfinderResolutions( cameraViewfinderSettings ); for ( int x = 0; x < resolution.count(); x++ ) { QString width = QString::number( resolution.at(x).width() ); QString height = QString::number( resolution.at(x).height() ); ui_formMainWindow->comboBoxCameraResolution->addItem( width + "x" + height ); vkCameraSettingsDialog->ui->comboBoxCameraResolution->addItem( width + "x" + height ); } qDebug().noquote() << global::nameOutput << "[Camera] Resolutions for:" << ui_formMainWindow->comboBoxCamera->currentText() << ui_formMainWindow->comboBoxCamera->currentData().toByteArray(); qDebug() << resolution; camera->unload(); disconnect( camera, nullptr, nullptr, nullptr ); QSettings settings( QSettings::IniFormat, QSettings::UserScope, global::name, global::name, Q_NULLPTR ); QString valueText = settings.value( "comboBoxCameraResolution", "640x480" ).toString(); int index = ui_formMainWindow->comboBoxCameraResolution->findText( valueText ); if ( index == -1 ) { index = 0; } ui_formMainWindow->comboBoxCameraResolution->setCurrentIndex( index ); vkCameraSettingsDialog->ui->comboBoxCameraResolution->setCurrentIndex( index ); QList listSlider = ui_formMainWindow->centralWidget->findChildren(); for ( int i = 0; i < listSlider.count(); i++ ) { if ( ( listSlider.at(i)->objectName() == "sliderCameraWindowSize" ) or ( listSlider.at(i)->objectName() == "sliderCameraWindowZoom" ) ) { QVariant variant = settings.value( listSlider.at(i)->objectName() ); if ( variant.isValid() ) { listSlider.at(i)->setValue( variant.toInt() ); } } } break; }// 4 case QCamera::StandbyStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 5 case QCamera::StartingStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 6 case QCamera::StoppingStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 7 case QCamera::ActiveStatus : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << status; break; }// 8 } } void QvkCameraResolution::slot_stateChanged( QCamera::State state ) { switch ( state ) { case QCamera::UnloadedState : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << state; break; }// 0 case QCamera::LoadedState : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << state; break; }// 1 case QCamera::ActiveState : { qDebug().noquote() << global::nameOutput << "[Camera] QvkCameraResolution" << state; break; }// 2 } } vokoscreenNG-3.7.0/src/camera/QvkCameraResolution.h000066400000000000000000000030201444746353100222600ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERARESOLUTION_H #define QVKCAMERARESOLUTION_H #include "ui_formMainWindow.h" #include "camerasettingsdialog.h" #include "ui_camerasettingsdialog.h" #include #include class QvkCameraResolution : public QObject { Q_OBJECT public: QvkCameraResolution( Ui_formMainWindow *ui, cameraSettingsDialog *settingsDialog ); virtual ~QvkCameraResolution(); cameraSettingsDialog *vkCameraSettingsDialog; public slots: void slot_resolution( int value ); private slots: void slot_statusChanged( QCamera::Status status ); void slot_stateChanged( QCamera::State state ); private: Ui_formMainWindow *ui_formMainWindow; QCamera *camera = nullptr; protected: signals: }; #endif vokoscreenNG-3.7.0/src/camera/QvkCameraWatcher.cpp000066400000000000000000000060471444746353100220610ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCameraWatcher.h" #include "global.h" #include #include /* * QvkWatcherPlug monitoring only new or removed Audiodevices. */ QvkCameraWatcher::QvkCameraWatcher() { } QvkCameraWatcher::~QvkCameraWatcher() { } QvkCameraWatcher::QvkCameraWatcher( Ui_formMainWindow *ui_mainwindow ) { ui = ui_mainwindow; timer = new QTimer( this ); timer->setTimerType( Qt::PreciseTimer ); timer->setInterval( 3000 ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_update() ) ); timer->start(); } void QvkCameraWatcher::slot_update() { QList camerasInfoList = QCameraInfo::availableCameras(); // Add new Device if ( camerasInfoList.count() > ui->comboBoxCamera->count() ) { for ( int i = 0; i < camerasInfoList.count(); i++ ) { if ( ui->comboBoxCamera->findData( camerasInfoList.at(i).deviceName() ) == -1 ) { if ( ( camerasInfoList.at(i).description() > "" ) and ( !camerasInfoList.at(i).description().contains( "@device:pnp" ) ) ) { qDebug().noquote() << global::nameOutput << "[Camera] Added:" << camerasInfoList.at(i).description() << "Device:" << camerasInfoList.at(i).deviceName(); emit signal_addedCamera( camerasInfoList.at(i).description(), camerasInfoList.at(i).deviceName() ); } } } return; } QStringList cameraInfoStringList; for ( int i = 0; i < camerasInfoList.count(); i++ ) { cameraInfoStringList << camerasInfoList.at(i).deviceName(); } int cameraCountCombobox = ui->comboBoxCamera->count(); // Remove device if ( camerasInfoList.count() < cameraCountCombobox ) { for ( int i = 1; i <= cameraCountCombobox; i++ ) { if ( cameraInfoStringList.contains( QString( ui->comboBoxCamera->itemData(i-1).toString() ) ) == false ) { qDebug().noquote() << global::nameOutput << "[Camera] Removed:" << ui->comboBoxCamera->itemText(i-1) << "Device:" << ui->comboBoxCamera->itemData(i-1).toString(); emit signal_removedCamera( ui->comboBoxCamera->itemData(i-1).toString() ); break; } } } } vokoscreenNG-3.7.0/src/camera/QvkCameraWatcher.h000066400000000000000000000025431444746353100215230ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERAWATCHER_H #define QVKCAMERAWATCHER_H #include "ui_formMainWindow.h" #include #include class QvkCameraWatcher: public QObject { Q_OBJECT public: QvkCameraWatcher(); QvkCameraWatcher( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkCameraWatcher(); public slots: private: Ui_formMainWindow *ui; QTimer *timer; int counter; private slots: void slot_update(); protected: signals: void signal_addedCamera( QString, QString ); void signal_removedCamera( QString ); }; #endif vokoscreenNG-3.7.0/src/camera/QvkCameraWindow.cpp000066400000000000000000000304361444746353100217320ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCameraWindow.h" #include "global.h" #include #include #include QvkCameraWindow::QvkCameraWindow( Ui_formMainWindow *ui_surface, cameraSettingsDialog *settingsDialog ) { ui_formMainWindow = ui_surface; vkCameraSettingsDialog = settingsDialog; setWindowFlags( windowFlags() | Qt::WindowStaysOnTopHint ); setMinimumSize( QSize( 100, 100 ) ); resize( 100, 100 ); setMouseTracking( true ); // No function, why? connect( ui_formMainWindow->checkBoxCameraMirrorHorizontal, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraMirrorHorizontal, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->checkBoxCameraMirrorVertical, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraMirrorVertical, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->checkBoxCameraInvert, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraInvert, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->checkBoxCameraGray, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraGray, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->checkBoxCameraMono, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraMono, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->checkBoxCameraWindowFrame, SIGNAL( toggled( bool ) ), vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), vkCameraSettingsDialog->ui->comboBoxCameraResolution, SLOT( setCurrentIndex( int ) ) ); connect( ui_formMainWindow->toolButton_camera_view_rectangle, SIGNAL( clicked( bool ) ), vkCameraSettingsDialog->ui->toolButton_camera_view_rectangle, SLOT( setChecked( bool )) ); connect( ui_formMainWindow->toolButton_camera_view_ellipse, SIGNAL( clicked( bool ) ), vkCameraSettingsDialog->ui->toolButton_camera_view_ellipse, SLOT( setChecked( bool ) ) ); connect( ui_formMainWindow->toolButton_camera_view_circle, SIGNAL( clicked( bool ) ), vkCameraSettingsDialog->ui->toolButton_camera_view_circle, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraMirrorHorizontal, SIGNAL( toggled( bool ) ), ui_formMainWindow->checkBoxCameraMirrorHorizontal, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraMirrorVertical, SIGNAL( toggled( bool ) ), ui_formMainWindow->checkBoxCameraMirrorVertical, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraInvert, SIGNAL( toggled( bool ) ), ui_formMainWindow->checkBoxCameraInvert, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraGray, SIGNAL( toggled( bool ) ), ui_formMainWindow->checkBoxCameraGray, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraMono, SIGNAL( toggled( bool ) ), ui_formMainWindow->checkBoxCameraMono, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame, SIGNAL( toggled( bool ) ), ui_formMainWindow->checkBoxCameraWindowFrame, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->comboBoxCameraResolution, SIGNAL( currentIndexChanged( int ) ), ui_formMainWindow->comboBoxCameraResolution, SLOT( setCurrentIndex( int ) ) ); connect( vkCameraSettingsDialog->ui->toolButton_camera_view_rectangle, SIGNAL( clicked( bool ) ), ui_formMainWindow->toolButton_camera_view_rectangle, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->toolButton_camera_view_ellipse, SIGNAL( clicked( bool ) ), ui_formMainWindow->toolButton_camera_view_ellipse, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->toolButton_camera_view_circle, SIGNAL( clicked( bool ) ), ui_formMainWindow->toolButton_camera_view_circle, SLOT( setChecked( bool ) ) ); connect( vkCameraSettingsDialog->ui->buttonBox, SIGNAL( accepted() ), vkCameraSettingsDialog, SLOT( close() ) ); connect( vkCameraSettingsDialog->ui->pushButtonSwitchToFullscreen, SIGNAL( clicked( bool ) ), this, SLOT( slot_switchToFullscreen() ) ); } QvkCameraWindow::~QvkCameraWindow() { } void QvkCameraWindow::paintEvent( QPaintEvent *event ) { Q_UNUSED(event) if ( image.format() == QImage::Format_Invalid ) { if ( error > "" ) { int w = 480; int h = 300; int pointSize = 14; int frameWidth = 8; resize( w, h ); QPainter painter; painter.begin( this ); painter.setRenderHints( QPainter::Antialiasing, true ); // Background QBrush brush( Qt::white ); painter.fillRect( 0, 0, w, h, brush ); // Frame if ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) { QPen pen; pen.setWidth( frameWidth ); pen.setColor( QString( "#9EBBD8" ) ); painter.setPen( pen ); painter.drawRect( frameWidth/2, frameWidth/2, w-frameWidth, h-frameWidth ); } // Text QFont font; font.setPointSize( pointSize ); painter.setFont( font ); QPen pen; pen.setColor( Qt::black ); painter.setPen( pen ); painter.drawText( QRect( 0, 0, w, h/2 ), Qt::AlignCenter, global::name + " " + global::version ); painter.drawText( QRectF( 0, 0, w, h ), Qt::AlignCenter, error ); // Close button if ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) { int width = 20; int height = 20; int distanceToFrame = 3; rectCloseButton.setRect( w - frameWidth - distanceToFrame - width, frameWidth + distanceToFrame, width, height ); QPen pen; pen.setWidth( 2 ); pen.setColor( Qt::red ); painter.setPen( pen ); painter.drawLine( rectCloseButton.topRight(), rectCloseButton.bottomLeft() ); painter.drawLine( rectCloseButton.topLeft(), rectCloseButton.bottomRight() ); } painter.end(); return; } return; } int displayedWidth = 0; int displayedHeight = 0; if ( isFullScreen() == true ) { displayedWidth = width(); displayedHeight = height(); image = image.scaled( displayedWidth, displayedHeight, Qt::KeepAspectRatio, Qt::SmoothTransformation ); } else { displayedWidth = image.width(); displayedHeight = image.height(); } QPixmap pixmap( displayedWidth, displayedHeight ); if ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) { if ( isFullScreen() == true ) { pixmap.fill( Qt::black ); } else { pixmap.fill( Qt::transparent ); } } else { pixmap.fill( Qt::black ); } QPainter painterPixmap; painterPixmap.begin( &pixmap ); painterPixmap.setRenderHint( QPainter::Antialiasing, true ); painterPixmap.setRenderHint( QPainter::SmoothPixmapTransform, true ); painterPixmap.drawImage( ( width() - image.width() ) / 2 , 0, image ); painterPixmap.end(); QPainter painter; painter.begin( this); painter.setRenderHint( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); painter.drawPixmap( QPoint( 0, 0 ), pixmap ); painter.end(); if ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) { setMask( pixmap.mask() ); } else { clearMask(); } } void QvkCameraWindow::setNewImage( QImage _image ) { image = _image; repaint(); } void QvkCameraWindow::closeEvent( QCloseEvent *event ) { Q_UNUSED(event); emit signal_cameraWindow_close( false ); } void QvkCameraWindow::slot_switchToFullscreen() { if ( isFullScreen() == true ) { showNormal(); vkCameraSettingsDialog->close(); } else { setWindowState( Qt::WindowFullScreen ); vkCameraSettingsDialog->close(); } } void QvkCameraWindow::resizeEvent( QResizeEvent *event ) { Q_UNUSED(event); if ( isFullScreen() == true ) { vkCameraSettingsDialog->ui->pushButtonSwitchToFullscreen->setText( tr( "Switch to Window" ) ); } else { vkCameraSettingsDialog->ui->pushButtonSwitchToFullscreen->setText( tr( "Switch to Fullscreen" ) ); ui_formMainWindow->labelCameraWindowSize->setText( QString::number( width() ) + "x" + QString::number( height() ) ); vkCameraSettingsDialog->ui->labelCameraWindowSize->setText( QString::number( width() ) + "x" + QString::number( height() ) ); } } void QvkCameraWindow::mouseDoubleClickEvent( QMouseEvent *event ) { if ( event->button() == Qt::LeftButton ) { if ( isFullScreen() == true ) { showNormal(); } else { setWindowState( Qt::WindowFullScreen ); vkCameraSettingsDialog->close(); } } } void QvkCameraWindow::keyPressEvent( QKeyEvent *event ) { if ( event->key() == Qt::Key_Escape ) { showNormal(); } if ( ( event->key() == Qt::Key_F11 ) or ( event->key() == Qt::Key_F ) ) { if ( isFullScreen() == true ) { showNormal(); } else { setWindowState( Qt::WindowFullScreen ); } } } void QvkCameraWindow::mousePressEvent( QMouseEvent *event ) { if ( rectCloseButton.contains( event->pos() ) ) { close(); return; } if ( event->button() == Qt::RightButton ) { if ( vkCameraSettingsDialog->isVisible() ) { vkCameraSettingsDialog->close(); } else { vkCameraSettingsDialog->show(); if ( isFullScreen() == true ) { vkCameraSettingsDialog->ui->widgetCameraWindowSize->hide(); vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame->hide(); } else { vkCameraSettingsDialog->ui->widgetCameraWindowSize->show(); vkCameraSettingsDialog->ui->checkBoxCameraWindowFrame->show(); } } return; } if ( isFullScreen() == true ) { vkCameraSettingsDialog->close(); } if ( ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) and ( event->button() == Qt::LeftButton ) and ( isFullScreen() == false ) ) { QPixmap pixmap( ":/pictures/cursor/size_all.png" ); QCursor cursor( pixmap ); setCursor( cursor ); mousePressed = true; mouseLocal_X = event->localPos().x(); mouseLocal_Y = event->localPos().y(); } } void QvkCameraWindow::mouseReleaseEvent( QMouseEvent *event ) { Q_UNUSED(event) if ( ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) and ( isFullScreen() == false ) ) { unsetCursor(); mousePressed = false; } } void QvkCameraWindow::mouseMoveEvent( QMouseEvent *event ) { Q_UNUSED(event) if ( ( ui_formMainWindow->checkBoxCameraWindowFrame->isChecked() == true ) and ( mousePressed == true ) ) { move( QCursor::pos().x() - mouseLocal_X, QCursor::pos().y() - mouseLocal_Y ); } } vokoscreenNG-3.7.0/src/camera/QvkCameraWindow.h000066400000000000000000000041011444746353100213650ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCAMERAWINDOW_H #define QVKCAMERAWINDOW_H #include "ui_formMainWindow.h" #include "ui_camerasettingsdialog.h" #include "camerasettingsdialog.h" #include "QvkSpezialSlider.h" #include #include #include class QvkCameraWindow : public QWidget { Q_OBJECT public: QvkCameraWindow( Ui_formMainWindow *ui_surface, cameraSettingsDialog *settingsDialog); virtual ~QvkCameraWindow(); Ui_cameraSettingsDialog *uiCameraSettingsDialog; cameraSettingsDialog *vkCameraSettingsDialog; QString error; void setNewImage( QImage _image ); private: Ui_formMainWindow *ui_formMainWindow; bool mousePressed = false; int mouseLocal_X; int mouseLocal_Y; QImage image; QRect rectCloseButton; public slots: private slots: void slot_switchToFullscreen(); protected: void closeEvent(QCloseEvent *event); void mouseDoubleClickEvent( QMouseEvent *event ); void keyPressEvent( QKeyEvent *event ); void mousePressEvent(QMouseEvent *event); void resizeEvent(QResizeEvent *event); void mouseReleaseEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void paintEvent( QPaintEvent *event ); signals: void signal_cameraWindow_close( bool ); }; #endif // QVKWEBCAMWINDOW_H vokoscreenNG-3.7.0/src/camera/QvkVideoSurface.h000066400000000000000000000045071444746353100213760ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKVIDEOSURFACE_H #define QVKVIDEOSURFACE_H #include #include class QvkVideoSurface: public QAbstractVideoSurface { Q_OBJECT public: QvkVideoSurface(QObject * parent=Q_NULLPTR) : QAbstractVideoSurface(parent) {} QList supportedPixelFormats(QAbstractVideoBuffer::HandleType type) const { (void)type; return QList() << QVideoFrame::Format_RGB32 << QVideoFrame::Format_ARGB32 << QVideoFrame::Format_ARGB32_Premultiplied << QVideoFrame::Format_ARGB8565_Premultiplied << QVideoFrame::Format_RGB555; } bool present(const QVideoFrame &frame) { if ( frame.isValid() ) { QVideoFrame cloneFrame(frame); cloneFrame.map( QAbstractVideoBuffer::ReadOnly ); const QImage image( cloneFrame.bits(), cloneFrame.width(), cloneFrame.height(), QVideoFrame::imageFormatFromPixelFormat( cloneFrame.pixelFormat() ) ); cloneFrame.unmap(); emit ( signal_newPicture( image ) ); return true; } return false; } signals: void signal_newPicture( QImage ); }; #endif vokoscreenNG-3.7.0/src/camera/camera.pri000066400000000000000000000010511444746353100201170ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkCameraController.h \ $$PWD/QvkCameraWatcher.h \ $$PWD/QvkCameraWindow.h \ $$PWD/QvkVideoSurface.h \ $$PWD/QvkCameraResolution.h SOURCES += $$PWD/QvkCameraController.cpp \ $$PWD/QvkCameraWatcher.cpp \ $$PWD/QvkCameraWindow.cpp \ $$PWD/QvkCameraResolution.cpp FORMS += \ $$PWD/camerasettingsdialog.ui HEADERS += \ $$PWD/camerasettingsdialog.h SOURCES += \ $$PWD/camerasettingsdialog.cpp vokoscreenNG-3.7.0/src/camera/camerasettingsdialog.cpp000066400000000000000000000044021444746353100230530ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "ui_camerasettingsdialog.h" #include "camerasettingsdialog.h" #include "global.h" cameraSettingsDialog::cameraSettingsDialog(QWidget *parent) : QDialog(parent), ui(new Ui::cameraSettingsDialog) { setModal( true ); setWindowFlags( Qt::Window | Qt::WindowStaysOnTopHint | Qt::Tool ); ui->setupUi(this); setWindowIcon( QIcon( ":/pictures/logo/logo.png" ) ); setWindowTitle( tr( "Camera settings" ) ); dialog_sliderCameraWindowSize = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_3->insertWidget( 1, dialog_sliderCameraWindowSize ); dialog_sliderCameraWindowSize->setObjectName( "sliderCameraWindowSize" ); dialog_sliderCameraWindowSize->setMinimum( 0 ); dialog_sliderCameraWindowSize->setMaximum( 3000 ); dialog_sliderCameraWindowSize->setValue( 0 ); dialog_sliderCameraWindowSize->show(); dialog_sliderCameraWindowSize->setShowValue( true ); dialog_sliderCameraWindowZoom = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_2->insertWidget( 1, dialog_sliderCameraWindowZoom ); dialog_sliderCameraWindowZoom->setObjectName( "sliderCameraWindowZoom" ); dialog_sliderCameraWindowZoom->setMinimum( 0 ); dialog_sliderCameraWindowZoom->setMaximum( 3000 ); dialog_sliderCameraWindowZoom->setValue( 0 ); dialog_sliderCameraWindowZoom->show(); dialog_sliderCameraWindowZoom->setShowValue( true ); } cameraSettingsDialog::~cameraSettingsDialog() { delete ui; } vokoscreenNG-3.7.0/src/camera/camerasettingsdialog.h000066400000000000000000000024611444746353100225230ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef CAMERASETTINGSDIALOG_H #define CAMERASETTINGSDIALOG_H #include "QvkSpezialSlider.h" #include namespace Ui { class cameraSettingsDialog; } class cameraSettingsDialog : public QDialog { Q_OBJECT public: explicit cameraSettingsDialog( QWidget *parent = Q_NULLPTR ); ~cameraSettingsDialog(); Ui::cameraSettingsDialog *ui; QvkSpezialSlider *dialog_sliderCameraWindowSize; QvkSpezialSlider *dialog_sliderCameraWindowZoom; private: }; #endif // CAMERASETTINGSDIALOG_H vokoscreenNG-3.7.0/src/camera/camerasettingsdialog.ui000066400000000000000000000277501444746353100227210ustar00rootroot00000000000000 cameraSettingsDialog 0 0 375 429 Dialog 0 48 48 :/pictures/camera/camera.png:/pictures/camera/camera.png Qt::Horizontal 40 20 0 0 0 0 0 12 34 34 :/pictures/camera/window-resize.png true ---x--- Qt::AlignCenter 12 34 34 :/pictures/systray/magnification.png true 0 0 Qt::Horizontal 40 20 :/pictures/camera/window-rectangle-off.png :/pictures/camera/window-rectangle-on.png:/pictures/camera/window-rectangle-off.png 34 34 true true true true Qt::Horizontal QSizePolicy::Preferred 40 20 :/pictures/camera/window-ellipse-off.png :/pictures/camera/window-ellipse-on.png:/pictures/camera/window-ellipse-off.png 34 34 true true true Qt::Horizontal QSizePolicy::Preferred 40 20 :/pictures/camera/window-circle-off.png :/pictures/camera/window-circle-on.png:/pictures/camera/window-circle-off.png 34 34 true true true Qt::Horizontal 40 20 Remove window frame Flip vertical Flip horizontal Invert Gray Black-and-white Switch to Fullscreen Qt::Vertical 20 40 QDialogButtonBox::Ok vokoscreenNG-3.7.0/src/ciscoOpenh264/000077500000000000000000000000001444746353100172545ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/ciscoOpenh264/BINARY_LICENSE.txt000066400000000000000000000110051444746353100221400ustar00rootroot00000000000000------------------------------------------------------- About The Cisco-Provided Binary of OpenH264 Video Codec ------------------------------------------------------- Cisco provides this program under the terms of the BSD license. Additionally, this binary is licensed under Cisco’s AVC/H.264 Patent Portfolio License from MPEG LA, at no cost to you, provided that the requirements and conditions shown below in the AVC/H.264 Patent Portfolio sections are met. As with all AVC/H.264 codecs, you may also obtain your own patent license from MPEG LA or from the individual patent owners, or proceed at your own risk. Your rights from Cisco under the BSD license are not affected by this choice. For more information on the OpenH264 binary licensing, please see the OpenH264 FAQ found at http://www.openh264.org/faq.html#binary A corresponding source code to this binary program is available under the same BSD terms, which can be found at http://www.openh264.org ----------- BSD License ----------- Copyright © 2014 Cisco Systems, Inc. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ----------------------------------------- AVC/H.264 Patent Portfolio License Notice ----------------------------------------- The binary form of this Software is distributed by Cisco under the AVC/H.264 Patent Portfolio License from MPEG LA, and is subject to the following requirements, which may or may not be applicable to your use of this software: THIS PRODUCT IS LICENSED UNDER THE AVC PATENT PORTFOLIO LICENSE FOR THE PERSONAL USE OF A CONSUMER OR OTHER USES IN WHICH IT DOES NOT RECEIVE REMUNERATION TO (i) ENCODE VIDEO IN COMPLIANCE WITH THE AVC STANDARD (“AVC VIDEO”) AND/OR (ii) DECODE AVC VIDEO THAT WAS ENCODED BY A CONSUMER ENGAGED IN A PERSONAL ACTIVITY AND/OR WAS OBTAINED FROM A VIDEO PROVIDER LICENSED TO PROVIDE AVC VIDEO. NO LICENSE IS GRANTED OR SHALL BE IMPLIED FOR ANY OTHER USE. ADDITIONAL INFORMATION MAY BE OBTAINED FROM MPEG LA, L.L.C. SEE HTTP://WWW.MPEGLA.COM Accordingly, please be advised that content providers and broadcasters using AVC/H.264 in their service may be required to obtain a separate use license from MPEG LA, referred to as "(b) sublicenses" in the SUMMARY OF AVC/H.264 LICENSE TERMS from MPEG LA found at http://www.openh264.org/mpegla --------------------------------------------- AVC/H.264 Patent Portfolio License Conditions --------------------------------------------- In addition, the Cisco-provided binary of this Software is licensed under Cisco's license from MPEG LA only if the following conditions are met: 1. The Cisco-provided binary is separately downloaded to an end user’s device, and not integrated into or combined with third party software prior to being downloaded to the end user’s device; 2. The end user must have the ability to control (e.g., to enable, disable, or re-enable) the use of the Cisco-provided binary; 3. Third party software, in the location where end users can control the use of the Cisco-provided binary, must display the following text: "OpenH264 Video Codec provided by Cisco Systems, Inc." 4. Any third-party software that makes use of the Cisco-provided binary must reproduce all of the above text, as well as this last condition, in the EULA and/or in another location where licensing information is to be presented to the end user. v1.0 vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkBz2Decode.cpp000066400000000000000000000101011444746353100221740ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkBz2Decode.h" #include "global.h" #include QvkBz2Decode::QvkBz2Decode() { } QvkBz2Decode::~QvkBz2Decode() {} gboolean QvkBz2Decode::func( GstBus *bus, GstMessage *msg, gpointer data ) { Q_UNUSED(bus) GMainLoop *loop = (GMainLoop *) data; switch ( GST_MESSAGE_TYPE( msg ) ) { case GST_MESSAGE_EOS: qDebug().noquote() << global::nameOutput << "[QvkBz2Decode::func]" << "End of stream"; g_main_loop_quit (loop); break; case GST_MESSAGE_ERROR: { gchar *debug; GError *error; gst_message_parse_error( msg, &error, &debug ); g_free( debug ); g_printerr( "Error: %s\n", error->message ); g_error_free( error ); g_main_loop_quit( loop ); break; } default: break; } return true; } void QvkBz2Decode::start_encoding( QString inputFile, QString outpuFile ) { QByteArray byteArrayInputFile = inputFile.toUtf8(); const gchar *inFile = byteArrayInputFile.constData(); QByteArray byteArrayOutputFile = outpuFile.toUtf8(); const gchar *outFile = byteArrayOutputFile.constData(); GMainLoop *loop; GstElement *pipeline, *source, *decoder, *sink; GstBus *bus; guint bus_watch_id; loop = g_main_loop_new (NULL, FALSE); // Create gstreamer elements pipeline = gst_pipeline_new ("audio-player"); source = gst_element_factory_make( "filesrc", "file-source" ); decoder = gst_element_factory_make( "bz2dec", "bz2-decoder" ); sink = gst_element_factory_make( "filesink", "file-out" ); if ( !pipeline || !source || !decoder || !sink ) { qDebug().noquote() << global::nameOutput << "[QvkBz2Decode::start_encoding]" << "One element could not be created. Exiting."; return; } // we set the input filename to the source element g_object_set( G_OBJECT( source ), "location", inFile, NULL ); // we set the output filename to the sink element g_object_set( G_OBJECT( sink ), "location", outFile, NULL ); // we add a message handler bus = gst_pipeline_get_bus( GST_PIPELINE( pipeline ) ); bus_watch_id = gst_bus_add_watch( bus, QvkBz2Decode::func, loop ); gst_object_unref( bus ); // we add all elements into the pipeline gst_bin_add_many( GST_BIN (pipeline), source, decoder, sink, NULL ); // we link the elements together gst_element_link_many( source, decoder, sink, NULL ); // Set the pipeline to "playing" state qDebug().noquote() << global::nameOutput << "[QvkBz2Decode::start_encoding]" << "Now decode file:" << inFile;; gst_element_set_state( pipeline, GST_STATE_PLAYING ); // Start loop qDebug().noquote() << global::nameOutput << "[QvkBz2Decode::start_encoding]" << "Running loop"; g_main_loop_run( loop ); // Out of the main loop, clean up nicely qDebug().noquote() << global::nameOutput << "[QvkBz2Decode::start_encoding]" << "Returned from loop, Gstreamer go in state GST_STATE_NULL"; gst_element_set_state( pipeline, GST_STATE_NULL ); qDebug().noquote() << global::nameOutput << "[QvkBz2Decode::start_encoding]" << "Deleting pipeline"; gst_object_unref( GST_OBJECT ( pipeline ) ); g_source_remove( bus_watch_id ); g_main_loop_unref( loop ); emit signal_file_is_unzipped(); } vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkBz2Decode.h000066400000000000000000000023751444746353100216570ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKBZ2DECODE_H #define QVKBZ2DECODE_H #include #include class QvkBz2Decode: public QObject { Q_OBJECT public: QvkBz2Decode(); virtual ~QvkBz2Decode(); static gboolean func( GstBus *bus, GstMessage *msg, gpointer data ); void start_encoding(QString inputFile , QString outpuFile); public slots: private: private slots: protected: signals: void signal_file_is_unzipped(); }; #endif vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoFinishDialog.cpp000066400000000000000000000007061444746353100237660ustar00rootroot00000000000000#include "QvkCiscoFinishDialog.h" #include "ui_QvkCiscoFinishDialog.h" QvkCiscoFinishDialog::QvkCiscoFinishDialog(QWidget *parent) : QWidget(parent), ui(new Ui::QvkCiscoFinishDialog) { ui->setupUi(this); connect( ui->buttonBox, SIGNAL( accepted() ), this, SLOT( slot_closeAllWindows() ) ); } QvkCiscoFinishDialog::~QvkCiscoFinishDialog() { delete ui; } void QvkCiscoFinishDialog::slot_closeAllWindows() { qApp->closeAllWindows(); } vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoFinishDialog.h000066400000000000000000000006451444746353100234350ustar00rootroot00000000000000#ifndef QVKCISCOFINISHDIALOG_H #define QVKCISCOFINISHDIALOG_H #include namespace Ui { class QvkCiscoFinishDialog; } class QvkCiscoFinishDialog : public QWidget { Q_OBJECT public: explicit QvkCiscoFinishDialog(QWidget *parent = nullptr); ~QvkCiscoFinishDialog(); private: Ui::QvkCiscoFinishDialog *ui; private slots: void slot_closeAllWindows(); }; #endif // QVKCISCOFINISHDIALOG_H vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoFinishDialog.ui000066400000000000000000000143511444746353100236220ustar00rootroot00000000000000 QvkCiscoFinishDialog 0 0 610 399 Qt::Vertical 20 40 Qt::Horizontal 40 20 :/pictures/logo/logo.png Qt::Horizontal 40 20 Qt::Vertical 20 40 64 64 :/pictures/screencast/accept.png true Qt::Vertical 20 40 The setup was successful. Close this window and start vokoscreenNG again. Qt::Vertical 20 40 Have fun with vokoscreenNG Qt::Vertical 20 40 Qt::Horizontal 40 20 Qt::Vertical 20 40 Qt::Horizontal 40 20 QDialogButtonBox::Ok vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoOpenh264Controller.cpp000066400000000000000000000146601444746353100250030ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include #include #include #include "QvkCiscoOpenh264Controller.h" #include "QvkCiscoOpenh264Downloader.h" #include "QvkBz2Decode.h" #include "global.h" #include "QvkCiscoFinishDialog.h" #include QvkCiscoOpenh264Controller::QvkCiscoOpenh264Controller( QString vk_pathWithSettingsFilename, Ui_formMainWindow *ui_mainwindow ) { ui = ui_mainwindow; pathWithSettingsFilename = vk_pathWithSettingsFilename; #ifdef Q_OS_WIN libopenh264_filename = "libopenh264-6.dll"; downloadFile = "http://ciscobinary.openh264.org/openh264-2.1.1-win64.dll.bz2"; #endif #ifdef Q_OS_LINUX libopenh264_filename = "libopenh264.so"; downloadFile = "http://ciscobinary.openh264.org/libopenh264-2.1.1-linux64.6.so.bz2"; #endif } QvkCiscoOpenh264Controller::~QvkCiscoOpenh264Controller() { } void QvkCiscoOpenh264Controller::showWaitDialog() { QFileInfo fileInfo( pathWithSettingsFilename ); QFileInfo fileInfo_libopenh264( fileInfo.path() + "/" + libopenh264_filename ); if ( !fileInfo_libopenh264.exists() ) { ui->tabWidgetSideBar->hide(); ui->widgetSidbar->hide(); vkCiscoWaitDialog = new QvkCiscoWaitDialog; ui->horizontalLayout_49->insertWidget( 0, vkCiscoWaitDialog ); vkCiscoWaitDialog->show(); } } void QvkCiscoOpenh264Controller::init() { connect( ui->pushButtonCiscoLicense, SIGNAL( clicked( bool ) ), this, SLOT( slot_pushButtonCiscoLicense() ) ); connect( ui->radioButton_cisco_on, SIGNAL( clicked( bool ) ), this, SLOT( slot_cisco_on( bool ) ) ); connect( ui->radioButton_cisco_off, SIGNAL( clicked( bool ) ), this, SLOT( slot_cisco_off( bool ) ) ); QFileInfo fileInfo( pathWithSettingsFilename ); QFileInfo fileInfo_libopenh264( fileInfo.path() + "/" + libopenh264_filename ); if ( !fileInfo_libopenh264.exists() ) { QvkCiscoOpenh264Downloader *vkCiscoOpenh264Downloader = new QvkCiscoOpenh264Downloader( fileInfo.path() ); connect( vkCiscoOpenh264Downloader, SIGNAL( signal_failedDownload() ), this, SLOT( slot_closeWaitDialog() ) ); connect( vkCiscoOpenh264Downloader, SIGNAL( signal_fileDownloaded( QString ) ), this, SLOT( slot_deCompress( QString ) ) ); connect( vkCiscoOpenh264Downloader, SIGNAL( signal_downloadProgress( qint64, qint64) ), this, SLOT( slot_downloadProgress( qint64, qint64 ) ) ); vkCiscoOpenh264Downloader->doDownload( downloadFile ); } } void QvkCiscoOpenh264Controller::slot_downloadProgress( qint64 downloadedSize, qint64 fileSize ) { vkCiscoWaitDialog->progress( downloadedSize, fileSize ); } // Wird nur aufgerufen wenn der Download fehlgeschlagen ist. void QvkCiscoOpenh264Controller::slot_closeWaitDialog() { vkCiscoWaitDialog->close(); ui->tabWidgetSideBar->show(); ui->tabWidgetSideBar->repaint(); ui->tabWidgetSideBar->update(); ui->widgetSidbar->show(); ui->widgetSidbar->repaint(); ui->widgetSidbar->update(); } void QvkCiscoOpenh264Controller::slot_cisco_on( bool ) { int index = ui->comboBoxVideoCodec->findText( "H.264" ); if ( index == -1 ) { QFileInfo fileInfo( pathWithSettingsFilename ); QFileInfo file_libopenh264( fileInfo.path() + "/" + libopenh264_filename ); if ( file_libopenh264.exists( ) ) { ui->comboBoxVideoCodec->insertItem( 0, "H.264", "openh264enc" ); } } } void QvkCiscoOpenh264Controller::slot_cisco_off( bool ) { int index = ui->comboBoxVideoCodec->findText( "H.264" ); if ( index > -1 ) { ui->comboBoxVideoCodec->removeItem( index ); } } void QvkCiscoOpenh264Controller::slot_deCompress( QString pathWithDownloadedFile ) { QFileInfo fileInfoDownloadedFile( pathWithDownloadedFile ); QvkBz2Decode *vkBz2Decode = new QvkBz2Decode; connect( vkBz2Decode, SIGNAL( signal_file_is_unzipped() ), this, SLOT( slot_showCiscoFinishDialog() ) ); QString inputFile = pathWithDownloadedFile; QString outputFile = fileInfoDownloadedFile.path() + "/" + libopenh264_filename;; vkBz2Decode->start_encoding( inputFile, outputFile ); } void QvkCiscoOpenh264Controller::slot_showCiscoFinishDialog() { // Dieser Hack wird benötigt damit statt einem grauen Fenster der Waitdialog erscheint. for ( int i = 0; i < 30; i++ ) { QCoreApplication::processEvents(); QThread::msleep( 100 ); } vkCiscoWaitDialog->close(); QvkCiscoFinishDialog *vkCiscoFinishDialog = new QvkCiscoFinishDialog; ui->tabWidgetSideBar->hide(); ui->horizontalLayout_49->insertWidget( 0, vkCiscoFinishDialog ); isShowCiscoFinishDialog = true; } void QvkCiscoOpenh264Controller::slot_pushButtonCiscoLicense() { QFile file( ":/ciscoOpenh264/BINARY_LICENSE.txt" ); file.open( QIODevice::ReadOnly ); QTextStream textStream( &file ); textStream.setCodec( "UTF-8" ); QDialog *dialog = new QDialog(); dialog->setWindowFlag( Qt::WindowContextHelpButtonHint, false ); dialog->resize( 600, 600 ); dialog->setWindowTitle( "Cisco licence" ); QBoxLayout *boxLayout = new QBoxLayout( QBoxLayout::TopToBottom ); dialog->setLayout( boxLayout ); QTextBrowser *textBrowser = new QTextBrowser( dialog ); textBrowser->setContextMenuPolicy( Qt::NoContextMenu ); textBrowser->setTextInteractionFlags( Qt::NoTextInteraction ); textBrowser->append( textStream.readAll() ); textBrowser->moveCursor( QTextCursor::Start ); textBrowser->show(); boxLayout->addWidget( textBrowser ); QDialogButtonBox buttonBox( QDialogButtonBox::Close ); connect( &buttonBox, &QDialogButtonBox::clicked, dialog, &QDialog::accept ); boxLayout->addWidget( &buttonBox ); dialog->exec(); } vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoOpenh264Controller.h000066400000000000000000000035221444746353100244430ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCISCOOPENH264CONTROLLER_H #define QVKCISCOOPENH264CONTROLLER_H #include #include "ui_formMainWindow.h" #include "QvkCiscoWaitDialog.h" class QvkCiscoOpenh264Controller: public QObject { Q_OBJECT public: QvkCiscoOpenh264Controller( QString pathWithSettingsFilename , Ui_formMainWindow *ui_mainwindow ); virtual ~QvkCiscoOpenh264Controller(); void init(); bool isShowCiscoFinishDialog = false; void showWaitDialog(); public slots: private: Ui_formMainWindow *ui; QString libopenh264_filename; QString pathWithSettingsFilename; QvkCiscoWaitDialog *vkCiscoWaitDialog; QString downloadFile; private slots: void slot_deCompress( QString string ); void slot_showCiscoFinishDialog(); void slot_pushButtonCiscoLicense(); void slot_cisco_on( bool ); void slot_cisco_off( bool ); void slot_closeWaitDialog(); void slot_downloadProgress( qint64 downloadedSize, qint64 fileSize ); protected: signals: void signal_ciscofile_now_downloded( bool ); }; #endif vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoOpenh264Downloader.cpp000066400000000000000000000062321444746353100247520ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCiscoOpenh264Downloader.h" #include "global.h" QvkCiscoOpenh264Downloader::QvkCiscoOpenh264Downloader( QString vk_pathLocal , QObject *parent ) : QObject(parent) { connect( &networkAccessManager, SIGNAL( finished( QNetworkReply* ) ), SLOT( slot_downloadFinished( QNetworkReply* ) ) ); pathLocal = vk_pathLocal; } void QvkCiscoOpenh264Downloader::doDownload( const QUrl &url ) { QNetworkRequest request; request.setSslConfiguration(QSslConfiguration::defaultConfiguration()); request.setUrl( url ); QNetworkReply *reply = networkAccessManager.get( request ); connect( reply, SIGNAL( downloadProgress( qint64, qint64 ) ), SLOT( slot_downloadProgress( qint64, qint64 ) ) ); listDownloads.append( reply ); } void QvkCiscoOpenh264Downloader::slot_downloadProgress( qint64 downloadedSize, qint64 fileSize ) { emit signal_downloadProgress( downloadedSize, fileSize ); } bool QvkCiscoOpenh264Downloader::saveLocal( const QString &filename, QIODevice *data ) { QString fileInTempPath = pathLocal + "/" + filename; QFile file( fileInTempPath ); if ( !file.open( QIODevice::WriteOnly ) ) { return false; } file.write( data->readAll() ); file.close(); return true; } void QvkCiscoOpenh264Downloader::slot_downloadFinished( QNetworkReply *reply ) { QString filename = QFileInfo( reply->url().path() ).fileName(); bool downloadOK = false; if ( reply->error() ) { qDebug().noquote() << global::nameOutput << "[h264] Download of" << reply->url().toString() << "failed:" << reply->errorString(); downloadOK = false; } else { if ( saveLocal( filename, reply ) == true ) { qDebug().noquote() << global::nameOutput << "[h264] Download of" << reply->url().toString() << "succeeded (saved to" << pathLocal + "/" + filename + ")"; downloadOK = true; } else { qDebug().noquote() << global::nameOutput << "[h264] Download of" << reply->url().toString() << "can not save" << pathLocal + "/" + filename + ")"; downloadOK = false; } } listDownloads.removeAll( reply ); reply->deleteLater(); if ( downloadOK == true ) { emit signal_fileDownloaded( pathLocal + "/" + filename ); } if ( downloadOK == false ) { emit signal_failedDownload(); } } vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoOpenh264Downloader.h000066400000000000000000000035631444746353100244230ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCISCOOPEN264DOWNLOADER_H #define QVKCISCOOPEN264DOWNLOADER_H #include #include #include #include #include #include #include #include #include #include #include class QvkCiscoOpenh264Downloader : public QObject { Q_OBJECT QNetworkAccessManager networkAccessManager; QVector listDownloads; public: explicit QvkCiscoOpenh264Downloader( QString vk_pathLocal, QObject *parent = nullptr); void doDownload( const QUrl &url ); private: QString pathLocal; bool saveLocal(const QString &filename, QIODevice *data ); void execute(); signals: void signal_fileDownloaded( QString ); void signal_failedDownload(); void signal_downloadProgress( qint64 downloadedSize, qint64 fileSize ); public slots: void slot_downloadFinished( QNetworkReply *reply ); void slot_downloadProgress( qint64 downloadedSize, qint64 fileSize ); private slots: }; #endif // QvkDownloader_H vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoWaitDialog.cpp000066400000000000000000000007731444746353100234560ustar00rootroot00000000000000#include "QvkCiscoWaitDialog.h" #include "ui_QvkCiscoWaitDialog.h" QvkCiscoWaitDialog::QvkCiscoWaitDialog(QWidget *parent) : QWidget(parent), ui(new Ui::QvkCiscoWaitDialog) { ui->setupUi(this); } QvkCiscoWaitDialog::~QvkCiscoWaitDialog() { delete ui; } void QvkCiscoWaitDialog::progress( qint64 downloadedSize, qint64 fileSize ) { ui->progressBar->setMinimum( 0 ); ui->progressBar->setMaximum( fileSize ); ui->progressBar->setValue( downloadedSize ); update(); repaint(); } vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoWaitDialog.h000066400000000000000000000006311444746353100231140ustar00rootroot00000000000000#ifndef QVKCISCOWAITDIALOG_H #define QVKCISCOWAITDIALOG_H #include namespace Ui { class QvkCiscoWaitDialog; } class QvkCiscoWaitDialog : public QWidget { Q_OBJECT public: explicit QvkCiscoWaitDialog(QWidget *parent = nullptr); ~QvkCiscoWaitDialog(); void progress(qint64 downloadedSize, qint64 fileSize ); private: Ui::QvkCiscoWaitDialog *ui; private slots: }; #endif vokoscreenNG-3.7.0/src/ciscoOpenh264/QvkCiscoWaitDialog.ui000066400000000000000000000064111444746353100233040ustar00rootroot00000000000000 QvkCiscoWaitDialog 0 0 610 399 Qt::Horizontal 40 20 :/pictures/logo/logo.png Qt::Horizontal 40 20 0 Qt::Vertical 20 40 Download the free open source H264 video codec from Cisco Systems, Inc. Qt::Vertical 20 40 Qt::Vertical 20 40 vokoscreenNG-3.7.0/src/ciscoOpenh264/ciscoOpenh264.pri000066400000000000000000000011571444746353100223220ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkCiscoOpenh264Controller.h \ $$PWD/QvkCiscoOpenh264Downloader.h \ $$PWD/QvkBz2Decode.h \ $$PWD/QvkCiscoFinishDialog.h \ $$PWD/QvkCiscoWaitDialog.h SOURCES += $$PWD/QvkCiscoOpenh264Controller.cpp \ $$PWD/QvkCiscoOpenh264Downloader.cpp \ $$PWD/QvkBz2Decode.cpp \ $$PWD/QvkCiscoFinishDialog.cpp \ $$PWD/QvkCiscoWaitDialog.cpp FORMS += $$PWD/QvkCiscoFinishDialog.ui \ $$PWD/QvkCiscoWaitDialog.ui vokoscreenNG-3.7.0/src/composite/000077500000000000000000000000001444746353100167305ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/composite/QvkComposite.cpp000066400000000000000000000021661444746353100220650ustar00rootroot00000000000000#include "QvkComposite.h" #include "global.h" #include #include #include #include #include QvkComposite::QvkComposite( QMainWindow *parent ) { Q_UNUSED( parent ); setWindowFlags( Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::ToolTip ); setAttribute( Qt::WA_TranslucentBackground, true ); resize( 5, 5 ); move( 0, 0 ); show(); QTimer::singleShot( 1000, Qt::PreciseTimer, this, SLOT( slot_shot() ) ); } void QvkComposite::paintEvent( QPaintEvent *event ) { Q_UNUSED(event) QPixmap pixmap( width(), height() ); pixmap.fill( Qt::transparent ); QPainter painter; painter.begin( this ); painter.drawPixmap( 0, 0, pixmap ); painter.end(); } void QvkComposite::slot_shot() { QImage image = screen()->grabWindow(0).toImage(); QColor colorBlack = image.pixelColor( 3, 3 ); if ( colorBlack == Qt::black ) { isCompositeEnabled = false; } emit signal_compositeEnabled( isCompositeEnabled ); qDebug().noquote() << global::nameOutput << "[Composite]" << isCompositeEnabled; close(); } vokoscreenNG-3.7.0/src/composite/QvkComposite.h000066400000000000000000000007461444746353100215340ustar00rootroot00000000000000#ifndef COMPOSITE_H #define COMPOSITE_H #include #include #include #include #include class QvkComposite: public QWidget { Q_OBJECT public: QvkComposite( QMainWindow *parent ); bool isCompositeEnabled = true; public slots: private: private slots: void slot_shot(); protected: void paintEvent( QPaintEvent *event ); signals: void signal_compositeEnabled( bool ); }; #endif // COMPOSITE_H vokoscreenNG-3.7.0/src/composite/composite.pri000066400000000000000000000002101444746353100214370ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkComposite.h SOURCES += $$PWD/QvkComposite.cpp vokoscreenNG-3.7.0/src/countdown/000077500000000000000000000000001444746353100167465ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/countdown/QvkCountdown.cpp000066400000000000000000000056641444746353100221270ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCountdown.h" #include #include #include #include #include #include QvkCountdown::QvkCountdown() { } QvkCountdown::~QvkCountdown() { } void QvkCountdown::init() { createCountdownWindow(); timer = new QTimer( this ); timer->setTimerType( Qt::PreciseTimer ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_updateTimer() ) ); animationTimer = new QTimer( this ); animationTimer->setTimerType( Qt::PreciseTimer ); connect( animationTimer, SIGNAL( timeout() ), this, SLOT( slot_updateAnimationTimer() ) ); hide(); } void QvkCountdown::createCountdownWindow() { vkCountdownWindow = new QvkCountdownWindow( this ); vkCountdownWindow->setWindowFlags( Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::ToolTip ); //With tooltip, no entry in Taskbar connect( vkCountdownWindow, SIGNAL( signal_countDownCancel( bool ) ), this, SLOT( slot_cancel( bool ) ) ); x = 0; y = 0; Width = 300; Height = 300;; vkCountdownWindow->x = 0; vkCountdownWindow->y = 0; vkCountdownWindow->Width = 300; vkCountdownWindow->Height = 300;; } void QvkCountdown::startCountdown( int value ) { vkCountdownWindow->setGeometry( x, y, Width, Height ); vkCountdownWindow->show(); vkCountdownWindow->countValue = value; vkCountdownWindow->gradValue = 0; timer->start( 1000 ); animationTimer->start( 40 ); emit signal_countdownBegin( true ); } void QvkCountdown::slot_updateTimer() { vkCountdownWindow->gradValue = 0; vkCountdownWindow->countValue--; if ( vkCountdownWindow->countValue == 0 ) { vkCountdownWindow->setGeometry( x, y, 1, 1 ); vkCountdownWindow->hide(); timer->stop(); animationTimer->stop(); emit signal_countDownfinish( true ); } } void QvkCountdown::slot_updateAnimationTimer() { vkCountdownWindow->gradValue = vkCountdownWindow->gradValue - 20; vkCountdownWindow->repaint(); } void QvkCountdown::slot_cancel( bool value ) { timer->stop(); animationTimer->stop(); emit signal_countDownCancel( value); } vokoscreenNG-3.7.0/src/countdown/QvkCountdown.h000066400000000000000000000030541444746353100215630ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCOUNTDOWN_H #define QVKCOUNTDOWN_H #include #include "QvkCountdownWindow.h" class QvkCountdown: public QWidget { Q_OBJECT public: QvkCountdown(); virtual ~QvkCountdown(); void init(); void startCountdown(int value ); int x; int y; int Width; int Height; public slots: private: QvkCountdownWindow *vkCountdownWindow; void createCountdownWindow(); QTimer *timer; QTimer *animationTimer; private slots: void slot_updateTimer(); void slot_updateAnimationTimer(); void slot_cancel( bool value ); protected: signals: void signal_countDownfinish( bool value ); void signal_countdownBegin( bool value ); void signal_countDownCancel( bool value); }; #endif vokoscreenNG-3.7.0/src/countdown/QvkCountdownWindow.cpp000066400000000000000000000101071444746353100233030ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkCountdownWindow.h" #include #include #include QvkCountdownWindow::QvkCountdownWindow( QWidget *parent ) { setParent( parent ); setAttribute( Qt::WA_TranslucentBackground, true ); // Is needed only for the translated text QDialogButtonBox *buttonBox = new QDialogButtonBox( QDialogButtonBox::Abort, this); buttonBox->hide(); QList list = buttonBox->findChildren(); cancelText = list.at(0)->text(); show(); } QvkCountdownWindow::~QvkCountdownWindow() { } void QvkCountdownWindow::paintEvent( QPaintEvent *event ) { (void)event; QPixmap pixmap( 300 * devicePixelRatioF(), 300 * devicePixelRatioF() ); pixmap.fill( Qt::transparent ); pixmap.setDevicePixelRatio( devicePixelRatioF() ); QPainter painterPixmap; painterPixmap.begin( &pixmap ); painterPixmap.setRenderHints( QPainter::Antialiasing, true ); QPen pen; QBrush brush; brush.setColor( Qt::darkGray ); brush.setStyle( Qt::SolidPattern ); pen.setWidth( 0 ); pen.setColor( Qt::darkGray ); painterPixmap.setBrush( brush ); painterPixmap.setPen( pen ); painterPixmap.setOpacity( 0.3 ); painterPixmap.drawPie( 0, 0, 300, 300, 90*16, gradValue*16 ); painterPixmap.setOpacity( 1.0 ); pen.setColor( Qt::darkGray ); pen.setWidth( 6 ); painterPixmap.setPen( pen ); brush.setStyle( Qt::NoBrush ); painterPixmap.setBrush( brush ); painterPixmap.drawEllipse( QPoint( width()/2, height()/2), 125-3, 125-3 ); painterPixmap.drawEllipse( QPoint( width()/2, height()/2), 100, 100 ); painterPixmap.drawLine( 0, height()/2, width(), height()/2 ); painterPixmap.drawLine( width()/2, 0, width()/2, height() ); int fontSize = 110; QFont font; font.setPointSize( fontSize ); painterPixmap.setFont( font ); painterPixmap.setPen( Qt::red ); QFontMetrics fontMetrics( font ); int fontWidth = fontMetrics.horizontalAdvance( QString::number( countValue ) ); painterPixmap.drawText( width()/2-fontWidth/2, height()/2+fontSize/2, QString::number( countValue ) ); //--------------------- Cancel button ------------------------------- fontSize = 14; font.setPointSize( fontSize ); font.setBold( true); QFontMetrics fontMetrics_1( font ); fontWidth = fontMetrics_1.horizontalAdvance( cancelText ); qreal x = width()/2 - (fontWidth+30)/2; qreal y = 220; qreal width = fontWidth + 30; qreal height = 30; brush.setColor( Qt::red ); brush.setStyle( Qt::SolidPattern ); painterPixmap.setBrush( brush ); pen.setWidth( 2 ); pen.setColor( Qt::black ); painterPixmap.setPen( pen ); rectCancel.setRect( x, y, width, height ); painterPixmap.drawRoundedRect( rectCancel, 10, 10 ); painterPixmap.setPen( Qt::white ); painterPixmap.setFont( font ); painterPixmap.drawText( rectCancel, Qt::AlignCenter, cancelText ); painterPixmap.end(); QPainter painter; painter.begin( this ); painter.drawPixmap( QPointF( 0, 0 ), pixmap ); painter.end(); setMask( pixmap.mask() ); } void QvkCountdownWindow::mousePressEvent( QMouseEvent *event ) { if ( rectCancel.contains( event->pos() ) ) { hide(); emit signal_countDownCancel( true ); } } vokoscreenNG-3.7.0/src/countdown/QvkCountdownWindow.h000066400000000000000000000026741444746353100227620ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKCOUNTDOWNWINDOW_H #define QVKCOUNTDOWNWINDOW_H #include #include #include class QvkCountdownWindow: public QWidget { Q_OBJECT public: QvkCountdownWindow( QWidget *parent ); virtual ~QvkCountdownWindow(); int x; int y; int Width; int Height; int countValue; int gradValue; public slots: private: int oldCountValue; QString cancelText = "Cancel"; QRectF rectCancel; private slots: protected: void paintEvent( QPaintEvent *event ); void mousePressEvent(QMouseEvent *event); signals: void signal_countDownCancel( bool ); }; #endif vokoscreenNG-3.7.0/src/countdown/countdown.pri000066400000000000000000000003611444746353100215020ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkCountdown.h \ $$PWD/QvkCountdownWindow.h SOURCES += $$PWD/QvkCountdown.cpp \ $$PWD/QvkCountdownWindow.cpp vokoscreenNG-3.7.0/src/dirDialog/000077500000000000000000000000001444746353100166245ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/dirDialog/QvkDirDialog.cpp000066400000000000000000000033231444746353100216510ustar00rootroot00000000000000 #include "QvkDirDialog.h" #include #include #include #include #include #include #include QvkDirDialog::QvkDirDialog( QWidget *parent ) { Q_UNUSED(parent) setModal( true ); setFileMode( QFileDialog::Directory ); setOption( QFileDialog::ShowDirsOnly, true ); setOption( QFileDialog::DontUseNativeDialog, true ); setOption( QFileDialog::DontUseCustomDirectoryIcons, true ); setDirectory( QStandardPaths::writableLocation( QStandardPaths::HomeLocation ) ); setWindowFlag( Qt::WindowContextHelpButtonHint, false ); // Remove image in QDialogButtonBox QList list = findChildren(); if ( !list.empty() ) { QList listButtons = list.at(0)->buttons(); if ( !listButtons.empty() ) { for ( int x = 0; x < listButtons.count(); x++ ) { listButtons.at(x)->setIcon( QIcon( "" ) ); } } } // Wird benötigt für weitere tests /* QList listWidgets = findChildren(); if ( !listWidgets.empty() ) { listWidgets.at(0)->installEventFilter( this ); } QList listWidgets = findChildren( "listView" ); if ( !listWidgets.empty() ) { for (int x = 0; x < listWidgets.count(); x++) { listWidgets.at(x)->installEventFilter( this ); qDebug() << listWidgets.at(x); } } */ } bool QvkDirDialog::eventFilter(QObject *object, QEvent *event) { qDebug() << event->type(); return QObject::eventFilter( object, event ); } vokoscreenNG-3.7.0/src/dirDialog/QvkDirDialog.h000066400000000000000000000004711444746353100213170ustar00rootroot00000000000000 #ifndef QVKDIRDIALOG_H #define QVKDIRDIALOG_H #include #include class QvkDirDialog : public QFileDialog { Q_OBJECT public: QvkDirDialog(QWidget *parent = 0); public slots: protected: bool eventFilter(QObject *o, QEvent *event); private: signals: }; #endif vokoscreenNG-3.7.0/src/dirDialog/dirDialog.pri000066400000000000000000000002241444746353100212340ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkDirDialog.h SOURCES += $$PWD/QvkDirDialog.cpp vokoscreenNG-3.7.0/src/fileDialog/000077500000000000000000000000001444746353100167655ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/fileDialog/QvkFileDialog.cpp000066400000000000000000000022441444746353100221540ustar00rootroot00000000000000 #include "QvkFileDialog.h" #include #include #include #include #include #include #include QvkFileDialog::QvkFileDialog( QWidget *parent ) { Q_UNUSED(parent) setModal( true ); setFileMode( QFileDialog::ExistingFile ); setOption( QFileDialog::DontUseNativeDialog, true ); setOption( QFileDialog::DontUseCustomDirectoryIcons, true ); setWindowFlag( Qt::WindowContextHelpButtonHint, false ); // Remove image in QDialogButtonBox QList list = findChildren(); if ( !list.empty() ) { QList listButtons = list.at(0)->buttons(); if ( !listButtons.empty() ) { for ( int x = 0; x < listButtons.count(); x++ ) { listButtons.at(x)->setIcon( QIcon( "" ) ); } } } } void QvkFileDialog::setVideoPath( QString videoPath ) { setDirectory( videoPath ); } bool QvkFileDialog::eventFilter(QObject *object, QEvent *event) { qDebug() << event->type(); return QObject::eventFilter( object, event ); } vokoscreenNG-3.7.0/src/fileDialog/QvkFileDialog.h000066400000000000000000000005501444746353100216170ustar00rootroot00000000000000 #ifndef QVKFILEDIALOG_H #define QVKFILEDIALOG_H #include #include class QvkFileDialog : public QFileDialog { Q_OBJECT public: QvkFileDialog(QWidget *parent = 0); void setVideoPath(QString videoPath ); public slots: protected: bool eventFilter(QObject *o, QEvent *event); private: signals: }; #endif vokoscreenNG-3.7.0/src/fileDialog/fileDialog.pri000066400000000000000000000002261444746353100215400ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkFileDialog.h SOURCES += $$PWD/QvkFileDialog.cpp vokoscreenNG-3.7.0/src/formMainWindow.ui000066400000000000000000010105741444746353100202350ustar00rootroot00000000000000 formMainWindow 0 0 791 500 0 0 0 0 0 0 0 0 0 0 110 56 :/pictures/screencast/monitor.png:/pictures/screencast/monitor.png 48 48 true true true 110 56 :/pictures/camera/camera.png:/pictures/camera/camera.png 48 48 true true true 110 56 :/pictures/showClick/vokoShowClick-sidebar.png:/pictures/showClick/vokoShowClick-sidebar.png 48 48 true true true 110 56 :/pictures/snapshot/snapshot.png:/pictures/snapshot/snapshot.png 48 48 true true true 110 56 :/pictures/screencast/shortcut.png:/pictures/screencast/shortcut.png 48 48 true true true 110 56 :/pictures/player/player.png:/pictures/player/player.png 48 48 true true true 110 56 :/pictures/log/log.png:/pictures/log/log.png 48 48 true true true 75 true Start-App 75 true Stop-App Qt::Vertical 20 40 0 0 false QTabWidget::West 0 0 0 :/pictures/screencast/monitor-sidebar.png:/pictures/screencast/monitor-sidebar.png Screencast 0 0 0 0 0 0 0 0 48 48 false :/pictures/screencast/monitor.png:/pictures/screencast/monitor.png Help Help Wi&ndow buttonGroup Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Area buttonGroup Help Help Help Help 0 0 QComboBox::AdjustToContents Qt::Horizontal QSizePolicy::Preferred 40 20 Fulls&creen buttonGroup QComboBox::AdjustToContents :/pictures/screencast/screen-name.png:/pictures/screencast/screen-name.png true Qt::Vertical 20 40 Translate true true Qt::Vertical 20 40 0 false On Screen Qt::Horizontal 40 20 3 Qt::Horizontal 40 20 Help Help 3 Qt::Horizontal 40 20 CTRL+SHIFT+F9 Magnification 3 Qt::Horizontal 40 20 3 Qt::Horizontal 40 20 true buttonGroup_2 true buttonGroup_2 true true buttonGroup_2 27 27 27 27 :/pictures/systray/magnification.png true 1 0 Help Help Reset all settings at the next start Qt::Vertical 20 40 Help Help Qt::Vertical 20 40 Countdown Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter Qt::Horizontal QSizePolicy::Minimum 40 20 Qt::Vertical 10 0 Qt::Vertical 20 40 Information 10 0 Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Frames Free disk space: Video size: Qt::Vertical 20 40 Audiocodec Videocodec 40 0 0 Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter KB Format MB Qt::Horizontal Record Time: 00:00:00 Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter TextLabel true :/pictures/screencast/microphone.png:/pictures/screencast/microphone.png 0 0 QFrame::StyledPanel QFrame::Raised 0 0 0 0 0 QFrame::NoFrame true Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop 0 0 574 258 Help Help Qt::Vertical 20 40 false Audiocodec false QComboBox::AdjustToContents Qt::Horizontal 40 20 Help Help Qt::Vertical QSizePolicy::Minimum 20 40 Qt::Vertical QSizePolicy::Minimum 20 40 :/pictures/screencast/format-codec.png:/pictures/screencast/format-codec.png Frames Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter QFrame::NoFrame QFrame::Raised 10 0 0 0 0 QFrame::NoFrame QFrame::Raised 6 0 6 0 superfast 1 QComboBox::AdjustToContents ultrafast superfast veryfast faster fast medium baseline QComboBox::AdjustToContents baseline high-4:4:4 Quality Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png QFrame::NoFrame QFrame::Raised 6 0 6 0 Profile Quality Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png QFrame::NoFrame QFrame::Raised 0 0 Quality Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Do not record mouse cursor Qt::Horizontal 40 20 Help Help Help Help Format Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Qt::Horizontal 40 20 Help Help Qt::Vertical 20 40 QComboBox::AdjustToContents 14 6 Videocodec QComboBox::AdjustToContents Help Help QFrame::NoFrame QFrame::Raised 6 0 0 0 Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png :/pictures/screencast/preferences-system.png:/pictures/screencast/preferences-system.png QFrame::NoFrame QFrame::Raised 0 0 0 Limit of free disk space Megabyte Qt::Vertical 20 40 Help Help QFrame::NoFrame QFrame::Raised 0 0 0 Videopath true 9 Second wait before recording Qt::Horizontal 40 20 Help Help Help Help QFrame::NoFrame QFrame::Raised 0 0 0 0 0 Show in systray Qt::Horizontal 40 20 QFrame::NoFrame QFrame::Raised 0 0 0 0 0 Show in systray Look for updates TextLabel true Qt::Horizontal 40 20 Starts minimized Minimized when recording starts Help Help Help Help Help Help Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png ... Help Help GStreamer Debuglevel Open folder Folder Qt::Horizontal 40 20 Help :/pictures/screencast/timer.png:/pictures/screencast/timer.png true QFrame::NoFrame QFrame::Raised 6 0 0 0 0 Hour 8 Minute Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter Qt::Horizontal 40 20 Start the timer Qt::Horizontal 40 20 Help Help Qt::Horizontal true Stop recording after false QFrame::NoFrame QFrame::Raised 6 0 0 0 0 Hours Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter Minutes Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter Seconds Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter Help Help Qt::Vertical 20 40 :/pictures/screencast/supported-formats.png:/pictures/screencast/supported-formats.png 0 75 true Format 75 true Video 75 true Audio 0 100 true 0 0 389 364 0 0 Picture Available Qt::Horizontal QSizePolicy::Expanding 40 20 Picture Not available Qt::Horizontal 40 20 Qt::Vertical 20 40 Help Help Qt::Vertical 20 40 :/pictures/screencast/help-about.png:/pictures/screencast/help-about.png Qt::Vertical 20 40 100 100 :/pictures/screencast/author.png true Qt::AlignCenter Sourcecode Qt::AlignCenter true Website Qt::AlignCenter true Translation Qt::AlignCenter true Donate Qt::AlignCenter true Qt::Vertical 20 40 Qt::Horizontal Qt::Vertical 20 40 Qt::Horizontal 40 20 Online-Help Automatically QComboBox::AdjustToContents Automatically Qt::Horizontal 40 20 Copyright and license from pictures Qt::Horizontal 40 20 Qt::Vertical 20 40 Qt::Horizontal 40 20 Create images of tabs Qt::Horizontal 40 20 Qt::Vertical 20 40 Qt::Horizontal QFrame::StyledPanel QFrame::Raised 0 0 QFrame::NoFrame QFrame::Sunken 75 true OpenH264 Video Codec provided by Cisco Systems, Inc. License information <html><head/><body><p><a href="https://www.openh264.org"><span style=" text-decoration: underline; color:#2980b9;">https://www.openh264.org</span></a></p></body></html> true Qt::Horizontal 40 20 ON OFF Qt::Horizontal 40 20 75 true CTRL+SHIFT+F10 Start false 75 true CTRL+SHIFT+F11 Stop false 75 true CTRL+SHIFT+F12 Pause false 75 true CTRL+SHIFT+F12 Continue 75 true Play last record Play 75 true Open folder Folder 75 true Snapshot Help Help :/pictures/camera/camera-sidebar.png:/pictures/camera/camera-sidebar.png Camera 0 0 0 0 0 0 48 48 :/pictures/camera/camera.png:/pictures/camera/camera.png 0 0 9 Help Help 34 34 34 34 :/pictures/systray/magnification.png true 0 false Invert Qt::Horizontal QSizePolicy::Minimum 40 20 false Gray Qt::Horizontal QSizePolicy::Minimum 40 20 false Black-and-white Qt::Horizontal 40 20 12 0 0 false CTRL+SHIFT+F8 Camera false 0 0 QComboBox::AdjustToContents false QComboBox::AdjustToContents 0 12 true ---x--- Qt::AlignCenter true 34 34 :/pictures/camera/window-resize.png true 0 false Flip vertical Qt::Horizontal QSizePolicy::Minimum 40 20 false Flip horizontal Qt::Horizontal 40 20 0 0 Qt::Horizontal 40 20 :/pictures/camera/window-rectangle-off.png :/pictures/camera/window-rectangle-on.png:/pictures/camera/window-rectangle-off.png 34 34 true true true true Qt::Horizontal QSizePolicy::Preferred 40 20 :/pictures/camera/window-ellipse-off.png :/pictures/camera/window-ellipse-on.png:/pictures/camera/window-ellipse-off.png 34 34 true true true Qt::Horizontal QSizePolicy::Preferred 40 20 :/pictures/camera/window-circle-off.png :/pictures/camera/window-circle-on.png:/pictures/camera/window-circle-off.png 34 34 true true true Qt::Horizontal 40 20 0 false Remove window frame Qt::Vertical 20 40 :/pictures/showClick/vokoShowClick-sidebar.png:/pictures/showClick/vokoShowClick-sidebar.png ShowClick 0 0 0 0 0 0 48 48 :/pictures/showClick/vokoShowClick.png:/pictures/showClick/vokoShowClick.png 0 0 34 13 :/pictures/showClick/transparenz.png true Qt::Horizontal 40 20 Qt::Horizontal 40 20 14 Halo 0 0 34 13 :/pictures/showClick/transparenz.png true Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png 0 0 0 100 QFrame::NoFrame 0 1 0 0 0 Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png 14 Showclick Qt::Horizontal 40 20 Qt::Horizontal 40 20 0 0 0 100 0 1 0 0 0 Qt::Horizontal Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png 34 13 :/pictures/showClick/halo.png true 0 0 34 13 :/pictures/showClick/cursor.png true Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Qt::Horizontal 0 0 34 13 :/pictures/showClick/cursor.png true Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter 20 0 Qt::Vertical Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png 0 0 34 0 34 34 :/pictures/showClick/sandglass.png true 0 0 0 0 0 0 0 48 48 :/pictures/snapshot/snapshot.png:/pictures/snapshot/snapshot.png Format ... 14 Snapshot true Qt::Horizontal 40 20 Show in systray Imagepath Qt::Horizontal Hide this window Seconds wait before recording Qt::Vertical 20 40 75 true Snapshot Qt::Horizontal 40 20 75 true Open folder Folder Shortcut 0 0 0 0 0 0 48 48 :/pictures/screencast/shortcut.png:/pictures/screencast/shortcut.png QFrame::NoFrame 0 0 0 0 Qt::Horizontal 40 20 14 Global keyboard shortcuts Qt::Horizontal 40 20 Qt::Horizontal 40 20 0 Qt::Horizontal QSizePolicy::Fixed 40 20 Camera Qt::Horizontal QSizePolicy::Ignored 40 20 0 Pause / Continue Qt::Horizontal QSizePolicy::Ignored 40 20 Picture Qt::AlignCenter Picture CTRL Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Picture ALT Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Picture Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Picture Qt::AlignCenter ShowClick Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png Halo Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png SHIFT 0 Start Qt::AlignCenter / Qt::AlignCenter Stop Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter Qt::Horizontal QSizePolicy::Ignored 40 20 A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Magnification Qt::Horizontal QSizePolicy::Ignored 40 20 Reset :/pictures/screencast/undo.png:/pictures/screencast/undo.png META A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 0 0 Picture Qt::AlignCenter Snapshot Picture A 0 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 :/pictures/screencast/undo.png:/pictures/screencast/undo.png Qt::Vertical 20 40 16 16 :/pictures/screencast/accept.png true Assigned shortcut keys. true Qt::TextSelectableByMouse 16 16 :/pictures/screencast/missing.png true Keyboard shortcut not assigned or assigned more than once. true Qt::TextSelectableByMouse Qt::Vertical 20 40 75 true If it shows assigned but does not work, it is being used by another program. true Qt::TextSelectableByMouse Qt::Vertical 20 40 :/pictures/player/player-sidebar.png:/pictures/player/player-sidebar.png Player 0 0 0 0 0 :/pictures/log/log-sidebar.png:/pictures/log/log-sidebar.png Log 0 0 0 0 0 48 48 :/pictures/log/log.png:/pictures/log/log.png 6 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Noto Sans'; font-size:10pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> Qt::Horizontal 40 20 75 true Folder tabWidgetScreencast radioButtonScreencastFullscreen comboBoxScreencastScreen help_screencast_fullscreen radioButtonScreencastWindow help_screencast_window radioButtonScreencastArea help_screencast_area pushButtonStart pushButtonStop pushButtonPause pushButtonContinue pushButtonPlay pushButtonScreencastOpenfolder help_screencast_execute help_screencast_audio scrollAreaAudioDevice help_screencast_videocodec checkBoxStartTime help_screencast_starttimer checkBoxStopRecordingAfter help_screencast_stoptimer lineEditVideoPath checkBoxMinimizedWhenRecordingStarts checkBoxStartsMinimized scrollAreaAvailable help_screencast_avalaible tabWidgetCamera tabWidgetLog textBrowserLog vokoscreenNG-3.7.0/src/global.cpp000066400000000000000000000022311444746353100166700ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "global.h" #include #include namespace global { QString name = "vokoscreenNG"; QString nameOutput = "[" + name + "]"; int showclickCounter = 0; QLineEdit *lineEdit_EOS; bool testWASAPI = false; #ifdef Q_OS_LINUX QString version = "3.7.0"; #endif #ifdef Q_OS_WIN QString version = "3.7.0"; #endif } vokoscreenNG-3.7.0/src/global.h000066400000000000000000000020441444746353100163370ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include namespace global { extern QString name; extern QString nameOutput; extern QString version; extern int showclickCounter; extern QLineEdit *lineEdit_EOS; extern bool testWASAPI; } vokoscreenNG-3.7.0/src/globalMouse/000077500000000000000000000000001444746353100171775ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/globalMouse/QvkGlobalMouse.cpp000066400000000000000000000072541444746353100226060ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkGlobalMouse.h" #include #ifdef Q_OS_WIN #include #include #endif #ifdef Q_OS_LINUX #include #include #endif QvkGlobalMouse::QvkGlobalMouse() { timer = new QTimer; timer->setTimerType( Qt::PreciseTimer ); timer->setInterval( 10 ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_mousePressed() ) ); } QvkGlobalMouse::~QvkGlobalMouse() { } void QvkGlobalMouse::slot_on( bool value ) { if ( value == true ) { timer->start(); } if ( value == false ) { timer->stop(); } } #ifdef Q_OS_LINUX void QvkGlobalMouse::slot_mousePressed() { Display* display; Window root; display = XOpenDisplay( NULL ); root = DefaultRootWindow( display); Window root_return, child_return; int x, y; int win_x, win_y; unsigned int mask; XQueryPointer( display, root, &root_return, &child_return, &x, &y, &win_x, &win_y, &mask ); if ( ( mask & Button1Mask) | ( mask & Button2Mask ) | ( mask & Button3Mask ) ) { if ( pressed == 0 ) { QString mouseButton; if ( mask & Button1Mask ) { mouseButton = "LeftButton"; } if ( mask & Button2Mask ) { mouseButton = "MiddleButton"; } if ( mask & Button3Mask ) { mouseButton = "RightButton"; } pressed = 1; emit signal_mousePressed( win_x, win_y, mouseButton ); } } else { pressed = 0; } fflush(stdout); XCloseDisplay( display ); } #endif #ifdef Q_OS_WIN HHOOK hHook = NULL; QString Mouse_Button; int Mouse_X; int Mouse_Y; int pressed = 0; LRESULT CALLBACK MouseProc( int nCode, WPARAM wParam, LPARAM lParam ) { (void)lParam; (void)nCode; QPoint point = QCursor::pos(); switch( wParam ) { case WM_LBUTTONDOWN: { Mouse_Button = "LeftButton"; Mouse_X = point.x(); Mouse_Y = point.y(); pressed = 1; break; } case WM_RBUTTONDOWN: { Mouse_Button = "RightButton"; Mouse_X = point.x(); Mouse_Y = point.y(); pressed = 1; break; } case WM_MBUTTONUP: { Mouse_Button = "MiddleButton"; Mouse_X = point.x(); Mouse_Y = point.y(); pressed = 1; break; } } return CallNextHookEx( hHook, nCode, wParam, lParam ); } void QvkGlobalMouse::slot_mousePressed() { if ( once == false ) { hHook = SetWindowsHookEx( WH_MOUSE_LL, MouseProc, NULL, 0 ); once = true; } if ( hHook == NULL ) { qDebug() << "Hook failed"; } if ( pressed == 1 ) { //bool bol = UnhookWindowsHookEx( hHook ); pressed = 0; emit signal_mousePressed( Mouse_X, Mouse_Y, Mouse_Button ); } } #endif vokoscreenNG-3.7.0/src/globalMouse/QvkGlobalMouse.h000066400000000000000000000025061444746353100222460ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKGLOBALMOUSE_H #define QVKGLOBALMOUSE_H #include #include class QvkGlobalMouse: public QObject { Q_OBJECT public: QvkGlobalMouse(); virtual ~QvkGlobalMouse(); QTimer *timer; public slots: void slot_mousePressed(); void slot_on( bool value ); private: #ifdef Q_OS_LINUX int pressed = 0; #endif #ifdef Q_OS_WIN bool once = false; #endif private slots: protected: signals: void signal_mousePressed( int win_x, int win_y, QString mouseButton ); }; #endif // QVKGLOBALMOUSE_H vokoscreenNG-3.7.0/src/globalMouse/globalMouse.pri000066400000000000000000000001661444746353100221670ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD SOURCES += $$PWD/QvkGlobalMouse.cpp HEADERS += $$PWD/QvkGlobalMouse.h vokoscreenNG-3.7.0/src/halo/000077500000000000000000000000001444746353100156515ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/halo/QvkHalo.cpp000066400000000000000000000164441444746353100177330ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2021 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkHalo.h" #include "QvkPushButton.h" #include "global.h" QvkHalo::QvkHalo() { } QvkHalo::~QvkHalo() { } void QvkHalo::init( Ui_formMainWindow *ui_formMainWindow ) { ui = ui_formMainWindow; createHaloPreviewWidget(); createHaloWindow(); createSpezialSlider(); createColorButtons(); createSpezialCheckBox(); setToolButtonDefaultValues(); } void QvkHalo::createHaloPreviewWidget() { vkHaloPreviewWidget = new QvkHaloPreviewWidget( ); ui->horizontalLayout_61->insertWidget( 0, vkHaloPreviewWidget ); vkHaloPreviewWidget->setObjectName( "widgetHaloPreview" ); vkHaloPreviewWidget->show(); } void QvkHalo::createHaloWindow() { vkHaloWindow = new QvkHaloWindow( this ); vkHaloWindow->setWindowFlags( Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::ToolTip ); //With tooltip, no entry in Taskbar } void QvkHalo::createSpezialSlider() { vkSpezialSliderHole = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayoutHaloHole->insertWidget( 0, vkSpezialSliderHole ); vkSpezialSliderHole->setObjectName( "sliderhaloHole" ); vkSpezialSliderHole->setTracking( true ); vkSpezialSliderHole->setMinimum( 20 ); vkSpezialSliderHole->setMaximum( 40 ); vkSpezialSliderHole->setValue( 30 ); // This value must be greater than the holeDefault in order to be changed after the connect vkSpezialSliderHole->setShowValue( false ); vkSpezialSliderHole->setBigHandel( false ); vkSpezialSliderHole->show(); connect( vkSpezialSliderHole, SIGNAL( valueChanged( int ) ), this, SLOT( slot_valueChanged_SpezialSlider_Hole( int ) ) ); vkSpezialSliderHole->setValue( holeDefault ); vkSpezialSliderDiameter = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayoutDiameter->insertWidget( 0, vkSpezialSliderDiameter ); vkSpezialSliderDiameter->setObjectName( "sliderhaloDiameter" ); vkSpezialSliderDiameter->setTracking( true ); vkSpezialSliderDiameter->setMinimum( 50 ); vkSpezialSliderDiameter->setMaximum( 90 ); vkSpezialSliderDiameter->setValue( 0 ); vkSpezialSliderDiameter->setShowValue( false ); vkSpezialSliderDiameter->setBigHandel( false ); vkSpezialSliderDiameter->show(); connect( vkSpezialSliderDiameter, SIGNAL( valueChanged( int ) ), this, SLOT( slot_valueChanged_SpezialSlider_Diameter( int ) ) ); vkSpezialSliderDiameter->setValue( diameterDefault ); vkSpezialSliderOpacity = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayoutHaloOpacity->insertWidget( 0, vkSpezialSliderOpacity ); vkSpezialSliderOpacity->setObjectName( "sliderhaloOpacity" ); vkSpezialSliderOpacity->setTracking( true ); vkSpezialSliderOpacity->setMinimum( 1 ); vkSpezialSliderOpacity->setMaximum( 100 ); vkSpezialSliderOpacity->setValue( 0 ); vkSpezialSliderOpacity->setShowValue( false ); vkSpezialSliderOpacity->setBigHandel( false ); vkSpezialSliderOpacity->show(); connect( vkSpezialSliderOpacity, SIGNAL( valueChanged( int ) ), this, SLOT( slot_valueChanged_SpezialSlider_Opacity( int ) ) ); vkSpezialSliderOpacity->setValue( opacityDefault ); } void QvkHalo::slot_valueChanged_SpezialSlider_Diameter( int value ) { vkHaloPreviewWidget->setDiameter( value ); vkHaloWindow->setDiameter( value ); vkSpezialSliderHole->setMaximum( vkSpezialSliderDiameter->value()/2 ); } void QvkHalo::slot_valueChanged_SpezialSlider_Hole( int value ) { vkHaloWindow->setHoleRadius( value ); vkHaloWindow->repaint(); vkHaloPreviewWidget->setHole( value ); vkHaloPreviewWidget->repaint(); } void QvkHalo::slot_valueChanged_SpezialSlider_Opacity( int value ) { vkHaloPreviewWidget->setOpacity( (qreal)value / 100 ); vkHaloWindow->setOpacity( (qreal)value / 100 ); } void QvkHalo::createColorButtons() { QList listLayaout = ui->gridLayout_halo_color_pushButton->findChildren(); for ( int i = 0; i < listLayaout.count(); i++ ) { for ( int x = 0; x < 20; x++ ) { if ( listLayaout.at(i)->objectName().section( "_", 2, 2 ) == QVariant::fromValue( Qt::GlobalColor(x) ).toString() ) { QvkPushButton *vkPushButton = new QvkPushButton( Qt::GlobalColor(x) ); vkPushButton->setObjectName( "PushButton_Halo_color_" + QVariant::fromValue( Qt::GlobalColor(x) ).toString() ); vkPushButton->setMaximumHeight( 23 ); listLayaout.at(i)->addWidget( vkPushButton ); connect( vkPushButton, &QPushButton::clicked, this, [=]() { vkHaloPreviewWidget->setColor( Qt::GlobalColor(x) ); vkHaloWindow->setColor( Qt::GlobalColor(x) ); } ); break; } } } } void QvkHalo::createSpezialCheckBox() { vkSpezialCheckbox = new QvkSpezialCheckbox(); vkSpezialCheckbox->setObjectName( "spezialCheckboxHalo" ); ui->horizontalLayout_48->insertWidget( 1, vkSpezialCheckbox ); connect( vkSpezialCheckbox, SIGNAL( signal_clicked( bool ) ), this, SLOT( slot_haloOnOff( bool ) ) ); } void QvkHalo::slot_haloOnOff( bool value ) { if ( value == true ) { timerID = startTimer( 10, Qt::PreciseTimer ); vkHaloWindow->show(); } if ( value == false ) { killTimer( timerID ); vkHaloWindow->hide(); } } /* * Move the halo window and brings the window on the top */ void QvkHalo::timerEvent( QTimerEvent *event ) { Q_UNUSED(event); if ( global::showclickCounter == 0 ) { vkHaloWindow->raise(); } vkHaloWindow->move( QCursor::pos().x() - vkHaloWindow->diameter/2, QCursor::pos().y() - vkHaloWindow->diameter/2 ); } void QvkHalo::setToolButtonDefaultValues() { connect( ui->toolButtonHaloColorDefault, &QToolButton::clicked, this, [=]() { vkHaloPreviewWidget->setColor( colorDefault ); vkHaloWindow->setColor( colorDefault ); } ); connect( ui->toolButtonHaloDiameterDefault, &QToolButton::clicked, this, [=]() { vkSpezialSliderDiameter->setValue( diameterDefault ); } ); connect( ui->toolButtonHaloOpacityDefault, &QToolButton::clicked, this, [=]() { vkSpezialSliderOpacity->setValue( opacityDefault ); } ); connect( ui->toolButtonHaloHoleDefault, &QToolButton::clicked, this, [=]() { vkSpezialSliderHole->setValue( holeDefault); } ); } vokoscreenNG-3.7.0/src/halo/QvkHalo.h000066400000000000000000000041371444746353100173740ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2021 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKHALO_H #define QVKHALO_H #include #include "QvkSpezialSlider.h" #include "QvkHaloPreviewWidget.h" #include "QvkSpezialCheckbox.h" #include "QvkHaloWindow.h" #include "ui_formMainWindow.h" class QvkHalo: public QWidget { Q_OBJECT public: QvkHalo(); virtual ~QvkHalo(); void init( Ui_formMainWindow *ui_formMainWindow ); QvkSpezialSlider *vkSpezialSliderDiameter; QvkSpezialSlider *vkSpezialSliderOpacity; QvkSpezialSlider *vkSpezialSliderHole; QvkHaloPreviewWidget *vkHaloPreviewWidget; QvkHaloWindow *vkHaloWindow; QColor colorDefault = Qt::green; QvkSpezialCheckbox *vkSpezialCheckbox; public slots: private: Ui_formMainWindow *ui; int diameterDefault = 70; int opacityDefault = 60; int holeDefault = 5; int timerID; void createHaloWindow(); void createHaloPreviewWidget(); void createSpezialSlider(); void createColorButtons(); void createSpezialCheckBox(); void setToolButtonDefaultValues(); private slots: void slot_valueChanged_SpezialSlider_Diameter( int value ); void slot_valueChanged_SpezialSlider_Opacity( int value ); void slot_valueChanged_SpezialSlider_Hole( int value ); void slot_haloOnOff( bool value ); protected: void timerEvent(QTimerEvent *event) override; }; #endif // QvkHalo vokoscreenNG-3.7.0/src/halo/QvkHaloPreviewWidget.cpp000066400000000000000000000037171444746353100224400ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2021 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkHaloPreviewWidget.h" QvkHaloPreviewWidget::QvkHaloPreviewWidget() { } QvkHaloPreviewWidget::~QvkHaloPreviewWidget() { } void QvkHaloPreviewWidget::paintEvent( QPaintEvent *event ) { Q_UNUSED(event); QPainter painter; painter.begin( this ); painter.setRenderHints( QPainter::Antialiasing, true ); qreal penWidth = diameter/2 - holeRadius; QPen pen; pen.setWidthF( penWidth ); pen.setColor( color ); painter.setPen( pen ); painter.setOpacity( opacity ); painter.drawEllipse( QPointF( width()/2, height()/2 ), holeRadius + penWidth/2, holeRadius + penWidth/2); painter.end(); } void QvkHaloPreviewWidget::setColor( QColor value ) { color = value; repaint(); } QColor QvkHaloPreviewWidget::getColor() { return color; } void QvkHaloPreviewWidget::setDiameter( int value ) { diameter = value; repaint(); } int QvkHaloPreviewWidget::getDiameter() { return diameter; } void QvkHaloPreviewWidget::setOpacity( qreal value ) { opacity = value; repaint(); } qreal QvkHaloPreviewWidget::getOpacity() { return opacity; } void QvkHaloPreviewWidget::setHole( int value ) { holeRadius = value; } vokoscreenNG-3.7.0/src/halo/QvkHaloPreviewWidget.h000066400000000000000000000027101444746353100220750ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2021 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKHALOPREVIEWWIDGET_H #define QVKHALOPREVIEWWIDGET_H #include #include #include class QvkHaloPreviewWidget: public QWidget { Q_OBJECT public: virtual ~QvkHaloPreviewWidget(); QvkHaloPreviewWidget(); void setColor( QColor value ); void setDiameter( int value ); void setOpacity( qreal value ); void setHole( int value ); QColor getColor(); public slots: private: QColor color; int diameter; qreal opacity; int holeRadius; int getDiameter(); qreal getOpacity(); private slots: protected: void paintEvent( QPaintEvent *event ); signals: }; #endif // QvkCircleWidget_H vokoscreenNG-3.7.0/src/halo/QvkHaloWindow.cpp000066400000000000000000000044411444746353100211150ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2021 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkHaloWindow.h" #include #include #include QvkHaloWindow::QvkHaloWindow( QWidget *parent ) { setParent( parent ); setCursor( Qt::BlankCursor ); setAttribute( Qt::WA_TranslucentBackground, true ); show(); } QvkHaloWindow::~QvkHaloWindow() { } void QvkHaloWindow::paintEvent( QPaintEvent *event ) { Q_UNUSED(event); QPixmap pixmap( 100 * devicePixelRatioF(), 100 * devicePixelRatioF() ); pixmap.fill( Qt::transparent ); pixmap.setDevicePixelRatio( devicePixelRatioF() ); QPainter painterPixmap; painterPixmap.begin( &pixmap ); painterPixmap.setRenderHints( QPainter::Antialiasing, true ); qreal penWidth = diameter/2 - holeRadius; QPen pen; pen.setWidthF( penWidth ); pen.setColor( color ); painterPixmap.setPen( pen ); painterPixmap.setOpacity( opacity ); painterPixmap.drawEllipse( QPointF( diameter/2, diameter/2 ), holeRadius + penWidth/2, holeRadius + penWidth/2); painterPixmap.end(); QPainter painter; painter.begin( this ); painter.drawPixmap( QPointF( 0, 0 ), pixmap ); painter.end(); setMask( pixmap.mask() ); } void QvkHaloWindow::setDiameter( int value ) { diameter = value; resize( diameter, diameter ); } void QvkHaloWindow::setHoleRadius( int value ) { holeRadius = value; repaint(); } void QvkHaloWindow::setOpacity( qreal value ) { opacity = value; repaint(); } void QvkHaloWindow::setColor( QColor value ) { color = value; repaint(); } vokoscreenNG-3.7.0/src/halo/QvkHaloWindow.h000066400000000000000000000025131444746353100205600ustar00rootroot00000000000000/* vokoscreenNG * Copyright (C) 2017-2021 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKHALOWINDOW_H #define QVKHALOWINDOW_H #include class QvkHaloWindow: public QWidget { Q_OBJECT public: QvkHaloWindow( QWidget *parent ); virtual ~QvkHaloWindow(); qreal holeRadius; qreal diameter; public: void setDiameter( int value ); void setHoleRadius( int value ); void setOpacity( qreal value ); void setColor( QColor value ); public slots: private: qreal opacity; QColor color; private slots: protected: void paintEvent(QPaintEvent *event); }; #endif // QVKHALOWINDOW_H vokoscreenNG-3.7.0/src/halo/halo.pri000066400000000000000000000004161444746353100173110ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD SOURCES += $$PWD/QvkHalo.cpp \ $$PWD/QvkHaloWindow.cpp \ $$PWD/QvkHaloPreviewWidget.cpp HEADERS += $$PWD/QvkHalo.h \ $$PWD/QvkHaloWindow.h \ $$PWD/QvkHaloPreviewWidget.h vokoscreenNG-3.7.0/src/help/000077500000000000000000000000001444746353100156565ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/help/QvkDownloader.cpp000066400000000000000000000061601444746353100211450ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkDownloader.h" #include "global.h" #include QvkDownloader::QvkDownloader( QString pathLocal , QObject *parent ) : QObject(parent) { connect( &networkAccessManager, SIGNAL( finished( QNetworkReply* ) ), SLOT( slot_downloadFinished( QNetworkReply* ) ) ); tempPath = pathLocal; } void QvkDownloader::doDownload( const QUrl &url ) { QNetworkRequest request; request.setSslConfiguration( QSslConfiguration::defaultConfiguration() ); request.setUrl( url ); QDateTime time; time.setMSecsSinceEpoch( QDateTime::currentDateTime().currentMSecsSinceEpoch() ); QSettings installSetting( QSettings::IniFormat, QSettings::UserScope, global::name, QString( "InstallTime" ), Q_NULLPTR ); installSetting.beginGroup( global::name ); QString timeStringMSecsSinceEpoch = installSetting.value( "time", time.toString( "yyyy.MM.dd-hh:mm:ss:zzz" ) ).toString(); QString version = installSetting.value( "version", global::version ).toString(); QByteArray headerValue = timeStringMSecsSinceEpoch.append( "_" ).append( version ).toLatin1(); installSetting.endGroup(); request.setRawHeader( "User-Agent", headerValue ); QNetworkReply *reply = networkAccessManager.get( request ); listDownloads.append( reply ); } bool QvkDownloader::saveLocal( const QString &filename, QIODevice *data ) { QString fileInTempPath = tempPath + "/" + filename; QFile file( fileInTempPath ); if ( !file.open( QIODevice::WriteOnly ) ) { return false; } file.write( data->readAll() ); file.close(); return true; } void QvkDownloader::slot_downloadFinished( QNetworkReply *reply ) { QString filename = QFileInfo( reply->url().path() ).fileName(); if ( reply->error() ) { //qDebug().noquote() << global::nameOutput << "Download of" << reply->url().toString() << "failed:" << reply->errorString(); } else { if ( saveLocal( filename, reply ) ) { //qDebug().noquote() << global::nameOutput << "Download of" << reply->url().toString() << "succeeded (saved to" << tempPath + "/" + filename + ")"; } } listDownloads.removeAll( reply ); reply->deleteLater(); if ( listDownloads.isEmpty() ) { // all downloads finished emit signal_fileDownloaded( tempPath + "/" + filename ); } } vokoscreenNG-3.7.0/src/help/QvkDownloader.h000066400000000000000000000032061444746353100206100ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKDOWNLOADER_H #define QVKDOWNLOADER_H #include #include #include #include #include #include #include #include #include #include #include class QvkDownloader : public QObject { Q_OBJECT QNetworkAccessManager networkAccessManager; QVector listDownloads; public: explicit QvkDownloader( QString pathLocal, QObject *parent = nullptr); void doDownload( const QUrl &url ); private: QString tempPath; bool saveLocal(const QString &filename, QIODevice *data ); void execute(); signals: void signal_fileDownloaded( QString ); public slots: void slot_downloadFinished( QNetworkReply *reply ); private slots: }; #endif // QvkDownloader_H vokoscreenNG-3.7.0/src/help/QvkHelp.cpp000066400000000000000000000240741444746353100177430ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkHelp.h" #include "QvkLocale.h" #include "global.h" #include #include #include #include #include /* * The remote HTML-file and the toolbutton have the same name. * * Example: * QToolbutton -> help_screencast_fullscreen * Remote file -> help_screencast_fullscreen.html * * We write as snake_case, so the underline character is the seperator. * The first section is help, this we need for set for icon and installEventFilter, see constructor. * The second section is the tab in the sidebar and the subdir on remote. * The third section is the name from the function that we want help. * See also QvkHelp::eventFilter(QObject *object, QEvent *event) */ QvkHelp::QvkHelp( Ui_formMainWindow *ui_mainwindow ) : uiHelp(new(Ui::help)) { ui = ui_mainwindow; uiHelp->setupUi( this ); connect(uiHelp->buttonBox, SIGNAL( clicked( QAbstractButton * ) ), this, SLOT( close() ) ); resize( 800, 600 ); setWindowTitle( QString( tr( "Help") ) ); QIcon icon; icon.addFile( QString::fromUtf8( ":/pictures/logo/logo.png" ), QSize(), QIcon::Normal, QIcon::Off ); setWindowIcon( icon ); QStringList helpStringList; helpStringList << "https:/" << "vokoscreen.volkoh.de" << "3.0" << "help"; vk_helpPath = helpStringList.join( "/" ).append( "/"); QvkLocale *vkLocale = new QvkLocale(); connect( vkLocale, SIGNAL( signal_locale( QStringList) ), this, SLOT( slot_parse_locale( QStringList ) ) ); vkDownloadHTML = new QvkDownloader( temporaryDirLocal.path() ); vkDownloadFiles = new QvkDownloader( temporaryDirLocal.path() ); QIcon iconHelp( ":/pictures/help/information.png" ); QList listToolButton = ui->centralWidget->findChildren(); for ( int i = 0; i < listToolButton.count(); i++ ) { if ( listToolButton.at(i)->objectName().startsWith( "help_") ) { listToolButton.at(i)->setIcon( iconHelp ); listToolButton.at(i)->installEventFilter( this ); } } } QvkHelp::~QvkHelp() { } void QvkHelp::slot_parse_locale( QStringList list ) { for ( int i = 0; i < list.count(); i++ ) { QLocale locale( list.at( i ) ); ui->comboBoxOnlineHelp->addItem( locale.nativeLanguageName() + " " + "(" + list.at(i) + ")", list.at( i ) ); } QSettings settings( QSettings::IniFormat, QSettings::UserScope, global::name, global::name, Q_NULLPTR ); QString valueText = settings.value( ui->comboBoxOnlineHelp->objectName(), "" ).toString(); int valueInt = ui->comboBoxOnlineHelp->findText( valueText ); if ( valueInt > -1 ) { ui->comboBoxOnlineHelp->setCurrentIndex( valueInt ); } } bool QvkHelp::eventFilter(QObject *object, QEvent *event) { QToolButton *toolButton = qobject_cast(object); // Automatic language detection is set in combobox for the online help. if ( ( event->type() == QEvent::MouseButtonRelease ) and ( toolButton->isEnabled() == true ) and ( ui->comboBoxOnlineHelp->currentIndex() == 0 ) ) { QString language; if ( ui->comboBoxOnlineHelp->findText( "(" + QLocale::system().name() + ")", Qt::MatchEndsWith ) > -1 ) { language = QLocale::system().name(); } else { language = "en"; } QString vk_helpPath_locale = vk_helpPath + language + "/"; loadHTML( vk_helpPath_locale + object->objectName().section( "_", 1, 1 ) + "/" + object->objectName() + ".html" ); uiHelp->labelURL->setText( vk_helpPath_locale + object->objectName().section( "_", 1, 1 ) + "/" + object->objectName() + ".html" ); return false; } // Selected Language is set in combobox if ( ( event->type() == QEvent::MouseButtonRelease ) and ( toolButton->isEnabled() == true ) and ( ui->comboBoxOnlineHelp->currentIndex() > 0 ) ) { QString language = ui->comboBoxOnlineHelp->currentText().section( "(", 1 ).replace( ")", "" ); QString vk_helpPath_locale = vk_helpPath + language + "/"; loadHTML( vk_helpPath_locale + object->objectName().section( "_", 1, 1 ) + "/" + object->objectName() + ".html" ); uiHelp->labelURL->setText( vk_helpPath_locale + object->objectName().section( "_", 1, 1 ) + "/" + object->objectName() + ".html" ); return false; } else { return QObject::eventFilter( object, event ); } } void QvkHelp::slot_cleanUp() { temporaryDirLocal.remove(); } /* * To first we load the html file ... */ void QvkHelp::loadHTML( QString value ) { QFileInfo fileInfo( value ); remotePath = fileInfo.path(); remoteBasename = fileInfo.baseName(); disconnect( vkDownloadHTML, nullptr, nullptr, nullptr ); connect( vkDownloadHTML, SIGNAL( signal_fileDownloaded( QString ) ), this, SLOT( slot_parseHTML( QString ) ) ); vkDownloadHTML->doDownload( value ); } bool QvkHelp::isFileInLine( QString line ) { bool value = false; for ( int i = 0; i < toDownloadFiles.count(); i++ ) { if ( line.contains( toDownloadFiles.at(i), Qt::CaseInsensitive ) ) { value = true; break; } else { value = false; } } return value; } int QvkHelp::getCountFileToDownload( QString tempPathFileName ) { QFile file( tempPathFileName ); if( !file.open( QIODevice::ReadOnly ) ) { qDebug().noquote() << global::nameOutput << "QvkHelp::getCountFileToDownload" << tempPathFileName << file.errorString(); //QMessageBox::information( nullptr, "Help error", "QvkHelp::getCountFileToDownload\n" + tempPathFileName + "\n" + file.errorString() ); } int count = 0; QTextStream textStream( &file ); while( !textStream.atEnd() ) { QString line = textStream.readLine(); if ( isFileInLine( line ) ) { count++; } } file.close(); return count; } /* * ... then we parse *.html of files and download all files from remote Url and save local in tmp ... */ void QvkHelp::slot_parseHTML( QString tempPathFileName ) { localFiles.clear(); localFiles << tempPathFileName; QFileInfo fileInfo( tempPathFileName ); QString tmpPath = fileInfo.absolutePath(); QFile file( tempPathFileName ); if( !file.open( QIODevice::ReadOnly ) ) { qDebug().noquote() << global::nameOutput << "QvkHelp::slot_parseHTML" << tempPathFileName << file.errorString() << "The online help needs an internet connection"; QMessageBox msgBox; msgBox.setWindowTitle( global::name + " " + global::version ); msgBox.setWindowIcon( QIcon( ":/pictures/logo/logo.png" ) ); msgBox.setIconPixmap( QPixmap( ":/pictures/status/information.png" ).scaledToHeight( 50, Qt::SmoothTransformation ) ); msgBox.setText("\nThe online help needs an internet connection"); msgBox.exec(); return; } int countFiles = getCountFileToDownload( tempPathFileName ); int counter = 0; QTextStream textStream( &file ); while( !textStream.atEnd() ) { QString line = textStream.readLine(); if ( isFileInLine( line ) ) { QString fileForHTML = line.section( "\"", 1, 1 ); counter++; if ( counter == countFiles ) { disconnect( vkDownloadFiles, nullptr, nullptr, nullptr ); connect( vkDownloadFiles, SIGNAL( signal_fileDownloaded( QString ) ), this, SLOT( slot_showHelp( QString ) ) ); } vkDownloadFiles->doDownload( remotePath + "/" + fileForHTML ); localFiles << tmpPath + + "/" + fileForHTML; } } if ( counter == 0 ) { // "dummy.png" is a fake, we need this if no file is downlowded slot_showHelp( tmpPath + "/" + "dummy.png"); } file.close(); } /* * ... then we show the html file */ void QvkHelp::slot_showHelp( QString tempPathFileName ) { QDir dir; QString currentdir = dir.currentPath(); QFileInfo fileInfo( tempPathFileName ); QString tmpPath = fileInfo.absolutePath(); dir.setCurrent( tmpPath ); QString htmlFile = tmpPath + "/" + remoteBasename + ".html"; QFile file( htmlFile ); if( !file.open( QIODevice::ReadOnly ) ) { qDebug().noquote() << global::nameOutput << "QvkHelp::slot_showHelp" << tempPathFileName << file.errorString(); //QMessageBox::information( nullptr, "Help error", "QvkHelp::slot_showHelp\n" + tempPathFileName + "\n" + file.errorString() ); } QString value = QString::fromUtf8( file.readAll() ); // Entfernen von REM // Es wird nur ein einziges REM unterstützt int begin = value.indexOf( "" ); int len = QString( "-->" ).length(); value = value.remove( begin, end - begin + len ); // Antialiasing for Font QFont font = uiHelp->textBrowser->font(); font.setStyleStrategy( QFont::PreferAntialias ); uiHelp->textBrowser->setFont(font); uiHelp->textBrowser->setText( value ); file.close(); show(); dir.setCurrent( currentdir ); // remove all tmp files for ( int i = 0; i < localFiles.count(); i++ ) { QFile file( localFiles.at( i ) ); file.remove(); } } vokoscreenNG-3.7.0/src/help/QvkHelp.h000066400000000000000000000036771444746353100174160ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKHELP_H #define QVKHELP_H #include "ui_formMainWindow.h" #include "ui_help.h" #include "QvkDownloader.h" #include #include #include #include class QvkHelp: public QWidget { Q_OBJECT public: QvkHelp( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkHelp() override; public slots: void slot_cleanUp(); private: Ui_formMainWindow *ui; Ui_help *uiHelp; QStringList toDownloadFiles = { ".png", ".svg", ".css", ".jpg" }; bool isFileInLine( QString line ); QvkDownloader *vkDownloadHTML; QvkDownloader *vkDownloadFiles; void loadHTML( QString value ); QString remotePath; QString remoteBasename; int getCountFileToDownload( QString tempPathFileName ); QStringList localFiles; QString tempPath; QString vk_helpPath; QTemporaryDir temporaryDirLocal; private slots: void slot_parseHTML( QString tempPathFileName ); void slot_showHelp( QString tempPathFileName ); void slot_parse_locale( QStringList list ); protected: bool eventFilter(QObject *object, QEvent *ev) override; signals: }; #endif vokoscreenNG-3.7.0/src/help/QvkLocale.cpp000066400000000000000000000032701444746353100202450ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkLocale.h" #include "global.h" QvkLocale::QvkLocale() { vkDownload = new QvkDownloader( temporaryDirLocal.path() ); connect( vkDownload, SIGNAL( signal_fileDownloaded( QString ) ), this, SLOT( slot_parse( QString ) ) ); #ifdef Q_OS_LINUX vkDownload->doDownload( QUrl( "https://vokoscreen.volkoh.de/3.0/help/getLinuxDirs.php" ) ); #endif #ifdef Q_OS_WIN vkDownload->doDownload( QUrl( "https://vokoscreen.volkoh.de/3.0/help/getWindowsDirs.php" ) ); #endif } QvkLocale::~QvkLocale() { } void QvkLocale::slot_parse( QString tempPathFileName ) { QFile file( tempPathFileName ); if( !file.open( QIODevice::ReadOnly ) ) { return; } QTextStream textStream( &file ); while( !textStream.atEnd() ) { localeList << textStream.readLine(); } file.close(); temporaryDirLocal.remove(); emit signal_locale( localeList ); } vokoscreenNG-3.7.0/src/help/QvkLocale.h000066400000000000000000000024631444746353100177150ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKLOCALE_H #define QVKLOCALE_H #include "QvkDownloader.h" #include #include #include class QvkLocale: public QObject { Q_OBJECT public: QvkLocale(); virtual ~QvkLocale() override; public slots: private: QTemporaryDir temporaryDirLocal; QvkDownloader *vkDownload; QStringList localeList; private slots: void slot_parse(QString tempPathFileName ); protected: signals: void signal_locale( QStringList list ); }; #endif vokoscreenNG-3.7.0/src/help/help.pri000066400000000000000000000004411444746353100173210ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkHelp.h \ $$PWD/QvkDownloader.h \ $$PWD/QvkLocale.h SOURCES += $$PWD/QvkHelp.cpp \ $$PWD/QvkDownloader.cpp \ $$PWD/QvkLocale.cpp FORMS += $$PWD/help.ui vokoscreenNG-3.7.0/src/help/help.ui000066400000000000000000000025571444746353100171560ustar00rootroot00000000000000 help 0 0 400 300 Form true TextLabel Qt::LinksAccessibleByMouse|Qt::TextSelectableByMouse QDialogButtonBox::Close vokoscreenNG-3.7.0/src/imageFromTabs/000077500000000000000000000000001444746353100174465ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/imageFromTabs/QvkImageFromTabs.cpp000066400000000000000000000123261444746353100233200ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "global.h" #include "QvkImageFromTabs.h" #include #include #include #include #include #include #include #include #include #include #include QvkImageFromTabs::QvkImageFromTabs( QvkMainWindow *parent ) { myParent = parent; connect( myParent->ui->pushButtonImages, SIGNAL( clicked() ), this, SLOT( slot_make_picture_from_tabs() ) ); } QvkImageFromTabs::~QvkImageFromTabs() {} void QvkImageFromTabs::slot_make_picture_from_tabs() { myParent->ui->pushButtonImages->setEnabled( false ); counterFile = 0; for ( int i = 0; i < myParent->ui->tabWidgetScreencast->tabBar()->count(); i++ ) { myParent->ui->tabWidgetScreencast->setCurrentIndex( i ); for ( int y = 0; y < 30; y++ ) { QCoreApplication::processEvents(); QThread::msleep( 20 ); } slot_make_picture_from_tab(); } QList listToolButton = myParent->ui->widgetSidbar->findChildren(); for ( int i = 1; i < listToolButton.count(); i++ ) { listToolButton.at(i)->click(); for ( int y = 0; y < 30; y++ ) { QCoreApplication::processEvents(); QThread::msleep( 20 ); } slot_make_picture_from_tab(); } listToolButton.at(0)->click(); if ( QDesktopServices::openUrl( QUrl( "file:///" + QStandardPaths::writableLocation( QStandardPaths::PicturesLocation ), QUrl::TolerantMode ) ) == false ) { QPixmap pixmap( ":/pictures/status/information.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox msgBox; msgBox.setText( tr( "No filemanager found." ) + "\n" + tr( "Please install a filemanager." ) ); msgBox.setWindowTitle( global::name + " " + global::version ); msgBox.setIconPixmap( pixmap ); msgBox.exec(); } myParent->ui->pushButtonImages->setEnabled( true ); } void QvkImageFromTabs::slot_make_picture_from_tab() { QList screenList = QGuiApplication::screens(); int sumScreenWidth = 0; QMap map; for ( int i = 0; i < screenList.count(); i++ ) { sumScreenWidth = sumScreenWidth + screenList.at(i)->size().width(); map.insert( screenList.at(i)->size().height(), QString::number( screenList.at(i)->size().height() ) ); } QPixmap pixmapScreen( screenList.at(0)->grabWindow( 0, 0, 0, sumScreenWidth, map.values().last().toInt() ) ); int left = myParent->windowHandle()->frameMargins().left(); int top = myParent->windowHandle()->frameMargins().top(); int right = myParent->windowHandle()->frameMargins().right(); int bottom = myParent->windowHandle()->frameMargins().bottom(); QPixmap windowPixmap = pixmapScreen.copy( myParent->mapToGlobal( QPoint(0,0) ).x() - left, myParent->mapToGlobal( QPoint(0,0) ).y() - top, myParent->size().width() + left + right, myParent->size().height() + top + bottom ); // Begin rounded corner QPixmap pixmap( windowPixmap.width(), windowPixmap.height() ); pixmap.fill( Qt::transparent ); QPainter painter( &pixmap ); painter.setRenderHint( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); painter.setBrush( Qt::color1 ); QRectF rect( 0, 0, windowPixmap.width(), windowPixmap.height() ); painter.drawRoundedRect( rect, 8, 8, Qt::AbsoluteSize ); painter.end(); QPixmap pixmapImage( windowPixmap.width(), windowPixmap.height() ); pixmapImage.fill( Qt::transparent ); QPainter painter_1( &pixmapImage ); painter_1.setRenderHint( QPainter::Antialiasing, true ); painter_1.setRenderHint( QPainter::SmoothPixmapTransform, true ); painter_1.drawPixmap( 0, 0, windowPixmap ); painter_1.end(); pixmapImage.setMask( pixmap.mask() ); // End rounded corner pixmapImage.save( QStandardPaths::writableLocation( QStandardPaths::PicturesLocation ) + "/" + "vokoscreenNG-" + QString::number( counterFile++ ) + ".png" ); myParent->ui->label_save_image_path->setAlignment( Qt::AlignHCenter ); myParent->ui->label_save_image_path->setText( "Images saved in: " + QStandardPaths::writableLocation( QStandardPaths::PicturesLocation ) ); } vokoscreenNG-3.7.0/src/imageFromTabs/QvkImageFromTabs.h000066400000000000000000000024471444746353100227700ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKIMAGEFROMTABS_H #define QVKIMAGEFROMTABS_H #include "ui_formMainWindow.h" #include #include class QvkImageFromTabs : public QWindow { Q_OBJECT public: QvkImageFromTabs( QvkMainWindow *parent = 0 ); virtual ~QvkImageFromTabs(); public slots: private slots: void slot_make_picture_from_tab(); void slot_make_picture_from_tabs(); signals: protected: private: QvkMainWindow *myParent = Q_NULLPTR; int counterFile; }; #endif vokoscreenNG-3.7.0/src/imageFromTabs/imageFromTabs.pri000066400000000000000000000001761444746353100227060ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkImageFromTabs.h SOURCES += $$PWD/QvkImageFromTabs.cpp vokoscreenNG-3.7.0/src/information/000077500000000000000000000000001444746353100172535ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/information/QvkInformation.cpp000066400000000000000000000174601444746353100227360ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkInformation.h" #include "global.h" #include "QvkShowMessage.h" #include #include #include #include QvkInformation::QvkInformation( QvkMainWindow *vkMainWindow, Ui_formMainWindow *ui_mainwindow, QvkSpezialSlider *slider_count_down, QvkSpezialSlider *slider_Second_Wait_Before_Recording ) { mainWindow = vkMainWindow; ui = ui_mainwindow; sliderCountDown = slider_count_down; sliderSecondWaitBeforeRecording = slider_Second_Wait_Before_Recording; connect( mainWindow, SIGNAL( destroyed( QObject* ) ), this, SLOT( slot_cleanup() ) ); ui->labelVideoSize->setText(""); ui->labelFreeSize->setText(""); ui->labelInfoRecordTime->setText("00:00:00"); // VideoSize and FreeDiskSpace timerStorageInfo = new QTimer(this); timerStorageInfo->setTimerType( Qt::PreciseTimer ); timerStorageInfo->setInterval( 1000 ); connect( timerStorageInfo, SIGNAL( timeout() ), this, SLOT( slot_StorageInfo() ) ); timerStorageInfo->start(); // Recorded time elapsedTime = new QElapsedTimer(); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), this, SLOT( slot_timeFirstStart() ) ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), this, SLOT( slot_summedTimeAfterPause() ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), this, SLOT( slot_timeContinueStart() ) ); timerRecord = new QTimer(this); timerRecord->setTimerType( Qt::PreciseTimer ); timerRecord->setInterval( 1000 ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), timerRecord, SLOT( start() ) ); connect( timerRecord, SIGNAL( timeout() ), this, SLOT( slot_displayRecordTime() ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), timerRecord, SLOT( stop() ) ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), timerRecord, SLOT( stop() ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), timerRecord, SLOT( start() ) ); // Update ui->label_Upate_tab_1->clear(); ui->label_Upate_tab_4->clear(); connect( &version, SIGNAL( signal_newVersionAvailable( QString ) ), this, SLOT( slot_newVersionAvailable( QString ) ) ); connect( ui->checkBoxLookForUpdates, SIGNAL( toggled( bool ) ), &version, SLOT( slot_doDownload( bool ) ) ); // Frames, Format, Codecs connect( ui->comboBoxFormat, SIGNAL( currentTextChanged( QString ) ), this, SLOT( slot_Format( QString ) ) ); connect( ui->comboBoxVideoCodec, SIGNAL( currentTextChanged( QString ) ), this, SLOT( slot_Videocodec( QString ) ) ); connect( ui->comboBoxAudioCodec, SIGNAL( currentTextChanged( QString ) ), this, SLOT( slot_Audiocodec( QString ) ) ); connect( mainWindow->sliderFrames, SIGNAL( valueChanged( int ) ), this, SLOT( slot_Frames( int ) ) ); } QvkInformation::~QvkInformation() { } void QvkInformation::slot_Format( QString value ) { ui->labelInfoFormat->setText( value ); ui->labelInfoFrames->setText( QString::number( mainWindow->sliderFrames->value() ) ); } void QvkInformation::slot_Videocodec( QString value ) { ui->labelInfoVideocodec->setText( value ); } void QvkInformation::slot_Audiocodec( QString value ) { bool bo = false; QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->checkState() == Qt::Checked ) { bo = true; break; } } if ( bo == false ) { ui->labelInfoAudiocodec->setText( "------" ); } else { ui->labelInfoAudiocodec->setText( value ); } } void QvkInformation::slot_Frames( int value ) { ui->labelInfoFrames->setText( QString::number( value ) ); } void QvkInformation::slot_newVersionAvailable( QString update ) { if ( ui->checkBoxLookForUpdates->isChecked() == true ) { if ( global::version < update ) { QString string = "New Version available: " + update; ui->label_Upate_tab_1->setText( "" + string + "" ); ui->label_Upate_tab_4->setText( "" + string + "" ); QvkShowMessage *vkShowMessage = new QvkShowMessage; vkShowMessage->set_WindowIcon( QIcon( ":/pictures/logo/logo.png" ) ); vkShowMessage->set_WindowTitle( global::name + " " + global::version ); vkShowMessage->set_URL( "https://linuxecke.volkoh.de/vokoscreen/vokoscreen.html" ); vkShowMessage->set_StatusIcon( ":/pictures/status/information.png" ); vkShowMessage->showMessage( "New Version available: " + update ); } else { ui->label_Upate_tab_4->setText( "No update available" ); } } else { ui->label_Upate_tab_1->clear(); ui->label_Upate_tab_4->clear(); } } void QvkInformation::slot_cleanup() { timerStorageInfo->stop(); timerRecord->stop(); } void QvkInformation::slot_timeFirstStart() { elapsedTime->restart(); int_summed = 0; ui->labelInfoRecordTime->setText("00:00:00"); } void QvkInformation::slot_summedTimeAfterPause() { int_summed += elapsedTime->elapsed(); } void QvkInformation::slot_timeContinueStart() { elapsedTime->restart(); } void QvkInformation::slot_newVideoFilename( QString filename ) { newVideoFilename = filename; } void QvkInformation::slot_StorageInfo() { QStorageInfo storage = QStorageInfo(ui->lineEditVideoPath->text() ); storage.refresh(); ui->labelFreeSize->setText( QString::number( storage.bytesAvailable()/1024/1024 ) ); QDir dir( ui->lineEditVideoPath->text() ); QStringList filters; filters << newVideoFilename; QStringList videoFileList = dir.entryList( filters, QDir::Files, QDir::Time ); if ( !videoFileList.empty() ) { QString string; string.append( ui->lineEditVideoPath->text() ); string.append( "/" ); string.append( videoFileList.at( 0 ) ); QFileInfo file( string ); file.refresh(); ui->labelVideoSize->setText( QString::number( file.size()/1024 ) ); } } void QvkInformation::slot_displayRecordTime() { if ( ( ui->pushButtonStop->isEnabled() == true ) and ( ui->checkBoxStartTime->checkState() == Qt::Checked ) ) { QTime time( 0, 0, 0, 0 ); ui->labelInfoRecordTime->setText( time.addMSecs( elapsedTime->elapsed() + int_summed ).toString( "hh:mm:ss" ) ); return; } if ( ui->pushButtonStop->isEnabled() == true ) { QTime time( 0, 0, 0, 0 ); ui->labelInfoRecordTime->setText( time.addMSecs( elapsedTime->elapsed() + int_summed - sliderCountDown->value()*1000 - sliderSecondWaitBeforeRecording->value()*1000 ).toString( "hh:mm:ss" ) ); } } vokoscreenNG-3.7.0/src/information/QvkInformation.h000066400000000000000000000041371444746353100224000ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKINFORMATION_H #define QVKINFORMATION_H #include "ui_formMainWindow.h" #include "QvkSpezialSlider.h" #include "QvkVersion.h" #include "mainwindow.h" #include #include class QvkInformation: public QWidget { Q_OBJECT public: QvkInformation(QvkMainWindow *vkMainWindow, Ui_formMainWindow *ui_mainwindow, QvkSpezialSlider *slider_count_down, QvkSpezialSlider *slider_Second_Wait_Before_Recording ); virtual ~QvkInformation(); QvkMainWindow *mainWindow; public slots: private slots: void slot_cleanup(); void slot_StorageInfo(); void slot_newVideoFilename( QString filename ); void slot_displayRecordTime(); void slot_timeFirstStart(); void slot_timeContinueStart(); void slot_summedTimeAfterPause(); void slot_newVersionAvailable( QString update ); void slot_Format( QString value ); void slot_Videocodec( QString value ); void slot_Audiocodec( QString value ); void slot_Frames( int value ); signals: protected: private: Ui_formMainWindow *ui; QString newVideoFilename = ""; QTimer *timerStorageInfo; QTimer *timerRecord; QElapsedTimer *elapsedTime; int int_summed = 0; QvkSpezialSlider *sliderCountDown; QvkSpezialSlider *sliderSecondWaitBeforeRecording; QvkVersion version; QString fileName = ""; }; #endif vokoscreenNG-3.7.0/src/information/information.pri000066400000000000000000000002141444746353100223110ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkInformation.h SOURCES += $$PWD/QvkInformation.cpp vokoscreenNG-3.7.0/src/language/000077500000000000000000000000001444746353100165115ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/language/ar.ts000066400000000000000000000473201444746353100174710ustar00rootroot00000000000000 QvkAudioController Select one or more devices اِختر جهازاً أو أكثر QvkCameraController Camera الكاميرا QvkCameraSingle Remove window frame إزالة إطار النافذة Flip vertical تغيير الوجه الرأسي Flip horizontal تغيير الوجه الأفقي Invert عكس Gray رمادي Black-and-white ابيض واسود Switch to Window أظهر النافذة Switch to Fullscreen تغيير لملء الشاشة QvkCameraWindow Switch to Window أظهر النافذة Switch to Fullscreen تغيير لملء الشاشة Camera الكاميرا QvkCiscoFinishDialog The setup was successful. كان الإعداد ناجحًا. Close this window and start vokoscreenNG again. أغلق هذه النافذة وابدأ تشغيل vokoscreenNG مرة أخرى. Have fun with vokoscreenNG استمتع مع vokoscreenNG QvkDirectSoundController Select one or more devices اِختر جهازاً أو أكثر QvkHelp Help مساعده QvkImageFromTabs No filemanager found. لايمكن ايجاد اداراه الملفات Please install a filemanager. الرجاء تنصيب اداره الملفات QvkLimitDiskFreeSpace Warning تحذير The recording is not started, not enough free disk space. لم يبدأ التسجيل، لاتوجد مساحة حرة كافية على القرص. The free disk space limit is reached. تم الوصول إلى الحد الأقصى لمساحة القرص الحرة. Limit of free disk space مساحه التخزين المتاحه: Megabyte ميغابايت The recording was stopped, not enough free disk space. توقّف التسجيل، لاتوجد مساحة حرة كافية على القرص. QvkMainWindow Fullscreen شاشة كاملة Window نافذة No filemanager found. Display a MessageBox, if not found a filemanager. لايمكن ايجاد اداراه الملفات Please install a filemanager. الرجاء تنصيب اداره الملفات Sourcecode الملف المصدري Homepage صفحة البرنامج Translations الترجمات Donate تبرع QvkPulseAudioWatcher Select one or more devices اِختر جهازاً أو أكثر QvkRegionChoise Area منطقة QvkRegionChoise_wl Area منطقة QvkSnapshot No filemanager found. لايمكن ايجاد اداراه الملفات Please install a filemanager. الرجاء تنصيب اداره الملفات QvkSystray Start اِبدأ Stop أوقِف Pause ألبِث Continue واصل Exit اُخرج Camera الكاميرا Magnification المكبّرة QvkSystrayAlternative Start اِبدأ Stop أوقِف Pause ألبِث Continue واصل Exit اُخرج Camera الكاميرا Magnification المكبّرة QvkWASAPIController Select one or more devices اِختر جهازاً أو أكثر cameraSettingsDialog Dialog الحوار Flip horizontal تغيير الوجه الأفقي Flip vertical تغيير الوجه الرأسي Invert عكس Gray رمادي Black-and-white ابيض واسود Remove window frame إزالة إطار النافذة Camera settings اعدادات الكاميرا formMainWindow Area منطقة Reset أعاده للوضع Magnification المكبّرة Countdown عدّ تنازلي Video size: حجم ملف الفيديو Free disk space: مساحه التخزين المتاحه: Information معلومه Record Time: مده التسجيل Audio الصوت Frames المشاهد Videocodec ترميز الفيديو Format الصيغة Audiocodec ترميز الصوت Quality جوده Do not record mouse cursor لا تسجل مؤشر الفأرة Hour ساعه Minute دقيقه Start the timer بدأ الموقت Stop recording after اوقف التسجيل بعد Hours ساعات Minutes دقائق Seconds ثواني Videopath مسار الفيديو Limit of free disk space مساحه التخزين المتاحه: Show in systray أظهِر البرنامج في مساحة التبليغ Second wait before recording الانتظار الثاني قبل التسجيل Look for updates ابحث عن التحديثات Help مساعده Video قيديو Available المتاح Not available غير متاح Start اِبدأ Stop أوقِف Pause ألبِث Continue واصل Play شغّل Folder دليل Camera الكاميرا Invert عكس Gray رمادي CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record شغل اخر تسجيل Open folder افتح الدليل CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts تصغير البرنامج عند بدأ التسجيل Starts minimized البدء بوضع التصغير Flip horizontal تغيير الوجه الأفقي Flip vertical تغيير الوجه الرأسي Black-and-white ابيض واسود Remove window frame إزالة إطار النافذة Donate تبرع Reset all settings at the next start إعادة ضبط جميع الإعدادات في التشغيل القادم Copyright and license from pictures حقوق الطبع والنشر والترخيص من الصور Megabyte ميغابايت Screencast القاء الشاشة Player المشغّل Log سجل Automatically تلقائيا Create images of tabs إنشاء صور لعلامات التبويب License information معلومات الترخيص ON تشغيل OFF إيقاف Global keyboard shortcuts اختصارات لوحة المفاتيح العامة Assigned shortcut keys. مفاتيح الاختصار المعينة. Keyboard shortcut not assigned or assigned more than once. لم يتم تعيين اختصار لوحة المفاتيح أو تم التعيين أكثر من مرة. If it shows assigned but does not work, it is being used by another program. إذا ظهر أنه تم تعيينه ولكنه لا يعمل ، فهذا يعني أنه قيد الاستخدام من قبل برنامج آخر. Snapshot لقطة Imagepath المسار Hide this window إخفاء النافذة Seconds wait before recording ثواني الانتظار قبل بدء التسجيل license Copyright and license from pictures حقوق الطبع والنشر والترخيص من الصور player Play شغّل Pause ألبِث Stop أوقِف Open File افتح الملف Fullscreen شاشة كاملة Previous frame الإطار السابق Next frame الإطار التالي Mute صامت Move menu حرك قائمه الخيارات vokoscreenNG-3.7.0/src/language/ar_EG.ts000066400000000000000000000440531444746353100200440ustar00rootroot00000000000000 QvkAudioController Select one or more devices Select one or more devices QvkCameraController Camera Camera QvkCameraSingle Remove window frame Remove window frame Flip vertical Flip vertical Flip horizontal Flip horizontal Invert Invert Gray Gray Black-and-white Black-and-white Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen QvkCameraWindow Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen Camera Camera QvkCiscoFinishDialog The setup was successful. The setup was successful. Close this window and start vokoscreenNG again. Close this window and start vokoscreenNG again. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Select one or more devices QvkHelp Help Help QvkImageFromTabs No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkLimitDiskFreeSpace Warning Warning The recording is not started, not enough free disk space. The recording is not started, not enough free disk space. The free disk space limit is reached. The free disk space limit is reached. Limit of free disk space Limit of free disk space Megabyte Megabyte The recording was stopped, not enough free disk space. The recording was stopped, not enough free disk space. QvkMainWindow Fullscreen Fullscreen Window Window No filemanager found. Display a MessageBox, if not found a filemanager. No filemanager found. Please install a filemanager. Please install a filemanager. Sourcecode Sourcecode Homepage Homepage Translations Translations Donate Donate QvkPulseAudioWatcher Select one or more devices Select one or more devices QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkSystray Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkWASAPIController Select one or more devices Select one or more devices cameraSettingsDialog Dialog Dialog Flip horizontal Flip horizontal Flip vertical Flip vertical Invert Invert Gray Gray Black-and-white Black-and-white Remove window frame Remove window frame Camera settings Camera settings formMainWindow Area Area Reset Reset Magnification Magnification Countdown Countdown Video size: Video size: Free disk space: Free disk space: Information Information Record Time: Record Time: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Quality Do not record mouse cursor Do not record mouse cursor Hour Hour Minute Minute Start the timer Start the timer Stop recording after Stop recording after Hours Hours Minutes Minutes Seconds Seconds Videopath Videopath Limit of free disk space Limit of free disk space Show in systray Show in systray Second wait before recording Second wait before recording Look for updates Look for updates Help Help Video Video Available Available Not available Not available Start Start Stop Stop Pause Pause Continue Continue Play Play Folder Folder Camera Camera Invert Invert Gray Gray CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Play last record Open folder Open folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimized when recording starts Starts minimized Starts minimized Flip horizontal Flip horizontal Flip vertical Flip vertical Black-and-white Black-and-white Remove window frame Remove window frame Donate Donate Reset all settings at the next start Reset all settings at the next start Copyright and license from pictures Copyright and license from pictures Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatically Create images of tabs Create images of tabs License information License information ON ON OFF OFF Global keyboard shortcuts Global keyboard shortcuts Assigned shortcut keys. Assigned shortcut keys. Keyboard shortcut not assigned or assigned more than once. Keyboard shortcut not assigned or assigned more than once. If it shows assigned but does not work, it is being used by another program. If it shows assigned but does not work, it is being used by another program. Snapshot Snapshot Imagepath Imagepath Hide this window Hide this window Seconds wait before recording Seconds wait before recording license Copyright and license from pictures Copyright and license from pictures player Play Play Pause Pause Stop Stop Open File Open File Fullscreen Fullscreen Previous frame Previous frame Next frame Next frame Mute Mute Move menu Move menu vokoscreenNG-3.7.0/src/language/ca.ts000066400000000000000000000453121444746353100174510ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccioneu un o més dispositius QvkCameraController Camera Càmera QvkCameraSingle Remove window frame Elimina el marc de la finestra Flip vertical Gir vertical Flip horizontal Gir horizontal Invert Invertida Gray Gris Black-and-white Blanc i negre Switch to Window Alterna a finestra Switch to Fullscreen Alterna a pantalla completa QvkCameraWindow Switch to Window Alterna a finestra Switch to Fullscreen Alterna a pantalla completa Camera Càmera QvkCiscoFinishDialog The setup was successful. La configuració ha estat correcta. Close this window and start vokoscreenNG again. Tanca aquesta finestra i torna a iniciar el vokoscreenNG. Have fun with vokoscreenNG Divertiu-vos amb el vokoscreenNG QvkDirectSoundController Select one or more devices Seleccioneu un o més dispositius QvkHelp Help Ajuda QvkImageFromTabs No filemanager found. No s’ha trobat cap gestor de fitxers. Please install a filemanager. Instal·leu un gestor de fitxers. QvkLimitDiskFreeSpace Warning Avís The recording is not started, not enough free disk space. L'enregistrament no s'ha iniciat, no hi ha prou espai lliure al disc. The free disk space limit is reached. S’ha abastat el límit d’espai lliure al disc. Limit of free disk space Límit d'espai lliure al disc Megabyte Megabyte The recording was stopped, not enough free disk space. L'enregistrament s'ha aturat, no hi ha prou espai lliure al disc. QvkMainWindow Fullscreen Pantalla completa Window Finestra No filemanager found. Display a MessageBox, if not found a filemanager. No s’ha trobat cap gestor de fitxers. Please install a filemanager. Instal·leu un gestor de fitxers. Sourcecode Codi font Homepage Lloc web Translations Traduccions Donate Feu una donació QvkPulseAudioWatcher Select one or more devices Seleccioneu un o més dispositius QvkRegionChoise Area Àrea QvkRegionChoise_wl Area Àrea QvkSnapshot No filemanager found. No s’ha trobat cap gestor de fitxers. Please install a filemanager. Instal·leu un gestor de fitxers. QvkSystray Start Inicia Stop Atura Pause Pausa Continue Continua Exit Surt Camera Càmera Magnification Ampliació QvkSystrayAlternative Start Inicia Stop Atura Pause Pausa Continue Continua Exit Surt Camera Càmera Magnification Ampliació QvkWASAPIController Select one or more devices Seleccioneu un o més dispositius cameraSettingsDialog Dialog Diàleg Flip horizontal Gir horitzontal Flip vertical Gir vertical Invert Invertida Gray Gris Black-and-white Blanc i negre Remove window frame Elimina el marc de la finestra Camera settings Ajustaments de la càmera formMainWindow Area Àrea Reset Reinicia Magnification Ampliació Countdown Compte enrere Video size: Mida del vídeo: Free disk space: Espai lliure al disc: Information Informació Record Time: Temps enregistrat: Audio Àudio Frames Fotogrames Videocodec Còdec del vídeo Format Format Audiocodec Còdec de l'àudio Quality Qualitat Do not record mouse cursor No enregistris el cursor del ratolí Hour Hora Minute Minut Start the timer Inicia el temporitzador Stop recording after Atura l'enregistrament després de Hours Hores Minutes Minuts Seconds Segons Videopath Camí del vídeo Limit of free disk space Límit d'espai lliure al disc Show in systray Mostra a la safata del sistema Second wait before recording Segona espera abans d'enregistrar Look for updates Comprova si hi ha actualitzacions Help Ajuda Video Vídeo Available Disponible Not available No disponible Start Inicia Stop Atura Pause Pausa Continue Continua Play Reprodueix Folder Carpeta Camera Càmera Invert Invertida Gray Gris CTRL+SHIFT+F10 Ctrl+Majús.+F10 CTRL+SHIFT+F11 Ctrl+Majús.+F11 CTRL+SHIFT+F12 Ctrl+Majús.+F12 Play last record Reprodueix el darrer enregistrament Open folder Obre una carpeta CTRL+SHIFT+F8 Ctrl+Majús.+F8 Minimized when recording starts Minimitza en iniciar l'enregistrament Starts minimized Inicia minimitzat Flip horizontal Gir horizontal Flip vertical Gir vertical Black-and-white Blanc i negre Remove window frame Elimina el marc de la finestra Donate Feu una donació Reset all settings at the next start Restableix tots els ajustaments en el proper inici Copyright and license from pictures Drets d'autor i llicència de les imatges Megabyte Megabyte Screencast Emissió de la pantalla Player Reproductor Log Registre Automatically Automàticament Create images of tabs Crea imatges de les pestanyes License information Informació de la llicència ON ACTIU OFF INACTIU Global keyboard shortcuts Dreceres de teclat globals Assigned shortcut keys. Tecles assignades com a drecera. Keyboard shortcut not assigned or assigned more than once. Drecera de teclat sense assignar o assignada més d'una vegada. If it shows assigned but does not work, it is being used by another program. Si es mostra com assignada, però no funciona, es deu a que és emprada per un altre programa. Snapshot Instantània Imagepath Camí de la imatge Hide this window Oculta aquesta finestra Seconds wait before recording Segons d'espera abans de l'enregistrament license Copyright and license from pictures Drets d'autor i llicència de les imatges player Play Reprodueix Pause Pausa Stop Atura Open File Obre un fitxer Fullscreen Pantalla completa Previous frame Fotograma anterior Next frame Fotograma següent Mute Silenci Move menu Mou el menú vokoscreenNG-3.7.0/src/language/ca_ES.ts000066400000000000000000000453101444746353100200360ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccioneu un o més dispositius QvkCameraController Camera Càmera QvkCameraSingle Remove window frame Elimina el marc de la finestra Flip vertical Gir vertical Flip horizontal Gir horitzontal Invert Invertida Gray Gris Black-and-white Blanc i negre Switch to Window Alterna a finestra Switch to Fullscreen Alterna a pantalla completa QvkCameraWindow Switch to Window Alterna a finestra Switch to Fullscreen Alterna a pantalla completa Camera Càmera QvkCiscoFinishDialog The setup was successful. La configuració ha estat correcta. Close this window and start vokoscreenNG again. Tanca aquesta finestra i torna a iniciar el vokoscreenNG. Have fun with vokoscreenNG Divertiu-vos amb el vokoscreenNG QvkDirectSoundController Select one or more devices Seleccioneu un o més dispositius QvkHelp Help Ajuda QvkImageFromTabs No filemanager found. No s’ha trobat cap gestor de fitxers. Please install a filemanager. Instal·leu un gestor de fitxers. QvkLimitDiskFreeSpace Warning Avís The recording is not started, not enough free disk space. L'enregistrament no s'ha iniciat, no hi ha prou espai lliure al disc. The free disk space limit is reached. S’ha abastat el límit d’espai lliure al disc. Limit of free disk space Límit d'espai lliure al disc Megabyte Megabyte The recording was stopped, not enough free disk space. L'enregistrament s'ha aturat, no hi ha prou espai lliure al disc. QvkMainWindow Fullscreen Pantalla completa Window Finestra No filemanager found. Display a MessageBox, if not found a filemanager. No s’ha trobat cap gestor de fitxers. Please install a filemanager. Instal·leu un gestor de fitxers. Sourcecode Codi font Homepage Lloc web Translations Traduccions Donate Feu una donació QvkPulseAudioWatcher Select one or more devices Seleccioneu un o més dispositius QvkRegionChoise Area Àrea QvkRegionChoise_wl Area Àrea QvkSnapshot No filemanager found. No s’ha trobat cap gestor de fitxers. Please install a filemanager. Instal·leu un gestor de fitxers. QvkSystray Start Inicia Stop Atura Pause Pausa Continue Continua Exit Surt Camera Càmera Magnification Ampliació QvkSystrayAlternative Start Inicia Stop Atura Pause Pausa Continue Continua Exit Surt Camera Càmera Magnification Ampliació QvkWASAPIController Select one or more devices Select one or more devices cameraSettingsDialog Dialog Diàleg Flip horizontal Gir horitzontal Flip vertical Gir vertical Invert Invertida Gray Gris Black-and-white Blanc i negre Remove window frame Elimina el marc de la finestra Camera settings Ajustaments de la càmera formMainWindow Area Àrea Reset Reinicia Magnification Ampliació Countdown Compte enrere Video size: Mida del vídeo: Free disk space: Espai lliure al disc: Information Informació Record Time: Temps enregistrat: Audio Àudio Frames Fotogrames Videocodec Còdec del vídeo Format Format Audiocodec Còdec de l'àudio Quality Qualitat Do not record mouse cursor No enregistris el cursor del ratolí Hour Hora Minute Minut Start the timer Inicia el temporitzador Stop recording after Atura l'enregistrament després de Hours Hores Minutes Minuts Seconds Segons Videopath Camí del vídeo Limit of free disk space Límit d'espai lliure al disc Show in systray Mostra a la safata del sistema Second wait before recording Segona espera abans d'enregistrar Look for updates Comprova si hi ha actualitzacions Help Ajuda Video Vídeo Available Disponible Not available No disponible Start Inicia Stop Atura Pause Pausa Continue Continua Play Reprodueix Folder Carpeta Camera Càmera Invert Invertida Gray Gris CTRL+SHIFT+F10 Ctrl+Majús.+F10 CTRL+SHIFT+F11 Ctrl+Majús.+F11 CTRL+SHIFT+F12 Ctrl+Majús.+F12 Play last record Reprodueix el darrer enregistrament Open folder Obre una carpeta CTRL+SHIFT+F8 Ctrl+Majús.+F8 Minimized when recording starts Minimitza en iniciar l'enregistrament Starts minimized Inicia minimitzat Flip horizontal Gir horitzontal Flip vertical Gir vertical Black-and-white Blanc i negre Remove window frame Elimina el marc de la finestra Donate Feu una donació Reset all settings at the next start Restableix tots els ajustaments en el proper inici Copyright and license from pictures Drets d'autor i llicència de les imatges Megabyte Megabyte Screencast Emissió de la pantalla Player Reproductor Log Registre Automatically Automàticament Create images of tabs Crea imatges de les pestanyes License information Informació de la llicència ON ACTIU OFF INACTIU Global keyboard shortcuts Dreceres de teclat globals Assigned shortcut keys. Tecles assignades com a drecera. Keyboard shortcut not assigned or assigned more than once. Drecera de teclat sense assignar o assignada més d'una vegada. If it shows assigned but does not work, it is being used by another program. Si es mostra com assignada, però no funciona, es deu a que és emprada per un altre programa. Snapshot Instantània Imagepath Camí de la imatge Hide this window Oculta aquesta finestra Seconds wait before recording Segons d'espera abans de l'enregistrament license Copyright and license from pictures Drets d'autor i llicència de les imatges player Play Reprodueix Pause Pausa Stop Atura Open File Obre un fitxer Fullscreen Pantalla completa Previous frame Fotograma anterior Next frame Fotograma següent Mute Silenci Move menu Mou el menú vokoscreenNG-3.7.0/src/language/cs_CZ.ts000066400000000000000000000453561444746353100200770ustar00rootroot00000000000000 QvkAudioController Select one or more devices Vyberte jedno nebo více zařízení QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Odstranit rám okna Flip vertical Překlopit svisle Flip horizontal Překlopit vodorovně Invert Invertovat Gray Šedý Black-and-white Černá a bílá Switch to Window Přepnout do okna Switch to Fullscreen Přepnout na celou obrazovku QvkCameraWindow Switch to Window Přepnout do okna Switch to Fullscreen Přepnout na celou obrazovku Camera Kamera QvkCiscoFinishDialog The setup was successful. Nastavení proběhlo úspěšně. Close this window and start vokoscreenNG again. Zavřít toto okno, a spustit vokoscreenNG znovu. Have fun with vokoscreenNG Hezkou zábavu s vokoscreenNG QvkDirectSoundController Select one or more devices Vyberte jedno nebo více zařízení QvkHelp Help Nápověda QvkImageFromTabs No filemanager found. Nebyl nalezen žádný správce souborů. Please install a filemanager. Prosím o instalaci správce souborů. QvkLimitDiskFreeSpace Warning Upozornění The recording is not started, not enough free disk space. Nahrávání nemůže být spuštěno, není dostatek volného místa na disku. The free disk space limit is reached. Je dosaženo limitu volného místa na disku. Limit of free disk space Limit volného místa na disku Megabyte Megabajt The recording was stopped, not enough free disk space. Nahrávání bylo zastaveno, není volné místo na disku. QvkMainWindow Fullscreen Celá obrazovka Window Okno No filemanager found. Display a MessageBox, if not found a filemanager. Nebyl nalezen žádný správce souborů. Please install a filemanager. Prosím o instalaci správce souborů. Sourcecode Zdrojový kód Homepage Domovská stránka Translations Překlad Donate Podpořit QvkPulseAudioWatcher Select one or more devices Vyberte jedno nebo více zařízení QvkRegionChoise Area Výřez QvkRegionChoise_wl Area Výřez QvkSnapshot No filemanager found. Nebyl nalezen žádný správce souborů. Please install a filemanager. Prosím o instalaci správce souborů. QvkSystray Start Start Stop Stop Pause Pauza Continue Pokračovat Exit Odejít Camera Kamera Magnification Zvětšení QvkSystrayAlternative Start Start Stop Stop Pause Pauza Continue Pokračovat Exit Odejít Camera Kamera Magnification Zvětšení QvkWASAPIController Select one or more devices Vyberte jedno nebo více zařízení cameraSettingsDialog Dialog Dialog Flip horizontal Překlopit vodorovně Flip vertical Překlopit svisle Invert Invertovat Gray Šedý Black-and-white Černá a bílá Remove window frame Odstranit rám okna Camera settings Nastavení kamery formMainWindow Area Výřez Reset Obnovit Magnification Zvětšení Countdown Odpočítávání Video size: Velikost videa: Free disk space: Volné místo na disku: Information Informace Record Time: Doba záznamu: Audio Zvuk Frames Snímky Videocodec Videokodek Format Formát Audiocodec Audiokodek Quality Kvalita Do not record mouse cursor Nenahrávat kurzor myši Hour Hodina Minute Minuta Start the timer Spustit časovač Stop recording after Ukončit nahrávání po Hours Hodiny Minutes Minuty Seconds Sekundy Videopath Cesta k videosekvenci Limit of free disk space Limit volného místa na disku Show in systray Zobrazit v systémové části panelu Second wait before recording Druhé čekání před nahráváním Look for updates Vyhledat aktualizace Help Nápověda Video Video Available Dostupný Not available Nedostupný Start Start Stop Stop Pause Pauza Continue Pokračovat Play Přehrát Folder Adresář Camera Kamera Invert Invertovat Gray Šedý CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Přehrát poslední záznam Open folder Otevřít adresář CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimalizovat před začátkem nahrávání Starts minimized Spustit minimalizované Flip horizontal Překlopit vodorovně Flip vertical Překlopit svisle Black-and-white Černá a bílá Remove window frame Odstranit rám okna Donate Podpořit Reset all settings at the next start Obnovit všechna nastavení při následujícím spuštění Copyright and license from pictures Autorská práva a licence k obrázkům Megabyte Megabajt Screencast Nahrávka Player Přehrávač Log Logy Automatically Automaticky Create images of tabs Vytvořit snímky karet License information Informace o licenci ON Zapnuto OFF Vypnuto Global keyboard shortcuts Globální klávesové zkratky Assigned shortcut keys. Přiřazené klávesové zkratky. Keyboard shortcut not assigned or assigned more than once. Nepřiřazená nebo více než jednou přiřazená klávesová zkratka. If it shows assigned but does not work, it is being used by another program. Pokud je zobrazena jako přiřazená, ale nefunguje, používá ji jiný program. Snapshot Momentka Imagepath Složka nahrávek (záznamů) Hide this window Skrýt toto okno Seconds wait before recording Vteřin počkej před nahráváním - The best by me. Vteřin počkat před nahráváním?? Sekund počkej před natáčením?? Sekund počkej před záznamem?? license Copyright and license from pictures Autorská práva a licence k obrázkům player Play Přehrát Pause Pauza Stop Stop Open File Otevřít soubor Fullscreen Celá obrazovka Previous frame Předchozí snímek Next frame Následující snímek Mute Ztlumit Move menu Přesunout nabídku vokoscreenNG-3.7.0/src/language/de.ts000066400000000000000000000446401444746353100174610ustar00rootroot00000000000000 QvkAudioController Select one or more devices Ein oder mehrere Geräte auswählen QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Fensterrahmen entfernen Flip vertical Vertikal spiegeln Flip horizontal Horizontal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-Weiß Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten QvkCameraWindow Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten Camera Kamera QvkCiscoFinishDialog The setup was successful. Das Setup war erfolgreich. Close this window and start vokoscreenNG again. Schließe das Fenster und starte vokoscreenNG erneut. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Ein oder mehrere Geräte auswählen QvkHelp Help Hilfe QvkImageFromTabs No filemanager found. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. QvkLimitDiskFreeSpace Warning Warnung The recording is not started, not enough free disk space. Die Aufnahme wird nicht gestartet, nicht genügend freier Speicherplatz. The free disk space limit is reached. Das Limit für den freien Speicherplatz ist erreicht. Limit of free disk space Grenze für freien Plattenplatz Megabyte Megabyte The recording was stopped, not enough free disk space. Die Aufnahme wurde gestoppt, nicht genügend freier Speicherplatz. QvkMainWindow Fullscreen Vollbild Window Fenster No filemanager found. Display a MessageBox, if not found a filemanager. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. Sourcecode Quellcode Homepage Webseite Translations Übersetzungen Donate Spende QvkPulseAudioWatcher Select one or more devices Ein oder mehrere Geräte auswählen QvkRegionChoise Area Bereich QvkRegionChoise_wl Area Bereich QvkSnapshot No filemanager found. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. QvkSystray Start Start Stop Stop Pause Pause Continue Weiter Exit Beenden Camera Kamera Magnification Lupe QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Weiter Exit Beenden Camera Kamera Magnification Lupe QvkWASAPIController Select one or more devices Ein oder mehrere Geräte auswählen cameraSettingsDialog Dialog Dialog Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-Weiß Remove window frame Fensterrahmen entfernen Camera settings Kameraeinstellungen formMainWindow Area Bereich Reset Zurücksetzen Magnification Lupe Countdown Countdown Video size: Videogröße: Free disk space: Freier Plattenplatz: Information Information Record Time: Aufnahmezeit: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Qualität Do not record mouse cursor Mauszeiger nicht aufnehmen Hour Stunde Minute Minute Start the timer Timer starten Stop recording after Aufnahme stoppen nach Hours Stunden Minutes Minuten Seconds Sekunden Videopath Videopfad Limit of free disk space Grenze für freien Plattenplatz Show in systray Im Benachrichtigungsfeld anzeigen Second wait before recording Sekunden vor der Aufnahme warten Look for updates Nach Aktualisierungen suchen Help Hilfe Video Video Available Verfügbar Not available Nicht verfügbar Start Start Stop Stop Pause Pause Continue Weiter Play Play Folder Ordner Camera Kamera Invert Invertiert Gray Grau CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Letzte Aufnahme abspielen Open folder Ordner öffnen CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimiert beim Start der Aufzeichnung Starts minimized Startet minimiert Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Black-and-white Schwarz-Weiß Remove window frame Fensterrahmen entfernen Donate Spende Reset all settings at the next start Alle Einstellungen beim nächsten Start zurücksetzen Copyright and license from pictures Copyright und Lizenz von Bildern Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatisch Create images of tabs Erstelle Bilder von Tabs License information Lizenz Information ON Ein OFF Aus Global keyboard shortcuts Globale Tastenkombinationen Assigned shortcut keys. Zugewiesene Tastenkombinationen. Keyboard shortcut not assigned or assigned more than once. Tastaturkürzel nicht zugewiesen oder mehrfach zugewiesen. If it shows assigned but does not work, it is being used by another program. Wenn es zugewiesen anzeigt, aber nicht funktioniert, wird es von einem anderen Programm verwendet. Snapshot Snapshot Imagepath Bilderpfad Hide this window Dieses Fenster ausblenden Seconds wait before recording Sekunden warten, bevor die Aufnahme beginnt license Copyright and license from pictures Copyright und Lizenz von Bildern player Play Play Pause Pause Stop Stop Open File Datei öffnen Fullscreen Vollbild Previous frame Vorheriges Bild Next frame Nächstes Bild Mute Stummschaltung Move menu Menü verschieben vokoscreenNG-3.7.0/src/language/de_AT.ts000066400000000000000000000446011444746353100200420ustar00rootroot00000000000000 QvkAudioController Select one or more devices Ein oder mehrere Geräte auswählen QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Entferne Fensterrahmen Flip vertical Vertikal spiegeln Flip horizontal Horizontal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-weiß Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten QvkCameraWindow Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten Camera Kamera QvkCiscoFinishDialog The setup was successful. Das Setup war erfolgreich. Close this window and start vokoscreenNG again. Schließe das Fenster und starte vokoscreenNG erneut. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Ein oder mehrere Geräte auswählen QvkHelp Help Hilfe QvkImageFromTabs No filemanager found. Kein Dateimanager gefunden Please install a filemanager. Bitte installiere einen Dateimanager QvkLimitDiskFreeSpace Warning Warnung The recording is not started, not enough free disk space. Die Aufnahme wird nicht gestartet, nicht genügend freier Speicherplatz. The free disk space limit is reached. Das Limit für den freien Speicherplatz ist erreicht. Limit of free disk space Grenze für freien Plattenplatz Megabyte Megabyte The recording was stopped, not enough free disk space. Die Aufnahme wurde gestoppt, nicht genügend freier Speicherplatz. QvkMainWindow Fullscreen Vollbild Window Fenster No filemanager found. Display a MessageBox, if not found a filemanager. Kein Dateimanager gefunden Please install a filemanager. Bitte installiere einen Dateimanager Sourcecode Quellcode Homepage Webseite Translations Übersetzungen Donate Spende QvkPulseAudioWatcher Select one or more devices Ein oder mehrere Geräte auswählen QvkRegionChoise Area Bereich QvkRegionChoise_wl Area Bereich QvkSnapshot No filemanager found. Kein Dateimanager gefunden Please install a filemanager. Bitte installiere einen Dateimanager QvkSystray Start Start Stop Stop Pause Pause Continue Weiter Exit Verlassen Camera Kamera Magnification Lupe QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Weiter Exit Verlassen Camera Kamera Magnification Lupe QvkWASAPIController Select one or more devices Ein oder mehrere Geräte auswählen cameraSettingsDialog Dialog Dialog Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-weiß Remove window frame Entferne Fensterrahmen Camera settings Kameraeinstellungen formMainWindow Area Bereich Reset Zurücksetzen Magnification Lupe Countdown Countdown Video size: Videogröße: Free disk space: Freier Plattenplatz: Information Information Record Time: Aufnahmezeit Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Qualität Do not record mouse cursor Mauscursor nicht aufnehmen Hour Stunde Minute Minute Start the timer Starte den Timer Stop recording after Stoppe Aufnahme nach Hours Stunden Minutes Minuten Seconds Sekunden Videopath Videopfad Limit of free disk space Grenze für freien Plattenplatz Show in systray Im Systray anzeigen Second wait before recording Sekunden vor der Aufnahme warten Look for updates Nach Aktualisierungen suchen Help Hilfe Video Video Available Verfügbar Not available Nicht verfügbar Start Start Stop Stop Pause Pause Continue Weiter Play Play Folder Ordner Camera Kamera Invert Invertiert Gray Grau CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Letzte Aufnahme abspielen Open folder Ordner öffnen CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimiert beim Start der Aufzeichnung Starts minimized Startet minimiert Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Black-and-white Schwarz-weiß Remove window frame Entferne Fensterrahmen Donate Spende Reset all settings at the next start Alle Einstellungen beim nächsten Start zurücksetzen Copyright and license from pictures Copyright und Lizenz von Bildern Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatisch Create images of tabs Erstelle Bilder von Tabs License information Lizenz Information ON Ein OFF Aus Global keyboard shortcuts Globale Tastenkombinationen Assigned shortcut keys. Zugewiesene Tastenkombinationen. Keyboard shortcut not assigned or assigned more than once. Tastaturkürzel nicht zugewiesen oder mehrfach zugewiesen. If it shows assigned but does not work, it is being used by another program. Wenn es zugewiesen anzeigt, aber nicht funktioniert, wird es von einem anderen Programm verwendet. Snapshot Snapshot Imagepath Bilderpfad Hide this window Dieses Fenster ausblenden Seconds wait before recording Sekunden warten, bevor die Aufnahme beginnt license Copyright and license from pictures Copyright und Lizenz von Bildern player Play Play Pause Pause Stop Stop Open File Öffne Datei Fullscreen Vollbild Previous frame Vorheriges Bild Next frame Nächstes Bild Mute Stummschaltung Move menu Menü verschieben vokoscreenNG-3.7.0/src/language/de_CH.ts000066400000000000000000000446311444746353100200330ustar00rootroot00000000000000 QvkAudioController Select one or more devices Ein oder mehrere Geräte auswählen QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Fensterrahmen entfernen Flip vertical Vertikal spiegeln Flip horizontal Horizontal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-Weiß Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten QvkCameraWindow Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten Camera Kamera QvkCiscoFinishDialog The setup was successful. Das Setup war erfolgreich. Close this window and start vokoscreenNG again. Schließe das Fenster und starte vokoscreenNG erneut. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Ein oder mehrere Geräte auswählen QvkHelp Help Hilfe QvkImageFromTabs No filemanager found. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. QvkLimitDiskFreeSpace Warning Warnung The recording is not started, not enough free disk space. Die Aufnahme wird nicht gestartet, nicht genügend freier Speicherplatz. The free disk space limit is reached. Das Limit für den freien Speicherplatz ist erreicht. Limit of free disk space Grenze für freien Plattenplatz Megabyte Megabyte The recording was stopped, not enough free disk space. Die Aufnahme wurde gestoppt, nicht genügend freier Speicherplatz. QvkMainWindow Fullscreen Vollbild Window Fenster No filemanager found. Display a MessageBox, if not found a filemanager. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. Sourcecode Quellcode Homepage Webseite Translations Übersetzungen Donate Spende QvkPulseAudioWatcher Select one or more devices Ein oder mehrere Geräte auswählen QvkRegionChoise Area Bereich QvkRegionChoise_wl Area Bereich QvkSnapshot No filemanager found. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. QvkSystray Start Start Stop Stop Pause Pause Continue Weiter Exit Verlassen Camera Kamera Magnification Lupe QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Weiter Exit Verlassen Camera Kamera Magnification Lupe QvkWASAPIController Select one or more devices Ein oder mehrere Geräte auswählen cameraSettingsDialog Dialog Dialog Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-Weiß Remove window frame Fensterrahmen entfernen Camera settings Kameraeinstellungen formMainWindow Area Bereich Reset Zurücksetzen Magnification Lupe Countdown Countdown Video size: Videogröße: Free disk space: Freier Plattenplatz: Information Information Record Time: Aufnahmezeit: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Qualität Do not record mouse cursor Mauszeiger nicht aufnehmen Hour Stunde Minute Minute Start the timer Timer starten Stop recording after Aufnahme stoppen nach Hours Stunden Minutes Minuten Seconds Sekunden Videopath Videopfad Limit of free disk space Grenze für freien Plattenplatz Show in systray Im Systray anzeigen Second wait before recording Sekunden vor der Aufnahme warten Look for updates Nach Aktualisierungen suchen Help Hilfe Video Video Available Verfügbar Not available Nicht verfügbar Start Start Stop Stop Pause Pause Continue Weiter Play Play Folder Ordner Camera Kamera Invert Invertiert Gray Grau CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Letzte Aufnahme abspielen Open folder Ordner öffnen CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimiert beim Start der Aufzeichnung Starts minimized Startet minimiert Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Black-and-white Schwarz-Weiß Remove window frame Fensterrahmen entfernen Donate Spende Reset all settings at the next start Alle Einstellungen beim nächsten Start zurücksetzen Copyright and license from pictures Copyright und Lizenz von Bildern Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatisch Create images of tabs Erstelle Bilder von Tabs License information Lizenz Information ON Ein OFF Aus Global keyboard shortcuts Globale Tastenkombinationen Assigned shortcut keys. Zugewiesene Tastenkombinationen. Keyboard shortcut not assigned or assigned more than once. Tastaturkürzel nicht zugewiesen oder mehrfach zugewiesen. If it shows assigned but does not work, it is being used by another program. Wenn es zugewiesen anzeigt, aber nicht funktioniert, wird es von einem anderen Programm verwendet. Snapshot Snapshot Imagepath Bilderpfad Hide this window Dieses Fenster ausblenden Seconds wait before recording Sekunden warten, bevor die Aufnahme beginnt license Copyright and license from pictures Copyright und Lizenz von Bildern player Play Play Pause Pause Stop Stop Open File Datei öffnen Fullscreen Vollbild Previous frame Vorheriges Bild Next frame Nächstes Bild Mute Stummschaltung Move menu Menü verschieben vokoscreenNG-3.7.0/src/language/de_DE.ts000066400000000000000000000447021444746353100200300ustar00rootroot00000000000000 QvkAudioController Select one or more devices Ein oder mehrere Geräte auswählen QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Fensterrahmen entfernen Flip vertical Vertikal spiegeln Flip horizontal Horizontal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-Weiß Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten QvkCameraWindow Switch to Window Auf Fenster umschalten Switch to Fullscreen Auf Vollbild umschalten Camera Kamera QvkCiscoFinishDialog The setup was successful. Das Setup war erfolgreich. Close this window and start vokoscreenNG again. Schließe das Fenster und starte vokoscreenNG erneut. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Ein oder mehrere Geräte auswählen QvkHelp Help Hilfe QvkImageFromTabs No filemanager found. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. QvkLimitDiskFreeSpace Warning Warnung The recording is not started, not enough free disk space. Die Aufnahme wird nicht gestartet, nicht genügend freier Speicherplatz. The free disk space limit is reached. Das Limit für den freien Speicherplatz ist erreicht. Limit of free disk space Grenze für freien Plattenplatz Megabyte Megabyte The recording was stopped, not enough free disk space. Die Aufnahme wurde gestoppt, nicht genügend freier Speicherplatz. QvkMainWindow Fullscreen Vollbild Window Fenster No filemanager found. Display a MessageBox, if not found a filemanager. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. Sourcecode Quellcode Homepage Webseite Translations Übersetzungen Donate Spenden QvkPulseAudioWatcher Select one or more devices Ein oder mehrere Geräte auswählen QvkRegionChoise Area Bereich QvkRegionChoise_wl Area Bereich QvkSnapshot No filemanager found. Kein Dateimanager gefunden. Please install a filemanager. Bitte installieren Sie einen Dateimanager. QvkSystray Start Start Stop Stop Pause Pause Continue Weiter Exit Beenden Camera Kamera Magnification Lupe QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Weiter Exit Beenden Camera Kamera Magnification Lupe QvkWASAPIController Select one or more devices Ein oder mehrere Geräte auswählen cameraSettingsDialog Dialog Dialog Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Invert Invertiert Gray Grau Black-and-white Schwarz-Weiß Remove window frame Fensterrahmen entfernen Camera settings Kameraeinstellungen formMainWindow Area Bereich Reset Zurücksetzen Magnification Lupe Countdown Countdown Video size: Videogröße: Free disk space: Freier Plattenplatz: Information Information Record Time: Aufnahmezeit: Audio Audio Frames Bilder Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Qualität Do not record mouse cursor Mauszeiger nicht aufnehmen Hour Stunde Minute Minute Start the timer Timer starten Stop recording after Aufnahme stoppen nach Hours Stunden Minutes Minuten Seconds Sekunden Videopath Videopfad Limit of free disk space Grenze für freien Plattenplatz Show in systray Im Benachrichtigungsfeld anzeigen Second wait before recording Sekunden vor der Aufnahme warten Look for updates Nach Aktualisierungen suchen Help Hilfe Video Video Available Verfügbar Not available Nicht verfügbar Start Start Stop Stop Pause Pause Continue Weiter Play Play Folder Ordner Camera Kamera Invert Invertiert Gray Grau CTRL+SHIFT+F10 STRG+UMSCHALT+F10 CTRL+SHIFT+F11 STRG+UMSCHALT+F11 CTRL+SHIFT+F12 STRG+UMSCHALT+F12 Play last record Letzte Aufnahme abspielen Open folder Ordner öffnen CTRL+SHIFT+F8 STRG+UMSCHALT+F8 Minimized when recording starts Minimiert beim Start der Aufzeichnung Starts minimized Startet minimiert Flip horizontal Horizontal spiegeln Flip vertical Vertikal spiegeln Black-and-white Schwarzweiß Remove window frame Fensterrahmen entfernen Donate Spenden Reset all settings at the next start Alle Einstellungen beim nächsten Start zurücksetzen Copyright and license from pictures Copyright und Lizenz von Bildern Megabyte Megabyte Screencast Bildschirmmitschnitt Player Player Log Protokoll Automatically Automatisch Create images of tabs Erstelle Bilder von Tabs License information Lizenz Information ON Ein OFF Aus Global keyboard shortcuts Globale Tastenkombinationen Assigned shortcut keys. Zugewiesene Tastenkombinationen. Keyboard shortcut not assigned or assigned more than once. Tastaturkürzel nicht zugewiesen oder mehrfach zugewiesen. If it shows assigned but does not work, it is being used by another program. Wenn es zugewiesen anzeigt, aber nicht funktioniert, wird es von einem anderen Programm verwendet. Snapshot Snapshot Imagepath Bilderpfad Hide this window Dieses Fenster ausblenden Seconds wait before recording Sekunden warten, bevor die Aufnahme beginnt. license Copyright and license from pictures Copyright und Lizenz von Bildern player Play Play Pause Pause Stop Stop Open File Datei öffnen Fullscreen Vollbild Previous frame Vorheriges Bild Next frame Nächstes Bild Mute Stummschaltung Move menu Menü verschieben vokoscreenNG-3.7.0/src/language/el_GR.ts000066400000000000000000000520511444746353100200540ustar00rootroot00000000000000 QvkAudioController Select one or more devices Επιλογή μιας ή περισσότερων συσκευών QvkCameraController Camera Κάμερα QvkCameraSingle Remove window frame Αφαίρεσε το πλαίσιο παραθύρου Flip vertical Κάθετη περιστροφή Flip horizontal Οριζόντια περιστροφή Invert Αντιστροφή Gray Γκρι Black-and-white Ασπρόμαυρη Switch to Window Εναλλαγή σε Παράθυρο Switch to Fullscreen Εναλλαγή σε Πλήρη οθόνη QvkCameraWindow Switch to Window Εναλλαγή σε Παράθυρο Switch to Fullscreen Εναλλαγή σε Πλήρη οθόνη Camera Κάμερα QvkCiscoFinishDialog The setup was successful. Η εγκατάσταση ήταν επιτυχημένη Close this window and start vokoscreenNG again. Κλείστε αυτό το παράθυρο και ξεκινήστε το vokoscreenNG ξανά. Have fun with vokoscreenNG Διασκεδάστε με το vokoscreenNG QvkDirectSoundController Select one or more devices Επιλογή μιας ή περισσότερων συσκευών QvkHelp Help Βοήθεια QvkImageFromTabs No filemanager found. Δε βρέθηκε διαχειριστής αρχείων. Please install a filemanager. Παρακαλώ εγκαταστήστε ένα διαχειριστή αρχείων. QvkLimitDiskFreeSpace Warning Προειδοποίηση The recording is not started, not enough free disk space. Η εγγραφή δε ξεκίνησε, μη επαρκής ελεύθερος χώρος στο δίσκο. The free disk space limit is reached. Φτάσατε το όριο ελεύθερου χώρου στο δίσκο. Limit of free disk space Όριο ελεύθερου χώρου στο δίσκο. Megabyte Megabyte The recording was stopped, not enough free disk space. Η εγγραφή σταμάτησε, μη επαρκής ελεύθερος χώρος στο δίσκο. QvkMainWindow Fullscreen Πλήρης οθόνη Window Παράθυρο No filemanager found. Display a MessageBox, if not found a filemanager. Δε βρέθηκε διαχειριστής αρχείων. Please install a filemanager. Παρακαλώ εγκαταστήστε ένα διαχειριστή αρχείων. Sourcecode Πηγαίος κώδικας Homepage Αρχική Translations Μεταφράσεις Donate Δωρεά QvkPulseAudioWatcher Select one or more devices Επιλογή μιας ή περισσότερων συσκευών QvkRegionChoise Area Περιοχή QvkRegionChoise_wl Area Περιοχή QvkSnapshot No filemanager found. Δε βρέθηκε διαχειριστής αρχείων. Please install a filemanager. Παρακαλώ εγκαταστήστε ένα διαχειριστή αρχείων. QvkSystray Start Έναρξη Stop Διακοπή Pause Παύση Continue Συνέχιση Exit Έξοδος Camera Κάμερα Magnification Μεγένθυση QvkSystrayAlternative Start Έναρξη Stop Διακοπή Pause Παύση Continue Συνέχιση Exit Έξοδος Camera Κάμερα Magnification Μεγένθυση QvkWASAPIController Select one or more devices Επιλογή μιας ή περισσότερων συσκευών cameraSettingsDialog Dialog Διάλογος Flip horizontal Οριζόντια περιστροφή Flip vertical Κάθετη περιστροφή Invert Αντιστροφή Gray Γκρι Black-and-white Ασπρόμαυρη Remove window frame Αφαίρεσε το πλαίσιο παραθύρου Camera settings Ρυθμίσεις Κάμερας formMainWindow Area Περιοχή Reset Επαναφορά Magnification Μεγένθυση Countdown Αντίστροφη μέτρηση Video size: Μέγεθος βίντεο: Free disk space: Ελεύθερος χώρος στο δίσκο: Information Πληροφορίες Record Time: Χρόνος Εγγραφής: Audio 'Ηχος Frames Στιγμιότυπα Videocodec Κωδικοποιητής βίντεο Format Τύπος αρχείου Audiocodec Κωδικοποιητής ήχου Quality Ποιότητα Do not record mouse cursor Μην καταγράφεις τον κέρσορα Hour Ώρα Minute Λεπτό Start the timer Ενεργοποίηση του χρονοδιακόπτη Stop recording after Διακοπή εγγραφής μετά από Hours Ώρες Minutes Λεπτά Seconds Δευτερόλεπτα Videopath Τοποθεσία αρχείου Limit of free disk space Όριο ελεύθερου χώρου στο δίσκο. Show in systray Εμφάνιση στην περιοχή ειδοποιήσεων Second wait before recording Δευτερόλεπτα αναμονής πριν την εγγραφή Look for updates Έλεγχος για ενημερώσεις Help Βοήθεια Video Βίντεο Available Διαθέσιμο Not available Μη διαθέσιμο Start Έναρξη Stop Διακοπή Pause Παύση Continue Συνέχιση Play Αναπαραγωγή Folder Φάκελος Camera Κάμερα Invert Αντιστροφή Gray Γκρι CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Αναπαραγωγή τελευταίας εγγραφής Open folder Άνοιγμα φακέλου CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Ελαχιστοποίηση όταν ξεκινά η εγγραφή Starts minimized Εκκίνηση σε ελαχιστοποίηση Flip horizontal Οριζόντια περιστροφή Flip vertical Κάθετη περιστροφή Black-and-white Ασπρόμαυρη Remove window frame Αφαίρεσε το πλαίσιο παραθύρου Donate Δωρεά Reset all settings at the next start Επαναφορά όλων των ρυθμίσεων στην επόμενη εκκίνηση Copyright and license from pictures Πνευματικά δικαιώματα και άδεια από τις φωτογραφίες Megabyte Μεγαμπάιτ Screencast Αναμετάδοση οθόνης Player Αναπαραγωγή με Log Αρχείο καταγραφής Automatically αυτόματα Create images of tabs Δημιουργία εικόνων των καρτελών License information Πληροφορίες για την άδεια χρήσης ON ΟΝ OFF ΟFF Global keyboard shortcuts Συντομεύσεις πληκτρολογίου Assigned shortcut keys. Πλήκτρα με αντιστοίχιση Keyboard shortcut not assigned or assigned more than once. Δεν υπάρχει καμμία αντιστοίχηση πληκτρολογίου ή υπάρχουν περισσότερες από μία If it shows assigned but does not work, it is being used by another program. Αν έχει ένδειξη αντιστοίχισης αλλά δεν λειτουργεί, τότε χρησιμοποιείται από κάποιο άλλο πρόγραμμα. Snapshot Στιγμιότυπο Imagepath Διαδρομή αποθήκευσης εικόνων Hide this window Κρύψιμο αυτού του παραθύρου Seconds wait before recording Δευτερόλεπτα αναμονής πριν την έναρξη της εγγραφής license Copyright and license from pictures Πνευματικά δικαιώματα και άδεια από τις φωτογραφίες player Play Αναπαραγωγή Pause Παύση Stop Διακοπή Open File Άνοιγμα αρχείου Fullscreen Πλήρης οθόνη Previous frame Προηγούμενο στιγμιότυπο Next frame Επόμενο στιγμιότυπο Mute Σίγαση Move menu Μετακίνησε το μενού vokoscreenNG-3.7.0/src/language/en_CA.ts000066400000000000000000000440531444746353100200340ustar00rootroot00000000000000 QvkAudioController Select one or more devices Select one or more devices QvkCameraController Camera Camera QvkCameraSingle Remove window frame Remove window frame Flip vertical Flip vertical Flip horizontal Flip horizontal Invert Invert Gray Grey Black-and-white Black-and-white Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen QvkCameraWindow Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen Camera Camera QvkCiscoFinishDialog The setup was successful. The setup was successful. Close this window and start vokoscreenNG again. Close this window and start vokoscreenNG again. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Select one or more devices QvkHelp Help Help QvkImageFromTabs No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkLimitDiskFreeSpace Warning Warning The recording is not started, not enough free disk space. The recording is not started, not enough free disk space. The free disk space limit is reached. The free disk space limit is reached. Limit of free disk space Limit of free disk space Megabyte Megabyte The recording was stopped, not enough free disk space. The recording was stopped, not enough free disk space. QvkMainWindow Fullscreen Fullscreen Window Window No filemanager found. Display a MessageBox, if not found a filemanager. No filemanager found. Please install a filemanager. Please install a filemanager. Sourcecode Sourcecode Homepage Homepage Translations Translations Donate Donate QvkPulseAudioWatcher Select one or more devices Select one or more devices QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkSystray Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkWASAPIController Select one or more devices Select one or more devices cameraSettingsDialog Dialog Dialog Flip horizontal Flip horizontal Flip vertical Flip vertical Invert Invert Gray Grey Black-and-white Black-and-white Remove window frame Remove window frame Camera settings Camera settings formMainWindow Area Area Reset Reset Magnification Magnification Countdown Countdown Video size: Video size: Free disk space: Free disk space: Information Information Record Time: Record Time: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Quality Do not record mouse cursor Do not record mouse cursor Hour Hour Minute Minute Start the timer Start the timer Stop recording after Stop recording after Hours Hours Minutes Minutes Seconds Seconds Videopath Videopath Limit of free disk space Limit of free disk space Show in systray Show in systray Second wait before recording Second wait before recording Look for updates Look for updates Help Help Video Video Available Available Not available Not available Start Start Stop Stop Pause Pause Continue Continue Play Play Folder Folder Camera Camera Invert Invert Gray Grey CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Play last record Open folder Open folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimized when recording starts Starts minimized Starts minimized Flip horizontal Flip horizontal Flip vertical Flip vertical Black-and-white Black-and-white Remove window frame Remove window frame Donate Donate Reset all settings at the next start Reset all settings at the next start Copyright and license from pictures Copyright and license from pictures Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatically Create images of tabs Create images of tabs License information License information ON ON OFF OFF Global keyboard shortcuts Global keyboard shortcuts Assigned shortcut keys. Assigned shortcut keys. Keyboard shortcut not assigned or assigned more than once. Keyboard shortcut not assigned or assigned more than once. If it shows assigned but does not work, it is being used by another program. If it shows assigned but does not work, it is being used by another program. Snapshot Snapshot Imagepath Imagepath Hide this window Hide this window Seconds wait before recording Seconds wait before recording license Copyright and license from pictures Copyright and license from pictures player Play Play Pause Pause Stop Stop Open File Open File Fullscreen Fullscreen Previous frame Previous frame Next frame Next frame Mute Mute Move menu Move menu vokoscreenNG-3.7.0/src/language/en_GB.ts000066400000000000000000000440601444746353100200370ustar00rootroot00000000000000 QvkAudioController Select one or more devices Select one or more devices QvkCameraController Camera Camera QvkCameraSingle Remove window frame Remove window frame Flip vertical Flip vertical Flip horizontal Flip horizontal Invert Invert Gray Grey Black-and-white Black-and-white Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen QvkCameraWindow Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen Camera Camera QvkCiscoFinishDialog The setup was successful. The setup was successful. Close this window and start vokoscreenNG again. Close this window and start vokoscreenNG again. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Select one or more devices QvkHelp Help Help QvkImageFromTabs No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkLimitDiskFreeSpace Warning Warning The recording is not started, not enough free disk space. The recording is not started, not enough free disk space. The free disk space limit is reached. The free disk space limit is reached. Limit of free disk space Limit of free disk space Megabyte Megabyte The recording was stopped, not enough free disk space. The recording was stopped, not enough free disk space. QvkMainWindow Fullscreen Fullscreen Window Window No filemanager found. Display a MessageBox, if not found a filemanager. No filemanager found. Please install a filemanager. Please install a filemanager. Sourcecode Sourcecode Homepage Homepage Translations Translations Donate Donate QvkPulseAudioWatcher Select one or more devices Select one or more devices QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkSystray Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkWASAPIController Select one or more devices Select one or more devices cameraSettingsDialog Dialog Dialogue Flip horizontal Flip horizontal Flip vertical Flip vertical Invert Invert Gray Grey Black-and-white Black-and-white Remove window frame Remove window frame Camera settings Camera settings formMainWindow Area Area Reset Reset Magnification Magnification Countdown Countdown Video size: Video size: Free disk space: Free disk space: Information Information Record Time: Record Time: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Quality Do not record mouse cursor Do not record mouse cursor Hour Hour Minute Minute Start the timer Start the timer Stop recording after Stop recording after Hours Hours Minutes Minutes Seconds Seconds Videopath Videopath Limit of free disk space Limit of free disk space Show in systray Show in systray Second wait before recording Second wait before recording Look for updates Look for updates Help Help Video Video Available Available Not available Not available Start Start Stop Stop Pause Pause Continue Continue Play Play Folder Folder Camera Camera Invert Invert Gray Grey CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Play last recording Open folder Open folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimized when recording starts Starts minimized Starts minimized Flip horizontal Flip horizontal Flip vertical Flip vertical Black-and-white Black-and-white Remove window frame Remove window frame Donate Donate Reset all settings at the next start Reset all settings at the next start Copyright and license from pictures Copyright and license from pictures Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatically Create images of tabs Create images of tabs License information License information ON ON OFF OFF Global keyboard shortcuts Global keyboard shortcuts Assigned shortcut keys. Assigned shortcut keys. Keyboard shortcut not assigned or assigned more than once. Keyboard shortcut not assigned or assigned more than once. If it shows assigned but does not work, it is being used by another program. If it shows assigned but does not work, it is being used by another program. Snapshot Snapshot Imagepath Imagepath Hide this window Hide this window Seconds wait before recording Seconds wait before recording license Copyright and license from pictures Copyright and license from pictures player Play Play Pause Pause Stop Stop Open File Open File Fullscreen Fullscreen Previous frame Previous frame Next frame Next frame Mute Mute Move menu Move menu vokoscreenNG-3.7.0/src/language/en_IN.ts000066400000000000000000000440531444746353100200570ustar00rootroot00000000000000 QvkAudioController Select one or more devices Select one or more devices QvkCameraController Camera Camera QvkCameraSingle Remove window frame Remove window frame Flip vertical Flip vertical Flip horizontal Flip horizontal Invert Invert Gray Gray Black-and-white Black-and-white Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen QvkCameraWindow Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen Camera Camera QvkCiscoFinishDialog The setup was successful. The setup was successful. Close this window and start vokoscreenNG again. Close this window and start vokoscreenNG again. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Select one or more devices QvkHelp Help Help QvkImageFromTabs No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkLimitDiskFreeSpace Warning Warning The recording is not started, not enough free disk space. The recording is not started, not enough free disk space. The free disk space limit is reached. The free disk space limit is reached. Limit of free disk space Limit of free disk space Megabyte Megabyte The recording was stopped, not enough free disk space. The recording was stopped, not enough free disk space. QvkMainWindow Fullscreen Fullscreen Window Window No filemanager found. Display a MessageBox, if not found a filemanager. No filemanager found. Please install a filemanager. Please install a filemanager. Sourcecode Sourcecode Homepage Homepage Translations Translations Donate Donate QvkPulseAudioWatcher Select one or more devices Select one or more devices QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkSystray Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkWASAPIController Select one or more devices Select one or more devices cameraSettingsDialog Dialog Dialog Flip horizontal Flip horizontal Flip vertical Flip vertical Invert Invert Gray Gray Black-and-white Black-and-white Remove window frame Remove window frame Camera settings Camera settings formMainWindow Area Area Reset Reset Magnification Magnification Countdown Countdown Video size: Video size: Free disk space: Free disk space: Information Information Record Time: Record Time: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Quality Do not record mouse cursor Do not record mouse cursor Hour Hour Minute Minute Start the timer Start the timer Stop recording after Stop recording after Hours Hours Minutes Minutes Seconds Seconds Videopath Videopath Limit of free disk space Limit of free disk space Show in systray Show in systray Second wait before recording Second wait before recording Look for updates Look for updates Help Help Video Video Available Available Not available Not available Start Start Stop Stop Pause Pause Continue Continue Play Play Folder Folder Camera Camera Invert Invert Gray Gray CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Play last record Open folder Open folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimized when recording starts Starts minimized Starts minimized Flip horizontal Flip horizontal Flip vertical Flip vertical Black-and-white Black-and-white Remove window frame Remove window frame Donate Donate Reset all settings at the next start Reset all settings at the next start Copyright and license from pictures Copyright and license from pictures Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatically Create images of tabs Create images of tabs License information License information ON ON OFF OFF Global keyboard shortcuts Global keyboard shortcuts Assigned shortcut keys. Assigned shortcut keys. Keyboard shortcut not assigned or assigned more than once. Keyboard shortcut not assigned or assigned more than once. If it shows assigned but does not work, it is being used by another program. If it shows assigned but does not work, it is being used by another program. Snapshot Snapshot Imagepath Imagepath Hide this window Hide this window Seconds wait before recording Seconds wait before recording license Copyright and license from pictures Copyright and license from pictures player Play Play Pause Pause Stop Stop Open File Open File Fullscreen Fullscreen Previous frame Previous frame Next frame Next frame Mute Mute Move menu Move menu vokoscreenNG-3.7.0/src/language/en_US.ts000066400000000000000000000440621444746353100201000ustar00rootroot00000000000000 QvkAudioController Select one or more devices Select one or more devices QvkCameraController Camera Camera QvkCameraSingle Remove window frame Remove window frame Flip vertical Flip vertical Flip horizontal Flip horizontal Invert Invert Gray Gray Black-and-white Black-and-white Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen QvkCameraWindow Switch to Window Switch to Window Switch to Fullscreen Switch to Fullscreen Camera Camera QvkCiscoFinishDialog The setup was successful. The setup was successful. Close this window and start vokoscreenNG again. Close this window and start vokoscreenNG again. Have fun with vokoscreenNG Have fun with vokoscreenNG QvkDirectSoundController Select one or more devices Select one or more devices QvkHelp Help Help QvkImageFromTabs No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkLimitDiskFreeSpace Warning Warning The recording is not started, not enough free disk space. The recording is not started, not enough free disk space. The free disk space limit is reached. The free disk space limit is reached. Limit of free disk space Limit of free disk space Megabyte Megabyte The recording was stopped, not enough free disk space. The recording was stopped, not enough free disk space. QvkMainWindow Fullscreen Fullscreen Window Window No filemanager found. Display a MessageBox, if not found a filemanager. No filemanager found. Please install a filemanager. Please install a filemanager. Sourcecode Sourcecode Homepage Homepage Translations Translations Donate Donate QvkPulseAudioWatcher Select one or more devices Select one or more devices QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. No filemanager found. Please install a filemanager. Please install a filemanager. QvkSystray Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkSystrayAlternative Start Start Stop Stop Pause Pause Continue Continue Exit Exit Camera Camera Magnification Magnification QvkWASAPIController Select one or more devices Select one or more devices cameraSettingsDialog Dialog Dialog Flip horizontal Flip horizontal Flip vertical Flip vertical Invert Invert Gray Gray Black-and-white Black-and-white Remove window frame Remove window frame Camera settings Camera settings formMainWindow Area Area Reset Reset Magnification Magnification Countdown Countdown Video size: Video size: Free disk space: Free disk space: Information Information Record Time: Record Time: Audio Audio Frames Frames Videocodec Videocodec Format Format Audiocodec Audiocodec Quality Quality Do not record mouse cursor Do not record mouse cursor Hour Hour Minute Minute Start the timer Start the timer Stop recording after Stop recording after Hours Hours Minutes Minutes Seconds Seconds Videopath Videopath Limit of free disk space Limit of free disk space Show in systray Show in systray Second wait before recording Seconds to wait before recording Look for updates Check for updates Help Help Video Video Available Available Not available Not available Start Start Stop Stop Pause Pause Continue Continue Play Play Folder Folder Camera Camera Invert Invert Gray Gray CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Play last recording Open folder Open folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimize when recording starts Starts minimized Start minimized Flip horizontal Flip horizontal Flip vertical Flip vertical Black-and-white Black-and-white Remove window frame Remove window frame Donate Donate Reset all settings at the next start Reset all settings at the next start Copyright and license from pictures Copyrights and licenses for images Megabyte Megabyte Screencast Screencast Player Player Log Log Automatically Automatically Create images of tabs Create images of tabs License information License information ON ON OFF OFF Global keyboard shortcuts Global keyboard shortcuts Assigned shortcut keys. Assigned shortcut keys. Keyboard shortcut not assigned or assigned more than once. Keyboard shortcut not assigned or assigned more than once. If it shows assigned but does not work, it is being used by another program. If it shows assigned but does not work, it is being used by another program. Snapshot Snapshot Imagepath Imagepath Hide this window Hide this window Seconds wait before recording Seconds to wait before recording license Copyright and license from pictures Copyrights and licenses for images player Play Play Pause Pause Stop Stop Open File Open File Fullscreen Fullscreen Previous frame Previous frame Next frame Next frame Mute Mute Move menu Move menu vokoscreenNG-3.7.0/src/language/es.ts000066400000000000000000000452031444746353100174740ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccione uno o más dispositivos QvkCameraController Camera Cámara QvkCameraSingle Remove window frame Quitar marco de ventana Flip vertical Voltear verticalmente Flip horizontal Voltear horizontalmente Invert Invertir Gray Gris Black-and-white Blanco y negro Switch to Window Cambiar a ventana Switch to Fullscreen Ir a pantalla completa QvkCameraWindow Switch to Window Cambiar a ventana Switch to Fullscreen Ir a pantalla completa Camera Cámara QvkCiscoFinishDialog The setup was successful. Configuración finalizada correctamente Close this window and start vokoscreenNG again. Cierre la ventana e inicie vokoscreenNG de nuevo Have fun with vokoscreenNG Difrute con vokoscreenNG QvkDirectSoundController Select one or more devices Seleccione uno o más dispositivos QvkHelp Help Ayuda QvkImageFromTabs No filemanager found. No se encontró ningún gestor de archivos. Please install a filemanager. Instale un gestor de archivos. QvkLimitDiskFreeSpace Warning Atención The recording is not started, not enough free disk space. No se pudo empezar a grabar, no hay suficiente espacio libre en el disco. The free disk space limit is reached. No queda espacio libre en disco Limit of free disk space Límite de espacio libre en disco   Megabyte Megabyte The recording was stopped, not enough free disk space. Paró la grabación, no queda espacio en disco QvkMainWindow Fullscreen Pantalla completa Window Ventana No filemanager found. Display a MessageBox, if not found a filemanager. No se encontró ningún gestor de archivos. Please install a filemanager. Instale un gestor de archivos. Sourcecode Código fuente Homepage Sitio web Translations Traducciones Donate Donar QvkPulseAudioWatcher Select one or more devices Seleccione uno o más dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. No se encontró ningún gestor de archivos. Please install a filemanager. Instale un gestor de archivos. QvkSystray Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkSystrayAlternative Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkWASAPIController Select one or more devices Seleccione uno o más dispositivos cameraSettingsDialog Dialog Cuadro de diálogo Flip horizontal Voltear horizontalmente Flip vertical Voltear verticalmente Invert Invertir Gray Gris Black-and-white Blanco y negro Remove window frame Quitar marco de ventana Camera settings Configuración de cámara formMainWindow Area Área Reset Restablecer Magnification Ampliación Countdown Cuenta regresiva Video size: Tamaño de vídeo: Free disk space: Espacio en disco disponible: Information Información Record Time: Tiempo de grabación: Audio Sonido Frames Fotogramas Videocodec Códec de vídeo Format Formato Audiocodec Códec de audio Quality Calidad Do not record mouse cursor No grabar el puntero del ratón Hour Hora Minute Minuto Start the timer Iniciar temporizador Stop recording after Detener la grabación después de Hours Horas Minutes Minutos Seconds Segundos Videopath Ruta del vídeo Limit of free disk space Límite de espacio libre en disco   Show in systray Mostrar en bandeja del sistema Second wait before recording Segundos de espera antes de grabar Look for updates Buscar actualizaciones Help Ayuda Video Vídeos Available Disponible Not available No disponible Start Iniciar Stop Detener Pause Pausar Continue Continuar Play Reproducir Folder Carpeta Camera Cámara Invert Invertir Gray Gris CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproducir última grabación Open folder Abrir carpeta CTRL+SHIFT+F8 Ctrl + Mayús + F8 Minimized when recording starts Minimizar al empezar grabación Starts minimized Empezar aplicación minimizada Flip horizontal Voltear horizontalmente Flip vertical Voltear verticalmente Black-and-white Blanco y negro Remove window frame Quitar marco de ventana Donate Donar Reset all settings at the next start Restablecer todas las preferencias en el próximo inicio Copyright and license from pictures Derechos de autor y licencia desde imágenes Megabyte Megabyte Screencast Captura de pantalla Player Reproductor Log Registro Automatically Automáticamente Create images of tabs Crear imágenes de pestañas License information Información sobre la Licencia ON Encender OFF Apagar Global keyboard shortcuts Accesos directos de teclado Assigned shortcut keys. Acceso directo asignado Keyboard shortcut not assigned or assigned more than once. Acceso directo de teclado no asignado o asignado más de una vez If it shows assigned but does not work, it is being used by another program. Si aparece asignado pero no funciona, es que está siendo utilizado por otro programa Snapshot Captura Imagepath Ruta de la imagen Hide this window Ocultar esta ventana Seconds wait before recording Segundos en espera antes de grabar license Copyright and license from pictures Derechos de autor y licencia desde imágenes player Play Reproducir Pause Pausar Stop Detener Open File Abrir archivo Fullscreen Pantalla completa Previous frame Fotograma anterior Next frame Fotograma siguiente Mute Silenciar Move menu Mover el menú vokoscreenNG-3.7.0/src/language/es_419.ts000066400000000000000000000451521444746353100200740ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccione uno o más dispositivos QvkCameraController Camera Cámara QvkCameraSingle Remove window frame Remover marco de ventana Flip vertical Gira Vertical Flip horizontal Giro Horizontal Invert Invertir Gray Gris Black-and-white Blanco y negro Switch to Window Cambiar a modo ventana Switch to Fullscreen Cambiar a modo pantalla completa QvkCameraWindow Switch to Window Cambiar a modo ventana Switch to Fullscreen Cambiar a modo pantalla completa Camera Cámara QvkCiscoFinishDialog The setup was successful. La instalación fue correcta. Close this window and start vokoscreenNG again. Cierre esta ventana e inicia vokoscreenNG de nuevo. Have fun with vokoscreenNG Diviértete con vokoscreenNG QvkDirectSoundController Select one or more devices Seleccione uno o más dispositivos QvkHelp Help Ayuda QvkImageFromTabs No filemanager found. No se encontró administrador de archivos Please install a filemanager. Por favor instalar un administrador de archivos QvkLimitDiskFreeSpace Warning Cuidado The recording is not started, not enough free disk space. Grabación no iniciada, no tiene espacio en el disco duro The free disk space limit is reached. Se alcanzó el límite de espacio libre en disco. Limit of free disk space Límite de espacio libre en disco Megabyte Megabyte The recording was stopped, not enough free disk space. La grabación fue detenida, no tiene espacio libre en el disco QvkMainWindow Fullscreen Pantalla completa Window Ventana No filemanager found. Display a MessageBox, if not found a filemanager. No se encontró administrador de archivos Please install a filemanager. Por favor instalar un administrador de archivos Sourcecode Código fuente Homepage Página de inicio Translations Traducciones Donate Donar QvkPulseAudioWatcher Select one or more devices Seleccione uno o más dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. No se encontró administrador de archivos Please install a filemanager. Por favor instalar un administrador de archivos QvkSystray Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkSystrayAlternative Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkWASAPIController Select one or more devices Seleccione uno o más dispositivos cameraSettingsDialog Dialog Dialogo Flip horizontal Giro Horizontal Flip vertical Gira Vertical Invert Invertir Gray Gris Black-and-white Blanco y negro Remove window frame Remover marco de ventana Camera settings Ajustes de camara formMainWindow Area Área Reset Reiniciar Magnification Ampliación Countdown Conteo regresivo Video size: Tamaño video: Free disk space: Espacio de disco libre: Information Información Record Time: Tiempo de grabación: Audio Audio Frames Cuadros Videocodec Codec de video Format Formato Audiocodec Codec de audio Quality Calidad Do not record mouse cursor No grabar puntero del ratón Hour Hora Minute Minuto Start the timer Iniciar temporizador Stop recording after Detener grabación después de Hours Horas Minutes Minutos Seconds Segundos Videopath Videopath Limit of free disk space Límite de espacio libre en disco Show in systray Mostrar en bandeja del sistema Second wait before recording Segunda espera antes de grabar Look for updates Revisar actualizaciones Help Ayuda Video Video Available Disponible Not available No disponible Start Iniciar Stop Detener Pause Pausar Continue Continuar Play Play Folder Carpeta Camera Cámara Invert Invertir Gray Gris CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproducir la última grabación Open folder Abrir folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizar cuando la grabación comience Starts minimized Iniciar minimizado Flip horizontal Giro Horizontal Flip vertical Gira Vertical Black-and-white Blanco y negro Remove window frame Remover marco de ventana Donate Donar Reset all settings at the next start Resetear todas las configuraciones en el próximo inicio Copyright and license from pictures Derechos de autor y licencias de imágenes Megabyte Megabyte Screencast Grabaciones Player Reproductor Log Registro Automatically Automáticamente Create images of tabs Crear imágenes de tabuladores License information Información de licencia ON Inicio OFF Apagado Global keyboard shortcuts Accesos directos globales de teclado Assigned shortcut keys. Teclas de acceso directo asignadas. Keyboard shortcut not assigned or assigned more than once. Acceso directo de teclado no asignado más de una vez. If it shows assigned but does not work, it is being used by another program. Si esto se muestra como asignado, pero no funciona, está siendo utilizado por otro programa. Snapshot Captura de pantalla Imagepath Ruta de la imagen Hide this window Oculta esta ventana Seconds wait before recording Segundos de espera antes de grabación license Copyright and license from pictures Derechos de autor y licencias de imágenes player Play Play Pause Pausar Stop Detener Open File Abrir archivo Fullscreen Pantalla completa Previous frame Cuadro anterior Next frame Cuadro siguiente Mute Silenciar Move menu Mover menú vokoscreenNG-3.7.0/src/language/es_AR.ts000066400000000000000000000451341444746353100200610ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccione uno o más dispositivos QvkCameraController Camera Camara QvkCameraSingle Remove window frame Quitar el marco de la ventana Flip vertical Giro vertical Flip horizontal Giro horizontal Invert Invertir Gray Gris Black-and-white Negro-y-blanco Switch to Window Cambiar a modo ventana Switch to Fullscreen Cambiar a pantalla completa QvkCameraWindow Switch to Window Cambiar a modo ventana Switch to Fullscreen Cambiar a pantalla completa Camera Camara QvkCiscoFinishDialog The setup was successful. La instalación se realizó correctamente. Close this window and start vokoscreenNG again. Cierre esta ventana e inicie de nuevo vokoscreenNG. Have fun with vokoscreenNG Divertite con vokoscreenNG QvkDirectSoundController Select one or more devices Seleccione uno o más dispositivos QvkHelp Help Ayuda QvkImageFromTabs No filemanager found. Administrador de archivos no valido Please install a filemanager. Por favor, instale un administrador de archivos. QvkLimitDiskFreeSpace Warning Advertencia The recording is not started, not enough free disk space. La grabación no ha empezado, no hay suficiente espacio en disco The free disk space limit is reached. Se alcanzó el limite de espacio libre en disco Limit of free disk space Limite de espacio libre en el disco Megabyte Megabyte The recording was stopped, not enough free disk space. La grabación ha parado, no hay suficiente espacio en disco QvkMainWindow Fullscreen Pantalla completa Window Ventana No filemanager found. Display a MessageBox, if not found a filemanager. Administrador de archivos no valido Please install a filemanager. Por favor, instale un administrador de archivos. Sourcecode Código fuente Homepage Sitio web Translations Traducciones Donate Donar QvkPulseAudioWatcher Select one or more devices Seleccione uno o más dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. Administrador de archivos no valido Please install a filemanager. Por favor, instale un administrador de archivos. QvkSystray Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Camara Magnification Ampliación QvkSystrayAlternative Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Camara Magnification Ampliación QvkWASAPIController Select one or more devices Seleccione uno o más dispositivos cameraSettingsDialog Dialog Dialogo Flip horizontal Giro horizontal Flip vertical Giro vertical Invert Invertir Gray Gris Black-and-white Negro-y-blanco Remove window frame Quitar el marco de la ventana Camera settings Opciones de Camara formMainWindow Area Área Reset Reiniciar Magnification Ampliación Countdown Cuenta regresiva Video size: Tamaño de video: Free disk space: Espacio libre en el disco: Information Informacón Record Time: Tiempo de grabación Audio Audio Frames Fotogramas Videocodec Códec de video Format Formato Audiocodec Códec de audio Quality Calidad Do not record mouse cursor No grabar el puntero del ratón Hour Hora Minute Minuto Start the timer Iniciar el cronometro Stop recording after Detener la grabacion después Hours Horas Minutes Minutos Seconds Segundos Videopath Ruta del vídeo Limit of free disk space Limite de espacio libre en el disco Show in systray Mostrar en bandeja del sistema Second wait before recording Segundo de espera antes de la grabación Look for updates Buscar actualizaciones Help Ayuda Video Video Available Disponible Not available No disponible Start Iniciar Stop Detener Pause Pausar Continue Continuar Play Reproducir Folder Carpeta Camera Camara Invert Invertir Gray Gris CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproducir la ultima grabación Open folder Abrir archivo CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizar cuando comience la grabación Starts minimized Comienza minimizado Flip horizontal Flip horizontal Flip vertical Giro vertical Black-and-white Negro-y-blanco Remove window frame Quitar el marco de la ventana Donate Donar Reset all settings at the next start Restablecer todas las configuraciones en el próximo inicio Copyright and license from pictures Copyright y licencia de imágenes Megabyte Megabyte Screencast Grabación Player Reproductor Log Log Automatically Automáticamente Create images of tabs Crear imágenes de pestañas License information Información sobre la licencia ON ON OFF OFF Global keyboard shortcuts Atajos de teclado globales Assigned shortcut keys. Teclas de acceso directo asignadas. Keyboard shortcut not assigned or assigned more than once. Atajo de teclado no asignado o asignado más de una vez. If it shows assigned but does not work, it is being used by another program. Si aparece asignado pero no funciona, es que está siendo utilizado por otro programa Snapshot Captura Imagepath Ruta de la imagen Hide this window Ocultar esta ventana Seconds wait before recording Segundo de espera antes de la grabación license Copyright and license from pictures Copyright y licencia de imágenes player Play Reproducir Pause Pausar Stop Detener Open File Abrir archivo Fullscreen Pantalla completa Previous frame Frame anterior Next frame Siguiente frame Mute Silenciar Move menu Mover menu vokoscreenNG-3.7.0/src/language/es_CO.ts000066400000000000000000000452711444746353100200620ustar00rootroot00000000000000 QvkAudioController Select one or more devices Elige uno o más dispositivos QvkCameraController Camera Cámara QvkCameraSingle Remove window frame Remover el marco de la ventana Flip vertical Voltear verticalmente Flip horizontal Voltear horizontalmente Invert Invertir Gray Gris Black-and-white Blanco y Negro Switch to Window Pasar a la ventana Switch to Fullscreen Cambiar a pantalla completa QvkCameraWindow Switch to Window Pasar a la ventana Switch to Fullscreen Cambiar a pantalla completa Camera Cámara QvkCiscoFinishDialog The setup was successful. La configuración fue exitosa Close this window and start vokoscreenNG again. Cierre la ventana y reinicie el VokoSreenNG Have fun with vokoscreenNG Diviértete con vokoscreenNG QvkDirectSoundController Select one or more devices Elige uno o más dispositivos QvkHelp Help Ayuda QvkImageFromTabs No filemanager found. No se encontró administrador de archivos Please install a filemanager. Por favor, instale un administrador de archivos. QvkLimitDiskFreeSpace Warning 101% match Advertencia The recording is not started, not enough free disk space. No se pudo empezar a grabar, no hay suficiente espacio libre en el disco. The free disk space limit is reached. 101% match El límite de espacio en disco se ha alcanzado. Limit of free disk space Límite de espacio libre en disco Megabyte Megabyte The recording was stopped, not enough free disk space. La grabación fue detenida porque no hay espacio libre en el disco. QvkMainWindow Fullscreen Pantalla completa Window Ventana No filemanager found. Display a MessageBox, if not found a filemanager. No se encontró administrador de archivos Please install a filemanager. Por favor, instale un administrador de archivos. Sourcecode Código fuente Homepage Sitio web Translations Traducciones Donate Donar QvkPulseAudioWatcher Select one or more devices Elige uno o más dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. No se encontró administrador de archivos Please install a filemanager. Por favor, instale un administrador de archivos. QvkSystray Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkSystrayAlternative Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkWASAPIController Select one or more devices Elige uno o más dispositivos cameraSettingsDialog Dialog Diálogo Flip horizontal Voltear horizontalmente Flip vertical Voltear verticalmente Invert Invertir Gray Gris Black-and-white Blanco y Negro Remove window frame Remover el marco de la ventana Camera settings Configuración de la cámara formMainWindow Area Área Reset Reiniciar Magnification Ampliación Countdown Conteo regresivo Video size: Tamaño del video: Free disk space: Espacio libre en el disco Information información Record Time: Tiempo de grabación Audio Audio Frames Cuadros Videocodec Códec de vídeo Format Formato Audiocodec Codec de audio Quality Calidad Do not record mouse cursor No grabar el puntero del ratón Hour Hora Minute Minuto Start the timer Iniciar el temporizador Stop recording after Detener grabación después Hours Horas Minutes Minutos Seconds Segundos Videopath Ubicación del vídeo Limit of free disk space Límite de espacio libre en disco Show in systray Mostrar en bandeja del sistema Second wait before recording Segundos de espera antes de grabar Look for updates Buscar actualizaciones Help Ayuda Video Video Available Disponible Not available No disponible Start Iniciar Stop Detener Pause Pausar Continue Continuar Play Reproducir Folder Carpeta Camera Cámara Invert Invertir Gray Gris CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproducir la última grabación Open folder Abrir carpeta CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizar cuando inicie la grabación Starts minimized Iniciar minimizado Flip horizontal Voltear horizontalmente Flip vertical Voltear verticalmente Black-and-white Blanco y Negro Remove window frame Remover el marco de la ventana Donate Donar Reset all settings at the next start Reiniciar todos los ajustes en el siguiente inicio Copyright and license from pictures Derechos de autor y licencia desde imágenes Megabyte Megabyte Screencast Pantalla de grabación Player Reproductor Log Log Automatically Automáticamente Create images of tabs Crear imágenes de pestañas License information Información de la licencia ON Encendido OFF Apagado Global keyboard shortcuts Atajos de teclado generales Assigned shortcut keys. Teclas de acceso directo asignadas. Keyboard shortcut not assigned or assigned more than once. Atajo de teclado no asignado o asignado más de una vez If it shows assigned but does not work, it is being used by another program. Si se muestra asignado pero no funciona, está siendo usado por otro programa. Snapshot Captura Imagepath Ruta de la imagen Hide this window Ocultar esta ventana Seconds wait before recording Segundos de espera antes de grabar license Copyright and license from pictures Derechos de autor y licencias de imágenes player Play Reproducir Pause Pausar Stop Detener Open File Abrir archivo Fullscreen Pantalla completa Previous frame Cuadro anterior Next frame Siguiente cuadro Mute Silenciar Move menu Mover menu vokoscreenNG-3.7.0/src/language/es_ES.ts000066400000000000000000000451161444746353100200660ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccione uno o más dispositivos QvkCameraController Camera Cámara QvkCameraSingle Remove window frame Quitar marco de ventana Flip vertical Voltear verticalmente Flip horizontal Voltear horizontalmente Invert Invertir Gray Gris Black-and-white Blanco y Negro Switch to Window Cambiar a Ventana Switch to Fullscreen Cambiar a Pantalla Completa QvkCameraWindow Switch to Window Cambiar a Ventana Switch to Fullscreen Cambiar a Pantalla Completa Camera Cámara QvkCiscoFinishDialog The setup was successful. Configuración finalizada correctamente Close this window and start vokoscreenNG again. Cierre la ventana e inicie vokoscreenNG de nuevo Have fun with vokoscreenNG Difrute con vokoscreenNG QvkDirectSoundController Select one or more devices Seleccione uno o más dispositivos QvkHelp Help Ayuda QvkImageFromTabs No filemanager found. Gestor de ficheros no encontrado. Please install a filemanager. Por favor, instale un gestor de ficheros. QvkLimitDiskFreeSpace Warning Aviso The recording is not started, not enough free disk space. La grabación no ha empezado; no hay espacio en disco disponible. The free disk space limit is reached. El límite de espacio en disco se ha alcanzado. Limit of free disk space Límite de espacio en disco. Megabyte Megabyte The recording was stopped, not enough free disk space. La grabación ha parado; no hay suficiente espacio en disco. QvkMainWindow Fullscreen Pantalla Window Ventana No filemanager found. Display a MessageBox, if not found a filemanager. Gestor de ficheros no encontrado. Please install a filemanager. Por favor, instale un gestor de ficheros. Sourcecode Código fuente Homepage Página web Translations Traducciones Donate Dona QvkPulseAudioWatcher Select one or more devices Seleccione uno o más dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. Gestor de ficheros no encontrado. Please install a filemanager. Por favor, instale un gestor de ficheros. QvkSystray Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Lupa QvkSystrayAlternative Start Iniciar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Lupa QvkWASAPIController Select one or more devices Seleccione uno o más dispositivos cameraSettingsDialog Dialog Cuadro de diálogo Flip horizontal Voltear horizontalmente Flip vertical Voltear verticalmente Invert Invertir Gray Gris Black-and-white Blanco y Negro Remove window frame Quitar marco de ventana Camera settings Configuración de la cámara formMainWindow Area Área Reset Reiniciar Magnification Lupa Countdown Cuenta regresiva Video size: Tamaño de vídeo Free disk space: Espacio en disco disponible: Information Información Record Time: Tiempo de grabación Audio Audio Frames Fotogramas Videocodec Códec de vídeo Format Formato Audiocodec Códec de audio Quality Calidad Do not record mouse cursor No grabar el cursor del ratón Hour Hora Minute Minuto Start the timer Iniciar temporizador Stop recording after Detener grabación después de Hours Horas Minutes Minutos Seconds Segundos Videopath Ruta del vídeo Limit of free disk space Límite de espacio en disco. Show in systray Mostrar en bandeja del sistema Second wait before recording Segundos de espera antes de grabar Look for updates Buscar actualizaciones Help Ayuda Video Vídeo Available Disponible Not available No disponible Start Iniciar Stop Detener Pause Pausar Continue Continuar Play Reproducir Folder Carpeta Camera Cámara Invert Invertir Gray Gris CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproducir última grabación Open folder Abrir carpeta CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizar cuando la grabación comience Starts minimized Iniciar minimizado Flip horizontal Voltear horizontalmente Flip vertical Voltear verticalmente Black-and-white Blanco y Negro Remove window frame Quitar marco de ventana Donate Donar Reset all settings at the next start Reiniciar todos los ajustes en el siguiente inicio Copyright and license from pictures Derechos de autor y licencias de imágenes Megabyte Megabyte Screencast Captura de pantalla Player Reproductor Log Log Automatically Automáticamente Create images of tabs Crear imágenes de pestañas License information Información sobre la Licencia ON Encender OFF Apagar Global keyboard shortcuts Accesos directos de teclado Assigned shortcut keys. Acceso directo asignado Keyboard shortcut not assigned or assigned more than once. Acceso directo de teclado no asignado o asignado más de una vez If it shows assigned but does not work, it is being used by another program. Si aparece asignado pero no funciona, es que está siendo utilizado por otro programa Snapshot Captura de pantalla Imagepath Ruta de la imagen Hide this window Ocultar esta ventana Seconds wait before recording Segundos en espera antes de grabar license Copyright and license from pictures Derechos de autor y licencias de imágenes player Play Reproducir Pause Pausa Stop Detener Open File Abrir Archivo Fullscreen pantalla Previous frame Fotograma previo Next frame Fotograma siguiente Mute Silenciar Move menu Mover menú vokoscreenNG-3.7.0/src/language/es_MX.ts000066400000000000000000000455121444746353100201030ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleccione uno o más dispositivos QvkCameraController Camera Cámara QvkCameraSingle Remove window frame Remover el marco de la ventana Flip vertical Distribuir en dos ventanas verticales Flip horizontal Distribuir en dos ventanas horizontales Invert Invertir Gray Tonos de Gris Black-and-white Blanco y Negro Switch to Window Cambiar a Ventana Switch to Fullscreen Cambiar a pantalla completa QvkCameraWindow Switch to Window Cambiar a Ventana Switch to Fullscreen Cambiar a pantalla completa Camera Cámara QvkCiscoFinishDialog The setup was successful. La instalación fue correcta. Close this window and start vokoscreenNG again. Cierra la ventana e inicia vokoscreenNG de nuevo. Have fun with vokoscreenNG Diviértete con vokoscreenNG QvkDirectSoundController Select one or more devices Elige uno o más dispositivos QvkHelp Help Ayuda QvkImageFromTabs No filemanager found. No se encontró el manejador de archivos. Please install a filemanager. Por favor, instale un manejador de archivos. QvkLimitDiskFreeSpace Warning Advertencia The recording is not started, not enough free disk space. La grabación no ha comenzado porque no hay suficiente espacio libre en el disco. The free disk space limit is reached. El espacio libre del disco se agotó. Limit of free disk space Espacio libre del disco Megabyte Megabyte The recording was stopped, not enough free disk space. La grabación se detuvo porque no hay espacio libre en el disco. QvkMainWindow Fullscreen Pantalla Completa Window Ventana No filemanager found. Display a MessageBox, if not found a filemanager. No se encontró el manejador de archivos. Please install a filemanager. Por favor, instale un manejador de archivos. Sourcecode Código fuente Homepage Página de inicio Translations Traducciones Donate Donar QvkPulseAudioWatcher Select one or more devices Elige uno o más dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. No se encontró el manejador de archivos. Please install a filemanager. Por favor, instale un manejador de archivos. QvkSystray Start Comenzar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkSystrayAlternative Start Comenzar Stop Detener Pause Pausar Continue Continuar Exit Salir Camera Cámara Magnification Ampliación QvkWASAPIController Select one or more devices Seleccione uno o más dispositivos cameraSettingsDialog Dialog Diálogo Flip horizontal Distribuir en dos ventanas horizontales Flip vertical Distribuir en dos ventanas verticales Invert Invertir Gray Tonos de Gris Black-and-white Blanco y Negro Remove window frame Remover el marco de la ventana Camera settings Configuración de la cámara formMainWindow Area Área Reset Redefinir Magnification Ampliación Countdown Cuenta regresiva Video size: Tamaño del video: Free disk space: Espacio libre del disco: Information Información Record Time: Tiempo de grabación: Audio Audio Frames Cuadros Videocodec Codec de video Format Formato Audiocodec Codec de audio Quality Calidad Do not record mouse cursor No grabar el cursor del ratón Hour Hora Minute Minuto Start the timer Iniciar el cronómetro Stop recording after Detener la grabación después de Hours Horas Minutes Minutos Seconds Segundos Videopath Ruta al video Limit of free disk space Espacio libre del disco Show in systray Mostrar en systray Second wait before recording Segundos a esperar antes de la grabación Look for updates Buscar actualizaciones Help Ayuda Video Video Available Disponible Not available No disponible Start Comenzar Stop Detener Pause Pausar Continue Continuar Play Reproducir Folder Carpeta Camera Cámara Invert Invertir Gray Tonos de Gris CTRL+SHIFT+F10 CTRL+MAYUS+F10 CTRL+SHIFT+F11 CTRL+MAYUS+F11 CTRL+SHIFT+F12 CTRL+MAYUS+F12 Play last record Reproducir la última grabación Open folder Abrir carpeta CTRL+SHIFT+F8 CTRL+MAYUS+F8 Minimized when recording starts Minimizada cuando comience la grabación Starts minimized Comienza minimizada Flip horizontal Distribuir en dos ventanas horizontales Flip vertical Distribuir en dos ventanas verticales Black-and-white Blanco y Negro Remove window frame Remover el marco de la ventana Donate Donar Reset all settings at the next start Redefinir la configuración en la siguiente grabación Copyright and license from pictures Derechos de autor y licencia sobre la grabación Megabyte Megabyte Screencast Pantalla de grabación Player Reproductor Log Bitácora Automatically Automáticamente Create images of tabs Crear imágenes de tabuladores License information Información de Licencia ON Inicio OFF Apagado Global keyboard shortcuts Accesos directos globales de teclado Assigned shortcut keys. Teclas de acceso directo asignadas. Keyboard shortcut not assigned or assigned more than once. Acceso directo de teclado no asignado más de una vez. If it shows assigned but does not work, it is being used by another program. Si esto se muestra como asignado, pero no funciona, está siendo utilizado por otro programa. Snapshot Captura de pantalla Imagepath Ruta de la imagen Hide this window Oculta esta ventana Seconds wait before recording Segundos de espera antes de grabar license Copyright and license from pictures Derechos de autor y licencia sobre la grabación player Play Reproducir Pause Pausar Stop Detener Open File Abrir Archivo Fullscreen Pantalla Completa Previous frame Cuadro anterior Next frame Siguiente cuadro Mute Apagar el micrófono Move menu Mover el menú vokoscreenNG-3.7.0/src/language/eu_ES.ts000066400000000000000000000447251444746353100200750ustar00rootroot00000000000000 QvkAudioController Select one or more devices Hautatu gailu bat edo gehiago QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Kendu leihoaren markoa Flip vertical Irauli bertikalean Flip horizontal Irauli horizontalean Invert Alderantzizkatu Gray Grisa Black-and-white Zuri-beltza Switch to Window Aldatu leihora Switch to Fullscreen Aldatu pantaila osora QvkCameraWindow Switch to Window Aldatu leihora Switch to Fullscreen Aldatu pantaila osora Camera Kamera QvkCiscoFinishDialog The setup was successful. Konfigurazioa arrakastatsua izan da. Close this window and start vokoscreenNG again. Itxi leiho hau eta hasi vokoscreenNG berriro. Have fun with vokoscreenNG Ondo pasa vokoscreenNG-rekin QvkDirectSoundController Select one or more devices Hautatu gailu bat edo gehiago QvkHelp Help Laguntza QvkImageFromTabs No filemanager found. Ez da fitxategi-arakatzailerik aurkitu Please install a filemanager. Instalatu fitxategi-arakatzaile bat. QvkLimitDiskFreeSpace Warning Abisua The recording is not started, not enough free disk space. Grabazioa ez da hasi, ez dago nahikoa tokirik diskoan. The free disk space limit is reached. Diskoaren espazio librea bukatu da. Limit of free disk space Diskoaren espazio librearen muga Megabyte Megabyte The recording was stopped, not enough free disk space. Grabazioa gelditu da, ez dago espazio libre nahikorik. QvkMainWindow Fullscreen Pantaila osoa Window Leihoa No filemanager found. Display a MessageBox, if not found a filemanager. Ez da fitxategi arakatzailerik aurkitu Please install a filemanager. Instalatu fitxategi arakatzaile bat. Sourcecode Iturburu-kodea Homepage Hasiera-orria Translations Itzulpenak Donate Eman dirua QvkPulseAudioWatcher Select one or more devices Hautatu gailu bat edo gehiago QvkRegionChoise Area Eremua QvkRegionChoise_wl Area Eremua QvkSnapshot No filemanager found. Ez da fitxategi-arakatzailerik aurkitu Please install a filemanager. Instalatu fitxategi-arakatzaile bat. QvkSystray Start Hasi Stop Gelditu Pause Pausatu Continue Jarraitu Exit irten Camera Kamera Magnification Lupa QvkSystrayAlternative Start Hasi Stop Gelditu Pause Pausatu Continue Jarraitu Exit Irten Camera Kamera Magnification Lupa QvkWASAPIController Select one or more devices Hautatu gailu bat edo gehiago cameraSettingsDialog Dialog Elkarrizketa Flip horizontal Irauli horizontalean Flip vertical Irauli bertikalean Invert Alderantzizkatu Gray Grisa Black-and-white Zuri-beltza Remove window frame Kendu leihoaren markoa Camera settings Kameraren ezarpenak formMainWindow Area Eremua Reset Berrezarri Magnification Lupa Countdown Atzera-kontua Video size: Bideoaren tamaina: Free disk space: Diskoko leku librea: Information Informazioa Record Time: Grabazio denbora: Audio Audioa Frames Fotogramak Videocodec Bideo-kodeka Format Formatua Audiocodec Audio-kodeka Quality Kalitatea Do not record mouse cursor Ez grabatu saguaren erakuslea Hour Ordu Minute Minutu Start the timer Abiatu tenporizadorea Stop recording after Gelditu grabazioa denbora honen ondoren Hours Ordu Minutes Minutu Seconds Segundo Videopath Bideoaren bidea Limit of free disk space Diskoaren espazio librearen muga Show in systray Erakutsi erretiluan Second wait before recording Segundo hauen ondoren hasi grabatzen Look for updates Begiratu eguneraketak Help Laguntza Video Bideoa Available Eskuragarria Not available Ez eskuragarria Start Hasi Stop Gelditu Pause Pausatu Continue Jarraitu Play Erreproduzitu Folder Karpeta Camera Kamera Invert Alderantzizkatu Gray Grisa CTRL+SHIFT+F10 CTRL+MAIUS+F10 CTRL+SHIFT+F11 CTRL+MAIUS+F11 CTRL+SHIFT+F12 CTRL+MAIUS+F12 Play last record Erreproduzitu grabatutako azkena Open folder Ireki karpeta CTRL+SHIFT+F8 CTRL+MAIUS+F8 Minimized when recording starts Minimizatu grabazioa hastean Starts minimized Abiatu minimizatuta Flip horizontal Irauli horizontalean Flip vertical Irauli bertikalean Black-and-white Zuri-beltza Remove window frame Kendu leihoaren markoa Donate Eman dirua Reset all settings at the next start Leheneratu ezarpen guztiak abiatzen den hurrengoan Copyright and license from pictures Irudien gaineko copyrighta eta lizentzia Megabyte Megabyte Screencast Pantaila-grabazioa Player Erreproduzigailua Log Erregistroa Automatically Automatikoki Create images of tabs Sortu fitxen irudiak License information Lizentziaren informazioa ON PIZTU OFF ITZALI Global keyboard shortcuts Laster-teklak Assigned shortcut keys. Esleitutako laster-teklak Keyboard shortcut not assigned or assigned more than once. Laster-tekla ez dago esleituta edo bat baino gehiago esleitu zaio. If it shows assigned but does not work, it is being used by another program. Esleituta agertzen bada baina ez badabil, beste programa batek erabiltzen du. Snapshot Pantaila argazkia Imagepath Irudi-bidea Hide this window Ezkutatu leiho hau Seconds wait before recording Segundo hauen ondoren hasi grabatzen license Copyright and license from pictures Irudien gaineko copyrighta eta lizentzia player Play Erreproduzitu Pause Pausatu Stop Gelditu Open File Ireki fitxategia Fullscreen Pantaila osoa Previous frame Aurreko fotograma Next frame Hurrengo fotograma Mute Mutu Move menu Mugitu menua vokoscreenNG-3.7.0/src/language/fi_FI.ts000066400000000000000000000446011444746353100200420ustar00rootroot00000000000000 QvkAudioController Select one or more devices Valitse yksi tai useampi laite QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Poista ikkunakehys Flip vertical Käännä pystysuunnassa Flip horizontal Käännä vaakasuunnassa Invert Käänteinen Gray Harmaa Black-and-white Mustavalkoinen Switch to Window Vaihda ikkunaan Switch to Fullscreen Vaihda koko näyttöön QvkCameraWindow Switch to Window Vaihda ikkunaan Switch to Fullscreen Vaihda koko näyttöön Camera Kamera QvkCiscoFinishDialog The setup was successful. Asennus onnistui. Close this window and start vokoscreenNG again. Sulje ikkuna ja käynnistä vokoscreenNG uudelleen. Have fun with vokoscreenNG Pidä hauskaa vokoscreenNG:n parissa QvkDirectSoundController Select one or more devices Valitse yksi tai useampi laite QvkHelp Help Ohje QvkImageFromTabs No filemanager found. Tiedostonhallintaa ei löytynyt. Please install a filemanager. Asenna tiedostonhallinta. QvkLimitDiskFreeSpace Warning Varoitus The recording is not started, not enough free disk space. Tallennusta ei käynnistetä, ei ole riittävästi vapaata levytilaa. The free disk space limit is reached. Vapaan levytilan raja on saavutettu. Limit of free disk space Vapaan levytilan raja Megabyte Megatavu The recording was stopped, not enough free disk space. Tallennus pysäytettiin, ei tarpeeksi vapaata levytilaa. QvkMainWindow Fullscreen Koko näyttö Window Ikkuna No filemanager found. Display a MessageBox, if not found a filemanager. Tiedostonhallintaa ei löytynyt. Please install a filemanager. Asenna tiedostonhallinta. Sourcecode Lähdekoodi Homepage Kotisivu Translations Käännökset Donate Lahjoita QvkPulseAudioWatcher Select one or more devices Valitse yksi tai useampi laite QvkRegionChoise Area Alue QvkRegionChoise_wl Area Alue QvkSnapshot No filemanager found. Tiedostonhallintaa ei löytynyt. Please install a filemanager. Asenna tiedostonhallinta. QvkSystray Start Aloita Stop Lopeta Pause Tauko Continue Jatka Exit Poistu Camera Kamera Magnification Suurennus QvkSystrayAlternative Start Aloita Stop Lopeta Pause Tauko Continue Jatka Exit Poistu Camera Kamera Magnification Suurennus QvkWASAPIController Select one or more devices Valitse yksi tai useampi laite cameraSettingsDialog Dialog Valintaikkuna Flip horizontal Käännä vaakasuunnassa Flip vertical Käännä pystysuunnassa Invert Käänteinen Gray Harmaa Black-and-white Mustavalkoinen Remove window frame Poista ikkunakehys Camera settings Kameran asetukset formMainWindow Area Alue Reset Nollaa Magnification Suurennus Countdown Lähtölaskenta Video size: Videon koko: Free disk space: Vapaa levytila: Information Tietoja Record Time: Tallennusaika: Audio Ääni Frames Ruutuja Videocodec Videokoodekki Format Tallennusmuoto Audiocodec Audiokoodekki Quality Laatu Do not record mouse cursor Älä tallenna hiiren osoitinta Hour Tunti Minute Minuutti Start the timer Käynnistä ajastin Stop recording after Pysäytä tallennus tämän jälkeen Hours Tuntia Minutes Minuuttia Seconds Sekuntia Videopath Videon polku Limit of free disk space Vapaan levytilan raja Show in systray Näytä ilmoitusalueella Second wait before recording Sekuntia odotusta ennen tallennusta Look for updates Tarkista päivitykset Help Ohje Video Video Available Käytettävissä Not available Ei käytettävissä Start Aloita Stop Lopeta Pause Tauko Continue Jatka Play Toista Folder Kansio Camera Kamera Invert Käänteinen Gray Harmaa CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Toista viimeisin tallennus Open folder Avaa kansio CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Pienennä kun tallennus alkaa Starts minimized Käynnistä pienennettynä Flip horizontal Käännä vaakasuunnassa Flip vertical Käännä pystysuunnassa Black-and-white Mustavalkoinen Remove window frame Poista ikkunakehys Donate Lahjoita Reset all settings at the next start Nollaa kaikki asetukset seuraavalla käynnistyksellä Copyright and license from pictures Tekijänoikeudet ja lisenssit kuvista Megabyte Megatavu Screencast Näytön tallennin Player Toistin Log Loki Automatically Automaattisesti Create images of tabs Luo kuvat välilehdistä License information Lisenssitiedot ON ON OFF POIS Global keyboard shortcuts Yleiset pikanäppäimet Assigned shortcut keys. Määritetyt pikanäppäimet. Keyboard shortcut not assigned or assigned more than once. Pikanäppäintä ei ole määritetty tai määritetty useammin kuin kerran. If it shows assigned but does not work, it is being used by another program. Jos näyttää määritystä, mutta ei toimi, se on toisen ohjelman käytössä. Snapshot Valokuva Imagepath Kuvan polku Hide this window Piilota tämä ikkuna Seconds wait before recording Odotusaika ennen tallennusta license Copyright and license from pictures Tekijänoikeudet ja lisenssit kuvista player Play Toista Pause Tauko Stop Lopeta Open File Avaa tiedosto Fullscreen Koko näyttö Previous frame Edellinen kehys Next frame Seuraava kehys Mute Mykistä Move menu Siirrä valikko vokoscreenNG-3.7.0/src/language/fr_FR.ts000066400000000000000000000460671444746353100200740ustar00rootroot00000000000000 QvkAudioController Select one or more devices Sélectionnez un ou plusieurs appareils QvkCameraController Camera Caméra QvkCameraSingle Remove window frame Supprimer le cadre de la fenêtre Flip vertical Retourner verticalement Flip horizontal Retourner horizontalement Invert Inverser Gray Gris Black-and-white Noir-et-blanc Switch to Window Mode fenêtré Switch to Fullscreen Mode plein écran QvkCameraWindow Switch to Window Mode fenêtré Switch to Fullscreen Mode plein écran Camera Caméra QvkCiscoFinishDialog The setup was successful. L'installation a réussi. Close this window and start vokoscreenNG again. Fermer cette fenêtre et démarrer vokoscreenNG de nouveau. Have fun with vokoscreenNG Amusez-vous bien avec vokoscreenNG QvkDirectSoundController Select one or more devices Sélectionnez un ou plusieurs fichiers QvkHelp Help Aide QvkImageFromTabs No filemanager found. Aucun gestionnaire de fichiers trouvé. Please install a filemanager. Veuillez installer un gestionnaire de fichiers. QvkLimitDiskFreeSpace Warning Attention The recording is not started, not enough free disk space. L'enregistrement n'a pas démarré car il n' y a pas assez d'espace libre sur le disque de destination. The free disk space limit is reached. La limite d'espace disque libre est atteinte. Limit of free disk space Limite d'espace disque libre Megabyte Megaoctet The recording was stopped, not enough free disk space. L'enregistrement s'est arrêté car il n'y a pas assez d'espace libre sur le disque de destination. QvkMainWindow Fullscreen Plein écran Window Fenêtre No filemanager found. Display a MessageBox, if not found a filemanager. Aucun gestionnaire de fichiers trouvé. Please install a filemanager. Veuillez installer un gestionnaire de fichiers. Sourcecode Code source Homepage Page d'accueil Translations Traductions Donate Faire un don QvkPulseAudioWatcher Select one or more devices Sélectionnez un ou plusieurs fichiers QvkRegionChoise Area Zone QvkRegionChoise_wl Area Définir une zone manuellement QvkSnapshot No filemanager found. Aucun gestionnaire de fichiers trouvé. Please install a filemanager. Veuillez installer un gestionnaire de fichiers. QvkSystray Start Démarrer Stop Arrêter Pause Pause Continue Continuer Exit Sortir Camera Caméra Magnification Agrandissement QvkSystrayAlternative Start Démarrer Stop Arrêter Pause Pause Continue Continuer Exit Sortir Camera Caméra Magnification Agrandissement QvkWASAPIController Select one or more devices Sélectionnez un ou plusieurs appareils cameraSettingsDialog Dialog Dialogue Flip horizontal Retourner horizontalement Flip vertical Retourner verticalement Invert Inverser Gray Gris Black-and-white Noir-et-blanc Remove window frame Supprimer le cadre de la fenêtre Camera settings Configuration caméra formMainWindow Area Définir une zone manuellement Reset Remettre à zéro les réglages Magnification Agrandissement Countdown Compte à rebours Video size: Taille video: Free disk space: Espace disque libre: Information Information Record Time: Temps enregistré: Audio Audio Frames Images Videocodec Codec vidéo Format Format Audiocodec Codec audio Quality Qualité Do not record mouse cursor Ne pas enregistrer le curseur de la souris Hour Heure Minute Minute Start the timer Démarrer le chronomètre Stop recording after Arrêter l'enregistrement après Hours Heures Minutes Minutes Seconds Secondes Videopath Chemin d'enregistrement de la vidéo Limit of free disk space Limite d'espace disque libre Show in systray Afficher dans la zone de notification Second wait before recording Secondes d'attentes avant le début d'enregistrement Look for updates Rechercher des mises à jour du logiciel Help Aide Video Vidéo Available Disponible Not available Indisponible Start Démarrer Stop Arrêter Pause Pause Continue Continuer Play Lire Folder Dossier Camera Caméra Invert Inverser Gray Gris CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Jouer le dernier enregistrement Open folder Ouvrir dossier CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimisé à l'enregistrement Starts minimized Minimisé à l'exécution Flip horizontal Retourner horizontalement Flip vertical Retourner verticalement Black-and-white Noir-et-blanc Remove window frame Supprimer le cadre de la fenêtre Donate Faire un don Reset all settings at the next start Remise à zéro de tous les paramètres au prochain redémarrage du logiciel. Copyright and license from pictures Copyright et licence de la vidéo Megabyte Megaoctet Screencast Enregistrement de ce qui se passe à l'écran Player Lecteur Log Se connecter Automatically Automatiquement Create images of tabs Créer des images d'onglets License information Informations sur la licence ON ON OFF OFF Global keyboard shortcuts Raccourcis clavier globaux Assigned shortcut keys. Raccourcis clavier assignés. Keyboard shortcut not assigned or assigned more than once. Raccourcis clavier non assignés ou assignés plus d'une fois. If it shows assigned but does not work, it is being used by another program. Si marqué comme assigné mais que cela ne fonctionne pas, il doit être utilisé par un autre programme. Snapshot Instantané Imagepath Chemin de l'image Hide this window Masquer cette fenêtre Seconds wait before recording Secondes d'attente avant l'enregistrement license Copyright and license from pictures Copyright et licence de la vidéo player Play Lire Pause Pause Stop Arrêter Open File Ouvrir fichier Fullscreen Plein écran Previous frame Cadre précédent Next frame Cadre suivant Mute Muet Move menu Déplacer le menu vokoscreenNG-3.7.0/src/language/hr.ts000066400000000000000000000447171444746353100175070ustar00rootroot00000000000000 QvkAudioController Select one or more devices Odaberi jedan ili više uređaja QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Uklonite okvir prozora Flip vertical Okrenite okomito Flip horizontal Okreni vodoravno Invert Izokreni Gray Sivo Black-and-white Crno-bijelo Switch to Window Prebaci na prozor Switch to Fullscreen Prebaci na cijeli zaslon QvkCameraWindow Switch to Window Prebaci na prozor Switch to Fullscreen Prebaci na cijeli zaslon Camera Kamera QvkCiscoFinishDialog The setup was successful. Postavljanje je bilo uspješno. Close this window and start vokoscreenNG again. Zatvorite ovaj prozor i ponovno pokrenite vokoscreenNG. Have fun with vokoscreenNG Zabavite se uz vokoscreenNG QvkDirectSoundController Select one or more devices Odaberi jedan ili više uređaja QvkHelp Help Pomoć QvkImageFromTabs No filemanager found. Upravitelj datoteka nije pronađen.   Please install a filemanager. Molim instalirajte filemanager QvkLimitDiskFreeSpace Warning Upozorenje The recording is not started, not enough free disk space. Snimanje nije pokrenuto, nema dovoljno slobodnog prostora na disku. The free disk space limit is reached. Dosegnuto je ograničenje slobodnog prostora na disku. Limit of free disk space Ograničenje slobodnog prostora na disku Megabyte Megabajt The recording was stopped, not enough free disk space. Snimanje je zaustavljeno, nema dovoljno slobodnog prostora na disku. QvkMainWindow Fullscreen   Puni zaslon Window Prozor No filemanager found. Display a MessageBox, if not found a filemanager. Upravitelj datoteka nije pronađen.   Please install a filemanager. Molim instalirajte filemanager Sourcecode Izvorni kod Homepage Početna stranica Translations Prijevodi Donate Donirajte QvkPulseAudioWatcher Select one or more devices Odaberi jedan ili više uređaja QvkRegionChoise Area Površina QvkRegionChoise_wl Area Površina QvkSnapshot No filemanager found. Upravitelj datoteka nije pronađen.   Please install a filemanager. Molim instalirajte filemanager QvkSystray Start Pokreni Stop Zaustavi Pause Pauza Continue Nastavi Exit Izlaz Camera Kamera Magnification Povećanje QvkSystrayAlternative Start Pokreni Stop Zaustavi Pause Pauza Continue Nastavi Exit Izlaz Camera Kamera Magnification Povećanje QvkWASAPIController Select one or more devices Odaberi jedan ili više uređaja cameraSettingsDialog Dialog Dijalog Flip horizontal Okreni vodoravno Flip vertical Okrenite okomito Invert Izokreni Gray Sivo Black-and-white Crno-bijelo Remove window frame Uklonite okvir prozora Camera settings Postavke kamere formMainWindow Area Površina Reset Resetiraj Magnification Odbrojavanje Countdown Odbrojavanje Video size: Veličina videozapisa: Free disk space: Slobodan prostor na disku: Information Informacija Record Time: Vrijeme snimanja: Audio Audio Frames Okviri Videocodec Videokodek Format Format Audiocodec Audiokodek Quality Kvaliteta Do not record mouse cursor Ne snimaj kursor miša Hour Sat Minute Minuta Start the timer Pokreni tajmer Stop recording after Prekini snimanje nakon Hours Sat Minutes Minute Seconds Skunde Videopath Video-put Limit of free disk space Ograničenje slobodnog prostora na disku Show in systray Prikaži u traci sustava Second wait before recording Drugo čekanje prije snimanja Look for updates Potražite ažuriranja Help Pomoć Video Video Available Dostupno Not available Nije dostupno Start Pokreni Stop Zaustavi Pause Pauza Continue Nastavi Play Pokreni Folder Mapa Camera Kamera Invert Izokreni Gray Sivo CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproduciraj posljednji zapis Open folder Otvori mapu CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizirano prilikom pokretanja snimanja Starts minimized Počinje minimizirano Flip horizontal Okreni vodoravno Flip vertical Okrenite okomito Black-and-white Crno-bijelo Remove window frame Uklonite okvir prozora Donate Donirajte Reset all settings at the next start Vrati sve postavke na sljedeći početak Copyright and license from pictures Autorska prava i licenca sa slika Megabyte Megabajt Screencast Snimke zaslona Player Izvođač Log Dnevnik Automatically Automatski Create images of tabs Stvorite slike kartica License information Podaci o licenci ON Ukljućeno OFF Isključeno Global keyboard shortcuts Globalni tipkovnički prečaci Assigned shortcut keys. Dodijeljene tipke prečaca. Keyboard shortcut not assigned or assigned more than once. Tipkovni prečac nije dodijeljen ili je dodijeljen više od jednom. If it shows assigned but does not work, it is being used by another program. Ako se prikazuje kao dodijeljeno, ali ne radi, koristi ga drugi program. Snapshot Snimak Imagepath Imagepath Hide this window Sakrij ovaj prozor Seconds wait before recording Sekunde čekanja prije snimanja license Copyright and license from pictures Autorska prava i licenca sa slika player Play Pokreni Pause Pauza Stop Zaustavi Open File Otvorena datoteka Fullscreen Puni zaslon Previous frame Prethodni okvir Next frame Sljedeći kadar Mute Isključi zvuk Move menu Premjesti izbornik vokoscreenNG-3.7.0/src/language/id.ts000066400000000000000000000446301444746353100174640ustar00rootroot00000000000000 QvkAudioController Select one or more devices Pilih satu atau lebih perangkat QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Hilangkan bingkai jendela Flip vertical Putar ke arah vertikal Flip horizontal Putar ke arah horizontal Invert Balikan Gray Abu - abu Black-and-white Hitam-dan-putih Switch to Window Pindah ke Jendela Switch to Fullscreen Pindah ke Layar Penuh QvkCameraWindow Switch to Window Pindah ke Jendela Switch to Fullscreen Pindah ke Layar Penuh Camera Kamera QvkCiscoFinishDialog The setup was successful. Persiapan program sukses. Close this window and start vokoscreenNG again. Tutup jendela dan mulai ulang vokoscreenNG. Have fun with vokoscreenNG Selamat bersenang-senang dengan vokoscreenNG QvkDirectSoundController Select one or more devices Pilih satu atau lebih perangkat QvkHelp Help Bantuan QvkImageFromTabs No filemanager found. Pengelola berkas tidak ditemukan. Please install a filemanager. Mohon pasang pengelola berkas. QvkLimitDiskFreeSpace Warning Peringatan The recording is not started, not enough free disk space. Perekaman belum berjalan, ruang bebas diska tidak cukup. The free disk space limit is reached. Batas ruang bebas diska tercapai. Limit of free disk space Batas dari ruang bebas diska Megabyte Megabyte The recording was stopped, not enough free disk space. Perekaman telah dihentikan, ruang bebas diska tidak cukup. QvkMainWindow Fullscreen Layar penuh Window Jendela No filemanager found. Display a MessageBox, if not found a filemanager. Manajer erkas tidak ditemukan Please install a filemanager. Mohon pasang sebuah manajer berkas Sourcecode Kode sumber Homepage Halaman muka Translations Terjemahan Donate Donasi QvkPulseAudioWatcher Select one or more devices Pilih satu atau lebih perangkat. QvkRegionChoise Area Daerah QvkRegionChoise_wl Area Bidangluas QvkSnapshot No filemanager found. Pengelola berkas tidak ditemukan. Please install a filemanager. Mohon pasang pengelola berkas. QvkSystray Start Mulai Stop Berhenti Pause Tangguhkan Continue Lanjut Exit Keluar Camera Kamera Magnification Pembesaran QvkSystrayAlternative Start Mulai Stop Berhenti Pause Jeda Continue Lanjut Exit Keluar Camera Kamera Magnification Pembesaran QvkWASAPIController Select one or more devices Pilih satu atau lebih perangkat. cameraSettingsDialog Dialog Dialog Flip horizontal Putar ke arah horizontal Flip vertical Putar ke arah vertikal Invert Balikan Gray Abu - abu Black-and-white Hitam-dan-putih Remove window frame Hilangkan bingkai jendela Camera settings Pengaturan Kamera formMainWindow Area Daerah Reset Atur ulang Magnification Pembesaran Countdown Hitung mundur Video size: Ukuran video: Free disk space: Ruang bebas diska: Information Informasi: Record Time: Waktu Rekam: Audio Audio Frames Frame Videocodec Kodekvideo Format Format Audiocodec Kodekaudio Quality Kualitas Do not record mouse cursor Jangan rekam kursor tetikus Hour Jam Minute Menit Start the timer Mulai pengatur waktu Stop recording after Hentikan rekaman setelah Hours Jam - Jam Minutes Menit Seconds Detik Videopath Jalur video Limit of free disk space Batas dari ruang bebas diska Show in systray Tampilkan dalam baki sistem Second wait before recording Detik menunggu sebelum merekam Look for updates Memeriksa perubahan Help Bantuan Video Video Available Tersedia Not available Tidak tersedia Start Mulai Stop Berhenti Pause Tangguhkan Continue Lanjut Play Putar Folder Folder Camera Kamera Invert Balikan Gray Abu - abu CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Putar rekaman terakhir Open folder Buka folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Kecilkan ketika rekaman dimulai Starts minimized Mulai mengecilkan Flip horizontal Putar ke arah horizontal Flip vertical Putar ke arah vertikal Black-and-white Hitam-dan-putih Remove window frame Hilangkan bingkai jendela Donate Donasi Reset all settings at the next start Atur ulang semua pengaturan pada mulai berikutnya Copyright and license from pictures Hak cipta dan lisensi dari gambar - gambar Megabyte Megabyte Screencast RekamLayar Player Pemutar Log Pencatatan Automatically Secara otomatis Create images of tabs Buat gambar dari tab License information Informasi lisensi ON HIDUPKAN OFF MATIKAN Global keyboard shortcuts Tombol-pintas umum Assigned shortcut keys. Tombol pintas yang diterapkan. Keyboard shortcut not assigned or assigned more than once. Tombol pintas belum dipasang atau telah dipasang lebih dari sekali. If it shows assigned but does not work, it is being used by another program. Apabila telah diterapkan namun tidak bekerja, bisa jadi sedang digunakan oleh program lain. Snapshot Jepret-gambar Imagepath Jalursimpan-gambar Hide this window Sembunyikan jendela Seconds wait before recording detik waktu tunggu prarekam license Copyright and license from pictures Hak cipta dan lisensi dari gambar - gambar player Play Putar Pause Tangguhkan Stop Berhenti Open File Buka Berkas Fullscreen Layar penuh Previous frame Bingkai sebelumnya Next frame Bingkai berikutnya Mute Bisu Move menu Pindah menu vokoscreenNG-3.7.0/src/language/id_ID.ts000066400000000000000000000444641444746353100200450ustar00rootroot00000000000000 QvkAudioController Select one or more devices Pilih satu atau lebih perangkat QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Hapus bingkai jendela Flip vertical Balik vertikal Flip horizontal Balik horizontal Invert Membalikkan Gray Abu-abu Black-and-white Hitam-dan-Putih Switch to Window Beralih ke Jendela Switch to Fullscreen Beralih ke Layar Penuh QvkCameraWindow Switch to Window Beralih ke Jendela Switch to Fullscreen Beralih ke Layar Penuh Camera Kamera QvkCiscoFinishDialog The setup was successful. Penyiapan berhasil. Close this window and start vokoscreenNG again. Tutup jendela ini dan jalankan vokoscreenNG lagi. Have fun with vokoscreenNG Bersenang-senanglah dengan vokoscreenNG QvkDirectSoundController Select one or more devices Pilih satu atau lebih perangkat QvkHelp Help Bantuan QvkImageFromTabs No filemanager found. Tidak ada pengelola file yang ditemukan. Please install a filemanager. Silakan instal pengelola file. QvkLimitDiskFreeSpace Warning Peringatan The recording is not started, not enough free disk space. Perekaman tidak dimulai, ruang disk kosong tidak cukup. The free disk space limit is reached. Batas ruang disk kosong tercapai. Limit of free disk space Batas ruang disk kosong Megabyte Megabita The recording was stopped, not enough free disk space. Perekaman dihentikan, ruang disk kosong tidak cukup. QvkMainWindow Fullscreen Layar penuh Window Jendela No filemanager found. Display a MessageBox, if not found a filemanager. Tidak ada pengelola file yang ditemukan. Please install a filemanager. Silakan instal pengelola file. Sourcecode Kode sumber Homepage Beranda Translations Terjemahan Donate Donasi QvkPulseAudioWatcher Select one or more devices Pilih satu atau lebih perangkat QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. Tidak ada pengelola file yang ditemukan. Please install a filemanager. Silakan instal pengelola file. QvkSystray Start Mulai Stop Berhenti Pause Jeda Continue Lanjutkan Exit Keluar Camera Kamera Magnification Pembesaran QvkSystrayAlternative Start Mulai Stop Berhenti Pause Jeda Continue Lanjutkan Exit Keluar Camera Kamera Magnification Pembesaran QvkWASAPIController Select one or more devices Pilih satu atau lebih perangkat cameraSettingsDialog Dialog Percakapan Flip horizontal Balik horizontal Flip vertical Balik vertikal Invert Membalikkan Gray Abu-abu Black-and-white Hitam-dan-Putih Remove window frame Hapus bingkai jendela Camera settings Pengaturan Kamera formMainWindow Area Area Reset Atur Ulang Magnification Pembesaran Countdown Hitung Mundur Video size: Ukuran video: Free disk space: Ruang disk kosong: Information Informasi Record Time: Waktu rekam: Audio Suara Frames Bingkai Videocodec VideoCodec Format Format Audiocodec AudioCodec Quality Kualitas Do not record mouse cursor Jangan rekam kursor mouse Hour Jam Minute Menit Start the timer Mulai Timer Stop recording after Berhenti merekam setelah Hours Jam Minutes Menit Seconds Detik Videopath Videopath Limit of free disk space Batas ruang disk kosong Show in systray Tampilkan di systray Second wait before recording Tunggu kedua sebelum merekam Look for updates Cari pembaruan Help Bantuan Video Video Available Tersedia Not available Tidak Tersedia Start Mulai Stop Berhenti Pause Jeda Continue Lanjutkan Play Mainkan Folder Folder Camera Kamera Invert Membalikkan Gray Abu-abu CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Putar rekaman terakhir Open folder Buka folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimalkan jendela saat perekaman dimulai Starts minimized Mulai minimalkan jendela Flip horizontal Balik horizontal Flip vertical Balik vertikal Black-and-white Hitam-dan-Putih Remove window frame Hapus bingkai jendela Donate Donasi Reset all settings at the next start Setel ulang semua pengaturan di awal berikutnya Copyright and license from pictures Hak cipta dan lisensi dari gambar Megabyte Megabita Screencast Siaran layar Player Pemain Log Catatan Automatically Secara otomatis Create images of tabs Buat gambar tab License information Informasi lisensi ON NYALA OFF MATI Global keyboard shortcuts Pintasan keyboard global Assigned shortcut keys. Tombol pintasan yang ditetapkan. Keyboard shortcut not assigned or assigned more than once. Pintasan keyboard tidak ditetapkan atau ditetapkan lebih dari satu kali. If it shows assigned but does not work, it is being used by another program. Jika ditampilkan ditugaskan tetapi tidak berfungsi, itu sedang digunakan oleh program lain. Snapshot Foto Imagepath Fotopath Hide this window Sembunyikan jendela ini Seconds wait before recording Beberapa detik menunggu sebelum merekam license Copyright and license from pictures Hak cipta dan lisensi dari gambar player Play Mainkan Pause Jeda Stop Berhenti Open File Buka file Fullscreen Layar penuh Previous frame Bingkai sebelumnya Next frame Bingkai berikutnya Mute Bisukan Move menu Pindahkan menu vokoscreenNG-3.7.0/src/language/it_IT.ts000066400000000000000000000450301444746353100200730ustar00rootroot00000000000000 QvkAudioController Select one or more devices Seleziona uno o più dispositivi QvkCameraController Camera Webcam QvkCameraSingle Remove window frame Rimuovi bordo finestra Flip vertical Capovolgi verticale Flip horizontal Capovolgi orizzontale Invert Inverti Gray Grigio Black-and-white Bianco e nero Switch to Window Passa a Finestra Switch to Fullscreen Passa a Schermo Intero QvkCameraWindow Switch to Window Passa a Finestra Switch to Fullscreen Passa a Schermo Intero Camera Webcam QvkCiscoFinishDialog The setup was successful. La configurazione ha avuto successo. Close this window and start vokoscreenNG again. Chiudere questa finestra e riavviare vokoscreenNG. Have fun with vokoscreenNG Buon divertimento con vokoscreenNG QvkDirectSoundController Select one or more devices Seleziona uno o più dispositivi QvkHelp Help Aiuto QvkImageFromTabs No filemanager found. Nessun filemanager trovato. Please install a filemanager. Installa un filemanager. QvkLimitDiskFreeSpace Warning Attenzione The recording is not started, not enough free disk space. Registrazione non è stata avviata. Spazio disco insufficiente. The free disk space limit is reached. Limite spazio disco libero raggiunto Limit of free disk space Limite di spazio disco libero Megabyte Megabyte The recording was stopped, not enough free disk space. Registrazione interrotta. Spazio disco insufficiente QvkMainWindow Fullscreen Schermo intero Window Finestra No filemanager found. Display a MessageBox, if not found a filemanager. Filemanager non trovato. Please install a filemanager. Si prega di installare un filemanager. Sourcecode Codice sorgente Homepage Pagina iniziale Translations Traduzioni Donate Fai una donazione QvkPulseAudioWatcher Select one or more devices Seleziona uno o più dispositivi QvkRegionChoise Area Area QvkRegionChoise_wl Area Area QvkSnapshot No filemanager found. Filemanager non trovato. Please install a filemanager. Si prega di installare un filemanager. QvkSystray Start Inizia Stop Ferma Pause Pausa Continue Continua Exit Esci Camera Webcam Magnification Ingrandimento QvkSystrayAlternative Start Inizia Stop Interrompi Pause Pausa Continue Continua Exit Esci Camera Webcam Magnification Ingrandisci QvkWASAPIController Select one or more devices Seleziona uno o più dispositivi cameraSettingsDialog Dialog Finestra di dialogo Impostazioni fotocamera Flip horizontal Capovolgi orizzontale Flip vertical Capovolgi verticale Invert Inverti Gray Grigio Black-and-white Bianco e nero Remove window frame Rimuovi bordo finestra Camera settings Impostazioni camera formMainWindow Area Area Reset Ripristina Magnification Ingrandisci Countdown Avvio ritardo di Video size: Dimensioni video: Free disk space: Spazio disco libero: Information Informazione Record Time: Tempo di registrazione: Audio Audio Frames Fotogrammi Videocodec Codifica video Format Formato video Audiocodec Codificatore audio Quality Qualità Do not record mouse cursor Non registrare il cursore del mouse Hour Ora Minute Minuto Start the timer Avvia il tempo Stop recording after Ferma la registrazione dopo Hours Ore Minutes Minuti Seconds Secondi Videopath Salva in Limit of free disk space Limite di spazio disco libero Show in systray Mostra nel vassoio di sistema Second wait before recording Secondi di attesa prima di registrare Look for updates Cerca aggiornamenti Help Aiuto Video Video Available Disponibile Not available Non disponibile Start Avvia Stop Ferma Pause Pausa Continue Continua Play Riproduci Folder Cartella Camera Webcam Invert Inverti Gray Grigio CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Riproduci ultima registrazione Open folder Apri cartella CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Ridotto a icona durante la registrazione Starts minimized Avvia a icona Flip horizontal Capovolgi orizzontale Flip vertical Capovolgi verticale Black-and-white Bianco e nero Remove window frame Rimuovi bordo finestra Donate Fai una donazione Reset all settings at the next start Ripristina tutte le impostazioni al prossimo avvio Copyright and license from pictures Copyright e licenza immagini Megabyte Megabyte Screencast Registra Schermo Player Lettore Log Registro eventi Automatically Automaticamente Create images of tabs Crea immagini delle schede License information Informazioni sulla licenza ON Acceso OFF Spento Global keyboard shortcuts Scorciatoie da tastiera globali Assigned shortcut keys. Tasti scorciatoia assegnati. Keyboard shortcut not assigned or assigned more than once. Scorciatoia da tastiera non assegnata o assegnata più volte. If it shows assigned but does not work, it is being used by another program. Se mostra l'assegnamento ma non funziona, significa che è usata da qualche altro programma. Snapshot Snapshot Imagepath Percorso immagine Hide this window Nascondi questa finestra Seconds wait before recording Secondi di attesa prima di registrare license Copyright and license from pictures Copyright e licenza immagini player Play Riproduci Pause Pausa Stop Ferma Open File Apri file Fullscreen Schermo intero Previous frame Fermo immagine precedente Next frame Fermo immagine successivo Mute Silenzia Move menu Sposta menu vokoscreenNG-3.7.0/src/language/ko_KR.ts000066400000000000000000000447421444746353100201010ustar00rootroot00000000000000 QvkAudioController Select one or more devices 1개 이상의 장치 선택 QvkCameraController Camera 카메라 QvkCameraSingle Remove window frame 창틀 제거 Flip vertical 상하 뒤집기 Flip horizontal 좌우 뒤집기 Invert 반전 Gray 회색 Black-and-white 흑백 Switch to Window 창으로 전환 Switch to Fullscreen 전체화면 전환 QvkCameraWindow Switch to Window 창으로 전환 Switch to Fullscreen 전체화면 전환 Camera 카메라 QvkCiscoFinishDialog The setup was successful. 설치를 성공적으로 마쳤습니다. Close this window and start vokoscreenNG again. 창을 닫고 vokoscreenNG를 다시 시작해 주세요. Have fun with vokoscreenNG vovkoscreenNG와 함께 즐겨요 QvkDirectSoundController Select one or more devices 1개 이상의 장치 선택 QvkHelp Help 도움말 QvkImageFromTabs No filemanager found. 파일 탐색기가 없습니다. Please install a filemanager. 파일탐색기를 설치해 주세요. QvkLimitDiskFreeSpace Warning 경고 The recording is not started, not enough free disk space. 여유 디스크 공간이 충분하지 않아서, 녹화를 시작하지 않았습니다. The free disk space limit is reached. 여유 디스크 공간이 부족합니다. Limit of free disk space 여유 디스크 공간 제한 Megabyte 메가바이트 The recording was stopped, not enough free disk space. 여유 디스크 공간이 충분하지 않아서, 녹화가 중단됐습니다. QvkMainWindow Fullscreen 전체화면 Window No filemanager found. Display a MessageBox, if not found a filemanager. 파일 탐색기가 없습니다. Please install a filemanager. 파일탐색기를 설치해 주세요. Sourcecode 소스코드 Homepage 홈페이지 Translations 번역 Donate 후원하기 QvkPulseAudioWatcher Select one or more devices 1개 이상의 장치 선택 QvkRegionChoise Area 영역 QvkRegionChoise_wl Area 영역 QvkSnapshot No filemanager found. 파일 탐색기가 없습니다. Please install a filemanager. 파일탐색기를 설치해 주세요. QvkSystray Start 시작 Stop 중지 Pause 일시정지 Continue 계속하기 Exit 종료 Camera 카메라 Magnification 확대 QvkSystrayAlternative Start 시작 Stop 중지 Pause 일시정지 Continue 계속하기 Exit 종료 Camera 카메라 Magnification 확대 QvkWASAPIController Select one or more devices 1개 이상의 장치 선택 cameraSettingsDialog Dialog 대화창 Flip horizontal 좌우 뒤집기 Flip vertical 상하 뒤집기 Invert 반전 Gray 회색 Black-and-white 흑백 Remove window frame 창틀 제거 Camera settings 카메라 설정 formMainWindow Area 영역 Reset 초기화 Magnification 확대 Countdown 카운트다운 Video size: 비디오 크기: Free disk space: 남는 디스크 공간: Information 정보 Record Time: 녹화 시간: Audio 음성 Frames 프레임수 Videocodec 영상코덱 Format 포맷 Audiocodec 음성코덱 Quality 품질 Do not record mouse cursor 마우스 커서 녹화하지 않기 Hour Minute Start the timer 타이머 시작 Stop recording after 녹화 후 중지 Hours 시간 Minutes Seconds Videopath 영상 경로 Limit of free disk space 사용 가능한 디스크 공간 제한 Show in systray 트레이에 표시하기 Second wait before recording 몇 초 후 녹화 시작 Look for updates 업데이트 찾기 Help 도움말 Video 영상 Available 사용가능 Not available 사용불가 Start 시작 Stop 중지 Pause 일시정지 Continue 계속하기 Play 재생 Folder 폴더 Camera 카메라 Invert 반전 Gray 회색 CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record 마지막 녹화 재생 Open folder 폴더 열기 CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts 녹화 시작할 때 창 최소화 Starts minimized 창 최소화로 시작하기 Flip horizontal 좌우 반전 Flip vertical 상하 반전 Black-and-white 흑백 Remove window frame 창틀 제거 Donate 후원하기 Reset all settings at the next start 다음 시작시 모든 설정 초기화 Copyright and license from pictures 이미지의 저작권과 라이선스 Megabyte 메가바이트 Screencast 스크린캐스트 Player 플레이어 Log 로그 Automatically 자동으로 Create images of tabs 탭 이미지 만들기 License information 라이선스 정보 ON ON OFF OFF Global keyboard shortcuts 전역 키보드 단축키 Assigned shortcut keys. 할당된 단축키. Keyboard shortcut not assigned or assigned more than once. 키보드 단축키가 할당되지 않았거나, 2개 이상 할당됨. If it shows assigned but does not work, it is being used by another program. 할당된 것으로 표시되지만 작동하지 않는다면, 다른 프로그램에서 사용 중인 것입니다. Snapshot 스냅샷 Imagepath 이미지경로 Hide this window 이 창 숨기기 Seconds wait before recording 몇 초 후 녹화 시작 license Copyright and license from pictures 이미지의 저작권과 라이선스 player Play 재생 Pause 일시정지 Stop 중지 Open File 파일 열기 Fullscreen 전체화면 Previous frame 이전 프레임 Next frame 다음 프레임 Mute 음소거 Move menu 메뉴 이동하기 vokoscreenNG-3.7.0/src/language/lt.ts000066400000000000000000000452051444746353100175060ustar00rootroot00000000000000 QvkAudioController Select one or more devices Pasirinkite vieną ar daugiau įrenginių QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Šalinti lango rėmelį Flip vertical Apversti vertikaliai Flip horizontal Apversti horizontaliai Invert Invertuoti Gray Pilka Black-and-white Juoda ir balta Switch to Window Perjungti į langą Switch to Fullscreen Perjungti į visą ekraną QvkCameraWindow Switch to Window Perjungti į langą Switch to Fullscreen Perjungti į visą ekraną Camera Kamera QvkCiscoFinishDialog The setup was successful. Sąranka buvo sėkminga. Close this window and start vokoscreenNG again. Užverkite šį langą ir dar kartą paleiskite vokoscreenNG. Have fun with vokoscreenNG Gero laiko su vokoscreenNG QvkDirectSoundController Select one or more devices Pasirinkite vieną ar daugiau įrenginių QvkHelp Help Žinynas QvkImageFromTabs No filemanager found. Nerasta jokios failų tvarkytuvės. Please install a filemanager. Įdiekite failų tvarkytuvę. QvkLimitDiskFreeSpace Warning Įspėjimas The recording is not started, not enough free disk space. Įrašinėjimas nepradėtas, trūksta laisvos vietos diske. The free disk space limit is reached. Yra pasiekta laisvos vietos diske riba. Limit of free disk space Laisvos vietos diske apribojimas Megabyte Megabaitų The recording was stopped, not enough free disk space. Įrašinėjimas buvo sustabdytas, trūksta laisvos vietos diske. QvkMainWindow Fullscreen Visas ekranas Window Langas No filemanager found. Display a MessageBox, if not found a filemanager. Nerasta jokios failų tvarkytuvės. Please install a filemanager. Įdiekite failų tvarkytuvę. Sourcecode Pirminis kodas Homepage Svetainė Translations Vertimai Donate Paaukoti QvkPulseAudioWatcher Select one or more devices Pasirinkite vieną ar daugiau įrenginių QvkRegionChoise Area Sritis QvkRegionChoise_wl Area Sritis QvkSnapshot No filemanager found. Nerasta jokios failų tvarkytuvės. Please install a filemanager. Įdiekite failų tvarkytuvę. QvkSystray Start Pradėti Stop Stabdyti Pause Pristabdyti Continue Tęsti Exit Išeiti Camera Kamera Magnification Didinimas QvkSystrayAlternative Start Pradėti Stop Stabdyti Pause Pristabdyti Continue Tęsti Exit Išeiti Camera Kamera Magnification Didinimas QvkWASAPIController Select one or more devices Pasirinkite vieną ar daugiau įrenginių cameraSettingsDialog Dialog Dialogas Flip horizontal Apversti horizontaliai Flip vertical Apversti vertikaliai Invert Invertuoti Gray Pilka Black-and-white Juoda ir balta Remove window frame Šalinti lango rėmelį Camera settings Kameros nustatymai formMainWindow Area Sritis Reset Atstatyti Magnification Didinimas Countdown Atvirkštinis skaičiavimas Video size: Vaizdo dydis: Free disk space: Laisva vieta diske: Information Informacija Record Time: Įrašinėjimo laikas: Audio Garsas Frames Kadrai Videocodec Vaizdo kodekas Format Formatas Audiocodec Garso kodekas Quality Kokybė Do not record mouse cursor Neįrašinėti pelės žymeklio Hour Val. Minute Min. Start the timer Paleisti laikmatį Stop recording after Stabdyti įrašinėjimą po Hours Val. Minutes Min. Seconds Sek. Videopath Vaizdo įrašo kelias Limit of free disk space Laisvos vietos diske apribojimas Show in systray Rodyti sistemos dėkle Second wait before recording Luktelėti sekundėlę prieš įrašinėjant Look for updates Tikrinti ar yra atnaujinimų Help Žinynas Video Vaizdas Available Prieinama Not available Neprieinama Start Pradėti Stop Stabdyti Pause Pristabdyti Continue Tęsti Play Groti Folder Aplankas Camera Kamera Invert Invertuoti Gray Pilka CTRL+SHIFT+F10 VALD+LYG2+F10 CTRL+SHIFT+F11 VALD+LYG2+F11 CTRL+SHIFT+F12 VALD+LYG2+F12 Play last record Groti paskiausią įrašą Open folder Atverti aplanką CTRL+SHIFT+F8 VALD+LYG2+F8 Minimized when recording starts Prasidėjus įrašinėjimui, suskleisti Starts minimized Pasileidžia suskleista Flip horizontal Apversti horizontaliai Flip vertical Apversti vertikaliai Black-and-white Juoda ir balta Remove window frame Šalinti lango rėmelį Donate Paaukoti Reset all settings at the next start Kito paleidimo metu atstatyti visus nustatymus Copyright and license from pictures Autorių teisės ir licencijos iš paveikslų Megabyte Megabaitų Screencast Ekrano įrašas Player Grotuvas Log Žurnalas Automatically Automatiškai Create images of tabs Sukurti kortelių paveikslus License information Informacija apie licenciją ON ĮJUNGTA OFF IŠJUNGTA Global keyboard shortcuts Visuotiniai spartieji klavišai Assigned shortcut keys. Spartieji klavišai priskirti. Keyboard shortcut not assigned or assigned more than once. Spartusis klavišas nepriskirtas arba priskirtas daugiau kaip vieną kartą. If it shows assigned but does not work, it is being used by another program. Jei yra rodoma, jog jis yra priskirtas, o jis neveikia, vadinasi jį naudoja kita programa. Snapshot Momentinė kopija Imagepath Paveikslo kelias Hide this window Slėpti šį langą Seconds wait before recording Kiek sekundžių laukti, prieš įrašinėjant license Copyright and license from pictures Autorių teisės ir licencijos iš paveikslų player Play Groti Pause Pristabdyti Stop Stabdyti Open File Atverti failą Fullscreen Visas ekranas Previous frame Ankstesnis kadras Next frame Kitas kadras Mute Nutildyti Move menu Perkelti meniu vokoscreenNG-3.7.0/src/language/nb.ts000066400000000000000000000441771444746353100174750ustar00rootroot00000000000000 QvkAudioController Select one or more devices Velg én til flere enheter QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Fjern vindusramme Flip vertical Snu vertikalt Flip horizontal Snu horisontalt Invert Invertere Gray Grå Black-and-white Svart-hvit Switch to Window Bytt til vindu Switch to Fullscreen Bytt til fullskjerm QvkCameraWindow Switch to Window Bytt til vindu Switch to Fullscreen Bytt til fullskjerm Camera Kamera QvkCiscoFinishDialog The setup was successful. Oppsettet var vellykket. Close this window and start vokoscreenNG again. Lukk dette vinduet og start vokoscreenNG på nytt. Have fun with vokoscreenNG Ha det gøy med vokoscreenNG QvkDirectSoundController Select one or more devices Velg én til flere enheter QvkHelp Help Hjelp QvkImageFromTabs No filemanager found. Ingen filutforsker funnet. Please install a filemanager. Vennligst installere en filutforsker. QvkLimitDiskFreeSpace Warning Advarsel The recording is not started, not enough free disk space. Opptaket har ikke startet, for lite ledig diskplass. The free disk space limit is reached. Ledig diskplass grense nådd. Limit of free disk space Grense for ledig diskplass. Megabyte Megabyte The recording was stopped, not enough free disk space. Opptaket ble stoppet, for lite ledig diskplass. QvkMainWindow Fullscreen Fullskjerm Window Vindu No filemanager found. Display a MessageBox, if not found a filemanager. Ingen filutforsker funnet. Please install a filemanager. Vennligst installere en filutforsker. Sourcecode Sourcekode Homepage Hjemmeside Translations Oversettelser Donate Donasjon QvkPulseAudioWatcher Select one or more devices Velg én til flere enheter QvkRegionChoise Area Område QvkRegionChoise_wl Area Område QvkSnapshot No filemanager found. Ingen filutforsker funnet. Please install a filemanager. Vennligst installere en filutforsker. QvkSystray Start Start Stop Stoppe Pause Pause Continue Fortsett Exit Avslutt Camera Kamera Magnification Forstørrelse QvkSystrayAlternative Start Start Stop Stoppe Pause Pause Continue Fortsett Exit Avslutt Camera Kamera Magnification Forstørrelse QvkWASAPIController Select one or more devices Velg én til flere enheter cameraSettingsDialog Dialog Dialog Flip horizontal Snu horisontalt Flip vertical Snu vertikalt Invert Invertere Gray Grå Black-and-white Svart-hvit Remove window frame Fjern vindusramme Camera settings Kamera instillinger formMainWindow Area Område Reset Nullstille Magnification Forstørrelse Countdown Nedtelling Video size: Videostørrelse: Free disk space: Ledig diskplass: Information Informasjon Record Time: Opptakstid: Audio Lyd Frames Rammer Videocodec Videokodek Format Format Audiocodec Lydkodek Quality Kvalitet Do not record mouse cursor ikke ta opp musepeker Hour Time Minute Minutt Start the timer Start timeren Stop recording after Stopp opptak etter Hours Timer Minutes Minutter Seconds Sekunder Videopath Video Sti Limit of free disk space Grense for ledig diskplass. Show in systray Vis i systemstatusfeltet Second wait before recording Sekund venting før opptak Look for updates Se etter oppdateringer Help Hjelp Video Video Available Tilgjengelig Not available Ikke tilgjengelig Start Start Stop Stoppe Pause Pause Continue Fortsett Play Spille Folder Mappe Camera Kamera Invert Invertere Gray Grå CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Spill av siste opptak Open folder Åpne mappe CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimert når opptak starter Starts minimized Starter minimert Flip horizontal Snu horisontalt Flip vertical Snu vertikalt Black-and-white Svart-hvit Remove window frame Fjern vindusramme Donate Donasjon Reset all settings at the next start Nullstille alle innstillinger ved neste oppstart Copyright and license from pictures Opphavsrett og lisens fra bilder Megabyte Megabyte Screencast Skjermopptak Player Spiller Log Logg Automatically Automatisk Create images of tabs Lag bilder av faner License information Lisensinformasjon ON OFF AV Global keyboard shortcuts Globale tastatur snarveier Assigned shortcut keys. Tildelte snarvei taster. Keyboard shortcut not assigned or assigned more than once. Tastesnarvei ikke tildelt eller tildelt mer enn en gang. If it shows assigned but does not work, it is being used by another program. Hvis den vises som tildelt, men ikke virker, er den i bruk av et annet program. Snapshot Øyeblikksbilde Imagepath Bildesti Hide this window Skjul dette vinduet Seconds wait before recording Sekunder venter før opptak license Copyright and license from pictures Opphavsrett og lisens fra bilder player Play Spille Pause Pause Stop Stoppe Open File Åpne Fil Fullscreen Fullskjerm Previous frame Forrige bilde Next frame Neste bilde Mute Stilne Move menu Flytt meny vokoscreenNG-3.7.0/src/language/nl_BE.ts000066400000000000000000000446431444746353100200530ustar00rootroot00000000000000 QvkAudioController Select one or more devices Selecteer één of meer apparaten QvkCameraController Camera Camera QvkCameraSingle Remove window frame Vensterrand verwijderen Flip vertical Verticaal spiegelen Flip horizontal Horizontaal spiegelen Invert Omkeren Gray Grijs Black-and-white Zwart-wit Switch to Window Vensterweergave Switch to Fullscreen Schermvullende weergave QvkCameraWindow Switch to Window Vensterweergave Switch to Fullscreen Schermvullende weergave Camera Camera QvkCiscoFinishDialog The setup was successful. Het instellen is voltooid. Close this window and start vokoscreenNG again. Sluit dit venster en herstart vokoscreenNG. Have fun with vokoscreenNG Veel plezier met vokoscreenNG QvkDirectSoundController Select one or more devices Selecteer één of meer apparaten QvkHelp Help Hulp QvkImageFromTabs No filemanager found. Er is geen bestandsbeheerder aangetroffen. Please install a filemanager. Installeer een bestandsbeheerder. QvkLimitDiskFreeSpace Warning Waarschuwing The recording is not started, not enough free disk space. De opname kan niet worden gestart omdat er onvoldoende vrije schijfruimte is. The free disk space limit is reached. De vrije schijfruimte limiet is bereikt. Limit of free disk space Vrije schijfruimte limiet Megabyte Megabyte The recording was stopped, not enough free disk space. De opname is gestopt omdat er onvoldoende vrije schijfruimte is. QvkMainWindow Fullscreen Volledig scherm Window Venster No filemanager found. Display a MessageBox, if not found a filemanager. Er is geen bestandsbeheerder aangetroffen. Please install a filemanager. Installeer een bestandsbeheerder. Sourcecode Broncode Homepage Website Translations Vertalingen Donate Doneren QvkPulseAudioWatcher Select one or more devices Selecteer één of meer apparaten QvkRegionChoise Area Gebied QvkRegionChoise_wl Area Gebied QvkSnapshot No filemanager found. Er is geen bestandsbeheerder aangetroffen. Please install a filemanager. Installeer een bestandsbeheerder. QvkSystray Start Start Stop Stop Pause Pauzeren Continue Hervatten Exit Afsluiten Camera Camera Magnification Vergroting QvkSystrayAlternative Start Start Stop Stop Pause Pauze Continue Hervatten Exit Afsluiten Camera Camera Magnification Vergroting QvkWASAPIController Select one or more devices Selecteer één of meer apparaten cameraSettingsDialog Dialog Dialoogvenster Flip horizontal Horizontaal spiegelen Flip vertical Verticaal spiegelen Invert Omkeren Gray Grijs Black-and-white Zwart-wit Remove window frame Vensterrand verwijderen Camera settings Camera instellingen formMainWindow Area Gebied Reset Standaardwaarden Magnification Vergroting Countdown Aftellen Video size: Videoformaat: Free disk space: Vrije schijfruimte: Information Informatie Record Time: Opnametijd: Audio Audio Frames Frames Videocodec Videocodec Format Formaat Audiocodec Audiocodec Quality Kwaliteit Do not record mouse cursor Muis cursor niet opnemen Hour Uur Minute Minuut Start the timer Timer starten Stop recording after Opname stoppen na Hours Uur Minutes Minuten Seconds Seconden Videopath Video map Limit of free disk space Vrije schijfruimte limiet Show in systray Tonen in systeemvak Second wait before recording Aantal seconden voordat opname start Look for updates Controleren op updates Help Hulp Video Video Available Beschikbaar Not available Niet beschikbaar Start Start Stop Stop Pause Pauzeren Continue Hervatten Play Afspelen Folder Map Camera Camera Invert Omkeren Gray Grijs CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Laatste opname afspelen Open folder Map openen CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimaliseren zodra opname start Starts minimized Geminimaliseerd starten Flip horizontal Horizontaal spiegelen Flip vertical Verticaal spiegelen Black-and-white Zwart-wit Remove window frame Vensterrand verwijderen Donate Doneren Reset all settings at the next start Alle instellingen herstellen bij opnieuw opstarten Copyright and license from pictures Copyright en licentie uit afbeeldingen Megabyte Megabyte Screencast Screencast Player Speler Log Log Automatically Automatisch Create images of tabs Afbeeldingen maken van tabbladen License information Licentie informatie ON AAN OFF UIT Global keyboard shortcuts Globale sneltoetsen Assigned shortcut keys. Toegewezen sneltoetsen. Keyboard shortcut not assigned or assigned more than once. De sneltoets is niet of meer dan eens toegewezen. If it shows assigned but does not work, it is being used by another program. Als de sneltoets wordt aangeduid als toegewezen maar niet werkt, dan is de sneltoets reeds in gebruik door een ander programma. Snapshot Schermafbeelding Imagepath Afbeeldingslocatie Hide this window Venster verbergen Seconds wait before recording Aantal seconden voordat opname start license Copyright and license from pictures Copyright en licentie uit afbeeldingen player Play Afspelen Pause Pauzeren Stop Stop Open File Bestand openen Fullscreen Volledig scherm Previous frame Vorig frame Next frame Volgend frame Mute Dempen Move menu Menu verplaatsen vokoscreenNG-3.7.0/src/language/nl_NL.ts000066400000000000000000000446571444746353100201030ustar00rootroot00000000000000 QvkAudioController Select one or more devices Selecteer één of meer apparaten QvkCameraController Camera Camera QvkCameraSingle Remove window frame Vensterrand verwijderen Flip vertical Verticaal spiegelen Flip horizontal Horizontaal spiegelen Invert Omkeren Gray Grijs Black-and-white Zwart-wit Switch to Window Vensterweergave Switch to Fullscreen Schermvullende weergave QvkCameraWindow Switch to Window Vensterweergave Switch to Fullscreen Schermvullende weergave Camera Camera QvkCiscoFinishDialog The setup was successful. Het instellen is voltooid. Close this window and start vokoscreenNG again. Sluit dit venster en herstart vokoscreenNG. Have fun with vokoscreenNG Veel plezier met vokoscreenNG QvkDirectSoundController Select one or more devices Selecteer één of meer apparaten QvkHelp Help Hulp QvkImageFromTabs No filemanager found. Er is geen bestandsbeheerder aangetroffen. Please install a filemanager. Installeer een bestandsbeheerder. QvkLimitDiskFreeSpace Warning Waarschuwing The recording is not started, not enough free disk space. De opname kan niet worden gestart omdat er onvoldoende vrije schijfruimte is. The free disk space limit is reached. Het vrijeschijfruimtelimiet is bereikt. Limit of free disk space Vrijeschijfruimtelimiet Megabyte Megabyte The recording was stopped, not enough free disk space. De opname is gestopt omdat er onvoldoende vrije schijfruimte is. QvkMainWindow Fullscreen Beeldvullend Window Venster No filemanager found. Display a MessageBox, if not found a filemanager. Er is geen bestandsbeheerder aangetroffen. Please install a filemanager. Installeer een bestandsbeheerder. Sourcecode Broncode Homepage Website Translations Vertalingen Donate Doneren QvkPulseAudioWatcher Select one or more devices Selecteer één of meer apparaten QvkRegionChoise Area Gebied QvkRegionChoise_wl Area Gebied QvkSnapshot No filemanager found. Er is geen bestandsbeheerder aangetroffen. Please install a filemanager. Installeer een bestandsbeheerder. QvkSystray Start Starten Stop Stoppen Pause Onderbreken Continue Hervatten Exit Afsluiten Camera Camera Magnification Vergroting QvkSystrayAlternative Start Starten Stop Stoppen Pause Onderbreken Continue Hervatten Exit Afsluiten Camera Camera Magnification Vergroting QvkWASAPIController Select one or more devices Selecteer één of meer apparaten cameraSettingsDialog Dialog Dialoogvenster Flip horizontal Horizontaal spiegelen Flip vertical Verticaal spiegelen Invert Omkeren Gray Grijs Black-and-white Zwart-wit Remove window frame Vensterrand verwijderen Camera settings Camera-instellingen formMainWindow Area Gebied Reset Standaardwaarden Magnification Vergroting Countdown Aftellen Video size: Videoformaat: Free disk space: Vrije schijfruimte: Information Informatie Record Time: Opnametijd: Audio Audio Frames Frames Videocodec Videocodec Format Formaat Audiocodec Audiocodec Quality Kwaliteit Do not record mouse cursor Cursor verbergen Hour Uur Minute Minuut Start the timer Tijdklok starten Stop recording after Opname stoppen na Hours Uur Minutes Minuten Seconds Seconden Videopath Videomap Limit of free disk space Vrijeschijfruimtelimiet Show in systray Tonen in systeemvak Second wait before recording Aantal seconden voordat opname start Look for updates Controleren op updates Help Hulp Video Video Available Beschikbaar Not available Niet beschikbaar Start Starten Stop Stoppen Pause Onderbreken Continue Hervatten Play Afspelen Folder Map Camera Camera Invert Omkeren Gray Grijs CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Recentste opname afspelen Open folder Map openen CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimaliseren zodra opname start Starts minimized Geminimaliseerd starten Flip horizontal Horizontaal spiegelen Flip vertical Verticaal spiegelen Black-and-white Zwart-wit Remove window frame Vensterrand verwijderen Donate Doneren Reset all settings at the next start Alle instellingen herstellen bij opnieuw opstarten Copyright and license from pictures Copyright en licentie uit beelden Megabyte Megabyte Screencast Screencast Player Speler Log Logboek Automatically Automatisch Create images of tabs Afbeeldingen maken van tabbladen License information Licentie-informatie ON AAN OFF UIT Global keyboard shortcuts Globale sneltoetsen Assigned shortcut keys. De sneltoetsen zijn toegewezen. Keyboard shortcut not assigned or assigned more than once. De sneltoets is niet of meer dan eens toegewezen. If it shows assigned but does not work, it is being used by another program. Als de sneltoets wordt aangeduid als toegewezen maar niet werkt, dan is de sneltoets reeds in gebruik door een ander programma. Snapshot Schermfoto Imagepath Afbeeldingslocatie Hide this window Venster verbergen Seconds wait before recording Aantal seconden voordat opname start license Copyright and license from pictures Copyright en licentie uit beelden player Play Afspelen Pause Pauzeren Stop Stoppen Open File Bestand openen Fullscreen Schermvullend Previous frame Vorig frame Next frame Volgend frame Mute Dempen Move menu Menu verplaatsen vokoscreenNG-3.7.0/src/language/pl_PL.ts000066400000000000000000000444601444746353100200770ustar00rootroot00000000000000 QvkAudioController Select one or more devices Wybierz jedno lub wiele urządzeń QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Usuń ramkę okna Flip vertical Odwróć pionowo Flip horizontal Odwróć poziomo Invert Odwróć Gray Szary Black-and-white Czarno-białe Switch to Window Tryb okna Switch to Fullscreen Tryb pełnoekranowy QvkCameraWindow Switch to Window Tryb okna Switch to Fullscreen Tryb pełnoekranowy Camera Kamera QvkCiscoFinishDialog The setup was successful. Konfiguracja powiodła się Close this window and start vokoscreenNG again. Zamknij okno i ponownie uruchom vokoscreenNG. Have fun with vokoscreenNG Baw się dobrze z vokoscreenNG QvkDirectSoundController Select one or more devices Wybierz jedno lub wiele urządzeń QvkHelp Help Pomoc QvkImageFromTabs No filemanager found. Brak menedżera plików. Please install a filemanager. Zainstaluj menedżer plików. QvkLimitDiskFreeSpace Warning Uwaga The recording is not started, not enough free disk space. Za mało miejsca na dysku, nagrywanie nie zostało rozpoczęte. The free disk space limit is reached. Osiągnięgo limit miejsca na dysku. Limit of free disk space Limit miejsca na dysku Megabyte Megabajt The recording was stopped, not enough free disk space. Nagrywanie zatrzymane, za mało miejsca na dysku. QvkMainWindow Fullscreen Pełny ekran Window Okno No filemanager found. Display a MessageBox, if not found a filemanager. Brak menedżera plików. Please install a filemanager. Zainstaluj menedżer plików. Sourcecode Kod źródłowy Homepage Strona domowa Translations Tłumaczenia Donate Darowizna QvkPulseAudioWatcher Select one or more devices Wybierz jedno lub wiele urządzeń QvkRegionChoise Area Obszar QvkRegionChoise_wl Area Obszar QvkSnapshot No filemanager found. Brak menedżera plików. Please install a filemanager. Zainstaluj menedżer plików. QvkSystray Start Start Stop Stop Pause Pauza Continue Kontynuuj Exit Zakończ Camera Kamera Magnification Powiększenie QvkSystrayAlternative Start Start Stop Stop Pause Pauza Continue Kontynuuj Exit Zakończ Camera Kamera Magnification Powiększenie QvkWASAPIController Select one or more devices Wybierz jedno lub wiele urządzeń cameraSettingsDialog Dialog Dialog Flip horizontal Przerzuć horyzontalnie Flip vertical Przerzuć pionowo Invert Odwróć Gray Szary Black-and-white Czarno-białe Remove window frame Usuń ramkę okna Camera settings Ustawienia kamery formMainWindow Area Obszar Reset Resetuj Magnification Powiększenie Countdown Odliczanie Video size: Rozmiar wideo: Free disk space: Wolne miejsce na dysku: Information Informacje Record Time: Czas nagrania: Audio Dźwięk Frames Klatki Videocodec Kodek wideo Format Format Audiocodec Kodek audio Quality Jakość Do not record mouse cursor Nie nagrywaj kursora myszy Hour Godzina Minute Minuta Start the timer Włącz odliczanie Stop recording after Zakończ nagrywanie po Hours Godzin Minutes Minut Seconds Sekund Videopath Zapisz nagranie w Limit of free disk space Limit miejsca na dysku Show in systray Pokazuj w panelu systemowym Second wait before recording Sekund do nagrania Look for updates Sprawdź aktualizacje Help Pomoc Video Wideo Available Dostępne Not available Niedostępne Start Start Stop Stop Pause Pauza Continue Kontynuuj Play Odtwórz Folder Folder Camera Kamera Invert Odwróć Gray Szary CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Odtwórz ostatnie nagranie Open folder Otwórz folder CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Zminimalizuj po rozpoczęniu nagrania Starts minimized Startuje zminimalizowany Flip horizontal Odwróć poziomo Flip vertical Odwróć pionowo Black-and-white Czarno-białe Remove window frame Usuń ramkę okna Donate Darowizna Reset all settings at the next start Zresetuj ustawienia przy następnym uruchomieniu Copyright and license from pictures Prawa autorskie i licencja z obrazu Megabyte Megabajt Screencast Przesyłanie ekranu Player Odtwarzacz Log Log Automatically Automatycznie Create images of tabs Wykonaj rzut obrazu kart License information Informacja o licencji ON WŁ. OFF WYŁ. Global keyboard shortcuts Globalne skróty klawiaturowe Assigned shortcut keys. Przypisane klawisze skrótów. Keyboard shortcut not assigned or assigned more than once. Skrót klawiaturowy nie został przypisany lub przypisany więcej niż jeden raz If it shows assigned but does not work, it is being used by another program. Jeśli został przypisany, ale nie działa, jest używany przez inny program. Snapshot Migawka Imagepath Ścieżka obrazu Hide this window Ukryj to okno Seconds wait before recording Sekundy oczekiwania przed rozpoczęciem nagrania license Copyright and license from pictures Prawa autorskie i licencja z obrazu player Play Odtwórz Pause Pauza Stop Stop Open File Otwórz plik Fullscreen Pełny ekran Previous frame Poprzednia klatka Next frame Następna klatka Mute Wycisz Move menu Przesuń menu vokoscreenNG-3.7.0/src/language/pt.ts000066400000000000000000000451241444746353100175120ustar00rootroot00000000000000 QvkAudioController Select one or more devices Selecione um ou mais dispositivos QvkCameraController Camera Camera QvkCameraSingle Remove window frame Remover a moldura da janela Flip vertical Girar vertical Flip horizontal Girar horizontal Invert Inverter Gray Cinzento Black-and-white Preto e branco Switch to Window Mudar para janela Switch to Fullscreen Mudar para ecrã inteiro QvkCameraWindow Switch to Window Mudar para janela Switch to Fullscreen Mudar para ecrã inteiro Camera Camera QvkCiscoFinishDialog The setup was successful. A configuração foi bem sucedida. Close this window and start vokoscreenNG again. Feche esta janela e inicie vokoscreenNG novamente. Have fun with vokoscreenNG Divirta-se com vokoscreenNG QvkDirectSoundController Select one or more devices Seleccione um ou mais dispositivos QvkHelp Help Ajuda QvkImageFromTabs No filemanager found. Não foi encontrado nenhum gestor de ficheiros. Please install a filemanager. Por favor, instale um gestor de ficheiros. QvkLimitDiskFreeSpace Warning Aviso The recording is not started, not enough free disk space. A gravação não é iniciada, não há espaço livre em disco suficiente. The free disk space limit is reached. Foi alcançado o limite de espaço em disco. Limit of free disk space Limite de espaço livre em disco Megabyte Megabyte The recording was stopped, not enough free disk space. A gravação foi parada, sem espaço em disco disponível. QvkMainWindow Fullscreen Ecrã inteiro Window Janela No filemanager found. Display a MessageBox, if not found a filemanager. Nenhum gestor de ficheiros encontrado. Please install a filemanager. Por favor, instale um gestor de ficheiros. Sourcecode Código-fonte Homepage Página inicial Translations Traduções Donate Doar QvkPulseAudioWatcher Select one or more devices Selecione um ou mais dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. Não foi encontrado um gestor de ficheiros. Please install a filemanager. Por favor, instale um gestor de ficheiros. QvkSystray Start Começar Stop Parar Pause Pausa Continue Continuar Exit Sair Camera Camera Magnification Ampliação QvkSystrayAlternative Start Começar Stop Parar Pause Pausa Continue Continuar Exit Sair Camera Camera Magnification Ampliação QvkWASAPIController Select one or more devices Selecione um ou mais dispositivos cameraSettingsDialog Dialog Diálogo Flip horizontal Girar horizontal Flip vertical Girar vertical Invert Inverter Gray Cinzento Black-and-white Preto e branco Remove window frame Remover a moldura da janela Camera settings Configurações da câmara formMainWindow Area Área Reset Restabelecer Magnification Ampliação Countdown Contagem decrescente Video size: Tamanho do vídeo: Free disk space: Espaço de disco disponível: Information Informação Record Time: Tempo de gravação: Audio Áudio Frames Imagens Videocodec Codec de vídeo Format Formato Audiocodec Codec de áudio Quality Qualidade Do not record mouse cursor Não gravar o cursor do rato Hour Hora Minute Minuto Start the timer Iniciar o cronómetro Stop recording after Parar a gravação após Hours Horas Minutes Minutos Seconds Segundos Videopath Caminho do vídeo Limit of free disk space Limite do espaço em disco disponível Show in systray Mostrar na barra de tarefas Second wait before recording Esperar em segundos antes de iniciar a gravar Look for updates Procurar por atualizações Help Ajuda Video Vídeo Available Disponível Not available Indisponível Start Iniciar Stop Parar Pause Pausa Continue Continuar Play Reproduzir Folder Pasta Camera Câmara Invert Inverter Gray Cinzento CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproduzir a última gravação Open folder Abrir pasta CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizar quando a gravação Iniciar Starts minimized Iniciar minimizado Flip horizontal Girar horizontal Flip vertical Girar vertical Black-and-white Preto e branco Remove window frame Remover a moldura da janela Donate Doar Reset all settings at the next start Repor todas as configurações no próximo início Copyright and license from pictures Direitos de autor e licença das imagens Megabyte Megabyte Screencast Captura de ecrã em vídeo Player Leitor Log Registos Automatically Automaticamente Create images of tabs Criar imagens de guias License information Informação de licença ON ON OFF OFF Global keyboard shortcuts Atalhos globais de teclado Assigned shortcut keys. Teclas de atalho atribuídas. Keyboard shortcut not assigned or assigned more than once. Atalho de teclado não atribuído ou atribuído mais de uma vez. If it shows assigned but does not work, it is being used by another program. Se mostrar atribuído, mas não funciona, ele está sendo usado por outro programa. Snapshot Instantâneo Imagepath Caminho da imagem Hide this window Esconder esta janela Seconds wait before recording Espera em segundos antes de gravar license Copyright and license from pictures Direitos de autor e licença das imagens player Play Reproduzir Pause Pausa Stop Parar Open File Abrir Ficheiro Fullscreen Ecrã inteiro Previous frame Imagem anterior Next frame Imagem seguinte Mute Mudo Move menu Mover o menu vokoscreenNG-3.7.0/src/language/pt_BR.ts000066400000000000000000000451671444746353100201040ustar00rootroot00000000000000 QvkAudioController Select one or more devices Selecione um ou mais dispositivos QvkCameraController Camera Câmera QvkCameraSingle Remove window frame Remover moldura da janela Flip vertical Girar na vertical Flip horizontal Girar na horizontal Invert Inverter Gray Cinzento Black-and-white Preto e branco Switch to Window Mudar para Janela Switch to Fullscreen Alternar para Tela Cheia QvkCameraWindow Switch to Window Mudar para Janela Switch to Fullscreen Alternar para Tela Cheia Camera Câmera QvkCiscoFinishDialog The setup was successful. Instalação concluída com sucesso. Close this window and start vokoscreenNG again. Feche esta Janela e Inicie o vokoscreenNG novamente. Have fun with vokoscreenNG Divirta-se com o vokoscreenNG! QvkDirectSoundController Select one or more devices Selecione um ou mais dispositivos QvkHelp Help Ajuda QvkImageFromTabs No filemanager found. Nenhum gerenciador de arquivos encontrado. Please install a filemanager. Por favor instale um gerenciador de arquivos. QvkLimitDiskFreeSpace Warning Aviso The recording is not started, not enough free disk space. A gravação não foi iniciada, não há espaço suficiente no disco. The free disk space limit is reached. O limite de espaço livre em disco foi atingido. Limit of free disk space Limite de espaço livre no disco Megabyte Megabyte The recording was stopped, not enough free disk space. A gravação foi interrompida, não há espaço livre em disco. QvkMainWindow Fullscreen Tela cheia Window Janela No filemanager found. Display a MessageBox, if not found a filemanager. Nenhum gerenciador de arquivos encontrado. Please install a filemanager. Por favor instale um gerenciador de arquivos. Sourcecode Código-Fonte Homepage Homepage Translations Traduções Donate Doações QvkPulseAudioWatcher Select one or more devices Selecione um ou mais dispositivos QvkRegionChoise Area Área QvkRegionChoise_wl Area Área QvkSnapshot No filemanager found. Nenhum gerenciador de arquivos encontrado. Please install a filemanager. Por favor instale um gerenciador de arquivos. QvkSystray Start Iniciar Stop Parar Pause Pausar Continue Continuar Exit Sair Camera Câmera Magnification Zoom QvkSystrayAlternative Start Iniciar Stop Parar Pause Pausar Continue Continuar Exit Sair Camera Câmera Magnification Zoom QvkWASAPIController Select one or more devices Selecione um ou mais dispositivos cameraSettingsDialog Dialog Diálogo Flip horizontal Girar na horizontal Flip vertical Girar na vertical Invert Inverter Gray Cinzento Black-and-white Preto e branco Remove window frame Remover moldura da janela Camera settings Configurações da câmera formMainWindow Area Área Reset Reiniciar Magnification Zoom Countdown Contagem Regressiva Video size: Tamanho do vídeo: Free disk space: Espaço disponível no disco: Information Informação Record Time: Tempo de gravação: Audio Áudio Frames Quadros Videocodec Codec de vídeo Format Formato Audiocodec Codec de áudio Quality Qualidade Do not record mouse cursor Não gravar o cursor do mouse Hour Hora Minute Minuto Start the timer Iniciar o cronômetro Stop recording after Para gravação após Hours Horas Minutes Minutos Seconds Segundos Videopath Diretório do vídeo Limit of free disk space Limite de espaço livre no disco Show in systray Mostrar na área de notificação Second wait before recording Espera em segundos antes de começar gravando Look for updates Buscar atualizações Help Ajuda Video Vídeo Available Disponível Not available Não disponível Start Iniciar Stop Parar Pause Pausar Continue Continuar Play Reproduzir Folder Pasta Camera Câmera Invert Inverter Gray Cinzento CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Reproduzir a última gravação Open folder Abrir pasta CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimizar ao iniciar a gravação Starts minimized Iniciar minimizado Flip horizontal Girar na horizontal Flip vertical Girar na vertical Black-and-white Preto e branco Remove window frame Remover moldura da janela Donate Doações Reset all settings at the next start Redefinir todas as configurações na próxima inicialização Copyright and license from pictures Direitos autorais e licença das imagens Megabyte Megabyte Screencast Captura de Tela Player Reprodutor Log Log Automatically Automaticamente Create images of tabs Criar imagens das abas License information Infomações de Licença ON LIGADO OFF DESLIGADO Global keyboard shortcuts Atalhos de teclado globais Assigned shortcut keys. Atalhos de teclado atribuídos Keyboard shortcut not assigned or assigned more than once. Atalho de teclado não atribuído ou atribuído em duplicidade. If it shows assigned but does not work, it is being used by another program. Se o atalho foi atribuído, mas não funciona, ele pode estar sendo utilizado por outro programa. Snapshot Captura instantânea Imagepath Diretório da imagem Hide this window Ocultar esta janela Seconds wait before recording Aguarde segundos antes de gravar license Copyright and license from pictures Direitos autorais e licença das imagens player Play Reproduzir Pause Pausar Stop Parar Open File Abrir Arquivo Fullscreen Tela cheia Previous frame Quadro anterior Next frame Próximo quadro Mute Mudo Move menu Mover o menu vokoscreenNG-3.7.0/src/language/ru.ts000066400000000000000000000522601444746353100175140ustar00rootroot00000000000000 QvkAudioController Select one or more devices Выберите одно или несколько устройств QvkCameraController Camera Камера QvkCameraSingle Remove window frame Убрать рамку окна Flip vertical Отразить по вертикали Flip horizontal Отразить по горизонтали Invert Инвертировать Gray Чёрно-белое в оттенках серого Black-and-white Чёрно-белое двухцветное Switch to Window Переключиться в режим окна Switch to Fullscreen Переключиться в полноэкранный режим QvkCameraWindow Switch to Window Переключиться в режим окна Switch to Fullscreen Переключиться в полноэкранный режим Camera Камера QvkCiscoFinishDialog The setup was successful. Установка завершена успешно. Close this window and start vokoscreenNG again. Закройте это окно и снова запустите vokoscreenNG. Have fun with vokoscreenNG Получайте удовольствие от vokoscreenNG QvkDirectSoundController Select one or more devices Выберите одно или несколько устройств QvkHelp Help Справка QvkImageFromTabs No filemanager found. Файловый менеджер не найден. Please install a filemanager. Пожалуйста установите файловый менеджер. QvkLimitDiskFreeSpace Warning Предупреждение The recording is not started, not enough free disk space. Запись не началась, недостаточно свободного места на диске. The free disk space limit is reached. Достигнут предел свободного дискового пространства. Limit of free disk space Предел свободного дискового пространства Megabyte Мегабайт The recording was stopped, not enough free disk space. Запись остановлена, недостаточно свободного места на диске. QvkMainWindow Fullscreen Весь экран Window Окно No filemanager found. Display a MessageBox, if not found a filemanager. Файловый менеджер не найден Please install a filemanager. Пожалуйста установите файловый менеджер. Sourcecode Исходный код Homepage Веб-сайт Translations Переводы Donate Пожертвовать QvkPulseAudioWatcher Select one or more devices Выберите одно или несколько устройств QvkRegionChoise Area Область экрана QvkRegionChoise_wl Area Область экрана QvkSnapshot No filemanager found. Файловый менеджер не найден. Please install a filemanager. Пожалуйста установите файловый менеджер. QvkSystray Start Начать Stop Остановить Pause Приостановить Continue Продолжить Exit Выход Camera Камера Magnification Лупа QvkSystrayAlternative Start Начать Stop Остановить Pause Приостановить Continue Продолжить Exit Выход Camera Камера Magnification Лупа QvkWASAPIController Select one or more devices Выберите одно или несколько устройств cameraSettingsDialog Dialog Диалоговое окно Flip horizontal Отразить по горизонтали Flip vertical Отразить по вертикали Invert Инвертировать Gray Чёрно-белое в оттенках серого Black-and-white Чёрно-белое двухцветное Remove window frame Убрать рамку окна Camera settings Параметры камеры formMainWindow Area Область экрана Reset Сбросить Magnification Лупа Countdown Обратный отсчёт Video size: Размер видео: Free disk space: Свободное место на диске: Information Информация Record Time: Время записи: Audio Звук Frames Кадры Videocodec Видеокодек Format Формат Audiocodec Звуковой кодек Quality Качество Do not record mouse cursor Не записывать указатель мыши Hour Час Minute Минута Start the timer Запустить таймер Stop recording after Остановить запись после Hours Часов Minutes Минут Seconds Секунд Videopath Путь к видео: Limit of free disk space Предел свободного дискового пространства Show in systray Показывать значок в области уведомления Second wait before recording Секунд до начала записи Look for updates Проверить обновления Help Справка Video Видео Available Доступно Not available Недоступно Start Начать Stop Остановить Pause Приостановить Continue Продолжить Play Воспроизвести Folder Папка Camera Камера Invert Инвертировать Gray Чёрно-белое в оттенках серого CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Воспроизвести последнюю запись Open folder Открыть папку CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Сворачивать окно перед началом записи Starts minimized Запускать свёрнутым Flip horizontal Отразить по горизонтали Flip vertical Отразить по вертикали Black-and-white Чёрно-белое двухцветное Remove window frame Убрать рамку окна Donate Пожертвовать Reset all settings at the next start Сбросить все настройки при следующем запуске Copyright and license from pictures Авторское право и лицензия на использование изображений Megabyte Мегабайт Screencast Запись с экрана Player Проигрыватель Log Журнал Automatically Автоматически Create images of tabs Создать изображения вкладок License information Сведения о лицензии ON Включить OFF Выключить Global keyboard shortcuts Глобальные комбинации клавиш Assigned shortcut keys. Назначенные комбинации клавиш. Keyboard shortcut not assigned or assigned more than once. Комбинация клавиш не назначена или назначена более одного раза. If it shows assigned but does not work, it is being used by another program. Отображение фактически не работающей комбинации клавиш в качестве использующейся означает, что она используется другой программой Snapshot Снимок Imagepath Путь изображения Hide this window Скрыть это окно Seconds wait before recording Секунды ожидания перед записью license Copyright and license from pictures Авторское право и лицензия на использование изображений player Play Воспроизвести Pause Приостановить Stop Остановить Open File Открыть файл Fullscreen Во весь экран Previous frame Предыдущий кадр Next frame Следующий кадр Mute Без звука Move menu Переместить меню vokoscreenNG-3.7.0/src/language/ru_RU.ts000066400000000000000000000524731444746353100201300ustar00rootroot00000000000000 QvkAudioController Select one or more devices Выберите одно или несколько устройств QvkCameraController Camera Камера QvkCameraSingle Remove window frame Убрать рамку окна Flip vertical Отразить по вертикали Flip horizontal Отразить по горизонтали Invert Инвертировать Gray Чёрно-белое в оттенках серого Black-and-white Чёрно-белое двухцветное Switch to Window Переключиться в режим окна Switch to Fullscreen Переключиться в полноэкранный режим QvkCameraWindow Switch to Window Переключиться в режим окна Switch to Fullscreen Переключиться в полноэкранный режим Camera Камера QvkCiscoFinishDialog The setup was successful. Установка завершена успешно. Close this window and start vokoscreenNG again. Закройте это окно и снова запустите vokoscreenNG. Have fun with vokoscreenNG Получайте удовольствие от vokoscreenNG QvkDirectSoundController Select one or more devices Выберите одно или несколько устройств QvkHelp Help Справка QvkImageFromTabs No filemanager found. Файловый менеджер не найден. Please install a filemanager. Пожалуйста установите файловый менеджер. QvkLimitDiskFreeSpace Warning Предупреждение The recording is not started, not enough free disk space. Запись не началась, недостаточно свободного места на диске. The free disk space limit is reached. Достигнут предел свободного дискового пространства. Limit of free disk space Предел свободного дискового пространства Megabyte Мегабайт The recording was stopped, not enough free disk space. Запись остановлена, недостаточно свободного места на диске. QvkMainWindow Fullscreen Весь экран Window Окно No filemanager found. Display a MessageBox, if not found a filemanager. Файловый менеджер не найден. Please install a filemanager. Пожалуйста установите файловый менеджер. Sourcecode Исходный код Homepage Веб-сайт Translations Переводы Donate Пожертвовать QvkPulseAudioWatcher Select one or more devices ВыберитВыберите одно или несколько устройстве одно или несколько устройств QvkRegionChoise Area Область экрана QvkRegionChoise_wl Area Область экрана QvkSnapshot No filemanager found. Файловый менеджер не найден. Please install a filemanager. Пожалуйста установите файловый менеджер. QvkSystray Start Начать Stop Остановить Pause Приостановить Continue Продолжить Exit Выход Camera Камера Magnification Лупа QvkSystrayAlternative Start Начать Stop Остановить Pause Приостановить Continue Продолжить Exit Выход Camera Камера Magnification Лупа QvkWASAPIController Select one or more devices ВыберитВыберите одно или несколько устройстве одно или несколько устройств cameraSettingsDialog Dialog Диалоговое окно Flip horizontal Отразить по горизонтали Flip vertical Отразить по вертикали Invert Инвертировать Gray Чёрно-белое в оттенках серого Black-and-white Чёрно-белое двухцветное Remove window frame Убрать рамку окна Camera settings Параметры камеры formMainWindow Area Область экрана Reset Сбросить Magnification Лупа Countdown Обратный отсчёт Video size: Размер видео: Free disk space: Свободное место на диске: Information Информация Record Time: Время записи: Audio Звук Frames Кадры Videocodec Видеокодек Format Формат Audiocodec Звуковой кодек Quality Качество Do not record mouse cursor Не записывать указатель мыши Hour Час Minute Минута Start the timer Запустить таймер Stop recording after Остановить запись после Hours Часов Minutes Минут Seconds Секунд Videopath Путь к видео: Limit of free disk space Предел свободного дискового пространства Show in systray Показывать значок в области уведомления Second wait before recording Секунд до начала записи Look for updates Проверить обновления Help Справка Video Видео Available Доступно Not available Недоступно Start Начать Stop Остановить Pause Приостановить Continue Продолжить Play Воспроизвести Folder Папка Camera Камера Invert Инвертировать Gray Чёрно-белое в оттенках серого CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Воспроизвести последнюю запись Open folder Открыть папку CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Сворачивать окно перед началом записи Starts minimized Запускать свёрнутым Flip horizontal Отразить по горизонтали Flip vertical Отразить по вертикали Black-and-white Чёрно-белое двухцветное Remove window frame Убрать рамку окна Donate Пожертвовать Reset all settings at the next start Сбросить все настройки при следующем запуске Copyright and license from pictures Авторское право и лицензия на использование изображений Megabyte Мегабайт Screencast Запись с экрана Player Проигрыватель Log Журнал Automatically Автоматически Create images of tabs Создать изображения вкладок License information Сведения о лицензии ON Включить OFF Выключить Global keyboard shortcuts Глобальные комбинации клавиш Assigned shortcut keys. Назначенные комбинации клавиш. Keyboard shortcut not assigned or assigned more than once. Комбинация клавиш не назначена или назначена более одного раза. If it shows assigned but does not work, it is being used by another program. Отображение фактически не работающей комбинации клавиш в качестве использующейся означает, что она используется другой программой Snapshot Снимок Imagepath Путь изображения Hide this window Скрыть это окно Seconds wait before recording Секунды ожидания перед записью license Copyright and license from pictures Авторское право и лицензия на использование изображений player Play Воспроизвести Pause Приостановить Stop Остановить Open File Открыть файл Fullscreen Весь экран Previous frame Предыдущий кадр Next frame Следующий кадр Mute Без звука Move menu Переместить меню vokoscreenNG-3.7.0/src/language/sk_SK.ts000066400000000000000000000454201444746353100201000ustar00rootroot00000000000000 QvkAudioController Select one or more devices Vyberte jedno alebo viac zariadení QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Odstrániť orámovanie okna Flip vertical Prevrátiť vertikálne Flip horizontal Prevrátiť horizontálne Invert Invertovať Gray Stupne sivej Black-and-white Dvojfarebné, čierna a biela Switch to Window Zobraziť v okne Switch to Fullscreen Zobraziť na celú obrazovku QvkCameraWindow Switch to Window Zobraziť v okne Switch to Fullscreen Zobraziť na celú obrazovku Camera Kamera QvkCiscoFinishDialog The setup was successful. Nastavenie bolo úspešné. Close this window and start vokoscreenNG again. Zatvorte okno a spustite vokoscreenNG opäť. Have fun with vokoscreenNG Zabávajte sa s vokoscreenNG QvkDirectSoundController Select one or more devices Vyberte jedno alebo viac zariadení QvkHelp Help Pomocník QvkImageFromTabs No filemanager found. Nenašiel sa žiadny súborový manažér. Please install a filemanager. Inštalujte súborový manažér. QvkLimitDiskFreeSpace Warning Upozornenie The recording is not started, not enough free disk space. Nahrávanie sa nezačalo, nemáte dostatok voľného miesta na disku. The free disk space limit is reached. Dosiahli ste hraničnú veľkosť pre pridelené vám miesto na disku. Limit of free disk space Horná hranica pre voľné miesto na disku Megabyte Megabajt The recording was stopped, not enough free disk space. Nahrávanie je zastavené, nie je dosť miesta na disku. QvkMainWindow Fullscreen Celá obrazovka Window Okno No filemanager found. Display a MessageBox, if not found a filemanager. Nenašiel sa žiadny súborový manažér. Please install a filemanager. Inštalujte súborový manažér. Sourcecode Zdrojový kód Homepage Domovská stránka Translations Preklady Donate Podporiť QvkPulseAudioWatcher Select one or more devices Vyberte jedno alebo viac zariadení QvkRegionChoise Area Oblasť QvkRegionChoise_wl Area Oblasť QvkSnapshot No filemanager found. Nenašiel sa žiadny súborový manažér. Please install a filemanager. Inštalujte súborový manažér. QvkSystray Start Štart Stop Stop Pause Pauza Continue Pokračovať Exit Odísť Camera Kamera Magnification Zväčšenie QvkSystrayAlternative Start Štart Stop Stop Pause Pauza Continue Pokračovať Exit Odísť Camera Kamera Magnification Zväčšenie QvkWASAPIController Select one or more devices Vyberte jedno alebo viac zariadení cameraSettingsDialog Dialog Dialóg Flip horizontal Prevrátiť horizontálne Flip vertical Prevrátiť vertikálne Invert Invertovať Gray Stupne sivej Black-and-white Dvojfarebné, čierna a biela Remove window frame Odstrániť orámovanie okna Camera settings Nastavenia kamery formMainWindow Area Oblasť Reset Resetovanie Magnification Zväčšenie Countdown Odpočítavanie Video size: Veľkosť videa: Free disk space: Voľné miesto na disku: Information Informácia Record Time: Čas nahrávania: Audio Zvuk Frames Snímky Videocodec Kódek video Format Formát Audiocodec Zvukový kódek Quality Kvalita Do not record mouse cursor Nenahrávať kurzor myši Hour Hodina Minute Minúta Start the timer Spustiť stopky Stop recording after Zastaviť nahrávanie po Hours Hodiny Minutes Minúty Seconds Sekundy Videopath Cesta k videu Limit of free disk space Horná hranica pre voľné miesto na disku Show in systray Zobraziť v systémovom paneli Second wait before recording Čakanie v sekundách pred nahrávaním Look for updates Kontrola aktualizácií Help Pomocník Video Video Available Je k dispozícii Not available Nie je k dispozícii Start Štart Stop Stop Pause Pauza Continue Pokračovať Play Prehrať Folder Priečinok - adresár Camera Kamera Invert Invertovať Gray Stupne sivej CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Prehrať poslednú nahrávku Open folder Otvoriť adresár - priečinok CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimalizovať pri štarte nahrávania Starts minimized Spustiť minimalizované Flip horizontal Prevrátiť horizontálne Flip vertical Prevrátiť vertikálne Black-and-white Dvojfarebné, čierna a biela Remove window frame Odstrániť orámovanie okna Donate Podporiť Reset all settings at the next start Resetovať všetky nastavenia pri nasledujúcom štarte Copyright and license from pictures Copyright a licencie obrázkov Megabyte Megabajt Screencast Nahrávanie obrazovky Player Prehrávač Log Záznam o činnosti Automatically Automaticky Create images of tabs Vytvoriť obrázky tabuliek License information Informácie o licencii ON ZAP. OFF VYP. Global keyboard shortcuts Globálne klávesnicove skratky Assigned shortcut keys. Priradené kľúčové skratky Keyboard shortcut not assigned or assigned more than once. Klávesová skratka nie je priradená alebo je priradená viac ako raz If it shows assigned but does not work, it is being used by another program. Ak sa zobrazuje ako priradené, ale nefunguje, používa ho iný program. Snapshot Snímok obrazovky Imagepath Cesta k obrázku Hide this window Schovať okno Seconds wait before recording Sekundy pred nahrávaním license Copyright and license from pictures Copyright a licencie obrázkov player Play Prehrať Pause Pauza Stop Stop Open File Otvoriť súbor Fullscreen Celá obrazovka Previous frame Predchádzajúce políčko Next frame Nasledujúce políčko Mute Stíšiť Move menu Premiestniť menu vokoscreenNG-3.7.0/src/language/sr.ts000066400000000000000000000502261444746353100175120ustar00rootroot00000000000000 QvkAudioController Select one or more devices Означи један или више уређаја QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Уклони оквир прозора Flip vertical Окрени вертикално Flip horizontal Окрени хоризонтално Invert Изокрени Gray Сиво Black-and-white Црно-бело Switch to Window Промени на прозор Switch to Fullscreen Промени на цео екран QvkCameraWindow Switch to Window Промени на прозор Switch to Fullscreen Промени на цео екран Camera Kamera QvkCiscoFinishDialog The setup was successful. Подешавање је успешно. Close this window and start vokoscreenNG again. Затвори овај прозор и покрени поново vokoscreenNG. Have fun with vokoscreenNG Забави се са vokoscreenNG QvkDirectSoundController Select one or more devices Означи један или више уређаја QvkHelp Help Помоћ QvkImageFromTabs No filemanager found. Претраживач датотека није пронађен Please install a filemanager. Молим вас инсталирајте претраживач датотека QvkLimitDiskFreeSpace Warning Upozorenje The recording is not started, not enough free disk space. Снимање није почело, нема довољно слободног места на диску. The free disk space limit is reached. Досегнуто је ограничење слободног простора на диску. Limit of free disk space Граница слободног места на диску Megabyte Megabajt The recording was stopped, not enough free disk space. Снимање је заустављено, нема довољно слободног места на диску. QvkMainWindow Fullscreen Пун екран Window Прозор No filemanager found. Display a MessageBox, if not found a filemanager. Претраживач датотека није пронађен Please install a filemanager. Молим вас инсталирајте претраживач датотека Sourcecode Изворни код Homepage Почетна Translations Преводи Donate Донирај QvkPulseAudioWatcher Select one or more devices Означи један или више уређаја QvkRegionChoise Area Подручје QvkRegionChoise_wl Area Подручје QvkSnapshot No filemanager found. Претраживач датотека није пронађен Please install a filemanager. Молим вас инсталирајте претраживач датотека QvkSystray Start Старт Stop Стоп Pause Пауза Continue Настави Exit Излаз Camera Kamera Magnification Увеличавање QvkSystrayAlternative Start Старт Stop Стоп Pause Пауза Continue Настави Exit Излаз Camera Kamera Magnification Увеличавање QvkWASAPIController Select one or more devices Означи један или више уређаја cameraSettingsDialog Dialog Дијалог Flip horizontal Окрени хоризонтално Flip vertical Окрени вертикално Invert Изокрени Gray Сиво Black-and-white Црно-бело Remove window frame Уклони оквир прозора Camera settings Подешавања камере formMainWindow Area Подручје Reset Поново намести Magnification Увеличавање Countdown Одбројавање Video size: Величина видеа Free disk space: Слободан простор на диску Information Информације Record Time: Сними време: Audio Аудио Frames Фрејмови Videocodec Видео кодек Format Формат Audiocodec Аудио кодек Quality Квалитет Do not record mouse cursor Немој снимати стрелицу Hour Сат Minute Минут Start the timer Покрени тајмер Stop recording after Прекини снимање после Hours Сати Minutes Минути Seconds Секунде Videopath Видео пут Limit of free disk space Граница слободног места на диску Show in systray Прикажи у ''systray'' Second wait before recording Одлагање снимања у секундама Look for updates Потражи исправке Help Помоћ Video Снимак Available Доступно Not available Није доступно Start Старт Stop Стоп Pause Пауза Continue Настави Play Почни Folder Фасцикла Camera Kamera Invert Изокрени Gray Сиво CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Пусти задњи снимак Open folder Отвори директоријум CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Vokoscreen минимизиран кад снимање почне Starts minimized Почни минимизован Flip horizontal Окрени хоризонтално Flip vertical Окрени вертикално Black-and-white Црно-бело Remove window frame Уклони оквир прозора Donate Донирај Reset all settings at the next start Врати све на фабричка подешавања када следећи пут снимање почне Copyright and license from pictures Ауторска права и лиценца од слика Megabyte Megabajt Screencast Пренос екрана Player Плејер Log Дневник Automatically Аутоматски Create images of tabs Креирај слике картица License information Информације о лиценци ON Укључи OFF Искључи Global keyboard shortcuts Опште пречице на тастатури Assigned shortcut keys. Направљене пречице. Keyboard shortcut not assigned or assigned more than once. Пречица није додељена или је додељена више од једном. If it shows assigned but does not work, it is being used by another program. Ако се приказује додељено, али не ради, користи га други програм. Snapshot Снимак Imagepath Путања слике Hide this window Сакриј овај прозор Seconds wait before recording Секунде пре почетка снимања license Copyright and license from pictures Ауторска права и лиценца од слика player Play Почни Pause Пауза Stop Стоп Open File Отвори документ Fullscreen Пун екран Previous frame Прошли кадар Next frame Следећи кадар Mute Нем Move menu Помери мени vokoscreenNG-3.7.0/src/language/sv.ts000066400000000000000000000445701444746353100175230ustar00rootroot00000000000000 QvkAudioController Select one or more devices Välj en eller flera enheter QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Ta bort fönsterram Flip vertical Vänd vertikalt Flip horizontal Vänd horisontellt Invert Invertera Gray Grå Black-and-white Svartvit Switch to Window Växla till fönsterläge Switch to Fullscreen Växla till helskärmsläge QvkCameraWindow Switch to Window Växla till fönsterläge Switch to Fullscreen Växla till helskärmsläge Camera Kamera QvkCiscoFinishDialog The setup was successful. Installationen gick bra. Close this window and start vokoscreenNG again. Stäng detta fönster och starta vokoscreenNG igen. Have fun with vokoscreenNG Ha så kul med vokoscreenNG QvkDirectSoundController Select one or more devices Välj en eller flera enheter QvkHelp Help Hjälp QvkImageFromTabs No filemanager found. Ingen filhanterare hittades. Please install a filemanager. Installera en filhanterare. QvkLimitDiskFreeSpace Warning Varning The recording is not started, not enough free disk space. Inspelningen är inte startad, det finns inte tillräckligt med ledigt diskutrymme. The free disk space limit is reached. Det lediga diskutrymmet är slut. Limit of free disk space Gräns för ledigt diskutrymme Megabyte Megabyte The recording was stopped, not enough free disk space. Inspelningen har stoppats, det finns inte tillräckligt med ledigt diskutrymme. QvkMainWindow Fullscreen Helskärm Window Fönster No filemanager found. Display a MessageBox, if not found a filemanager. Ingen filhanterare hittades. Please install a filemanager. Installera en filhanterare. Sourcecode Källkod Homepage Hemsida Translations Översättningar Donate Donera QvkPulseAudioWatcher Select one or more devices Välj en eller flera enheter QvkRegionChoise Area Område QvkRegionChoise_wl Area Område QvkSnapshot No filemanager found. Ingen filhanterare hittades. Please install a filemanager. Installera en filhanterare. QvkSystray Start Starta Stop Stoppa Pause Pausa Continue Fortsätt Exit Avsluta Camera Kamera Magnification Förstoringsglas QvkSystrayAlternative Start Starta Stop Stoppa Pause Pausa Continue Fortsätt Exit Avsluta Camera Kamera Magnification Förstoringsglas QvkWASAPIController Select one or more devices Välj en eller flera enheter cameraSettingsDialog Dialog Dialog Flip horizontal Vänd horisontellt Flip vertical Vänd vertikalt Invert Invertera Gray Grå Black-and-white Svartvit Remove window frame Ta bort fönsterram Camera settings Kamerainställningar formMainWindow Area Område Reset Återställ Magnification Förstoringsglas Countdown Nedräkning Video size: Videostorlek: Free disk space: Ledigt diskutrymme: Information Information Record Time: Inspelningstid: Audio Ljud Frames Bildrutor Videocodec Videokodek Format Format Audiocodec Ljudkodek Quality Kvalitet Do not record mouse cursor Spela inte in muspekaren Hour Timma Minute Minut Start the timer Starta tiduret Stop recording after Stoppa inspelningen efter Hours Timmar Minutes Minuter Seconds Sekunder Videopath Videosökväg Limit of free disk space Gräns för ledigt diskutrymme Show in systray Visa i systemfältet Second wait before recording Vänta x sekunder före inspelningsstart Look for updates Sök efter uppdateringar Help Hjälp Video Video Available Tillgänglig Not available Inte tillgänglig Start Starta Stop Stoppa Pause Pausa Continue Fortsätt Play Spela upp Folder Mapp Camera Kamera Invert Invertera Gray Grå CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Spela upp senaste inspelning Open folder Öppna mapp CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimerad när inspelning startar Starts minimized Starta minimerad Flip horizontal Vänd horisontellt Flip vertical Vänd vertikalt Black-and-white Svartvit Remove window frame Ta bort fönsterram Donate Donera Reset all settings at the next start Återställ alla inställningar vid nästa programstart Copyright and license from pictures Copyright och licens från bilder Megabyte Megabyte Screencast Skärminspelning Player Spelare Log Logg Automatically Automatiskt Create images of tabs Skapa bilder av flikar License information Licensinformation ON OFF AV Global keyboard shortcuts Systemövergripande tangentbordsgenvägar Assigned shortcut keys. Tilldelade snabbtangenter Keyboard shortcut not assigned or assigned more than once. Ej tilldelade snabbtangenter eller tilldelade mer än en gång. If it shows assigned but does not work, it is being used by another program. Om den visas som tilldelad men inte fungerar, används den av ett annat program. Snapshot Ögonblicksbild Imagepath Bildsökväg Hide this window Dölj det här fönstret Seconds wait before recording Sekunders väntetid före inspelning license Copyright and license from pictures Copyright och licens från bilder player Play Spela upp Pause Pausa Stop Stoppa Open File Öppna fil Fullscreen Helskärm Previous frame Föregående bildruta Next frame Nästa bildruta Mute Tyst Move menu Flytta menyn vokoscreenNG-3.7.0/src/language/sv_SE.ts000066400000000000000000000445731444746353100201150ustar00rootroot00000000000000 QvkAudioController Select one or more devices Välj en eller flera enheter QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Ta bort fönsterram Flip vertical Vänd vertikalt Flip horizontal Vänd horisontellt Invert Invertera Gray Grå Black-and-white Svartvit Switch to Window Växla till fönsterläge Switch to Fullscreen Växla till helskärmsläge QvkCameraWindow Switch to Window Växla till fönsterläge Switch to Fullscreen Växla till helskärmsläge Camera Kamera QvkCiscoFinishDialog The setup was successful. Installationen gick bra. Close this window and start vokoscreenNG again. Stäng detta fönster och starta vokoscreenNG igen. Have fun with vokoscreenNG Ha så kul med vokoscreenNG QvkDirectSoundController Select one or more devices Välj en eller flera enheter QvkHelp Help Hjälp QvkImageFromTabs No filemanager found. Ingen filhanterare hittades. Please install a filemanager. Installera en filhanterare. QvkLimitDiskFreeSpace Warning Varning The recording is not started, not enough free disk space. Inspelningen är inte startad, det finns inte tillräckligt med ledigt diskutrymme. The free disk space limit is reached. Det lediga diskutrymmet är slut. Limit of free disk space Gräns för ledigt diskutrymme Megabyte Megabyte The recording was stopped, not enough free disk space. Inspelningen har stoppats, det finns inte tillräckligt med ledigt diskutrymme. QvkMainWindow Fullscreen Helskärm Window Fönster No filemanager found. Display a MessageBox, if not found a filemanager. Ingen filhanterare hittades. Please install a filemanager. Installera en filhanterare. Sourcecode Källkod Homepage Hemsida Translations Översättningar Donate Donera QvkPulseAudioWatcher Select one or more devices Välj en eller flera enheter QvkRegionChoise Area Område QvkRegionChoise_wl Area Område QvkSnapshot No filemanager found. Ingen filhanterare hittades. Please install a filemanager. Installera en filhanterare. QvkSystray Start Starta Stop Stoppa Pause Pausa Continue Fortsätt Exit Avsluta Camera Kamera Magnification Förstoringsglas QvkSystrayAlternative Start Starta Stop Stoppa Pause Pausa Continue Fortsätt Exit Avsluta Camera Kamera Magnification Förstoringsglas QvkWASAPIController Select one or more devices Välj en eller flera enheter cameraSettingsDialog Dialog Dialog Flip horizontal Vänd horisontellt Flip vertical Vänd vertikalt Invert Invertera Gray Grå Black-and-white Svartvit Remove window frame Ta bort fönsterram Camera settings Kamerainställningar formMainWindow Area Område Reset Återställ Magnification Förstoringsglas Countdown Nedräkning Video size: Videostorlek: Free disk space: Ledigt diskutrymme: Information Information Record Time: Inspelningstid: Audio Ljud Frames Bildrutor Videocodec Videokodek Format Format Audiocodec Ljudkodek Quality Kvalitet Do not record mouse cursor Spela inte in muspekaren Hour Timma Minute Minut Start the timer Starta tiduret Stop recording after Stoppa inspelningen efter Hours Timmar Minutes Minuter Seconds Sekunder Videopath Videosökväg Limit of free disk space Gräns för ledigt diskutrymme Show in systray Visa i systemfältet Second wait before recording Vänta x sekunder före inspelningsstart Look for updates Sök efter uppdateringar Help Hjälp Video Video Available Tillgänglig Not available Inte tillgänglig Start Starta Stop Stoppa Pause Pausa Continue Fortsätt Play Spela upp Folder Mapp Camera Kamera Invert Invertera Gray Grå CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Spela upp senaste inspelning Open folder Öppna mapp CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Minimerad när inspelning startar Starts minimized Starta minimerad Flip horizontal Vänd horisontellt Flip vertical Vänd vertikalt Black-and-white Svartvit Remove window frame Ta bort fönsterram Donate Donera Reset all settings at the next start Återställ alla inställningar vid nästa programstart Copyright and license from pictures Copyright och licens från bilder Megabyte Megabyte Screencast Skärminspelning Player Spelare Log Logg Automatically Automatiskt Create images of tabs Skapa bilder av flikar License information Licensinformation ON OFF AV Global keyboard shortcuts Systemövergripande tangentbordsgenvägar Assigned shortcut keys. Tilldelade snabbtangenter Keyboard shortcut not assigned or assigned more than once. Ej tilldelade snabbtangenter eller tilldelade mer än en gång. If it shows assigned but does not work, it is being used by another program. Om den visas som tilldelad men inte fungerar, används den av ett annat program. Snapshot Ögonblicksbild Imagepath Bildsökväg Hide this window Dölj det här fönstret Seconds wait before recording Sekunders väntetid före inspelning license Copyright and license from pictures Copyright och licens från bilder player Play Spela upp Pause Pausa Stop Stoppa Open File Öppna fil Fullscreen Helskärm Previous frame Föregående bildruta Next frame Nästa bildruta Mute Tyst Move menu Flytta menyn vokoscreenNG-3.7.0/src/language/tr_TR.ts000066400000000000000000000445271444746353100201270ustar00rootroot00000000000000 QvkAudioController Select one or more devices Bir veya daha fazla aygıt seç QvkCameraController Camera Kamera QvkCameraSingle Remove window frame Pencere çerçevesini kaldır Flip vertical Dikey çevir Flip horizontal Yatay çevir Invert Ters çevir Gray Gri Black-and-white Siyah-ve-beyaz Switch to Window Pencereye Geç Switch to Fullscreen Tam Ekrana Geç QvkCameraWindow Switch to Window Pencereye Geç Switch to Fullscreen Tam Ekrana Geç Camera Kamera QvkCiscoFinishDialog The setup was successful. Kurulum başarılı oldu. Close this window and start vokoscreenNG again. Bu pencereyi kapatın ve vokoscreenNG'yi yeniden başlatın. Have fun with vokoscreenNG vokoscreenNG ile iyi eğlenceler QvkDirectSoundController Select one or more devices Bir veya daha fazla aygıt seç QvkHelp Help Yardım QvkImageFromTabs No filemanager found. Dosya yöneticisi bulunamadı Please install a filemanager. Lütfen bir dosya yöneticisi yükleyin. QvkLimitDiskFreeSpace Warning Uyarı The recording is not started, not enough free disk space. Kayıt başlatılmadı, yeterli boş disk alanı yok. The free disk space limit is reached. Boş disk alanı sınırına ulaşıldı. Limit of free disk space Boş disk alanı sınırı Megabyte Megabayt The recording was stopped, not enough free disk space. Kayıt durduruldu, yeterli boş disk alanı yok. QvkMainWindow Fullscreen Tam Ekran Window Pencere No filemanager found. Display a MessageBox, if not found a filemanager. Dosya yöneticisi bulunamadı Please install a filemanager. Lütfen bir dosya yöneticisi yükleyin. Sourcecode Kaynak kodu Homepage Web Sayfası Translations Çeviriler Donate Bağış QvkPulseAudioWatcher Select one or more devices Bir veya daha fazla aygıt seç QvkRegionChoise Area Bölge QvkRegionChoise_wl Area Bölge QvkSnapshot No filemanager found. Dosya yöneticisi bulunamadı Please install a filemanager. Lütfen bir dosya yöneticisi yükleyin. QvkSystray Start Başlat Stop Durdur Pause Duraklat Continue Devam Exit Çıkış Camera Kamera Magnification Büyüt QvkSystrayAlternative Start Başlat Stop Durdur Pause Duraklat Continue Devam Exit Çıkış Camera Kamera Magnification Büyüt QvkWASAPIController Select one or more devices Bir veya daha fazla aygıt seç cameraSettingsDialog Dialog Diyalog Flip horizontal Yatay çevir Flip vertical Dikey çevir Invert Ters çevir Gray Gri Black-and-white Siyah-ve-beyaz Remove window frame Pencere çerçevesini kaldır Camera settings Kamera ayarları formMainWindow Area Bölge Reset Sıfırla Magnification Büyüt Countdown Geri sayım Video size: Video boyutu: Free disk space: Boş disk alanı: Information Bilgilendirme Record Time: Kayıt Süresi: Audio Ses Frames Kare sayısı Videocodec Video çözücü Format Biçim Audiocodec Ses çözücü Quality Kalite Do not record mouse cursor Fare imlecini kaydetme Hour Saat Minute Dakika Start the timer Zamanlayıcıyı başlat Stop recording after Sonra kaydı durdur Hours Saat Minutes Dakika Seconds Saniye Videopath Video yolu Limit of free disk space Boş disk alanı sınırı Show in systray Sistem tepsisinde göster Second wait before recording Kayıttan önce biraz bekle Look for updates Güncellemeleri ara Help Yardım Video Video Available Mevcut Not available Mevcut değil Start Başlat Stop Durdur Pause Duraklat Continue Devam Play Oynat Folder Klasör Camera Kamera Invert Ters çevir Gray Gri CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Son kaydı oynat Open folder Klasörü aç CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Kayıt başladığında simge durumuna küçült Starts minimized Simge durumunda başlat Flip horizontal Yatay çevir Flip vertical Dikey çevir Black-and-white Siyah-ve-beyaz Remove window frame Pencere çerçevesini kaldır Donate Bağış Reset all settings at the next start Bir sonraki başlangıçta tüm ayarları sıfırla Copyright and license from pictures Resimlerin telif hakkı ve lisans Megabyte Megabayt Screencast Ekran alıntılama Player Oynatıcı Log Günlük Automatically Otomatik olarak Create images of tabs Sekmelerin ekran görüntülerini kaydet License information Lisans bilgisi ON OFF KAPAT Global keyboard shortcuts Genel klavye kısayolları Assigned shortcut keys. Atanan kısayol tuşları. Keyboard shortcut not assigned or assigned more than once. Klavye kısayolu atanmamış veya birden fazla atanmış. If it shows assigned but does not work, it is being used by another program. Atanmış görünüyor ancak çalışmıyorsa başka bir program tarafından kullanılıyordur. Snapshot Ekrançıktısı Imagepath Resim yolu Hide this window Bu pencereyi gizle Seconds wait before recording Kayıttan önce geri say license Copyright and license from pictures Resimlerin telif hakkı ve lisans player Play Oynat Pause Duraklat Stop Durdur Open File Dosya Aç Fullscreen Tam Ekran Previous frame Önceki çerçeve Next frame Sonraki çerçeve Mute Sessiz Move menu Menüyü taşı vokoscreenNG-3.7.0/src/language/uk_UA.ts000066400000000000000000000514011444746353100200660ustar00rootroot00000000000000 QvkAudioController Select one or more devices Оберіть один або декілька пристроїв QvkCameraController Camera Камера QvkCameraSingle Remove window frame Прибрати рамку вікна Flip vertical Показати вертикально Flip horizontal Показати горизонтально Invert Перевернути Gray Сірий Black-and-white У відтінках сірого Switch to Window Перемикнутися на режим вікна Switch to Fullscreen Перемикнутися на повний екран QvkCameraWindow Switch to Window Перемикнутися на режим вікна Switch to Fullscreen Перемикнутися на повний екран Camera Камера QvkCiscoFinishDialog The setup was successful. Налаштування пройшло успішно. Close this window and start vokoscreenNG again. Закрийте це вікно та знову запустіть vokoscreenNG. Have fun with vokoscreenNG Розважайтеся з vokoscreenNG QvkDirectSoundController Select one or more devices Оберіть один або декілька пристроїв QvkHelp Help Допомога QvkImageFromTabs No filemanager found. Не знайдено файлового менеджера Please install a filemanager. Будь ласка, встановіть файловий менеджер. QvkLimitDiskFreeSpace Warning Попередження The recording is not started, not enough free disk space. Запис не почато, бракує вільного місця на диску. The free disk space limit is reached. Досягнуто ліміту вільного місця на диску. Limit of free disk space Ліміт вільного місця на диску Megabyte Мегабайт The recording was stopped, not enough free disk space. Запис зупинено, бракує вільного місця на диску. QvkMainWindow Fullscreen Увесь екран Window Вікно No filemanager found. Display a MessageBox, if not found a filemanager. Файлового упорядника не знайдено. Please install a filemanager. Будь ласка встановіть файловий упорядник. Sourcecode Джерельний код Homepage Вебсайт Translations Переклади Donate Зробити внесок QvkPulseAudioWatcher Select one or more devices Оберіть один або декілька пристроїв QvkRegionChoise Area Довільна область QvkRegionChoise_wl Area Довільна область QvkSnapshot No filemanager found. Файлового упорядника не знайдено. Please install a filemanager. Будь ласка встановіть файловий упорядник. QvkSystray Start Почати Stop Зупинити Pause Призупинити Continue Продовжити Exit Вийти Camera Камера Magnification Збільшення QvkSystrayAlternative Start Почати Stop Зупинити Pause Призупинити Continue Продовжити Exit Вийти Camera Камера Magnification Збільшення QvkWASAPIController Select one or more devices Оберіть один або декілька пристроїв cameraSettingsDialog Dialog Діалогове вікно Flip horizontal Показати горизонтально Flip vertical Показати вертикально Invert Перевернути Gray Сірий Black-and-white У відтінках сірого Remove window frame Прибрати рамку вікна Camera settings Налаштування камери formMainWindow Area Довільна область Reset Скинути Magnification Збільшення Countdown Зворотній відлік Video size: Розмір відеофайлу: Free disk space: Вільне місце на диску: Information Інформація Record Time: Час запису: Audio Звук Frames Кадри Videocodec Відеокодек Format Формат Audiocodec Авдіокодек Quality Якість Do not record mouse cursor Не записувати вказівник миші Hour Година Minute Хвилина Start the timer Запустити таймер Stop recording after Зупинити запис через Hours Години Minutes Хвилини Seconds Секунди Videopath Зберегти до теки Limit of free disk space Ліміт вільного місця на диску Show in systray Показати значок на панелі Second wait before recording Зачекати секунд перед початком запису Look for updates Перевірити оновлення Help Допомога Video Відео Available Доступний Not available Недоступний Start Почати Stop Зупинити Pause Призупинити Continue Продовжити Play Програти Folder Тека Camera Камера Invert Перевернути Gray Сірий CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record Відтворити останній запис Open folder Відкрити теку CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts Згортати вікно при початку запису Starts minimized Запускати згорнутим Flip horizontal Показати горизонтально Flip vertical Показати вертикально Black-and-white У відтінках сірого Remove window frame Прибрати рамку вікна Donate Зробити внесок Reset all settings at the next start Скинути усі налаштування при наступному старті Copyright and license from pictures Авторські права та ліцензія на зображення Megabyte Мегабайт Screencast Скрінкаст Player Програвач Log Лог Automatically Автоматично Create images of tabs Створення зображень вкладок License information Інформація про ліцензію ON УВІМК OFF ВИМК Global keyboard shortcuts Глобальні клавішні скорочення Assigned shortcut keys. Призначені клавіші швидкого доступу. Keyboard shortcut not assigned or assigned more than once. Скорочення клавішів не призначено або призначено більше одного разу. If it shows assigned but does not work, it is being used by another program. Якщо показує призначено, але не працює, то використовується іншою програмою. Snapshot Знімок Imagepath Шлях до зображення Hide this window Згорнути це вікно Seconds wait before recording Зачекати секунду перед записуванням license Copyright and license from pictures Авторські права та ліцензія на зображення player Play Програти Pause Призупинити Stop Зупинити Open File Відкрити файл Fullscreen Увесь екран Previous frame Попередній кадр Next frame Наступний кадр Mute Без звуку Move menu Перемістити меню vokoscreenNG-3.7.0/src/language/zh_CN.ts000066400000000000000000000437051444746353100200730ustar00rootroot00000000000000 QvkAudioController Select one or more devices 选取一个或多个设备 QvkCameraController Camera 摄像头 QvkCameraSingle Remove window frame 移除窗口边框 Flip vertical 纵向翻转 Flip horizontal 横向翻转 Invert 翻转 Gray 灰度 Black-and-white 黑白 Switch to Window 切换至窗口模式 Switch to Fullscreen 切换至全屏 QvkCameraWindow Switch to Window 切换至窗口模式 Switch to Fullscreen 切换至全屏 Camera 摄像头 QvkCiscoFinishDialog The setup was successful. 设置成功 Close this window and start vokoscreenNG again. 关闭这个窗口并且重新启动vokoscreenNG Have fun with vokoscreenNG vokoscreenNG祝你玩得开心 QvkDirectSoundController Select one or more devices 选取一个或多个设备 QvkHelp Help 帮助 QvkImageFromTabs No filemanager found. 未发现文件管理器。 Please install a filemanager. 请安装一个文件管理器。 QvkLimitDiskFreeSpace Warning 警告 The recording is not started, not enough free disk space. 录制未能开始,可用磁盘空间不足。 The free disk space limit is reached. 磁盘剩余空间已耗尽。 Limit of free disk space 磁盘空间上限 Megabyte MB The recording was stopped, not enough free disk space. 录制已停止,没有足够的磁盘空间。 QvkMainWindow Fullscreen 全屏模式 Window 窗口 No filemanager found. Display a MessageBox, if not found a filemanager. 未发现文件管理器 Please install a filemanager. 请安装一个文件管理器。 Sourcecode 源代码 Homepage 网站 Translations 翻译 Donate 捐赠 QvkPulseAudioWatcher Select one or more devices 选取一个或多个设备 QvkRegionChoise Area 区域 QvkRegionChoise_wl Area 区域 QvkSnapshot No filemanager found. 未发现文件管理器 Please install a filemanager. 请安装一个文件管理器。 QvkSystray Start 开始 Stop 停止 Pause 暂停 Continue 继续 Exit 退出 Camera 摄像头 Magnification 放大 QvkSystrayAlternative Start 开始 Stop 停止 Pause 暂停 Continue 继续 Exit 退出 Camera 摄像头 Magnification 放大 QvkWASAPIController Select one or more devices 选取一个或多个设备 cameraSettingsDialog Dialog 对话框 Flip horizontal 横向翻转 Flip vertical 纵向翻转 Invert 翻转 Gray 灰度 Black-and-white 黑白 Remove window frame 移除窗口边框 Camera settings 摄像头设置 formMainWindow Area 区域 Reset 重置 Magnification 放大 Countdown 倒计时 Video size: 视频大小: Free disk space: 可用磁盘空间: Information 信息 Record Time: 录制时间: Audio 音频 Frames 帧率 Videocodec 视频编码 Format 格式 Audiocodec 音频编码 Quality 质量 Do not record mouse cursor 不要录制鼠标 Hour 小时 Minute 分钟 Start the timer 开始倒数 Stop recording after 此时间后停止录制: Hours 小时 Minutes 分钟 Seconds Videopath 视频路径 Limit of free disk space 磁盘空间上限 Show in systray 系统托盘显示 Second wait before recording 开始录制前等待秒数: Look for updates 检查更新 Help 帮助 Video 视频 Available 可用 Not available 不可用 Start 开始 Stop 停止 Pause 暂停 Continue 继续 Play 播放 Folder 文件夹 Camera 摄像头 Invert 翻转 Gray 灰度 CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record 播放最后一次的录制 Open folder 打开文件夹 CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts 当录制开始时最小化 Starts minimized 开启时最小化 Flip horizontal 横向翻转 Flip vertical 纵向翻转 Black-and-white 黑白 Remove window frame 移除窗口边框 Donate 捐赠 Reset all settings at the next start 下次启动时重置所有设置 Copyright and license from pictures 图片版权和许可条款 Megabyte MB Screencast 屏幕广播 Player 播放器 Log 日志 Automatically 自动 Create images of tabs 创建标签图像 License information 许可证信息 ON OFF Global keyboard shortcuts 全局键盘快捷键 Assigned shortcut keys. 指定快捷键 Keyboard shortcut not assigned or assigned more than once. 键盘快捷键未指定或者重复 If it shows assigned but does not work, it is being used by another program. 如果已指定但是不工作,意味着其它程序已使用 Snapshot 截屏 Imagepath 图片路径 Hide this window 隐藏窗口 Seconds wait before recording 开始录制前请等待数秒 license Copyright and license from pictures 图片版权和许可条款 player Play 播放 Pause 暂停 Stop 停止 Open File 打开文件 Fullscreen 全屏模式 Previous frame 上一帧 Next frame 下一帧 Mute 静音 Move menu 移动菜单 vokoscreenNG-3.7.0/src/language/zh_TW.ts000066400000000000000000000437731444746353100201320ustar00rootroot00000000000000 QvkAudioController Select one or more devices 選取一個或多個裝置 QvkCameraController Camera 攝影機 QvkCameraSingle Remove window frame 移除視窗外框 Flip vertical 垂直翻轉 Flip horizontal 水平翻轉 Invert 色彩反轉 Gray 灰色 Black-and-white 黑白 Switch to Window 切換至視窗 Switch to Fullscreen 切換至全螢幕 QvkCameraWindow Switch to Window 切換至視窗 Switch to Fullscreen 切換至全螢幕 Camera 攝影機 QvkCiscoFinishDialog The setup was successful. 設定成功 Close this window and start vokoscreenNG again. 關閉視窗並重新啟動vokoscreenNG Have fun with vokoscreenNG 祝使用vokoscreenNG愉快 QvkDirectSoundController Select one or more devices 選取一個或多個裝置 QvkHelp Help 求助 QvkImageFromTabs No filemanager found. 找不到檔案管理員程式 Please install a filemanager. 請安裝檔案管理員程式 QvkLimitDiskFreeSpace Warning 警告 The recording is not started, not enough free disk space. 錄影無法開始,磁碟空間不足 The free disk space limit is reached. 已到達磁碟空間上限 Limit of free disk space 磁碟空間上限 Megabyte MB The recording was stopped, not enough free disk space. 錄影已經停止,磁碟空間不足 QvkMainWindow Fullscreen 全螢幕 Window 視窗 No filemanager found. Display a MessageBox, if not found a filemanager. 找不到檔案管理員程式 Please install a filemanager. 請安裝檔案管理員程式 Sourcecode 來源程式碼 Homepage 官方網頁 Translations 軟體介面翻譯 Donate 捐款支持 QvkPulseAudioWatcher Select one or more devices 選取一個或多個裝置 QvkRegionChoise Area 區域 QvkRegionChoise_wl Area 區域 QvkSnapshot No filemanager found. 找不到檔案管理員程式 Please install a filemanager. 請安裝檔案管理員程式 QvkSystray Start 開始 Stop 停止 Pause 暫停 Continue 繼續 Exit 結束 Camera 攝影機 Magnification 縮放 QvkSystrayAlternative Start 開始 Stop 停止 Pause 暫停 Continue 繼續 Exit 結束 Camera 攝影機 Magnification 縮放 QvkWASAPIController Select one or more devices 選取一個或多個裝置 cameraSettingsDialog Dialog 對話匣 Flip horizontal 水平翻轉 Flip vertical 垂直翻轉 Invert 色彩反轉 Gray 灰色 Black-and-white 黑白 Remove window frame 移除視窗外框 Camera settings 攝影機設定 formMainWindow Area 區域 Reset 重設 Magnification 縮放 Countdown 倒數計時 Video size: 視訊尺寸: Free disk space: 磁碟空間: Information 資訊 Record Time: 錄製時間: Audio 音訊 Frames 影格率 Videocodec 影像編碼 Format 格式 Audiocodec 音訊編碼 Quality 品質 Do not record mouse cursor 不要錄製滑鼠游標 Hour 小時 Minute 分鐘 Start the timer 開始倒數 Stop recording after 此時間後停止錄製: Hours 小時 Minutes 分鐘 Seconds Videopath 影片路徑 Limit of free disk space 磁碟空間上限 Show in systray 顯示在系統匣 Second wait before recording 開始錄製前等待秒數 Look for updates 檢查有否更新 Help 求助 Video 視訊 Available 可提供 Not available 沒有 Start 開始 Stop 停止 Pause 暫停 Continue 繼續 Play 播放 Folder 資料夾 Camera 攝影機 Invert 色彩反轉 Gray 灰色 CTRL+SHIFT+F10 CTRL+SHIFT+F10 CTRL+SHIFT+F11 CTRL+SHIFT+F11 CTRL+SHIFT+F12 CTRL+SHIFT+F12 Play last record 播放上一條影片 Open folder 開啟資料夾 CTRL+SHIFT+F8 CTRL+SHIFT+F8 Minimized when recording starts 開始錄製時最小化 Starts minimized 開啟時最小化 Flip horizontal 水平翻轉 Flip vertical 垂直翻轉 Black-and-white 黑白 Remove window frame 移除視窗外框 Donate 捐款支持 Reset all settings at the next start 下次開啟時,重設所有設定 Copyright and license from pictures 圖片的版權及授權條款 Megabyte MB Screencast 螢幕播放 Player 播放器 Log 日誌 Automatically 自動 Create images of tabs 創建圖像標籤 License information 認証資訊 ON 開啟 OFF 關閉 Global keyboard shortcuts 全域鍵盤快捷鍵 Assigned shortcut keys. 設定快捷鍵 Keyboard shortcut not assigned or assigned more than once. 快捷鍵尚未設定或已重複設定 If it shows assigned but does not work, it is being used by another program. 若顯示已設定卻沒作用,表示已被其他程式所用 Snapshot 截圖 Imagepath 圖片路徑 Hide this window 隱藏這個視窗 Seconds wait before recording 開始錄製前等待之秒數 license Copyright and license from pictures 圖片的版權及授權條款 player Play 播放 Pause 暫停 Stop 停止 Open File 開啟檔案 Fullscreen 全螢幕 Previous frame 上一個影格 Next frame 上一個影格 Mute 靜音 Move menu 移動選單 vokoscreenNG-3.7.0/src/licenses/000077500000000000000000000000001444746353100165335ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/licenses/QvkLicenses.cpp000066400000000000000000000070401444746353100214670ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkLicenses.h" #include #include #include #include #include QvkLicenses::QvkLicenses( Ui_formMainWindow *ui_mainwindow ) : ui( new Ui::license ) { ui->setupUi( this ); QIcon icon; icon.addFile( QString::fromUtf8( ":/pictures/logo/logo.png" ), QSize(), QIcon::Normal, QIcon::Off ); setWindowIcon( icon ); connect( ui_mainwindow->pushButtonLicense, SIGNAL( clicked( bool ) ), this, SLOT( show() ) ); connect(ui->buttonBox, SIGNAL( clicked( QAbstractButton * ) ), this, SLOT( close() ) ); ui->label_dummy_1->hide(); ui->label_dummy_2->hide(); ui->label_dummy_3->hide(); ui->label_dummy_4->hide(); int row = readLicences( ":/pictures/", 0 ); readLicences( ":/spezialCheckBox/", row ); } QvkLicenses::~QvkLicenses(){} int QvkLicenses::readLicences( QString path, int row ) { QDirIterator dirIterator( path, QDir::Files, QDirIterator::Subdirectories ); while ( dirIterator.hasNext() ) { QString string = dirIterator.next(); if ( ( string.contains( ".license" ) == true ) and ( string.contains( "template" ) == false ) ) { QSettings settings( dirIterator.filePath(), QSettings::IniFormat ); settings.beginGroup( "license" ); QPixmap pixmap( dirIterator.filePath().replace( "license", "png" ) ); pixmap = pixmap.scaled( 50, 50, Qt::KeepAspectRatio, Qt::SmoothTransformation); QLabel *label = new QLabel; label->setPixmap( pixmap ); ui->gridLayout->addWidget( label, row, 1 ); QPixmap pixmapSpace( ":/pictures/space.png" ); pixmapSpace = pixmapSpace.scaled( 10, 50, Qt::KeepAspectRatio, Qt::SmoothTransformation); QLabel *labelSpace = new QLabel; labelSpace->setPixmap( pixmapSpace ); ui->gridLayout->addWidget( labelSpace, row, 2 ); QLabel *labelAuthor = new QLabel; labelAuthor->setText( "Author : (C) " + settings.value( "author" ).toString() + "\n" + "License: " + settings.value( "license" ).toString() + "\n" + "Source : " + settings.value( "url" ).toString() ); ui->gridLayout->addWidget( labelAuthor, row, 3 ); QPixmap pixmap1( ":/pictures/space.png" ); pixmap1 = pixmap1.scaled( 50, 10, Qt::KeepAspectRatio, Qt::SmoothTransformation); QLabel *label1 = new QLabel; label1->setPixmap( pixmap1 ); row++; ui->gridLayout->addWidget( label1, row, 1 ); row++; settings.endGroup(); } } return row; } vokoscreenNG-3.7.0/src/licenses/QvkLicenses.h000066400000000000000000000023311444746353100211320ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKLICENSES_H #define QVKLICENSES_H #include "ui_licenses.h" #include "ui_formMainWindow.h" #include #include class QvkLicenses: public QWidget { Q_OBJECT public: QvkLicenses(Ui_formMainWindow *ui_mainwindow ); virtual ~QvkLicenses(); public slots: private slots: signals: protected: private: Ui_license *ui; int readLicences(QString path , int row); }; #endif vokoscreenNG-3.7.0/src/licenses/licenses.pri000066400000000000000000000002261444746353100210540ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkLicenses.h SOURCES += $$PWD/QvkLicenses.cpp FORMS += \ $$PWD/licenses.ui vokoscreenNG-3.7.0/src/licenses/licenses.ui000066400000000000000000000050321444746353100206770ustar00rootroot00000000000000 license 0 0 800 600 Copyright and license from pictures true 0 0 784 544 Qt::Horizontal 40 20 TextLabel TextLabel TextLabel TextLabel QDialogButtonBox::Close vokoscreenNG-3.7.0/src/limitDiskFreeSpace/000077500000000000000000000000001444746353100204355ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/limitDiskFreeSpace/QvkLimitDiskFreeSpace.cpp000066400000000000000000000113011444746353100252660ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkLimitDiskFreeSpace.h" #include "global.h" #include #include #include #include QvkLimitDiskFreeSpace::QvkLimitDiskFreeSpace( Ui_formMainWindow *ui_mainwindow, QvkSpezialSlider *vkSpezialSlider ) { ui = ui_mainwindow; sliderLimitOfFreeDiskSpace = vkSpezialSlider; timerStorageSize = new QTimer(this); timerStorageSize->setTimerType( Qt::PreciseTimer ); timerStorageSize->setInterval( 1000 ); connect( timerStorageSize, SIGNAL( timeout() ), this, SLOT( slot_storageMessagBoxByRecord() ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), timerStorageSize, SLOT( start() ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), timerStorageSize, SLOT( stop() ) ); } QvkLimitDiskFreeSpace::~QvkLimitDiskFreeSpace() { } bool QvkLimitDiskFreeSpace::isStorageOK() { QStorageInfo storage = QStorageInfo(ui->lineEditVideoPath->text() ); storage.refresh(); // Stop a record if disk space smaller 250MB(Default) 999MB(Max) if ( storage.bytesAvailable() <= ( sliderLimitOfFreeDiskSpace->value() * 1024 * 1024 ) ) { return false; } return true; } bool QvkLimitDiskFreeSpace::isStorageOKMessagBoxByStart() { QStorageInfo storage = QStorageInfo(ui->lineEditVideoPath->text() ); storage.refresh(); // Stop a record if disk space smaller 250MB(Default) 999MB(Max) if ( storage.bytesAvailable() <= ( sliderLimitOfFreeDiskSpace->value() * 1024 * 1024 ) ) { timerStorageSize->stop(); QPixmap pixmap( ":/pictures/status/warning.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox *messageBox = new QMessageBox(); messageBox->setWindowIcon( QIcon( ":/pictures/logo/logo.png" ) ); messageBox->setWindowTitle( tr( "Warning" ) + " " + global::name + " " + global::version ); messageBox->setText( tr( "The recording is not started, not enough free disk space." ) ); messageBox->setInformativeText( tr( "The free disk space limit is reached." ) + "\n" + "\n" + tr( "Limit of free disk space" ) + " " + QString::number( sliderLimitOfFreeDiskSpace->value() ) + " " + tr( "Megabyte" ) ); messageBox->setStandardButtons( QMessageBox::Ok ); messageBox->setIconPixmap( pixmap ); messageBox->show(); return false; } return true; } void QvkLimitDiskFreeSpace::slot_storageMessagBoxByRecord() { QStorageInfo storage = QStorageInfo(ui->lineEditVideoPath->text() ); storage.refresh(); // Stop a record if disk space smaller 250MB(Default) 999MB(Max) if ( storage.bytesAvailable() <= ( sliderLimitOfFreeDiskSpace->value() * 1024 * 1024 ) ) { timerStorageSize->stop(); ui->pushButtonStop->click(); QPixmap pixmap( ":/pictures/status/warning.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox *messageBox = new QMessageBox(); messageBox->setWindowIcon( QIcon( ":/pictures/logo/logo.png" ) ); messageBox->setWindowTitle( tr( "Warning" ) + " " + global::name + " " + global::version ); messageBox->setText( tr( "The recording was stopped, not enough free disk space." ) ); messageBox->setInformativeText( tr( "The free disk space limit is reached." ) + "\n" + "\n" + tr( "Limit of free disk space" ) + " " + QString::number( sliderLimitOfFreeDiskSpace->value() ) + " " + tr( "Megabyte" ) ); messageBox->setStandardButtons( QMessageBox::Ok ); messageBox->setIconPixmap( pixmap ); messageBox->show(); } } vokoscreenNG-3.7.0/src/limitDiskFreeSpace/QvkLimitDiskFreeSpace.h000066400000000000000000000026411444746353100247420ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKLIMITDISKFREESPACE_H #define QVKLIMITDISKFREESPACE_H #include "ui_formMainWindow.h" #include "QvkSpezialSlider.h" #include class QvkLimitDiskFreeSpace: public QWidget { Q_OBJECT public: QvkLimitDiskFreeSpace( Ui_formMainWindow *ui_mainwindow, QvkSpezialSlider *vkSpezialSlider ); virtual ~QvkLimitDiskFreeSpace(); bool isStorageOK(); bool isStorageOKMessagBoxByStart(); public slots: private slots: void slot_storageMessagBoxByRecord(); signals: protected: private: Ui_formMainWindow *ui; QTimer *timerStorageSize; QvkSpezialSlider *sliderLimitOfFreeDiskSpace; }; #endif vokoscreenNG-3.7.0/src/limitDiskFreeSpace/limitDiskFreeSpace.pri000066400000000000000000000002321444746353100246550ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkLimitDiskFreeSpace.h SOURCES += $$PWD/QvkLimitDiskFreeSpace.cpp vokoscreenNG-3.7.0/src/loadExtensions/000077500000000000000000000000001444746353100177255ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/loadExtensions/QvkLoadExtension.cpp000066400000000000000000000050621444746353100236720ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2019 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkLoadExtension.h" #include "global.h" #include #include #include #include QvkLoadExtension::QvkLoadExtension( QvkMainWindow *mainWindow, Ui_formMainWindow *GUI ) { ui = GUI; parent = mainWindow; } QvkLoadExtension::~QvkLoadExtension() {} void QvkLoadExtension::loadExtension() { QString extensionsPath = QStandardPaths::writableLocation( QStandardPaths::HomeLocation ) + QDir::separator() + "vokoscreen_extensions" + QDir::separator(); qDebug().noquote() << global::nameOutput << "ExtensionsPath:" << extensionsPath; QDir libDir( extensionsPath ); QStringList filter = QStringList() << "*.so.*"; QStringList libStringList = libDir.entryList( filter, QDir::Files | QDir::NoSymLinks ); // Testen ob eine lib im Ordner ist if ( !libStringList.empty() ) { QLibrary *library = new QLibrary( extensionsPath + libStringList[ 0 ] ); if ( library->load() ) { qDebug().noquote() << global::nameOutput << libStringList[ 0 ] << "Library has been loaded"; typedef QWidget*(*CreateWidgetFunction)( Ui_formMainWindow *GUI ); CreateWidgetFunction cwf = ( CreateWidgetFunction )library->resolve( "vokoscreen_extensions" ); if ( cwf ) { cwf( ui ); qDebug().noquote() << global::nameOutput << "Extension was loaded"; //myUi.extensionLoadpushButton->hide(); } else { qDebug().noquote() << global::nameOutput << "Extension can not be displayed from the loaded library"; } } else { qDebug().noquote() << global::nameOutput << "Library found but not loaded" << library->errorString(); } } else { qDebug().noquote() << global::nameOutput << "No library for extension found"; } qDebug( " " ); } vokoscreenNG-3.7.0/src/loadExtensions/QvkLoadExtension.h000066400000000000000000000024001444746353100233300ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2019 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKLOADEXTENSION_H #define QVKLOADEXTENSION_H #include "ui_formMainWindow.h" #include "mainwindow.h" #include class QvkLoadExtension : public QObject { Q_OBJECT public: explicit QvkLoadExtension(QvkMainWindow *parent, Ui_formMainWindow *GUI ); ~QvkLoadExtension(); void loadExtension(); Ui_formMainWindow *ui; QvkMainWindow *parent; private: public slots: protected: signals: }; #endif // QVKLOADEXTENSION_H vokoscreenNG-3.7.0/src/loadExtensions/loadExtensions.pri000066400000000000000000000002201444746353100234320ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkLoadExtension.h SOURCES += $$PWD/QvkLoadExtension.cpp vokoscreenNG-3.7.0/src/log/000077500000000000000000000000001444746353100155075ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/log/QvkLog.cpp000066400000000000000000000054401444746353100174210ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkLog.h" #include "global.h" #include #include #include #include QvkLog::QvkLog() { QDateTime dateTime = QDateTime::currentDateTime(); QString stringDateTime = dateTime.toString( "yyyy-MM-dd_hh-mm-ss" ); path = QStandardPaths::writableLocation( QStandardPaths::AppConfigLocation ); QString logFolderName = path + "/" + "log"; if( !QDir( logFolderName ).exists() ) { QDir().mkpath( logFolderName ); } logFile.setFileName( path + "/" + "log" + "/" + stringDateTime + ".log" ); } QvkLog::~QvkLog() { } void QvkLog::outputMessage( QtMsgType type, const QMessageLogContext &context, const QString &msg ) { // Insert timestamp QString sTime = QTime::currentTime().toString(); QString sMsg( msg ); if ( !sMsg.isEmpty() ) { sMsg.prepend( sTime + " " ) ; } // Output terminal QByteArray localMsg = sMsg.toLocal8Bit(); switch (type) { case QtDebugMsg: fprintf( stderr, "%s\n", localMsg.constData() ); break; case QtInfoMsg: fprintf( stderr, "Info: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function ); break; case QtWarningMsg: fprintf( stderr, "Warning: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function ); break; case QtCriticalMsg: fprintf( stderr, "Critical: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function ); break; case QtFatalMsg: fprintf( stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function ); abort(); } // Output Logfile #ifdef Q_OS_LINUX QString eol = "\n"; #endif #ifdef Q_OS_WIN QString eol = "\r\n"; #endif logFile.open( QIODevice::WriteOnly | QIODevice::Append ); QTextStream stream( &logFile ); stream << sMsg << eol; logFile.close(); // Output GUI emit signal_newLogText( sMsg ); } vokoscreenNG-3.7.0/src/log/QvkLog.h000066400000000000000000000023241444746353100170640ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKLOG_H #define QVKLOG_H #include #include class QvkLog : public QObject { Q_OBJECT public: QvkLog(); virtual ~QvkLog(); void outputMessage(QtMsgType type, const QMessageLogContext &context, const QString &msg); QString path; QFile logFile; public slots: signals: void signal_newLogText( QString txt ); private slots: private: protected: }; #endif vokoscreenNG-3.7.0/src/log/QvkLogController.cpp000066400000000000000000000030401444746353100214570ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include #include #include #include "QvkLogController.h" #include "QvkLog.h" QPointer vklog; void myMessageOutput( QtMsgType type, const QMessageLogContext &context, const QString &msg ) { vklog->outputMessage( type, context, msg ); } QvkLogController::QvkLogController() { vklog = new QvkLog(); connect( vklog, SIGNAL( signal_newLogText( QString) ), this, SLOT( slot_addTextToGuiLog( QString ) ) ); qInstallMessageHandler( myMessageOutput ); } QvkLogController::~QvkLogController() { } void QvkLogController::slot_addTextToGuiLog( QString value ) { emit signal_newLogText( value ); } QString QvkLogController::get_logPath() { return vklog->logFile.fileName(); } vokoscreenNG-3.7.0/src/log/QvkLogController.h000066400000000000000000000022761444746353100211360ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKLOGCONTROLLER_H #define QVKLOGCONTROLLER_H #include class QvkLogController : public QObject { Q_OBJECT public: QvkLogController(); virtual ~QvkLogController(); QString get_logPath(); public slots: signals: void signal_newLogText( QString value ); private slots: void slot_addTextToGuiLog( QString value ); private: protected: }; #endif vokoscreenNG-3.7.0/src/log/log.pri000066400000000000000000000003361444746353100170060ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkLog.h \ $$PWD/QvkLogController.h SOURCES += $$PWD/QvkLog.cpp \ $$PWD/QvkLogController.cpp vokoscreenNG-3.7.0/src/magnifier/000077500000000000000000000000001444746353100166675ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/magnifier/QvkMagnifier.cpp000066400000000000000000000460141444746353100217630ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkMagnifier.h" #include #include #include #include #include #include #include #include QvkMagnifier::QvkMagnifier() { factor = 2; // Vergrößerungsfaktor slot_magnifier200x200(); resize( 2 * distanceX * factor, 2 * distanceY * factor ); setWindowFlags( Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint | Qt::ToolTip ); //With tooltip, no entry in Taskbar setAttribute( Qt::WA_TranslucentBackground, true ); // neu distanceCopyMagnifier = 30; timer = new QTimer( this ); timer->setTimerType( Qt::PreciseTimer ); timer->setInterval( 40 ); connect( timer, SIGNAL( timeout() ), this, SLOT( slot_mytimer() ) ); } QvkMagnifier::~QvkMagnifier() { } void QvkMagnifier::slot_setMagnifierChangedSize(int value ) { factor = value; resize( 2 * distanceX * factor, 2 * distanceY * factor ); } void QvkMagnifier::slot_magnifierShow( bool value ) { if ( value == true ) { show(); timer->start(); } if ( value == false ) { close(); timer->stop(); } } void QvkMagnifier::slot_magnifier200x200() { distanceX = 50; distanceY = 50; // distanceY ist der Abstand Cursor zur Lupe resize( 2 * distanceX * factor, 2 * distanceY * factor ); } void QvkMagnifier::slot_magnifier400x200() { distanceX = 100; distanceY = 50; // distanceY ist der Abstand Cursor zur Lupe resize( 2 * distanceX * factor, 2 * distanceY * factor ); } void QvkMagnifier::slot_magnifier600x200() { distanceX = 150; distanceY = 50; // distanceY ist der Abstand Cursor zur Lupe resize( 2 * distanceX * factor, 2 * distanceY * factor ); } void QvkMagnifier::setMagnifier() { nameRegion = region::none; // Magnifier top left // Region includes absolute screen values regionTopLeft = QRegion( 0, 0, this->width()/2, this->height()/2 ); if ( regionTopLeft.contains( screenCursorPos ) ) { nameRegion = region::topLeft; valueRegion = regionTopLeft; int valueY = globalCursorPos.y() + distanceY + distanceCopyMagnifier; if ( screenCursorPos.y() <= distanceY ) { // div zum oberen Rand Unterhalb cursor valueY = globalCursorPos.y() + ( distanceY - screenCursorPos.y() ) + distanceY + distanceCopyMagnifier; } // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( screen->geometry().left(), valueY ); return; } // Magnifier top middle // Region includes absolute screen values regionTopMiddle = QRegion( this->width()/2, 0, screen->size().width() - 2*this->width()/2, this->height()/2 ); if ( regionTopMiddle.contains( screenCursorPos ) ) { nameRegion = region::topMiddle; valueRegion = regionTopMiddle; int valueY = globalCursorPos.y() + distanceY + distanceCopyMagnifier; if ( screenCursorPos.y() <= distanceY ) { // div zum oberen Rand Unterhalb cursor valueY = globalCursorPos.y() + ( distanceY - screenCursorPos.y() ) + distanceY + distanceCopyMagnifier; } // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( globalCursorPos.x() - width()/2, valueY ); return; } // Magnifier top right // Region includes absolute screen values regionTopRight = QRegion( screen->size().width() - this->width()/2, 0, this->width()/2, this->height()/2 ); if ( regionTopRight.contains( screenCursorPos ) ) { nameRegion = region::topRight; valueRegion = regionTopRight; int valueY = globalCursorPos.y() + distanceY + distanceCopyMagnifier; if ( screenCursorPos.y() <= distanceY ) { // div zum oberen Rand Unterhalb cursor valueY = globalCursorPos.y() + ( distanceY - screenCursorPos.y() ) + distanceY + distanceCopyMagnifier; } // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( screen->geometry().right() - this->width(), valueY ); return; } // Magnifier right middle // Region includes absolute screen values regionRightMiddle = QRegion( screen->size().width() - this->width()/2, this->height()/2, this->width()/2, // ( Top ) ( Bottom ) screen->size().height() - this->height()/2 - ( this->height() + distanceY + distanceCopyMagnifier ) ); if ( regionRightMiddle.contains( screenCursorPos ) ) { nameRegion = region::rightMiddle; valueRegion = regionRightMiddle; // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( screen->geometry().right() - this->width(), globalCursorPos.y() + distanceY + distanceCopyMagnifier ); return; } // Magnifier bottom right // Region includes absolute screen values regionBottomRight = QRegion( screen->size().width() - this->width()/2, screen->size().height() - this->height() - distanceY - distanceCopyMagnifier, this->width()/2, this->height() + 2*distanceY + distanceCopyMagnifier ); if ( regionBottomRight.contains( screenCursorPos ) ) { nameRegion = region::bottomRight; valueRegion = regionBottomRight; int valueY = globalCursorPos.y() - ( distanceY + distanceCopyMagnifier + this->height() ); if ( screenCursorPos.y() >= ( screen->size().height() - distanceY ) ) { valueY = globalCursorPos.y() - ( screenCursorPos.y() + ( distanceY - screen->size().height() ) ) - ( distanceY + distanceCopyMagnifier + this->height() ); } // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( screen->geometry().right() - this->width(), valueY ); return; } // Magnifier bottom middle // Region includes absolute screen values regionBottomMiddle = QRegion( this->width()/2, screen->size().height() - this->height() - distanceY - distanceCopyMagnifier, screen->size().width() - 2*this->width()/2, this->height() + 2*distanceY + distanceCopyMagnifier ); if ( regionBottomMiddle.contains( screenCursorPos ) ) { nameRegion = region::bottomMiddle; valueRegion = regionBottomMiddle; int valueY = globalCursorPos.y() - ( distanceY + distanceCopyMagnifier + this->height() ); if ( screenCursorPos.y() >= ( screen->size().height() - distanceY ) ) { valueY = globalCursorPos.y() - ( screenCursorPos.y() + ( distanceY - screen->size().height() ) ) - ( distanceY + distanceCopyMagnifier + this->height() ); } // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( globalCursorPos.x() - this->width()/2, valueY ); return; } // Magnifier bottom left // Region includes absolute screen values regionBottomLeft = QRegion( 0, screen->size().height() - this->height() - distanceY - distanceCopyMagnifier, this->width()/2, this->height() + 2*distanceY + distanceCopyMagnifier ); if ( regionBottomLeft.contains( screenCursorPos ) ) { nameRegion = region::bottomLeft; valueRegion = regionBottomLeft; int valueY = globalCursorPos.y() - ( distanceY + distanceCopyMagnifier + this->height() ); if ( screenCursorPos.y() >= ( screen->size().height() - distanceY ) ) { valueY = globalCursorPos.y() - ( screenCursorPos.y() + ( distanceY - screen->size().height() ) ) - ( distanceY + distanceCopyMagnifier + this->height() ); } // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( screen->geometry().left(), valueY ); return; } // Magnifier left middle // Region includes absolute screen values regionLeftMiddle = QRegion( 0, this->height()/2, this->width()/2, // ( Top ) ( Bottom ) screen->size().height() - this->height()/2 - ( this->height() + distanceY + distanceCopyMagnifier ) ); if ( regionLeftMiddle.contains( screenCursorPos ) ) { nameRegion = region::leftMiddle; valueRegion = regionLeftMiddle; int valueX = screen->geometry().left(); int valueY = globalCursorPos.y() + distanceY + distanceCopyMagnifier; // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( valueX, valueY ); return; } // Magnifier middle // Region includes absolute screen values regionMiddle = QRegion( this->width()/2, this->height()/2, screen->size().width() - 2*this->width()/2, screen->size().height() - this->height()/2 - ( this->height() + distanceY + distanceCopyMagnifier ) ); if ( regionMiddle.contains( screenCursorPos ) ) { nameRegion = region::middle; valueRegion = regionMiddle; int valueX = globalCursorPos.x() - width()/2; int valueY = globalCursorPos.y() + distanceY + distanceCopyMagnifier; // Move works with global mouse coordinates like screen->geometry().left() and globalCursorPos move( valueX, valueY ); return; } } void QvkMagnifier::slot_mytimer() { bool debug = false; globalCursorPos = QCursor::pos(); if( debug == true ) { qDebug() << "slot_mytimer globalCursorPos:" << globalCursorPos; } screen = QGuiApplication::screenAt( globalCursorPos ); if ( screen ) { if( debug == true ) { qDebug() << "slot_mytimer screen:" << screen; } emit signal_magnifier_on_screen( screen ); } else { // screenAt found no screen. Without a return the Application is crashed return; } screenCursorPos = globalCursorPos - screen->geometry().topLeft(); // screenCursorPos beginnt bei 0 auf dem jeweiliegen Bildschirm if( debug == true ) { qDebug() << "slot_mytimer screenCursorPos:" << screenCursorPos; } screenList = QGuiApplication::screens(); if( debug == true ) { qDebug() << "slot_mytimer screenList:" << screenList; } screenIndex = screenList.indexOf( screen ); if( debug == true ) { qDebug() << "slot_mytimer screenIndex:" << screenIndex; } setMagnifier(); // Begin grab int valueX = 0; int valueY = 0; switch ( nameRegion ) { case none : { break; } case topLeft : { valueX = screenCursorPos.x() - distanceX; if ( screenCursorPos.x() - distanceX <= 0 ) { valueX = 0; } valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() <= distanceY ) { valueY = 0; } break; } case topMiddle : { valueX = screenCursorPos.x() - distanceX; valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() <= distanceY ) { valueY = 0; } break; } case topRight : { valueX = screenCursorPos.x() - distanceX; if ( screenCursorPos.x() >= screen->size().width() - distanceX ) { valueX = screen->size().width() - 2*distanceX; } valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() <= distanceY ) { valueY = 0; } break; } case rightMiddle : { valueX = screenCursorPos.x() - distanceX; if ( screenCursorPos.x() >= screen->size().width() - distanceX ) { valueX = screen->size().width() - 2*distanceX; } valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() <= distanceY ) { valueY = 0; } break; } case bottomRight : { valueX = screenCursorPos.x() - distanceX; if ( screenCursorPos.x() >= screen->size().width() - distanceX ) { valueX = screen->size().width() - 2*distanceX; } valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() >= screen->size().height() - distanceY ) { valueY = screen->size().height() - 2*distanceY; } break; } case bottomMiddle : { valueX = screenCursorPos.x() - distanceX; valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() >= screen->size().height() - distanceY ) { valueY = screen->size().height() - 2*distanceY; } break; } case bottomLeft : { valueX = screenCursorPos.x() - distanceX; if ( screenCursorPos.x() - distanceX <= 0 ) { valueX = 0; } valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() >= screen->size().height() - distanceY ) { valueY = screen->size().height() - 2*distanceY; } break; } case leftMiddle : { valueX = screenCursorPos.x() - distanceX; if ( screenCursorPos.x() - distanceX <= 0 ) { valueX = 0; } valueY = screenCursorPos.y() - distanceY; if ( screenCursorPos.y() >= screen->size().height() - distanceY ) { valueY = screen->size().height() - 2*distanceY; } break; } case middle : { valueX = screenCursorPos.x() - distanceX; valueY = screenCursorPos.y() - distanceY; break; } } if ( nameRegion != region::none ) { pixmap = screen->grabWindow( 0, valueX, valueY, 2*distanceX, 2*distanceY); repaint(); if ( debug == true ) { qDebug().noquote() << "Grab" << enumToString( nameRegion ) << valueRegion << "globalCursorPos:" << globalCursorPos << "screenCursorPos:" << screenCursorPos << screenIndex; } } } void QvkMagnifier::paintEvent( QPaintEvent *event ) { Q_UNUSED(event); if ( pixmap.isNull() == true ) { return; } QPixmap painterPixmap( pixmap.width() * factor, pixmap.height() * factor ); painterPixmap.fill( Qt::transparent ); QPainter painter; painter.begin( &painterPixmap ); painter.setRenderHints( QPainter::Antialiasing, true ); painter.setRenderHint( QPainter::SmoothPixmapTransform, true ); if ( ( isToolButtonElipse == true ) or ( isToolButtonCircle == true ) ) { QPainterPath path; path.addEllipse( 0, 0, width(), height() ); painter.setClipPath( path ); } QPixmap pix = pixmap.scaled( painterPixmap.width(), painterPixmap.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); painter.drawPixmap( QPoint( 0, 0 ), pix ); QPen pen; pen.setWidth( 7 ); pen.setColor( Qt::lightGray ); painter.setPen( pen ); if ( ( isToolButtonElipse == true ) or ( isToolButtonCircle == true ) ) { painter.drawEllipse( 0, 0, width(), height() ); } else { painter.drawRect( 0, 0, width(), height() ); } painter.end(); QPainter painter_1; painter_1.begin( this ); painter_1.setRenderHint( QPainter::Antialiasing, true ); painter_1.setRenderHint( QPainter::SmoothPixmapTransform, true ); painter_1.drawPixmap( QPoint( 0, 0 ), painterPixmap ); painter_1.end(); // This can delete if vokoscreen run only with a compositer. // This is also not required under Windows, Windows has a compositer. #ifdef Q_OS_LINUX setMask( painterPixmap.mask() ); #endif } QString QvkMagnifier::enumToString( region reg ) { QString string; switch ( reg ) { case none : { string = "none"; break; } case topLeft : { string = "topLeft"; break; } case topMiddle : { string = "topMiddle"; break; } case topRight : { string = "topRight"; break; } case rightMiddle : { string = "rightMiddle"; break; } case bottomRight : { string = "bottomRight"; break; } case bottomMiddle : { string = "bottomMiddle"; break; } case bottomLeft : { string = "bottomLeft"; break; } case leftMiddle : { string = "leftMiddle"; break; } case middle : { string = "middle"; break; } } return string; } vokoscreenNG-3.7.0/src/magnifier/QvkMagnifier.h000066400000000000000000000043371444746353100214320ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKMAGNIFIER_H #define QVKMAGNIFIER_H #include #include #include #include #include class QvkMagnifier: public QWidget { Q_OBJECT public: QvkMagnifier(); virtual ~QvkMagnifier(); QPixmap pixmap; bool isToolButtonRectangle = false; bool isToolButtonElipse = false; bool isToolButtonCircle = false; public slots: void slot_magnifierShow( bool value ); void slot_magnifier200x200(); void slot_magnifier400x200(); void slot_magnifier600x200(); void slot_setMagnifierChangedSize(int value ); private slots: void slot_mytimer(); protected: void paintEvent( QPaintEvent *event ); signals: void signal_magnifier_on_screen( QScreen *); private: void setMagnifier(); int distanceX; int distanceY; int factor; QTimer *timer; QPoint globalCursorPos; QScreen *screen; QPoint screenCursorPos; QList screenList; int screenIndex; int distanceCopyMagnifier; QRegion regionTopLeft; QRegion regionTopMiddle; QRegion regionTopRight; QRegion regionRightMiddle; QRegion regionBottomRight; QRegion regionBottomMiddle; QRegion regionBottomLeft; QRegion regionLeftMiddle; QRegion regionMiddle; QRegion valueRegion; enum region{ none, topLeft, topMiddle, topRight, rightMiddle, bottomRight, bottomMiddle, bottomLeft, leftMiddle, middle }; region nameRegion; QString enumToString( region reg ); }; #endif vokoscreenNG-3.7.0/src/magnifier/QvkMagnifierController.cpp000066400000000000000000000130231444746353100240210ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "QvkMagnifierController.h" #include QvkMagnifierController::QvkMagnifierController( Ui_formMainWindow *myui ) : vkMagnifier(new QvkMagnifier) { ui = myui; sliderMagnificationSize = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayoutMagnicationSize->insertWidget( 0, sliderMagnificationSize ); sliderMagnificationSize->setObjectName( "sliderMagnificationSize" ); sliderMagnificationSize->setTracking( true ); sliderMagnificationSize->setMinimum( 2 ); sliderMagnificationSize->setMaximum( 4 ); sliderMagnificationSize->setPageStep( 1 ); sliderMagnificationSize->show(); connect( sliderMagnificationSize, SIGNAL( valueChanged( int ) ), vkMagnifier, SLOT( slot_setMagnifierChangedSize( int ) ) ); sliderMagnificationRectangle = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_rectangle->insertWidget( 0, sliderMagnificationRectangle ); sliderMagnificationRectangle->setObjectName( "sliderMagnificationRectangle" ); sliderMagnificationRectangle->setTracking( true ); sliderMagnificationRectangle->setMinimum( 1 ); sliderMagnificationRectangle->setMaximum( 3 ); sliderMagnificationRectangle->setPageStep( 1 ); sliderMagnificationRectangle->show(); sliderMagnificationElipse = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_elipse->insertWidget( 0, sliderMagnificationElipse ); sliderMagnificationElipse->setObjectName( "sliderMagnificationElipse" ); sliderMagnificationElipse->setTracking( true ); sliderMagnificationElipse->setMinimum( 2 ); sliderMagnificationElipse->setMaximum( 3 ); sliderMagnificationElipse->setPageStep( 1 ); sliderMagnificationElipse->show(); connect( ui->checkBoxMagnifier, SIGNAL( clicked( bool ) ), vkMagnifier, SLOT( slot_magnifierShow( bool ) ) ); connect( ui->checkBoxMagnifier, SIGNAL( clicked( bool ) ), this, SLOT( slot_label_magnifier_on_screen_clear( bool ) ) ); connect( sliderMagnificationRectangle, SIGNAL( valueChanged( int ) ), this, SLOT( slot_valueChangedRectangle( int ) ) ); sliderMagnificationRectangle->setValue( 2 ); connect( sliderMagnificationElipse, SIGNAL( valueChanged( int ) ), this, SLOT( slot_valueChangedElipse( int ) ) ); connect( ui->toolButton_magnifier_rectangle, SIGNAL( clicked( bool ) ), this, SLOT( slot_toolButtonRectangleClicked( bool ) ) ); connect( ui->toolButton_magnifier_elipse, SIGNAL( clicked( bool ) ), this, SLOT( slot_toolButtonElipseClicked( bool ) ) ); connect( ui->toolButton_magnifier_circle, SIGNAL( clicked( bool ) ), this, SLOT( slot_toolButtonCircleClicked( bool ) ) ); connect( vkMagnifier, SIGNAL( signal_magnifier_on_screen( QScreen * ) ), this, SLOT( slot_magnifier_on_screen( QScreen * ) ) ); } QvkMagnifierController::~QvkMagnifierController() { } void QvkMagnifierController::slot_magnifier_on_screen( QScreen *myScreen ) { QString str = myScreen->name().remove( "." ).remove( '\\' ); ui->label_magnifier_on_screen->setText( str ); } void QvkMagnifierController::slot_label_magnifier_on_screen_clear( bool value ) { if ( value == false ) { ui->label_magnifier_on_screen->clear(); } } void QvkMagnifierController::slot_valueChangedRectangle( int value ) { if ( ui->toolButton_magnifier_rectangle->isChecked() == true ) { if ( value == 1 ) { vkMagnifier->slot_magnifier200x200(); } if ( value == 2 ) { vkMagnifier->slot_magnifier400x200(); } if ( value == 3 ) { vkMagnifier->slot_magnifier600x200(); } } } void QvkMagnifierController::slot_valueChangedElipse( int value ) { if ( ui->toolButton_magnifier_elipse->isChecked() == true ) { if ( value == 2 ) { vkMagnifier->slot_magnifier400x200(); } if ( value == 3 ) { vkMagnifier->slot_magnifier600x200(); } } } void QvkMagnifierController::slot_toolButtonRectangleClicked( bool value ) { vkMagnifier->isToolButtonRectangle = value; vkMagnifier->isToolButtonElipse = false; vkMagnifier->isToolButtonCircle = false; slot_valueChangedRectangle( sliderMagnificationRectangle->value() ); } void QvkMagnifierController::slot_toolButtonElipseClicked( bool value ) { vkMagnifier->isToolButtonRectangle = false; vkMagnifier->isToolButtonElipse = value; vkMagnifier->isToolButtonCircle = false; slot_valueChangedElipse( sliderMagnificationElipse->value() ); } void QvkMagnifierController::slot_toolButtonCircleClicked( bool value ) { vkMagnifier->isToolButtonRectangle = false; vkMagnifier->isToolButtonElipse = false; vkMagnifier->isToolButtonCircle = value; vkMagnifier->slot_magnifier200x200(); } vokoscreenNG-3.7.0/src/magnifier/QvkMagnifierController.h000066400000000000000000000034111444746353100234660ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKMAGNIFIERCONTROLLER_H #define QVKMAGNIFIERCONTROLLER_H #include "ui_formMainWindow.h" #include "QvkMagnifier.h" #include "QvkSpezialSlider.h" class QvkMagnifierController : public QObject { Q_OBJECT public: QvkMagnifierController( Ui_formMainWindow *ui_mainwindow ); virtual ~QvkMagnifierController(); Ui_formMainWindow *ui; public slots: private slots: void slot_valueChangedRectangle( int value ); void slot_valueChangedElipse( int value ); void slot_toolButtonRectangleClicked( bool value ); void slot_toolButtonElipseClicked( bool value ); void slot_toolButtonCircleClicked( bool value ); void slot_magnifier_on_screen( QScreen *myScreen); void slot_label_magnifier_on_screen_clear( bool ); private: QvkMagnifier *vkMagnifier; QvkSpezialSlider *sliderMagnificationRectangle; QvkSpezialSlider *sliderMagnificationElipse; QvkSpezialSlider *sliderMagnificationSize; protected: signals: }; #endif vokoscreenNG-3.7.0/src/magnifier/magnifier.pri000066400000000000000000000003521444746353100213440ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkMagnifierController.h \ $$PWD/QvkMagnifier.h SOURCES += $$PWD/QvkMagnifierController.cpp \ $$PWD/QvkMagnifier.cpp vokoscreenNG-3.7.0/src/main.cpp000066400000000000000000000142511444746353100163610ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "mainwindow.h" #include "global.h" #ifdef Q_OS_LINUX #include "mainWindow_wl.h" #include "QvkWaylandRoutines.h" #endif #ifdef Q_OS_WIN #include "QvkSettings.h" #endif #include #include #include #include #include #include int main(int argc, char *argv[]) { QLoggingCategory::defaultCategory()->setEnabled( QtDebugMsg, true ); QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QGuiApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); QApplication::setStyle( QStyleFactory::create( "Fusion" ) ); QApplication app(argc, argv); QString help; help.append( "\n" ); help.append( "Usage: " + global::name + " [Option] [File or URL]" + "\n" ); help.append( "\n" ); help.append( "Options: \n" ); help.append( " -h or --help Print this message\n" ); help.append( " -v or --version Print version \n" ); help.append( "\n" ); help.append( "File or Url:\n" ); help.append( " Play a video\n" ); help.append( " Example file:\n" ); help.append( " vokoscreenNG /path/video\n" ); help.append( "\n" ); help.append( " Example URL:\n"); help.append( " vokoscreenNG http://www.rapconverter.com/SampleDownload/Sample320.mp4\n"); help.append( " vokoscreenNG http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4" ); help.append( "\n" ); QStringList arguments = QApplication::instance()->arguments(); if ( !arguments.empty() and ( arguments.count() == 2 ) ) { QStringList arguments = QApplication::instance()->arguments(); if ( ( arguments.at(1) == "--help" ) or ( arguments.at(1) == "-h" ) ) { qDebug().resetFormat().noquote() << help; return 0; } if ( ( arguments.at(1) == "--version" ) or ( arguments.at(1) == "-v" ) ) { qDebug().noquote() << global::name << global::version; return 0; } if ( arguments.at(1) == "gst_appsrc" ) { goto end; } // If call from terminal and local file or remote file not exists QFile file( arguments.at(1) ); if ( ( file.exists() == false ) and ( arguments.at(1).contains( "http://" ) == false ) and ( arguments.at(1).contains( "https://" ) == false ) ) { qDebug().noquote() << global::nameOutput << arguments.at(1) << "file not exists"; qDebug().resetFormat().noquote() << help; qDebug(); return 1; } } end: // Initialize GStreamer // https://developer.gnome.org/gstreamer/stable/gst-running.html #ifdef Q_OS_LINUX QString separator; separator = ":"; #endif #ifdef Q_OS_WIN QString separator; separator = ";"; #endif // qmake options example: // DEFINES+=FOR_MY_LINUX_INSTALLER #if defined( Q_OS_WIN ) || defined( FOR_MY_LINUX_INSTALLER ) QvkSettings vkSettings; QFileInfo dirPathProfile( vkSettings.getFileName() ); QString pathProfile = dirPathProfile.absolutePath(); QString programPath = QDir::currentPath(); QString pluginPath; pluginPath.append( programPath ); pluginPath.append( separator ); pluginPath.append( pathProfile ); qputenv( "GST_PLUGIN_PATH_1_0", pluginPath.toUtf8() ); QString pathPath; pathPath.append( programPath ); pathPath.append( separator ); pathPath.append( pathProfile ); qputenv( "PATH", pathPath.toUtf8() ); QString pathRegistry; pathRegistry.append( pathProfile ); pathRegistry.append( "/gstreamer.registry" ); qputenv( "GST_REGISTRY_1_0", pathRegistry.toUtf8() ); #endif // Gstreamer debug begin // Write Gstreamer debug level in a file QvkSettings vkSettingsGstDebug; QFileInfo fileInfo( vkSettingsGstDebug.getFileName() ); QString pathAndFilename = fileInfo.absoluteFilePath(); // qDebug() << "pathAndFilename:" << pathAndFilename; QString pathToProfile = fileInfo.absolutePath(); // qDebug() << "pathProfile" << pathToProfile; QSettings setingsGstDebug( pathAndFilename, QSettings::IniFormat ); QString debugLevel = setingsGstDebug.value( "sliderGstDebugLevel", "0" ).toString(); // qDebug() << "debugLevel:" << debugLevel; if ( debugLevel.contains( "0" ) == false ) { qputenv( "GST_DEBUG", debugLevel.toUtf8() ); QString debugPathProfile; debugPathProfile.append( pathToProfile ); debugPathProfile.append( "/GST-Debuglevel-" + debugLevel + ".txt" ); qputenv( "GST_DEBUG_FILE", debugPathProfile.toUtf8() ); } // Gstreamer debug end gst_init (&argc, &argv); QTranslator * qtTranslator = new QTranslator(); qtTranslator->load( "qt_" + QLocale::system().name(), QLibraryInfo::location( QLibraryInfo::TranslationsPath ) ); app.installTranslator( qtTranslator ); QTranslator translator; translator.load( QLocale::system().name(), ":/language" ); app.installTranslator( &translator ); #ifdef Q_OS_LINUX if ( QvkWaylandRoutines::is_Wayland_Display_Available() == false ) { QvkMainWindow *w = new QvkMainWindow; w->show(); } else { QvkMainWindow_wl *wl = new QvkMainWindow_wl; wl->show(); } #endif #ifdef Q_OS_WIN QvkMainWindow *w = new QvkMainWindow; w->show(); #endif return app.exec(); } vokoscreenNG-3.7.0/src/mainwindow.cpp000066400000000000000000003365471444746353100176300ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "mainwindow.h" #include "ui_formMainWindow.h" #include "QvkInformation.h" #include "global.h" #include "QvkScreenManager.h" #include "QvkLicenses.h" #include "QvkImageFromTabs.h" #include "QvkDirDialog.h" #include "QvkVirtual.h" #include "QvkSnapshot.h" #include "QvkPadsAndCaps.h" #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef Q_OS_LINUX #include #include "QvkComposite.h" #endif QvkMainWindow::QvkMainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::formMainWindow), vkWinInfo(new QvkWinInfo) { ui->setupUi(this); #ifdef Q_OS_WIN // Only for Windows WASAPI soundEffect = new QSoundEffect(); #endif #ifdef Q_OS_LINUX // Composite QvkComposite *vkComposite = new QvkComposite( this ); Q_UNUSED(vkComposite) #endif QFile fileCSS( ":/pictures/css/css.qss" ); fileCSS.open( QFile::ReadOnly | QFile::Text ); QTextStream streamCSS( &fileCSS ); qApp->setStyleSheet( streamCSS.readAll() ); fileCSS.close(); sliderScreencastCountDown = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_60->insertWidget( 1, sliderScreencastCountDown ); sliderScreencastCountDown->setObjectName( "sliderScreencastCountDown" ); sliderScreencastCountDown->setTracking( true ); sliderScreencastCountDown->setMinimum( 0 ); sliderScreencastCountDown->setMaximum( 30 ); sliderScreencastCountDown->setValue( 0 ); sliderScreencastCountDown->setPageStep( 1 ); sliderScreencastCountDown->show(); sliderFrames = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_33->insertWidget( 0, sliderFrames ); sliderFrames->setObjectName( "sliderFrames" ); sliderFrames->setTracking( true ); sliderFrames->setMinimum( 10 ); sliderFrames->setMaximum( 144 ); sliderFrames->setValue( 25 ); sliderFrames->show(); sliderX264 = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_26->insertWidget( 1, sliderX264 ); sliderX264->setObjectName( "sliderX264" ); sliderX264->setTracking( true ); sliderX264->setMinimum( 0 ); sliderX264->setMaximum( 50 ); sliderX264->setValue( 17 ); sliderX264->show(); sliderOpenh264 = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_openh264->insertWidget( 1, sliderOpenh264 ); sliderOpenh264->setObjectName( "sliderOpenh264" ); sliderOpenh264->setTracking( true ); sliderOpenh264->setMinimum( 1 ); // we need minimum 1, with 0 we get wrong colors. sliderOpenh264->setMaximum( 51 ); sliderOpenh264->setValue( 23 ); sliderOpenh264->show(); sliderVp8 = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_vp8->insertWidget( 1, sliderVp8 ); sliderVp8->setObjectName( "sliderVp8" ); sliderVp8->setTracking( true ); sliderVp8->setMinimum( 0 ); sliderVp8->setMaximum( 63 ); sliderVp8->setValue( 20 ); sliderVp8->show(); sliderLimitOfFreeDiskSpace = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_27->insertWidget( 2, sliderLimitOfFreeDiskSpace ); sliderLimitOfFreeDiskSpace->setObjectName( "sliderLimitOfFreeDiskSpace" ); sliderLimitOfFreeDiskSpace->setMinimum( 100 ); sliderLimitOfFreeDiskSpace->setMaximum( 999 ); sliderLimitOfFreeDiskSpace->setValue( 250 ); sliderLimitOfFreeDiskSpace->show(); sliderShowInSystrayAlternative = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_18->insertWidget( 1, sliderShowInSystrayAlternative ); sliderShowInSystrayAlternative->setObjectName( "sliderShowInSystrayAlternative" ); sliderShowInSystrayAlternative->setMinimum( 24 ); sliderShowInSystrayAlternative->setMaximum( 64 ); sliderShowInSystrayAlternative->setValue( 48 ); sliderShowInSystrayAlternative->show(); sliderHour = new QvkSpezialSlider( Qt::Horizontal ); ui->verticalLayout_14->addWidget( sliderHour ); sliderHour->setObjectName( "sliderHour" ); sliderHour->setMinimum( 0 ); sliderHour->setMaximum( 23 ); sliderHour->setValue( 0 ); sliderHour->show(); sliderMinute = new QvkSpezialSlider( Qt::Horizontal ); ui->verticalLayout_14->addWidget( sliderMinute ); sliderMinute->setObjectName( "sliderMinute" ); sliderMinute->setMinimum( 0 ); sliderMinute->setMaximum( 59 ); sliderMinute->setValue( 0 ); sliderMinute->show(); sliderSecondWaitBeforeRecording = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_7->insertWidget( 1, sliderSecondWaitBeforeRecording ); sliderSecondWaitBeforeRecording->setObjectName( "sliderSecondWaitBeforeRecording" ); sliderSecondWaitBeforeRecording->setMinimum( 0 ); sliderSecondWaitBeforeRecording->setMaximum( 3 ); sliderSecondWaitBeforeRecording->setValue( 1 ); sliderSecondWaitBeforeRecording->setPageStep( 1 ); sliderSecondWaitBeforeRecording->show(); sliderStopRecordingAfterHouers = new QvkSpezialSlider( Qt::Horizontal ); ui->verticalLayout_29->addWidget( sliderStopRecordingAfterHouers ); sliderStopRecordingAfterHouers->setObjectName( "sliderStopRecordingAfterHouers" ); sliderStopRecordingAfterHouers->setMinimum( 0 ); sliderStopRecordingAfterHouers->setMaximum( 99 ); sliderStopRecordingAfterHouers->setValue( 0 ); sliderStopRecordingAfterHouers->show(); sliderStopRecordingAfterMinutes = new QvkSpezialSlider( Qt::Horizontal ); ui->verticalLayout_29->addWidget( sliderStopRecordingAfterMinutes ); sliderStopRecordingAfterMinutes->setObjectName( "sliderStopRecordingAfterMinutes" ); sliderStopRecordingAfterMinutes->setMinimum( 0 ); sliderStopRecordingAfterMinutes->setMaximum( 99 ); sliderStopRecordingAfterMinutes->setValue( 0 ); sliderStopRecordingAfterMinutes->show(); sliderStopRecordingAfterSeconds = new QvkSpezialSlider( Qt::Horizontal ); ui->verticalLayout_29->addWidget( sliderStopRecordingAfterSeconds ); sliderStopRecordingAfterSeconds->setObjectName( "sliderStopRecordingAfterSeconds" ); sliderStopRecordingAfterSeconds->setMinimum( 0 ); sliderStopRecordingAfterSeconds->setMaximum( 99 ); sliderStopRecordingAfterSeconds->setValue( 15 ); sliderStopRecordingAfterSeconds->show(); sliderWaitBeforeSnapshot = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_59->insertWidget( 1, sliderWaitBeforeSnapshot ); sliderWaitBeforeSnapshot->setObjectName( "sliderWaitBeforeSnapshot" ); sliderWaitBeforeSnapshot->setMinimum( 0 ); sliderWaitBeforeSnapshot->setMaximum( 30 ); sliderWaitBeforeSnapshot->setValue( 4 ); sliderWaitBeforeSnapshot->setDecimalPoint( true ); sliderWaitBeforeSnapshot->show(); sliderGstDebugLevel = new QvkSpezialSlider( Qt::Horizontal ); ui->horizontalLayout_36->insertWidget( 1, sliderGstDebugLevel ); sliderGstDebugLevel->setObjectName( "sliderGstDebugLevel" ); sliderGstDebugLevel->setMinimum( 0 ); sliderGstDebugLevel->setMaximum( 9 ); sliderGstDebugLevel->setValue( 0 ); sliderGstDebugLevel->setDecimalPoint( false ); sliderGstDebugLevel->setEnabled( false ); sliderGstDebugLevel->setPageStep( 1 ); sliderGstDebugLevel->show(); ui->comboBox_shortcut_start->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); ui->comboBox_shortcut_pause->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); ui->comboBox_shortcut_magnification->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn); vklogController = new QvkLogController(); connect( vklogController, SIGNAL( signal_newLogText( QString ) ), this, SLOT( slot_textToGuiLog( QString ) ) ); setWindowTitle( global::name + " " + global::version ); QIcon icon( QString::fromUtf8( ":/pictures/logo/logo.png" ) ); setWindowIcon( icon ); vkMagnifierController = new QvkMagnifierController(ui); Q_UNUSED(vkMagnifierController); ui->label_magnifier_on_screen->setText( "" ); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 vkPlayer = new QvkPlayer( this, ui ); #else // Qt6 #endif QvkHelp *vkHelp = new QvkHelp( ui ); QvkLicenses *vkLicenses = new QvkLicenses( ui ); vkRegionChoise = new QvkRegionChoise( ui ); vkCountdown = new QvkCountdown(); vkCountdown->init(); QvkVirtual *vkVirtual = new QvkVirtual(); QvkInformation *vkInformation = new QvkInformation( this, ui, sliderScreencastCountDown, sliderSecondWaitBeforeRecording ); connect( this, SIGNAL( signal_newVideoFilename( QString ) ), vkInformation, SLOT( slot_newVideoFilename( QString ) ) ); vkLimitDiskFreeSpace = new QvkLimitDiskFreeSpace( ui, sliderLimitOfFreeDiskSpace ); qDebug().noquote() << global::nameOutput << "Version:" << global::version; qDebug().noquote() << global::nameOutput << "Locale:" << QLocale::system().name(); QDateTime dateTime = QDateTime::currentDateTime(); qDebug().noquote() << global::nameOutput << "Log from:" << dateTime.toString( "yyyy-MM-dd hh:mm:ss" ); QLocale locale; qDebug().noquote() << global::nameOutput << "Country:" << QLocale::countryToString( locale.country() ); qDebug().noquote() << global::nameOutput << "Qt:" << qVersion(); qDebug().noquote() << global::nameOutput << gst_version_string(); #ifdef Q_OS_LINUX qDebug().noquote() << global::nameOutput << "PulseAudio library version:" << pa_get_library_version(); #endif qDebug().noquote() << global::nameOutput << "Virtual Maschine:" << vkVirtual->isVirtualMaschine(); qDebug().noquote() << global::nameOutput << "Operating system:" << QSysInfo::prettyProductName(); if ( QSysInfo::prettyProductName().contains( "Flatpak" ) ) { isFlatpak = true; } qDebug().noquote() << global::nameOutput << "KernelVersion:" << QSysInfo::kernelVersion(); qDebug().noquote() << global::nameOutput << "CPU Architecture:" << QSysInfo::currentCpuArchitecture(); qDebug().noquote() << global::nameOutput << "Count CPU:" << QThread::idealThreadCount(); qDebug().noquote() << global::nameOutput << global::name << "running as:" << QGuiApplication::platformName() << "client"; #ifdef Q_OS_LINUX qDebug().noquote() << global::nameOutput << global::name << "running on:" << qgetenv( "XDG_SESSION_TYPE" ).toLower(); #endif qDebug().noquote() << global::nameOutput << "Desktop:" << qgetenv( "XDG_CURRENT_DESKTOP" ); qDebug().noquote() << global::nameOutput << "Icon-Theme:" << QIcon::themeName(); qDebug().noquote() << global::nameOutput << "Styles:" << QApplication::style()->metaObject()->className(); qDebug().noquote() << global::nameOutput << "ExecutablePath: " << QCoreApplication::applicationDirPath(); qDebug().noquote() << global::nameOutput << "Qt-PluginsPath: " << QLibraryInfo::location( QLibraryInfo::PluginsPath ); qDebug().noquote() << global::nameOutput << "Qt-TranslationsPath:" << QLibraryInfo::location( QLibraryInfo::TranslationsPath ); qDebug().noquote() << global::nameOutput << "Qt-LibraryPath: " << QLibraryInfo::location( QLibraryInfo::LibrariesPath ); qDebug().noquote() << global::nameOutput << "Settings:" << vkSettings.getFileName(); qDebug().noquote() << global::nameOutput << "Log:" << vklogController->get_logPath(); qDebug().noquote() << global::nameOutput << "Default Videopath:" << QStandardPaths::writableLocation( QStandardPaths::MoviesLocation ); qDebug().noquote() << global::nameOutput << "User Videopath:" << vkSettings.getVideoPath(); qDebug(); #ifdef Q_OS_WIN QByteArray GSTREAMER_1_0_ROOT_X86 = qgetenv( "GSTREAMER_1_0_ROOT_X86" ); qDebug().noquote() << global::nameOutput << "GSTREAMER_1_0_ROOT_X86:"<< GSTREAMER_1_0_ROOT_X86; QByteArray GST_PLUGIN_PATH_1_0 = qgetenv( "GST_PLUGIN_PATH_1_0" ); qDebug().noquote() << global::nameOutput << "GST_PLUGIN_PATH_1_0:"<< GST_PLUGIN_PATH_1_0; QByteArray PATH = qgetenv( "PATH" ); qDebug().noquote() << global::nameOutput << "PATH:"<< PATH; QByteArray GST_REGISTRY_1_0 = qgetenv( "GST_REGISTRY_1_0" ); qDebug().noquote() << global::nameOutput << "GST_REGISTRY_1_0:"<< GST_REGISTRY_1_0; qDebug(); #endif vk_setCornerWidget( ui->tabWidgetScreencast ); // Sidebar connect( ui->toolButtonScreencast, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(0); } ); connect( ui->toolButtonCamera, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(1); } ); connect( ui->toolButtonShowclick, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(2); } ); connect( ui->toolButtonSnapshot, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(3); } ); connect( ui->toolButtonShortcut, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(4); } ); connect( ui->toolButtonPlayer, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(5); } ); connect( ui->toolButtonLog, &QToolButton::clicked, this, [=]() { ui->tabWidgetSideBar->setCurrentIndex(6); } ); ui->tabWidgetSideBar->tabBar()->hide(); ui->toolButtonScreencast->click(); // Bar for start, stop etc. connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonStart, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonStop, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonPause, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonContinue, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->pushButtonPlay, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastFullscreen, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), this, SLOT( slot_comboBoxScreencastScreenCountdown( bool ) ) ); #ifdef Q_OS_LINUX connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastWindow, SLOT( setEnabled( bool ) ) ); #endif connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastArea, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->comboBoxScreencastScreen, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->labelScreencastCountdownText, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), sliderScreencastCountDown, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameAudio, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->labelFrames, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameFrames, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->labelFormat, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->comboBoxFormat, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->labelVideoCodec, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->comboBoxVideoCodec, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), this, SLOT( slot_IfStartAudioCodecWidgetsSetEnabled() ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameVideoCodecx264, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameVideoCodecOpenh264, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameVideoCodecVp8, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->checkBoxMouseCursorOnOff,SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameVideoPath, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameLimitOfFreeDiskSpace, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameStartTime, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->checkBoxStopRecordingAfter, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->frameStopRecordingAfter, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->checkBoxMinimizedWhenRecordingStarts, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->checkBoxShowInSystray, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), this, SLOT( slot_preStart() ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->comboBoxScreencastScreenArea, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStart, SIGNAL( clicked( bool ) ), ui->toolButtonScreencastAreaReset, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->pushButtonStop, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->pushButtonStart, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->pushButtonPause, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->pushButtonPlay, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastFullscreen, SLOT( setDisabled( bool ) ) ); #ifdef Q_OS_LINUX connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastWindow, SLOT( setDisabled( bool ) ) ); #endif connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->radioButtonScreencastArea, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->comboBoxScreencastScreen, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->labelScreencastCountdownText, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), sliderScreencastCountDown, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameAudio, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->labelFrames, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameFrames, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->labelFormat, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->comboBoxFormat, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->labelVideoCodec, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->comboBoxVideoCodec, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), this, SLOT( slot_IfStopAudioCodecWidgetsSetDisabled() ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameVideoCodecx264, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameVideoCodecOpenh264, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameVideoCodecVp8, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->checkBoxMouseCursorOnOff,SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameVideoPath, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameLimitOfFreeDiskSpace, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->frameStartTime, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->checkBoxStopRecordingAfter, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->checkBoxMinimizedWhenRecordingStarts, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->checkBoxShowInSystray, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), this, SLOT( slot_preStop() ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), this, SLOT( slot_Stop() ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->comboBoxScreencastScreenArea, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, SIGNAL( clicked( bool ) ), ui->toolButtonScreencastAreaReset, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonStop, &QPushButton::clicked, this, [=]() { lastButtonPressed = "start"; } ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), this, SLOT( slot_Pause() ) ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), ui->pushButtonPause, SLOT( hide() ) ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), ui->pushButtonContinue, SLOT( show() ) ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), ui->pushButtonStop, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonPause, SIGNAL( clicked( bool ) ), ui->pushButtonContinue, SLOT( setDisabled( bool ) ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), this, SLOT( slot_Continue() ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), ui->pushButtonContinue, SLOT( setEnabled( bool ) ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), ui->pushButtonContinue, SLOT( hide() ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), ui->pushButtonPause, SLOT( show() ) ); connect( ui->pushButtonContinue, SIGNAL( clicked( bool ) ), ui->pushButtonStop, SLOT( setDisabled( bool ) ) ); ui->pushButtonContinue->hide(); connect( ui->pushButtonPlay, SIGNAL( clicked( bool ) ), this, SLOT( slot_Play() ) ); connect( ui->pushButtonScreencastOpenfolder, SIGNAL( clicked( bool ) ), this, SLOT( slot_Folder() ) ); connect( ui->pushButtonScreencastSnapshot, &QPushButton::clicked, this, [=]() { lastButtonPressed = "snapshot"; } ); connect( ui->pushButton_log_openfolder, SIGNAL( clicked( bool ) ), this, SLOT( slot_logFolder() ) ); // Tab 1 Screen #ifdef Q_OS_WIN ui->radioButtonScreencastWindow->setEnabled( false ); ui->radioButtonScreencastWindow->setVisible( false ); ui->help_screencast_window->setVisible( false ); #endif ui->radioButtonScreencastFullscreen->setText( tr("Fullscreen") ); // QT Creator sets an ampersand, translation now here ui->radioButtonScreencastWindow->setText( tr("Window") ); // QT Creator sets an ampersand, translation now here connect( ui->radioButtonScreencastFullscreen, SIGNAL( toggled( bool ) ), ui->toolButtonScreencastAreaReset, SLOT( setDisabled( bool ) ) ); connect( ui->radioButtonScreencastFullscreen, SIGNAL( toggled( bool ) ), ui->comboBoxScreencastScreenArea, SLOT( setDisabled( bool ) ) ); connect( ui->radioButtonScreencastWindow, SIGNAL( toggled( bool ) ), ui->comboBoxScreencastScreen, SLOT( setDisabled( bool ) ) ); connect( ui->radioButtonScreencastWindow, SIGNAL( toggled( bool ) ), ui->comboBoxScreencastScreenArea, SLOT( setDisabled( bool ) ) ); connect( ui->radioButtonScreencastWindow, SIGNAL( toggled( bool ) ), ui->toolButtonScreencastAreaReset, SLOT( setDisabled( bool ) ) ); connect( ui->radioButtonScreencastArea, SIGNAL( toggled( bool ) ), vkRegionChoise, SLOT( slot_init() ) ); connect( ui->radioButtonScreencastArea, SIGNAL( toggled( bool ) ), vkRegionChoise, SLOT( setVisible( bool ) ) ); connect( ui->radioButtonScreencastArea, SIGNAL( toggled( bool ) ), ui->comboBoxScreencastScreen, SLOT( setDisabled( bool ) ) ); connect( ui->radioButtonScreencastArea, SIGNAL( toggled( bool ) ), ui->toolButtonScreencastAreaReset, SLOT( setEnabled( bool ) ) ); connect( ui->radioButtonScreencastArea, SIGNAL( toggled( bool ) ), ui->comboBoxScreencastScreenArea, SLOT( setEnabled( bool ) ) ); connect( ui->toolButtonScreencastAreaReset, SIGNAL( clicked( bool ) ), vkRegionChoise, SLOT( slot_areaReset() ) ); connect( ui->comboBoxScreencastScreen, SIGNAL( currentIndexChanged( int ) ), this, SLOT( slot_setMaxFPS( int ) ) ); connect( ui->radioButtonScreencastWindow, SIGNAL( toggled( bool ) ), this, SLOT( slot_disableShowclickHalo( bool ) ) ); // Tab 2 Audio and Videocodec #ifdef Q_OS_WIN vkAudioController = new QvkAudioController( ui ); connect( vkAudioController->vkDirectSoundController, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), this, SLOT( slot_haveAudioDeviceSelected( bool ) ) ); connect( vkAudioController->vkWASAPIController, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), this, SLOT( slot_haveAudioDeviceSelected( bool ) ) ); #endif #ifdef Q_OS_LINUX vkAudioController = new QvkAudioController( ui ); connect( vkAudioController, SIGNAL( signal_haveAudioDeviceSelected( bool ) ), this, SLOT( slot_haveAudioDeviceSelected( bool ) ) ); vkAudioController->init(); #endif connect( ui->toolButtonFramesReset, SIGNAL( clicked( bool ) ), this, SLOT( slot_framesReset() ) ); connect( ui->comboBoxFormat, SIGNAL( currentTextChanged( QString ) ), this, SLOT( slot_set_available_VideoCodecs_in_Combox( QString ) ) ); connect( ui->comboBoxFormat, SIGNAL( currentTextChanged( QString ) ), this, SLOT( slot_set_available_AudioCodecs_in_Combox( QString ) ) ); connect( ui->comboBoxVideoCodec, SIGNAL( currentTextChanged( QString ) ), this, SLOT( slot_videoCodecChanged( QString ) ) ); connect( ui->toolButtonx264Reset, SIGNAL( clicked( bool ) ), this, SLOT( slot_x264Reset() ) ); connect( ui->toolButtonOpenh264Reset, SIGNAL( clicked( bool ) ), this, SLOT( slot_openh264Reset() ) ); connect( ui->toolButtonVP8Reset, SIGNAL( clicked( bool ) ), this, SLOT( slot_vp8Reset() ) ); // Tab 3 Time connect( ui->checkBoxStartTime, SIGNAL( toggled( bool ) ), this, SLOT( slot_StartTimer( bool ) ) ); timerStartTimer = new QTimer(); timerStartTimer->setTimerType( Qt::PreciseTimer ); connect( timerStartTimer, SIGNAL( timeout() ), this, SLOT( slot_startTime() ) ); connect( ui->checkBoxStartTime, SIGNAL( clicked( bool ) ), ui->pushButtonStart, SLOT( setHidden( bool ) ) ); connect( ui->checkBoxStartTime, SIGNAL( clicked( bool ) ), ui->labelScreencastCountdownText, SLOT( setDisabled( bool ) ) ); connect( ui->checkBoxStartTime, SIGNAL( clicked( bool ) ), sliderScreencastCountDown, SLOT( setDisabled( bool ) ) ); connect( ui->checkBoxStopRecordingAfter, SIGNAL( toggled( bool ) ), ui->frameStopRecordingAfter, SLOT( setEnabled( bool ) ) ); connect( timerStopRecordingAfter, SIGNAL( timeout() ), ui->pushButtonStop, SLOT( click() ) ); // Tab 4 Misc videoFileSystemWatcher = new QFileSystemWatcher(); connect( ui->toolButtonVideoPath, SIGNAL( clicked( bool ) ), this, SLOT( slot_newVideoPath() ) ); connect( ui->lineEditVideoPath, SIGNAL( textChanged( QString ) ), this, SLOT( slot_videoFileSystemWatcherSetNewPath() ) ); connect( ui->lineEditVideoPath, SIGNAL( textChanged( QString ) ), this, SLOT( slot_videoFileSystemWatcherSetButtons() ) ); connect( videoFileSystemWatcher, SIGNAL( directoryChanged( const QString& ) ), this, SLOT( slot_videoFileSystemWatcherSetButtons() ) ); ui->lineEditVideoPath->setText( QStandardPaths::writableLocation( QStandardPaths::MoviesLocation ) ); connect( ui->checkBoxGstreamerDebugLevel, SIGNAL( toggled( bool) ), this, SLOT( slot_GstreamerDebugLevel( bool ) ) ); connect( ui->pushButtonGstreamerDebugLevel, SIGNAL( clicked( bool ) ), this, SLOT( slot_GstreamerOpenFolder( bool ) ) ); connect( ui->checkBoxGstreamerDebugLevel, SIGNAL( clicked( bool ) ), this, SLOT( slot_GstreamerDebugLevelDialog( bool ) ) ); // ***************** showClick ***************************** vkShowClick = new QvkShowClick(); vkShowClick->init( ui ); vk_setCornerWidget( ui->tabWidgetShowClick ); // ***************** Halo ********************************** vkHalo = new QvkHalo(); vkHalo->init( ui ); // ***************** snapshot ****************************** QvkSnapshot *vkSnapshot = new QvkSnapshot( this, ui ); vkSnapshot->init(); vk_setCornerWidget( ui->tabWidgetSnapshot ); // ***************** shortcut ****************************** vkGlobalShortcut = new QvkGlobalShortcut( this, ui ); Q_UNUSED(vkGlobalShortcut); vk_setCornerWidget( ui->tabWidgetShortcut ); // *************** systrayAlternative ********************** vkSystrayAlternative = new QvkSystrayAlternative( this, ui, sliderShowInSystrayAlternative ); vkSystray = new QvkSystray( ui ); if ( QSystemTrayIcon::isSystemTrayAvailable() == true ) { vkSystray->init(); connect( vkSystray, SIGNAL( signal_SystemtrayIsClose() ), this, SLOT( close() ) ); connect( ui->checkBoxShowInSystray, SIGNAL( clicked( bool ) ), vkSystray, SLOT( setVisible( bool ) ) ); connect( vkGlobalShortcut, SIGNAL( signal_shortcutSystray( QString, QString ) ), vkSystray, SLOT( slot_shortcutSystray( QString, QString ) ) ); ui->frameShowInSystrayAlternative->hide(); ui->toolButtonShowInSystrayAlternativeReset->hide(); } else { connect( ui->checkBoxShowInSystrayAlternative, SIGNAL( clicked( bool ) ), vkSystrayAlternative, SLOT( setVisible( bool ) ) ); connect( vkGlobalShortcut, SIGNAL( signal_shortcutSystray( QString, QString ) ), vkSystrayAlternative, SLOT( slot_shortcutSystray( QString, QString ) ) ); ui->frameShowInSystray->hide(); } // Tab 5 Available muxer, encoder etc. QIcon iconAvailable( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); QSize size = iconAvailable.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); ui->labelAvalible->setPixmap( iconAvailable.pixmap( size, QIcon::Normal, QIcon::On )); QIcon iconNotAvailable( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); ui->labelNotAvailable->setPixmap( iconNotAvailable.pixmap( size, QIcon::Normal, QIcon::On )); // End Tabs // Tab 6 About ui->labelSourcecodeUrl->setText( "" + tr( "Sourcecode" ) + "" ); ui->labelWebSiteUrl->setText( "" + tr( "Homepage" ) + "" ); ui->labelLanguageUrl->setText( "" + tr( "Translations" ) + "" ); ui->labelDonateUrl->setText( "" + tr( "Donate" ) + "" ); // Close GUI connect( this, SIGNAL( signal_close() ), ui->pushButtonContinue, SLOT( click() ) ); connect( this, SIGNAL( signal_close() ), ui->pushButtonStop, SLOT( click() ) ); connect( this, SIGNAL( signal_close( bool ) ), ui->checkBoxCameraOnOff,SLOT( setChecked( bool ) ) ); connect( this, SIGNAL( signal_close() ), vkHelp, SLOT( slot_cleanUp() ) ); connect( this, SIGNAL( signal_close() ), vkHelp, SLOT( close() ) ); connect( this, SIGNAL( signal_close() ), vkLicenses, SLOT( close() ) ); connect( this, SIGNAL( signal_close() ), vkSystrayAlternative, SLOT( close() ) ); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 connect( this, SIGNAL( signal_close() ), vkPlayer, SLOT( close() ) ); #else // Qt6 #endif connect( this, SIGNAL( signal_close() ), vkRegionChoise, SLOT( close() ) ); connect( this, SIGNAL( signal_close() ), vkSystray, SLOT( slot_closeSystray() ) ); VK_Supported_Formats_And_Codecs(); VK_Check_is_Format_available(); VK_set_available_Formats_in_Combox(); slot_gst_formatVideoAudoicodec_available(); VK_gst_Elements_available(); QvkScreenManager *screenManager = new QvkScreenManager( this ); // Fullscreen connect( screenManager, SIGNAL( signal_clear_widget() ), ui->comboBoxScreencastScreen, SLOT( clear() ) ); connect( screenManager, SIGNAL( signal_screen_count_changed( QString, QString) ), this, SLOT( slot_screenCountChanged( QString, QString ) ) ); // Area connect( screenManager, SIGNAL( signal_clear_widget() ), ui->comboBoxScreencastScreenArea, SLOT( clear() ) ); connect( screenManager, SIGNAL( signal_screen_count_changed( QString, QString) ), this, SLOT( slot_screenCountChangedArea( QString, QString ) ) ); connect( ui->comboBoxScreencastScreenArea, SIGNAL( currentIndexChanged( int) ), vkRegionChoise, SLOT( slot_init() ) ); screenManager->init(); // *****************Begin Camera ********************************* vkCameraController = new QvkCameraController(ui); Q_UNUSED(vkCameraController); vk_setCornerWidget( ui->tabWidgetCamera ); // *****************End Camera *********************************** // *****************Begin Log ********************************* vk_setCornerWidget( ui->tabWidgetLog ); // *****************End Log *********************************** #ifdef Q_OS_WIN vkCiscoOpenh264Controller = new QvkCiscoOpenh264Controller( vkSettings.getFileName(), ui ); vkCiscoOpenh264Controller->showWaitDialog(); vkCiscoOpenh264Controller->init(); #endif #ifdef Q_OS_LINUX ui->line_cisco->hide(); ui->frame_cisco->hide(); #endif vkSettings.readAll( ui, this ); vkSettings.readAreaScreencast( vkRegionChoise ); vkSettings.readCamera( vkCameraController ); vkSettings.readSystrayAlternative( vkSystrayAlternative ); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 vkSettings.readPlayerPathOpenFile( vkPlayer ); #else // Qt6 #endif vkSettings.readHaloColor( vkHalo ); vkSettings.readShowclickColor( vkShowClick ); vkGlobalShortcut->slot_checkbox_shortcut_start_clicked( true ); vkGlobalShortcut->slot_checkbox_shortcut_pause_clicked( true ); vkGlobalShortcut->slot_checkbox_shortcut_magnification_clicked( true ); vkGlobalShortcut->slot_checkbox_shortcut_camera_clicked( true ); vkGlobalShortcut->slot_checkbox_shortcut_showclick_clicked( true ); vkGlobalShortcut->slot_checkbox_shortcut_halo_clicked( true ); vkGlobalShortcut->slot_checkbox_shortcut_snapshot_clicked( true ); // After reading the settings, we read the arguments and run QStringList arguments = QApplication::instance()->arguments(); if ( arguments.contains( "gst_appsrc" ) == true ) { gst_appsrc = true; ui->pushButtonStart->setVisible( false ); ui->pushButtonStop->setVisible( false ); ui->horizontalLayout->insertWidget( 0, ui->pushButtonStopAppsrc ); ui->horizontalLayout->insertWidget( 0, ui->pushButtonStartAppsrc ); } else { ui->pushButtonStartAppsrc->setVisible( false ); ui->pushButtonStopAppsrc->setVisible( false ); if ( arguments.count() > 1 ) { qDebug().noquote() << global::nameOutput << "started from file:" << arguments.at(1); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 vkPlayer->setMediaFile( arguments.at(1) ); vkPlayer->slot_play(); #else // Qt6 #endif ui->tabWidgetSideBar->setCurrentIndex( ui->tabWidgetSideBar->indexOf( ui->tabSidebarPlayer ) ); } } QvkImageFromTabs *vkImageFromTabs = new QvkImageFromTabs( this ); Q_UNUSED(vkImageFromTabs) is_videoFolderExists_and_haveWritePermission(); openh264ProfileTest = false; if ( openh264ProfileTest == true ) { QvkPadsAndCaps *vkPadsAndCaps = new QvkPadsAndCaps; connect( vkPadsAndCaps, SIGNAL( signal_openh264encProfile( QStringList ) ), this, SLOT( slot_comboBoxOpenh264Profile( QStringList ) ) ); vkPadsAndCaps->pad_profile(); } else { ui->label_61->setVisible( false ); ui->comboBox_openh264_profile->setVisible( false ); } QString localeName = QLocale::system().name() + ".qm"; QString localeCountry = QLocale::countryToString( locale.country() ); QDir dir( ":/language", "*.qm" ); QStringList list = dir.entryList(); if ( list.contains( localeName ) == false ) { QPalette palette; palette.setColor( QPalette::Window, Qt::white ); palette.setColor( QPalette::WindowText, Qt::red ); ui->label_translate->setAutoFillBackground( true ); ui->label_translate->setPalette( palette ); QString transifex = "Transifex"; ui->label_translate->setText( "

For " + localeCountry + " is the language " + localeName.replace( ".qm", "" ) + " not 100% translated.
" \ "Please help to translate your language on " + transifex + "

"); } else { ui->label_translate->hide(); ui->verticalLayout_7->removeItem( ui->verticalSpacer ); } } QvkMainWindow::~QvkMainWindow() { delete ui; } void QvkMainWindow::slot_disableShowclickHalo( bool bo ) { QIcon myIcon( ":/pictures/showClick/vokoShowClick.png" ); if ( bo == true ) { if ( vkShowClick->vkSpezialCheckbox->isChecked() == true ) { vkShowClick->vkSpezialCheckbox->slot_click(); } if ( vkHalo->vkSpezialCheckbox->isChecked() == true ) { vkHalo->vkSpezialCheckbox->slot_click(); } QSize size = ui->tabWidgetShowClick->iconSize(); QPixmap workPixmap( myIcon.pixmap( size ) ); QPainter painter; QPen pen; painter.begin( &workPixmap ); pen.setColor( QString( "#3daee9" ) ); pen.setWidth( 2 ); painter.setPen( pen ); painter.drawLine ( 5, 5, size.width()-5, size.height()-5 ); painter.drawLine ( 5, size.height()-5, size.width()-5, 5 ); painter.end(); ui->toolButtonShowclick->setIcon( workPixmap ); ui->tabWidgetShowClick->setTabIcon( 0, workPixmap ); ui->tab->setEnabled( false ); } else { ui->tab->setEnabled( true ); ui->toolButtonShowclick->setIcon( myIcon ); ui->tabWidgetShowClick->setTabIcon( 0, myIcon ); } } void QvkMainWindow::slot_comboBoxOpenh264Profile( QStringList list ) { ui->comboBox_openh264_profile->clear(); ui->comboBox_openh264_profile->addItems( list ); ui->comboBox_openh264_profile->setCurrentText( "baseline" ); } void QvkMainWindow::slot_GstreamerDebugLevelDialog( bool value ) { if ( value == true ) { QString string; string += "1. Warning, please only activate if requested by the developer!
"; string += "2. Warning, the storage device can fill up to 2GB/min.!
"; string += "3. Warning, your machine can slow down extremely!"; QPixmap pixmap( ":/pictures/status/warning.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox msgBox( this ); msgBox.setText( "
Warning

" + string ); msgBox.setWindowTitle( global::name + " " + global::version ); msgBox.setIconPixmap( pixmap ); msgBox.setStandardButtons( QMessageBox::Ok | QMessageBox::Cancel ); msgBox.setDefaultButton( QMessageBox::Cancel ); int ret = msgBox.exec(); if( ret == QMessageBox::Cancel ) { ui->checkBoxGstreamerDebugLevel->click(); } } } void QvkMainWindow::slot_GstreamerOpenFolder( bool value ) { Q_UNUSED(value); QvkSettings vkSettingsGstDebug; QFileInfo fileInfo( vkSettingsGstDebug.getFileName() ); QString path = fileInfo.absolutePath(); if ( QDesktopServices::openUrl( QUrl( "file:///" + path, QUrl::TolerantMode ) ) == false ) { QPixmap pixmap( ":/pictures/status/information.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox msgBox( this ); //: Display a MessageBox, if not found a filemanager. msgBox.setText( tr( "No filemanager found." ) + "\n" + tr( "Please install a filemanager." ) ); msgBox.setWindowTitle( global::name + " " + global::version ); msgBox.setIconPixmap( pixmap ); msgBox.exec(); } } void QvkMainWindow::slot_GstreamerDebugLevel( bool value ) { if ( value == true ) { sliderGstDebugLevel->setEnabled( true ); } else { sliderGstDebugLevel->setValue( 0 ); sliderGstDebugLevel->setEnabled( false ); } } bool QvkMainWindow::is_videoFolderExists_and_haveWritePermission() { // Create Folder if not exists QDir dir( ui->lineEditVideoPath->text() ); if ( !dir.exists() ) { // check of QStandardPaths::MoviesLocation QDir dir( QStandardPaths::writableLocation( QStandardPaths::MoviesLocation ) ); if ( !dir.exists() ) { bool myBool = dir.mkpath( QStandardPaths::writableLocation( QStandardPaths::MoviesLocation ) ); Q_UNUSED(myBool); } ui->lineEditVideoPath->setText( QStandardPaths::writableLocation( QStandardPaths::MoviesLocation ) ); } // Check write permission QString filename; filename = ui->lineEditVideoPath->text() + + "/vokoscreenNG-test-write.txt"; bool value; QFileInfo fileInfo( filename ); QFile file( filename ); if ( file.open( QIODevice::ReadWrite ) ) { QTextStream stream( &file ); stream << "Test Test Test Test Test Test" << Qt::endl; file.close(); qDebug().noquote() << global::nameOutput << "Video permission: Can write in" << fileInfo.absolutePath(); qDebug().noquote(); file.remove(); value = true; } else { qDebug().noquote() << "Video permission: ERROR can not write in" << fileInfo.absolutePath(); qDebug().noquote(); QPixmap pixmap( ":/pictures/status/warning.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox *messageBox = new QMessageBox(); QIcon icon( QString::fromUtf8( ":/pictures/logo/logo.png" ) ); messageBox->setWindowIcon( icon ); messageBox->setWindowTitle( global::name + " " + global::version ); messageBox->setIconPixmap( pixmap ); messageBox->setTextFormat( Qt::RichText ); messageBox->setText( ( "No write access on video folder" ) ); messageBox->setInformativeText( "vokoscreenNG can not create a video on
" + \ fileInfo.absolutePath() + "

" + \ "Possible Cause:
" + "1. The folder is read-only
" + "2. Operating system security settings
" + "3. Antivirus program prevents writing

" + "Please fix the problem and restart vokoscreenNG" ); messageBox->exec(); value = false; } return value; } void QvkMainWindow::slot_haveAudioDeviceSelected( bool bo ) { if ( bo == false ) { ui->labelInfoAudiocodec->setText( "------" ); } else { ui->labelInfoAudiocodec->setText( ui->comboBoxAudioCodec->currentText() ); } } void QvkMainWindow::slot_textToGuiLog( QString value ) { ui->textBrowserLog->append( value ); } void QvkMainWindow::slot_setMaxFPS( int index ) { if ( index > -1 ) { QList screen = QGuiApplication::screens(); sliderFrames->setMaximum( screen.at( index )->refreshRate() ); } } void QvkMainWindow::closeEvent( QCloseEvent *event ) { Q_UNUSED(event); #ifdef Q_OS_WIN if ( vkCiscoOpenh264Controller->isShowCiscoFinishDialog == false ) { #endif vkSettings.saveAll( ui, this, false ); vkSettings.saveAreaScreencast( vkRegionChoise->getXRecordArea() / vkRegionChoise->screen->devicePixelRatio(), vkRegionChoise->getYRecordArea() / vkRegionChoise->screen->devicePixelRatio(), vkRegionChoise->getWidth() / vkRegionChoise->screen->devicePixelRatio(), vkRegionChoise->getHeight() / vkRegionChoise->screen->devicePixelRatio() ); vkSettings.saveSystrayAlternative( vkSystrayAlternative->vkSystrayAlternativeWindow->x(), vkSystrayAlternative->vkSystrayAlternativeWindow->y() ); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 vkSettings.saveCamera( vkCameraController->vkCameraWindow->geometry().x(), vkCameraController->vkCameraWindow->geometry().y() ); vkSettings.savePlayerPathOpenFile( vkPlayer->pathOpenFile ); #else vkSettings.saveCamera( vkCameraController->vkCameraSingle->vkCameraWindow->geometry().x(), vkCameraController->vkCameraSingle->vkCameraWindow->geometry().y() ); // Qt6 #endif vkSettings.saveHaloColor( vkHalo->vkHaloPreviewWidget->getColor() ); vkSettings.saveShowclickColor( vkShowClick->vkPreviewWidget->getColor() ); #ifdef Q_OS_WIN } #endif if ( vkShowClick->vkSpezialCheckbox->isChecked() == true ) { emit vkShowClick->vkSpezialCheckbox->signal_clicked( false ); } emit signal_close(); emit signal_close( false ); } /* * CountDown */ void QvkMainWindow::slot_comboBoxScreencastScreenCountdown( bool ) { #ifdef Q_OS_LINUX if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) { int index = ui->comboBoxScreencastScreen->currentIndex(); QList screen = QGuiApplication::screens(); int left = static_cast( screen.at( index )->geometry().left() * screen.at( index )->devicePixelRatio() ); int top = static_cast( screen.at( index )->geometry().top() * screen.at( index )->devicePixelRatio() ); vkCountdown->x = left + screen.at( index )->geometry().width() / 2 - ( vkCountdown->Width / 2 ); vkCountdown->y = top + screen.at( index )->geometry().height() / 2 - ( vkCountdown->Height / 2 ); } if ( ui->radioButtonScreencastWindow->isChecked() == true ) { QScreen *screen = QGuiApplication::primaryScreen(); vkCountdown->x = ( screen->geometry().width() / 2 ) - ( vkCountdown->Width / 2 ); vkCountdown->y = ( screen->geometry().height() / 2 ) - ( vkCountdown->Height / 2 ); } if ( ui->radioButtonScreencastArea->isChecked() == true ) { int index = ui->comboBoxScreencastScreenArea->currentIndex(); QList screen = QGuiApplication::screens(); int left = static_cast( screen.at( index )->geometry().left() * screen.at( index )->devicePixelRatio() ); int top = static_cast( screen.at( index )->geometry().top() * screen.at( index )->devicePixelRatio() ); vkCountdown->x = left + screen.at( index )->geometry().width() / 2 - ( vkCountdown->Width / 2 ); vkCountdown->y = top + screen.at( index )->geometry().height() / 2 - ( vkCountdown->Height / 2 ); } #endif #ifdef Q_OS_WIN // Unter Windows muß der Index des Displays zur Anzege des Countdowns in unsorierter Reihenfolge bereitgestellt werden. if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) { int index = 0; QString nameDisplay = ui->comboBoxScreencastScreen->currentText().section( ":", 0, 0 ).trimmed(); QList screenList = QGuiApplication::screens(); // unsortiert for ( int i=0; i < screenList.count(); i++ ) { QString nameList = screenList.at(i)->name().remove( "." ).remove( "\\" ) ; if ( nameDisplay == nameList ) { index = i; } } int left = static_cast( screenList.at( index )->geometry().left() * screenList.at( index )->devicePixelRatio() ); int top = static_cast( screenList.at( index )->geometry().top() * screenList.at( index )->devicePixelRatio() ); vkCountdown->x = left + screenList.at( index )->geometry().width() / 2 - ( vkCountdown->Width / 2 ); vkCountdown->y = top + screenList.at( index )->geometry().height() / 2 - ( vkCountdown->Height / 2 ); } if ( ui->radioButtonScreencastArea->isChecked() == true ) { int index = 0; QString nameDisplay = ui->comboBoxScreencastScreenArea->currentText().section( ":", 0, 0 ).trimmed(); QList screenList = QGuiApplication::screens(); // unsortiert for ( int i=0; i < screenList.count(); i++ ) { QString nameList = screenList.at(i)->name().remove( "." ).remove( "\\" ) ; if ( nameDisplay == nameList ) { index = i; } } int left = static_cast( screenList.at( index )->geometry().left() * screenList.at( index )->devicePixelRatio() ); int top = static_cast( screenList.at( index )->geometry().top() * screenList.at( index )->devicePixelRatio() ); vkCountdown->x = left + screenList.at( index )->geometry().width() / 2 - ( vkCountdown->Width / 2 ); vkCountdown->y = top + screenList.at( index )->geometry().height() / 2 - ( vkCountdown->Height / 2 ); } #endif } void QvkMainWindow::slot_framesReset() { sliderFrames->setValue( 25 ); } void QvkMainWindow::slot_x264Reset() { ui->comboBoxx264Preset->setCurrentIndex( 1 ); sliderX264->setValue( 17 ); ui->comboBoxx264Profile->setCurrentIndex( 0 ); } void QvkMainWindow::slot_openh264Reset() { sliderOpenh264->setValue( 23 ); } void QvkMainWindow::slot_vp8Reset() { sliderVp8->setValue( 20 ); } void QvkMainWindow::slot_videoCodecChanged( QString codec ) { ui->frameVideoCodecx264->setVisible( false ); ui->frameVideoCodecOpenh264->setVisible( false ); ui->frameVideoCodecVp8->setVisible( false ); if ( codec == "x264" ) { ui->frameVideoCodecx264->setVisible( true ); } if ( codec == "H.264" ) // openh264 { ui->frameVideoCodecOpenh264->setVisible( true ); } if ( codec == "VP8" ) { ui->frameVideoCodecVp8->setVisible( true ); } } void QvkMainWindow::slot_IfStartAudioCodecWidgetsSetEnabled() { if ( isAudioDeviceSelected() == true ) { ui->labelAudioCodec->setEnabled( false ); ui->comboBoxAudioCodec->setEnabled( false ); } } void QvkMainWindow::slot_IfStopAudioCodecWidgetsSetDisabled() { if ( isAudioDeviceSelected() == true ) { ui->labelAudioCodec->setEnabled( true ); ui->comboBoxAudioCodec->setEnabled( true ); } } void QvkMainWindow::slot_areaSetResolution( QString value ) { vkRegionChoise->setWidth( value.section( " ", 0, 0 ).toInt() ); vkRegionChoise->setHeight( value.section( " ", 2, 2 ).toInt() ); } void QvkMainWindow::slot_StartTimer( bool value ) { if ( value == true ) { timerStartTimer->start( 1000 ); } else { timerStartTimer->stop(); } } void QvkMainWindow::slot_startTime() { QTime time; if ( ( time.currentTime().hour() == sliderHour->value() ) and ( time.currentTime().minute() == sliderMinute->value() ) and ( time.currentTime().second() == 0 ) ) { ui->pushButtonStart->setVisible( true ); ui->pushButtonStart->click(); } } void QvkMainWindow::slot_newVideoPath() { QApplication::setDesktopSettingsAware( false ); QvkDirDialog vkDirDialog( this ); if ( vkDirDialog.exec() == QDialog::Accepted ) { if ( !vkDirDialog.selectedFiles().empty() ) { ui->lineEditVideoPath->setText( vkDirDialog.selectedFiles().at(0) ); } } QApplication::setDesktopSettingsAware( true ); } void QvkMainWindow::slot_videoFileSystemWatcherSetNewPath() { if ( !videoFileSystemWatcher->directories().isEmpty() ) { videoFileSystemWatcher->removePaths( videoFileSystemWatcher->directories() ); } videoFileSystemWatcher->addPath( ui->lineEditVideoPath->text() ); } void QvkMainWindow::slot_videoFileSystemWatcherSetButtons() { QDir dir( ui->lineEditVideoPath->text() ); QStringList filters; filters << global::name +"*"; QStringList List = dir.entryList( filters, QDir::Files, QDir::Time ); if ( List.isEmpty() || ( ui->pushButtonStart->isEnabled() == false ) ) { ui->pushButtonPlay->setEnabled( false ); } else { ui->pushButtonPlay->setEnabled( true ); } } void QvkMainWindow::resizeEvent( QResizeEvent *event ) { emit signal_resizeEvent( event ); } void QvkMainWindow::vk_setCornerWidget( QTabWidget *tabWidget ) { #ifdef Q_OS_LINUX QPixmap pixmap( ":/pictures/cornerWidget/linux.png" ); #endif #ifdef Q_OS_WIN QPixmap pixmap( ":/pictures/cornerWidget/windows.png" ); #endif pixmap = pixmap.scaled( QSize( 48, 48 ), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QLabel *label = new QLabel(); label->setPixmap( pixmap ); label->setEnabled( false ); tabWidget->setCornerWidget( label, Qt::TopRightCorner); } bool QvkMainWindow::isAudioDeviceSelected() { bool value = false; QList listCheckBox = ui->scrollAreaAudioDevice->findChildren(); for ( int i = 0; i < listCheckBox.count(); i++ ) { if ( listCheckBox.at(i)->checkState() == Qt::Checked ) { value = true; break; } } return value; } #ifdef Q_OS_LINUX QString QvkMainWindow::VK_getXimagesrc() { QString value = ""; QString showPointer = "true"; if( ui->checkBoxMouseCursorOnOff->checkState() == Qt::Checked ) { showPointer = "false"; } if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) { QStringList stringList; stringList << "ximagesrc" << "display-name=" + qgetenv( "DISPLAY" ) << "use-damage=false" << "show-pointer=" + showPointer << "startx=" + get_x_From_Screen() << "starty=" + get_y_From_Screen() << "endx=" + QString::number( get_x_From_Screen().toInt() + get_width_From_Screen().toInt()-1 ) << "endy=" + QString::number( get_y_From_Screen().toInt() + get_height_From_Screen().toInt()-1 ); value = stringList.join( " " ); } if( ui->radioButtonScreencastWindow->isChecked() == true ) { QString xid; if ( ui->checkBoxStartTime->isChecked() == true ) { xid = QString::number( QvkWinInfo::activeWindow() ); } else { xid = QString::number( vkWinInfo->getWinID() ); } QStringList stringList; stringList << "ximagesrc" << "display-name=" + qgetenv( "DISPLAY" ) << "use-damage=false" << "show-pointer=" + showPointer << "xid=" + xid; value = stringList.join( " " ); } if ( ui->radioButtonScreencastArea->isChecked() == true ) { QStringList stringList; stringList << "ximagesrc" << "display-name=" + qgetenv( "DISPLAY" ) << "use-damage=false" << "show-pointer=" + showPointer << "startx=" + QString::number( vkRegionChoise->x() + vkRegionChoise->getXRecordArea() ) << "starty=" + QString::number( vkRegionChoise->y() + vkRegionChoise->getYRecordArea() ) << "endx=" + QString::number( vkRegionChoise->x() + vkRegionChoise->getXRecordArea() + vkRegionChoise->getWidth() - 1 ) << "endy=" + QString::number( vkRegionChoise->y() + vkRegionChoise->getYRecordArea() + vkRegionChoise->getHeight() - 1 ); value = stringList.join( " " ); } return value; } #endif #ifdef Q_OS_WIN QString QvkMainWindow::VK_getXimagesrc() { QString value; QString showPointer = "true"; if( ui->checkBoxMouseCursorOnOff->checkState() == Qt::Checked ) { showPointer = "false"; } if( ui->radioButtonScreencastFullscreen->isChecked() == true ) { int screenNumber = ( ui->comboBoxScreencastScreen->currentIndex() ); QStringList stringList; stringList << "gdiscreencapsrc" << "monitor=" + QString::number( screenNumber ) << "cursor=" + showPointer; value = stringList.join( " " ); } if ( ui->radioButtonScreencastArea->isChecked() == true ) { int screenNumber = ( ui->comboBoxScreencastScreenArea->currentIndex() ); QStringList stringList; stringList << "gdiscreencapsrc" << "monitor=" + QString::number( screenNumber ) << "cursor=" + showPointer; value = stringList.join( " " ); } return value; } #endif QString QvkMainWindow::VK_getCapsFilter() { QStringList stringList; stringList << "video/x-raw, framerate=" << QString::number( sliderFrames->value() ) << "/1"; return QString( stringList.join( "" ) ); } /* * For my better understanding is this comment in german. * * Einige encoder, wie z.b x264, benötigen zum encodieren gerade Werte. * Laut Dokumentation wird videoscale nur angewandt wenn sich die Quellauflösung zur Zielauflösung unterscheidet. * Wird ein Bereich oder ein Fenster aufgenommen das ungerade Werte enthält wird diese mittels videoscale korrigiert. * Für das Aufnehmen in einer Virtuellen Maschine die in einem Fenster läuft, wird die Vollbildaufnahme ebenfalls korrigiert. */ QString QvkMainWindow::VK_scale() { QString value = ""; int modulo = 2; if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) { int width = get_width_From_Screen().toInt(); int height = get_height_From_Screen().toInt(); if ( ( get_width_From_Screen().toInt() % modulo ) > 0 ) { width = get_width_From_Screen().toInt() - ( get_width_From_Screen().toInt() % modulo ) + modulo; } if ( ( get_height_From_Screen().toInt() % modulo ) > 0 ) { height = get_height_From_Screen().toInt() - ( get_height_From_Screen().toInt() % modulo ) + modulo; } value = "videoscale ! video/x-raw, width=" + QString::number( width ) + ", height=" + QString::number( height ) + " !"; } if ( ui->radioButtonScreencastArea->isChecked() == true ) { int width = (int)vkRegionChoise->getWidth(); int height = (int)vkRegionChoise->getHeight(); if ( ( (int)vkRegionChoise->getWidth() % modulo ) > 0 ) { width = (int)vkRegionChoise->getWidth() - ( (int)vkRegionChoise->getWidth() % modulo ) + modulo; } if ( ( (int)vkRegionChoise->getHeight() % modulo ) > 0 ) { height = (int)vkRegionChoise->getHeight() - ( (int)vkRegionChoise->getHeight() % modulo ) + modulo; } value = "videoscale ! video/x-raw, width=" + QString::number( width ) + ", height=" + QString::number( height ) + " !"; } #ifdef Q_OS_LINUX if ( ui->radioButtonScreencastWindow->isChecked() == true ) { int modulo = 2; QRectF rect = vkWinInfo->windowGeometryWithoutFrame( vkWinInfo->getWinID() ); int width = (int)rect.width(); int height = (int)rect.height(); if ( ( width % modulo ) > 0 ) { width = width - ( width % modulo ); } if ( ( height % modulo ) > 0 ) { height = height - ( height % modulo ); } value = "videoscale ! video/x-raw, width=" + QString::number( width ) + ", height=" + QString::number( height ) + " !"; } #endif return value; } void QvkMainWindow::VK_gst_Elements_available() { QStringList list; #ifdef Q_OS_WIN list << "gdiscreencapsrc"; list << "wasapisrc"; list << "directsoundsrc"; list << "bz2dec"; list << "videocrop"; #endif #ifdef Q_OS_LINUX list << "ximagesrc"; list << "pulsesrc"; #endif list << "queue"; list << "appsrc"; list << "capsfilter"; list << "videoconvert"; list << "videorate"; list << "videoscale"; list << "h264parse"; list << "audioconvert"; list << "audiorate"; list << "audiomixer"; list << "audioresample"; list << "filesink"; for ( int i = 0; i < list.count(); i++ ) { GstElementFactory *factory = gst_element_factory_find( QString( list.at(i) ).toLatin1() ); if ( !factory ) { qDebug().noquote() << global::nameOutput << "-" << list.at(i); } else { qDebug().noquote() << global::nameOutput << "+" << list.at(i); gst_object_unref( factory ); } } qDebug(); } // Check format, video and audoicodec on tab availability void QvkMainWindow::slot_gst_formatVideoAudoicodec_available() { // Delete all QLabel QList listLabel = ui->scrollAreaWidgetContentsAvailable->findChildren(); for( int i = 0; i < listLabel.count(); i++ ) { delete listLabel.at( i ); } // Delete spacerItem for ( int i = 0; i < ui->gridLayoutAvailable->count(); ++i ) { QLayoutItem *layoutItem = ui->gridLayoutAvailable->itemAt(i); if ( layoutItem->spacerItem() ) { ui->gridLayoutAvailable->removeItem(layoutItem); delete layoutItem; --i; } } // Delete line QList listFrame = ui->scrollAreaWidgetContentsAvailable->findChildren(); for( int i = 0; i < listFrame.count(); i++ ) { delete listFrame.at( i ); } // Adding all informations int rowCount = 0; for ( int i = 0; i < videoFormatsList.count(); i++ ) { int rowMuxer = 1; int rowVideo = 1; int rowAudio = 1; QStringList listElements = QString( videoFormatsList.at(i) ).split( "," ); // listElement beinhaltet muxer, Video und Audio for ( int x = 0; x < listElements.count(); x++ ) { bool available; QString element = QString( listElements.at( x ) ).section( ":", 1, 1 ); GstElementFactory *factory = gst_element_factory_find( element.toLatin1() ); if ( !factory ) { available = false; } else { available = true; } if ( QString( listElements.at( x ) ).section( ":", 0, 0 ) == "muxer" ) { QLabel *labelPicture = new QLabel(); QIcon icon; if ( available == true ) { QIcon picture( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); icon = picture; } else { QIcon picture( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); icon = picture; } QSize size = icon.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); labelPicture->setPixmap( icon.pixmap( size, QIcon::Normal, QIcon::On )); labelPicture->setAlignment( Qt::AlignRight ); ui->gridLayoutAvailable->addWidget( labelPicture, rowCount + rowMuxer, 0 ); ui->gridLayoutAvailable->addWidget( new QLabel( " " + QString( listElements.at( x ) ).section( ":", 2, 2 ) ), rowCount + rowMuxer, 1 ); rowMuxer++; } if ( QString( listElements.at( x ) ).section( ":", 0, 0 ) == "videocodec" ) { QLabel *labelPicture = new QLabel(); QIcon icon; // If element available then check video codec if ( available == true ) { GstElement *source = gst_element_factory_create( factory, "source" ); if ( !source ) { QIcon picture( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); icon = picture; } else { QIcon picture( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); icon = picture; gst_object_unref( source ); gst_object_unref( factory ); } } else { QIcon picture( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); icon = picture; } QSize size = icon.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); labelPicture->setPixmap( icon.pixmap( size, QIcon::Normal, QIcon::On )); labelPicture->setAlignment( Qt::AlignRight ); ui->gridLayoutAvailable->addWidget( labelPicture, rowCount + rowVideo, 2 ); ui->gridLayoutAvailable->addWidget( new QLabel( " " + QString( listElements.at( x ) ).section( ":", 2, 2 ) ), rowCount + rowVideo, 3 ); rowVideo++; } if ( QString( listElements.at( x ) ).section( ":", 0, 0 ) == "audiocodec" ) { QLabel *labelPicture = new QLabel(); QIcon icon; if ( available == true ) { QIcon picture( QString::fromUtf8( ":/pictures/screencast/accept.png" ) ); icon = picture; } else { QIcon picture( QString::fromUtf8( ":/pictures/screencast/missing.png" ) ); icon = picture; } QSize size = icon.actualSize( QSize( 16, 16 ), QIcon::Normal, QIcon::On ); labelPicture->setPixmap( icon.pixmap( size, QIcon::Normal, QIcon::On )); labelPicture->setAlignment( Qt::AlignRight ); ui->gridLayoutAvailable->addWidget( labelPicture, rowCount + rowAudio, 4 ); ui->gridLayoutAvailable->addWidget( new QLabel( " " + QString( listElements.at( x ) ).section( ":", 2, 2 ) ), rowCount + rowAudio, 5 ); rowAudio++; } } rowCount = ui->gridLayoutAvailable->rowCount(); for ( int x = 0; x <= 5; x++ ) { QFrame *line = new QFrame(); line->setObjectName( QStringLiteral( "line" ) ); line->setFrameShape( QFrame::HLine ); line->setFrameShadow( QFrame::Sunken ); ui->gridLayoutAvailable->addWidget( line, rowCount, x ); QLabel *label = new QLabel; label->setText( " " ); ui->gridLayoutAvailable->addWidget( label, rowCount, x ); } } ui->gridLayoutAvailable->addItem( new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding), ui->gridLayoutAvailable->rowCount() + 1, 0 ); } // This is the base for format, video and audiocodec void QvkMainWindow::VK_Supported_Formats_And_Codecs() { QString videocodec_x264enc = ""; if ( isFlatpak == false ) { videocodec_x264enc = "videocodec:x264enc:x264"; } QStringList MKV_QStringList = ( QStringList() << "muxer:matroskamux:mkv" << "videocodec:openh264enc:H.264" #ifdef Q_OS_LINUX << videocodec_x264enc #endif << "videocodec:vp8enc:VP8" << "audiocodec:vorbisenc:vorbis" << "audiocodec:flacenc:flac" << "audiocodec:opusenc:opus" << "audiocodec:lamemp3enc:mp3" ); QStringList WEBM_QStringList = ( QStringList() << "muxer:webmmux:webm" << "videocodec:vp8enc:VP8" << "audiocodec:vorbisenc:vorbis" << "audiocodec:opusenc:opus" ); QStringList AVI_QStringList = ( QStringList() << "muxer:avimux:avi" << "videocodec:openh264enc:H.264" #ifdef Q_OS_LINUX << videocodec_x264enc #endif << "videocodec:vp8enc:VP8" << "audiocodec:lamemp3enc:mp3" ); QStringList MP4_QStringList = ( QStringList() << "muxer:mp4mux:mp4" << "videocodec:openh264enc:H.264" #ifdef Q_OS_LINUX << videocodec_x264enc #endif << "audiocodec:lamemp3enc:mp3" << "audiocodec:opusenc:opus" ); // https://de.wikipedia.org/wiki/QuickTime QStringList MOV_QStringList = ( QStringList() << "muxer:qtmux:mov" << "videocodec:openh264enc:H.264" #ifdef Q_OS_LINUX << videocodec_x264enc #endif << "videocodec:vp8enc:VP8" << "audiocodec:lamemp3enc:mp3" ); videoFormatsList.clear(); videoFormatsList.append( MKV_QStringList.join( "," ) ); videoFormatsList.append( WEBM_QStringList.join( "," ) ); videoFormatsList.append( AVI_QStringList.join( "," ) ); videoFormatsList.append( MP4_QStringList.join( ",") ); videoFormatsList.append( MOV_QStringList.join( ",") ); } void QvkMainWindow::VK_Check_is_Format_available() { qDebug().noquote() << global::nameOutput << "This codec and formats are only for record, not for the player"; qDebug().noquote() << global::nameOutput << "Symbols: + available, - not available"; QStringList tempList; for ( int x = 0; x < videoFormatsList.count(); x++ ) { QString stringAllKeys = videoFormatsList.at( x ); QStringList listKeys = stringAllKeys.split( "," ); QStringList listKey = listKeys.filter( "muxer" ); QString muxer = QString( listKey.at( 0 ) ).section( ":", 1, 1 ); GstElementFactory *factory = gst_element_factory_find( muxer.toLatin1() ); if ( !factory ) { qDebug().noquote() << global::nameOutput << "-" << muxer; } else { qDebug().noquote() << global::nameOutput << "+" << muxer; tempList << videoFormatsList.at( x ); gst_object_unref( factory ); } } videoFormatsList.clear(); videoFormatsList << tempList; } void QvkMainWindow::VK_set_available_Formats_in_Combox() { ui->comboBoxFormat->clear(); for ( int x = 0; x < videoFormatsList.count(); x++ ) { QString stringAllKeys = videoFormatsList.at( x ); QStringList listKeys = stringAllKeys.split( "," ); QStringList listKeyMuxer = listKeys.filter( "muxer" ); QIcon icon; if ( QString( listKeyMuxer.at( 0 ) ).section( ":", 2, 2 ) == "mkv" ){ icon = QIcon( ":/pictures/screencast/strip-mkv.png" ); } if ( QString( listKeyMuxer.at( 0 ) ).section( ":", 2, 2 ) == "avi" ){ icon = QIcon( ":/pictures/screencast/strip-avi.png" ); } if ( QString( listKeyMuxer.at( 0 ) ).section( ":", 2, 2 ) == "webm" ){ icon = QIcon( ":/pictures/screencast/strip-webm.png" ); } if ( QString( listKeyMuxer.at( 0 ) ).section( ":", 2, 2 ) == "mp4" ){ icon = QIcon( ":/pictures/screencast/strip-mp4.png" ); } if ( QString( listKeyMuxer.at( 0 ) ).section( ":", 2, 2 ) == "mov" ){ icon = QIcon( ":/pictures/screencast/strip-mov.png" ); } ui->comboBoxFormat->addItem( icon, // Picture QString( listKeyMuxer.at( 0 ) ).section( ":", 2, 2 ), // suffix QString( listKeyMuxer.at( 0 ) ).section( ":", 1, 1 ) ); // muxer } } void QvkMainWindow::slot_set_available_VideoCodecs_in_Combox( QString suffix ) { ui->comboBoxVideoCodec->clear(); QStringList listSuffix = videoFormatsList.filter( suffix ); QString stringSuffix = listSuffix.at( 0 ); QStringList listKeys = stringSuffix.split( "," ); QStringList listKeyVideoCodec = listKeys.filter( "videocodec" ); for ( int i = 0; i < listKeyVideoCodec.count(); i++ ) { QString encoder = QString( listKeyVideoCodec.at( i ) ).section( ":", 1, 1 ); #ifdef Q_OS_WIN if ( ui->radioButton_cisco_off->isChecked() and ( encoder == "openh264enc" ) ) { continue; } #endif QString name = QString( listKeyVideoCodec.at( i ) ).section( ":", 2, 2 ); GstElementFactory *factory = gst_element_factory_find( encoder.toLatin1() ); if ( !factory ) { qDebug().noquote() << global::nameOutput << "-" << encoder; } else { QString message = global::nameOutput + " + " + encoder; GstElement *source = gst_element_factory_create( factory, "source" ); if ( !source ) { message = global::nameOutput + " - " + encoder + " available but codec is missing"; } else { ui->comboBoxVideoCodec->addItem( name, encoder ); gst_object_unref( source ); } qDebug().noquote() << message; gst_object_unref( factory ); } } if ( ui->comboBoxVideoCodec->count() == 0 ) { QPixmap pixmap( ":/pictures/status/information.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox messageBox; messageBox.setIconPixmap( pixmap ); messageBox.setText( "No videocodec found" ); QString string; string += "
Please install package

"; string += "gstreamer-plugins-base
"; string += "gstreamer-plugins-good
"; string += "gstreamer-plugins-bad
"; string += "gstreamer-plugins-ugly
"; string += "gstreamer-plugins-libav
"; messageBox.setInformativeText( string ); messageBox.exec(); ui->pushButtonStart->setEnabled( false ); } else { ui->pushButtonStart->setEnabled( true ); } } void QvkMainWindow::slot_set_available_AudioCodecs_in_Combox( QString suffix ) { ui->comboBoxAudioCodec->clear(); QStringList listSuffix = videoFormatsList.filter( suffix ); QString stringSuffix = listSuffix.at( 0 ); QStringList listKeys = stringSuffix.split( "," ); QStringList listKeyAudioCodec = listKeys.filter( "audiocodec" ); for ( int i = 0; i < listKeyAudioCodec.count(); i++ ) { QString encoder = QString( listKeyAudioCodec.at( i ) ).section( ":", 1, 1 ); QString name = QString( listKeyAudioCodec.at( i ) ).section( ":", 2, 2 ); GstElementFactory *factory = gst_element_factory_find( encoder.toLatin1() ); if ( !factory ) { qDebug().noquote() << global::nameOutput << "-" << encoder; } else { qDebug().noquote() << global::nameOutput << "+" << encoder; ui->comboBoxAudioCodec->addItem( name, encoder ); gst_object_unref( factory ); } } qDebug(); } QString QvkMainWindow::Vk_get_Videocodec_Encoder() { QString value; QString encoder = ui->comboBoxVideoCodec->currentData().toString(); if ( encoder == "x264enc" ) { QStringList list; list << VK_scale(); list << ui->comboBoxVideoCodec->currentData().toString(); list << "qp-min=" + QString::number( sliderX264->value() ); list << "qp-max=" + QString::number( sliderX264->value() ); list << "speed-preset=" + ui->comboBoxx264Preset->currentText(); list << "threads=" + QString::number( QThread::idealThreadCount() ); list.removeAll( "" ); value = list.join( " " ); value.append( " ! video/x-h264, profile=" + ui->comboBoxx264Profile->currentText() ); } if ( encoder == "openh264enc" ) { QStringList list; list << ui->comboBoxVideoCodec->currentData().toString(); list << "qp-min=" + QString::number( sliderOpenh264->value() ); list << "qp-max=" + QString::number( sliderOpenh264->value() ); list << "usage-type=camera"; // We need camera not screen. With screen and a fast sequence of images the video jerks. list << "complexity=low"; list << "multi-thread=" + QString::number( QThread::idealThreadCount() ); list << "slice-mode=auto"; // Number of slices equal to number of threads value = list.join( " " ); if ( openh264ProfileTest == true ) { value.append( " ! video/x-h264, profile=" ).append( "\"" ).append( ui->comboBox_openh264_profile->currentText().append( "\"" ) ); } value.append( " ! h264parse" ); } if ( encoder == "vp8enc" ) { QStringList list; list << "vp8enc"; list << "min_quantizer=" + QString::number( sliderVp8->value() ); list << "max_quantizer=" + QString::number( sliderVp8->value() ); list << "cpu-used=" + QString::number( QThread::idealThreadCount() ); list << "deadline=1000000"; list << "threads=" + QString::number( QThread::idealThreadCount() ); value = list.join( " " ); } return value; } void QvkMainWindow::slot_preStart() { if ( is_videoFolderExists_and_haveWritePermission() == false ) { ui->pushButtonStop->setEnabled( false ); ui->pushButtonStart->setEnabled( true ); ui->pushButtonPause->setEnabled( false ); ui->pushButtonPlay->setEnabled( false ); ui->checkBoxResetAtNextStart->setChecked( true ); ui->checkBoxResetAtNextStart->setEnabled( false ); return; } if ( vkLimitDiskFreeSpace->isStorageOKMessagBoxByStart() == false ) { wantRecording = false; ui->pushButtonStop->click(); return; } if ( ui->checkBoxStopRecordingAfter->isChecked() == true ) { int value = sliderStopRecordingAfterHouers->value()*60*60*1000; value += sliderStopRecordingAfterMinutes->value()*60*1000; value += sliderStopRecordingAfterSeconds->value()*1000; value += sliderSecondWaitBeforeRecording->value()*1000; value += sliderScreencastCountDown->value()*1000; timerStopRecordingAfter->setTimerType( Qt::PreciseTimer ); timerStopRecordingAfter->start( value ); } if ( ( ui->radioButtonScreencastFullscreen->isChecked() == true ) and ( ui->checkBoxStartTime->isChecked() == true ) ) { slot_Start(); return; } #ifdef Q_OS_WIN if ( ( ui->radioButtonScreencastFullscreen->isChecked() == true ) and ( sliderScreencastCountDown->value() > 0 ) and ( vkAudioController->vkWASAPIController->wantCountdown == true ) ) #endif #ifdef Q_OS_LINUX if ( ( ui->radioButtonScreencastFullscreen->isChecked() == true ) and ( sliderScreencastCountDown->value() > 0 ) ) #endif { disconnect( vkCountdown, nullptr, nullptr, nullptr ); connect( vkCountdown, SIGNAL( signal_countdownBegin( bool ) ), ui->pushButtonStop, SLOT( setDisabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countdownBegin( bool ) ), ui->pushButtonPause, SLOT( setDisabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), ui->pushButtonStop, SLOT( setEnabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), ui->pushButtonPause, SLOT( setEnabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), this, SLOT( slot_Start() ) ); vkCountdown->startCountdown( sliderScreencastCountDown->value() ); connect( vkCountdown, SIGNAL( signal_countDownCancel( bool ) ), this, SLOT( slot_cancel( bool ) ) ); return; } if ( ui->radioButtonScreencastFullscreen->isChecked() == true ) { slot_Start(); return; } if ( ( ui->radioButtonScreencastWindow->isChecked() == true ) and ( ui->checkBoxStartTime->isChecked() == true ) ) { slot_Start(); return; } if ( ( ui->radioButtonScreencastWindow->isChecked() == true ) and ( sliderScreencastCountDown->value() > 0 ) ) { disconnect( vkWinInfo, nullptr, nullptr, nullptr ); disconnect( vkCountdown, nullptr, nullptr, nullptr ); connect( vkWinInfo, SIGNAL( signal_windowChanged( bool ) ), this, SLOT( slot_startCounter( bool ) ) ); connect( vkWinInfo, SIGNAL( signal_showCursor( bool ) ), ui->pushButtonStop, SLOT( setDisabled( bool ) ) ); connect( vkWinInfo, SIGNAL( signal_showCursor( bool ) ), ui->pushButtonPause, SLOT( setDisabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), ui->pushButtonStop, SLOT( setEnabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), ui->pushButtonPause, SLOT( setEnabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), this, SLOT( slot_Start() ) ); vkWinInfo->slot_start(); connect( vkCountdown, SIGNAL( signal_countDownCancel( bool ) ), this, SLOT( slot_cancel( bool ) ) ); return; } if ( ui->radioButtonScreencastWindow->isChecked() == true ) { disconnect( vkWinInfo, nullptr, nullptr, nullptr ); connect( vkWinInfo, SIGNAL( signal_showCursor( bool ) ), ui->pushButtonStop, SLOT( setDisabled( bool ) ) ); connect( vkWinInfo, SIGNAL( signal_showCursor( bool ) ), ui->pushButtonPause, SLOT( setDisabled( bool ) ) ); connect( vkWinInfo, SIGNAL( signal_windowChanged( bool ) ), ui->pushButtonStop, SLOT( setEnabled( bool ) ) ); connect( vkWinInfo, SIGNAL( signal_windowChanged( bool ) ), ui->pushButtonPause, SLOT( setEnabled( bool ) ) ); connect( vkWinInfo, SIGNAL( signal_windowChanged( bool ) ), this, SLOT( slot_Start() ) ); vkWinInfo->slot_start(); return; } if ( ( ui->radioButtonScreencastArea->isChecked() == true ) and ( ui->checkBoxStartTime->isChecked() == true ) ) { slot_Start(); return; } #ifdef Q_OS_WIN if ( ( ui->radioButtonScreencastArea->isChecked() == true ) and ( sliderScreencastCountDown->value() > 0 ) and ( vkAudioController->vkWASAPIController->wantCountdown == true ) ) #endif #ifdef Q_OS_LINUX if ( ( ui->radioButtonScreencastArea->isChecked() == true ) and ( sliderScreencastCountDown->value() > 0 ) ) #endif { disconnect( vkCountdown, nullptr, nullptr, nullptr ); connect( vkCountdown, SIGNAL( signal_countdownBegin( bool ) ), ui->pushButtonStop, SLOT( setDisabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countdownBegin( bool ) ), ui->pushButtonPause, SLOT( setDisabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), ui->pushButtonStop, SLOT( setEnabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), ui->pushButtonPause, SLOT( setEnabled( bool ) ) ); connect( vkCountdown, SIGNAL( signal_countDownfinish( bool ) ), this, SLOT( slot_Start() ) ); vkRegionChoise->recordMode( true ); vkCountdown->startCountdown( sliderScreencastCountDown->value() ); connect( vkCountdown, SIGNAL( signal_countDownCancel( bool ) ), this, SLOT( slot_cancel( bool ) ) ); return; } if ( ui->radioButtonScreencastArea->isChecked() == true ) { vkRegionChoise->recordMode( true ); vkRegionChoise->repaint(); vkRegionChoise->update(); slot_Start(); return; } } void QvkMainWindow::slot_cancel( bool value ) { Q_UNUSED(value) cancel = true; disconnect( vkCountdown, nullptr, nullptr, nullptr ); ui->pushButtonStop->setEnabled( true ); ui->pushButtonStop->click(); } void QvkMainWindow::slot_startCounter( bool value ) { Q_UNUSED(value); if ( sliderScreencastCountDown->value() > 0 ) { vkCountdown->startCountdown( sliderScreencastCountDown->value() ); } } #ifdef Q_OS_LINUX QString QvkMainWindow::VK_get_AudioSystem() { return "pulsesrc"; } #endif QString QvkMainWindow::VK_getMuxer() { QString value = ui->comboBoxFormat->currentData().toString(); if ( ui->comboBoxFormat->currentData().toString() == "matroskamux" ) { value = ui->comboBoxFormat->currentData().toString() + " name=mux writing-app=" + global::name + "_" + QString( global::version ).replace( " ", "_" ); } else { value = ui->comboBoxFormat->currentData().toString() + " name=mux"; } return value; } QStringList QvkMainWindow::VK_getSelectedAudioDeviceName() { QStringList list; QList listQCheckBox = ui->scrollAreaWidgetContentsAudioDevices->findChildren(); for ( int i = 0; i < listQCheckBox.count(); i++ ) { if ( listQCheckBox.at(i)->checkState() == Qt::Checked ) { list << listQCheckBox.at(i)->text(); } } return list; } QStringList QvkMainWindow::VK_getSelectedAudioDevice() { QStringList list; QList listQCheckBox = ui->scrollAreaWidgetContentsAudioDevices->findChildren(); for ( int i = 0; i < listQCheckBox.count(); i++ ) { if ( listQCheckBox.at(i)->checkState() == Qt::Checked ) { list << listQCheckBox.at(i)->accessibleName(); } } return list; } QString QvkMainWindow::Pipeline_structured_output( QString pipeline ) { QString string; QString nl; #ifdef Q_OS_LINUX nl = "\\"; string = pipeline.prepend( "gst-launch-1.0 -e " + nl + "\n " ); #endif #ifdef Q_OS_WIN nl = "^"; string = pipeline.prepend( "gst-launch-1.0.exe -e " + nl + "\n " ); #endif string = pipeline.replace( "mux.", "mux. " + nl + "\n " ); string = pipeline.replace( "mix.", "mix. " + nl + "\n " ); string = pipeline.replace( "!", nl + "\n !" ); string.append( "\n" ); return string; } void QvkMainWindow::slot_Start() { if ( ui->checkBoxMinimizedWhenRecordingStarts->isChecked() == true ) { setWindowState( Qt::WindowMinimized ); } #ifdef Q_OS_WIN if ( global::testWASAPI == true ) { qDebug().noquote() << global::nameOutput << "Ignore SecondWaitBeforeRecording"; qDebug().noquote(); } else { QThread::msleep( static_cast( sliderSecondWaitBeforeRecording->value()) * 1000 ); qDebug().noquote() << global::nameOutput << "Accept SecondWaitBeforeRecording"; qDebug().noquote(); } #endif #ifdef Q_OS_LINUX QThread::msleep( static_cast( sliderSecondWaitBeforeRecording->value()) * 1000 ); qDebug().noquote() << global::nameOutput << "SecondWaitBeforeRecording:" << sliderSecondWaitBeforeRecording->value(); qDebug().noquote(); #endif QStringList VK_PipelineList; VK_PipelineList << VK_getXimagesrc(); VK_PipelineList << VK_getCapsFilter(); #ifdef Q_OS_WIN if ( ui->radioButtonScreencastArea->isChecked() == true ) { QString top = QString::number( vkRegionChoise->getYRecordArea() ); QString left = QString::number( vkRegionChoise->getXRecordArea() ); int int_right = ui->comboBoxScreencastScreenArea->currentData().toString().section( " ", 2, 2 ).split( "=" ).at( 1 ).toInt() - vkRegionChoise->getWidth() - vkRegionChoise->getXRecordArea(); QString right = QString::number( int_right ); int int_bottom = ui->comboBoxScreencastScreenArea->currentData().toString().section( " ", 3, 3 ).split( "=" ).at( 1 ).toInt() - vkRegionChoise->getHeight() - vkRegionChoise->getYRecordArea(); QString bottom = QString::number( int_bottom ); VK_PipelineList << QString( "videocrop " ) + "top=" + top + " " + "left=" + left + " " + "right=" + right + " " + "bottom=" + bottom; } #endif VK_PipelineList << "videoconvert"; VK_PipelineList << "videorate"; VK_PipelineList << "queue max-size-bytes=1073741824 max-size-time=10000000000 max-size-buffers=1000"; VK_PipelineList << Vk_get_Videocodec_Encoder(); // Only if one or more audiodevice is selected if ( ( VK_getSelectedAudioDevice().count() > 0 ) and ( ui->comboBoxAudioCodec->count() > 0 ) ) { VK_PipelineList << "queue"; VK_PipelineList << "mux."; } // Pipeline for one selected audiodevice if ( ( VK_getSelectedAudioDevice().count() == 1 ) and ( ui->comboBoxAudioCodec->count() > 0 ) ) { #ifdef Q_OS_LINUX VK_PipelineList << VK_get_AudioSystem().append( " device=" ).append( VK_getSelectedAudioDevice().at(0) ) .append( " client-name=" ).append( global::nameOutput + "." + QString( VK_getSelectedAudioDeviceName().at(0) ).replace( " ", "-") ); VK_PipelineList << "audio/x-raw, channels=2"; VK_PipelineList << "audioconvert"; VK_PipelineList << "audiorate"; VK_PipelineList << "queue max-size-bytes=1000000 max-size-time=10000000000 max-size-buffers=1000"; VK_PipelineList << ui->comboBoxAudioCodec->currentData().toString(); VK_PipelineList << "queue"; VK_PipelineList << "mux."; #endif #ifdef Q_OS_WIN if ( vkAudioController->radioButtonWASAPI->isChecked() ) { if ( VK_getSelectedAudioDevice().at(0).section( ":::", 1, 1 ) == "Playback" ) { soundEffect->setSource( QUrl::fromLocalFile( ":/sound/wasapi.wav" ) ); soundEffect->setLoopCount( QSoundEffect::Infinite ); soundEffect->setVolume( 0.0 ); soundEffect->play(); qDebug().noquote() << global::nameOutput << "[WASAPI] Soundeffect run"; VK_PipelineList << QString( "wasapisrc loopback=true low-latency=true role=multimedia device=" ).append( VK_getSelectedAudioDevice().at(0).section( ":::", 0, 0 ) ); } else { VK_PipelineList << QString( "wasapisrc low-latency=true role=multimedia device=" ).append( VK_getSelectedAudioDevice().at(0).section( ":::", 0, 0 ) ); } VK_PipelineList << "audioconvert"; VK_PipelineList << "audiorate"; VK_PipelineList << "queue max-size-bytes=1000000 max-size-time=10000000000 max-size-buffers=1000"; VK_PipelineList << ui->comboBoxAudioCodec->currentData().toString(); VK_PipelineList << "queue"; VK_PipelineList << "mux."; } if ( vkAudioController->radioButtonDirectSound->isChecked() ) { VK_PipelineList << QString( "directsoundsrc device-name=" ).append( "'" + VK_getSelectedAudioDevice().at(0) + "'" ); VK_PipelineList << "audio/x-raw, channels=2"; VK_PipelineList << "audioconvert"; VK_PipelineList << "audiorate"; VK_PipelineList << "queue max-size-bytes=1000000 max-size-time=10000000000 max-size-buffers=1000"; VK_PipelineList << ui->comboBoxAudioCodec->currentData().toString(); VK_PipelineList << "queue"; VK_PipelineList << "mux."; } #endif } // Pipeline for more as one audiodevice if ( ( VK_getSelectedAudioDevice().count() > 1 ) and ( ui->comboBoxAudioCodec->count() > 0 ) ) { // Geräte sortieren so das Playback Geräte zuerst erscheinen #ifdef Q_OS_WIN QStringList listDevices; QStringList listSource; QStringList listPlayer; for ( int x = 0; x < VK_getSelectedAudioDevice().count(); x++ ) { if ( VK_getSelectedAudioDevice().at(x).section( ":::", 1, 1 ) == "Playback" ) { listPlayer << VK_getSelectedAudioDevice().at(x); } else { listSource << VK_getSelectedAudioDevice().at(x); } } listDevices << listSource; listDevices << listPlayer; #endif for ( int x = 0; x < VK_getSelectedAudioDevice().count(); x++ ) { #ifdef Q_OS_LINUX VK_PipelineList << VK_get_AudioSystem().append( " device=" ).append( VK_getSelectedAudioDevice().at(x) ) .append( " client-name=" ).append( global::nameOutput + "." + QString( VK_getSelectedAudioDeviceName().at(x) ).replace( " ", "-") ); VK_PipelineList << "audioconvert"; VK_PipelineList << "audioresample"; VK_PipelineList << "queue"; VK_PipelineList << "mix."; #endif #ifdef Q_OS_WIN if ( vkAudioController->radioButtonWASAPI->isChecked() == true ) { if ( soundEffect->isPlaying() == false ) { soundEffect->setSource( QUrl::fromLocalFile( ":/sound/wasapi.wav" ) ); soundEffect->setLoopCount( QSoundEffect::Infinite ); soundEffect->setVolume( 0.0 ); soundEffect->play(); qDebug().noquote() << global::nameOutput << "[WASAPI] Soundeffect run"; } if ( listDevices.at(x).section( ":::", 1, 1 ) == "Playback" ) { VK_PipelineList << QString( "wasapisrc loopback=true low-latency=true role=multimedia device=" ).append( listDevices.at(x).section( ":::", 0, 0 ) ); VK_PipelineList << "audioconvert"; VK_PipelineList << "audioresample"; VK_PipelineList << "queue"; VK_PipelineList << "mix."; } else { VK_PipelineList << QString( "wasapisrc low-latency=true role=multimedia device=" ).append( listDevices.at(x).section( ":::", 0, 0 ) ); VK_PipelineList << "audioconvert"; VK_PipelineList << "audioresample"; VK_PipelineList << "queue"; VK_PipelineList << "mix."; } } if ( vkAudioController->radioButtonDirectSound->isChecked() ) { VK_PipelineList << QString( "directsoundsrc device-name=" ).append( "'" + listDevices.at(x) + "'" ); VK_PipelineList << "audioconvert"; VK_PipelineList << "queue"; VK_PipelineList << "mix."; } #endif } VK_PipelineList << "audiomixer name=mix"; VK_PipelineList << "audioconvert"; VK_PipelineList << "audiorate"; VK_PipelineList << "queue"; VK_PipelineList << ui->comboBoxAudioCodec->currentData().toString(); VK_PipelineList << "queue"; VK_PipelineList << "mux."; } VK_PipelineList << VK_getMuxer(); VK_PipelineList.removeAll( "" ); QString newVideoFilename; #ifdef Q_OS_WIN if ( vkAudioController->radioButtonWASAPI->isChecked() == true ) { if ( VK_getSelectedAudioDevice().count() > 1 ) { if ( global::testWASAPI == true ) { newVideoFilename = global::name + "-" + "TEST_WASAPI" + "." + ui->comboBoxFormat->currentText(); VK_PipelineList << "filesink location=\"" + wasapiTemporaryDir.path() + "/" + newVideoFilename + "\""; } else { newVideoFilename = global::name + "-" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_hh-mm-ss" ) + "." + ui->comboBoxFormat->currentText(); VK_PipelineList << "filesink location=\"" + ui->lineEditVideoPath->text() + "/" + newVideoFilename + "\""; } } else { newVideoFilename = global::name + "-" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_hh-mm-ss" ) + "." + ui->comboBoxFormat->currentText(); VK_PipelineList << "filesink location=\"" + ui->lineEditVideoPath->text() + "/" + newVideoFilename + "\""; } } if ( vkAudioController->radioButtonDirectSound->isChecked() == true ) { newVideoFilename = global::name + "-" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_hh-mm-ss" ) + "." + ui->comboBoxFormat->currentText(); VK_PipelineList << "filesink location=\"" + ui->lineEditVideoPath->text() + "/" + newVideoFilename + "\""; } #endif #ifdef Q_OS_LINUX newVideoFilename = global::name + "-" + QDateTime::currentDateTime().toString( "yyyy-MM-dd_hh-mm-ss" ) + "." + ui->comboBoxFormat->currentText(); VK_PipelineList << "filesink location=\"" + ui->lineEditVideoPath->text() + "/" + newVideoFilename + "\""; #endif // Write settings to log vkSettings.saveAll( ui, this, true ); QString VK_Pipeline = VK_PipelineList.join( VK_Gstr_Pipe ); VK_Pipeline = VK_Pipeline.replace( "mix. !", "mix." ); VK_Pipeline = VK_Pipeline.replace( "mux. !", "mux." ); qDebug(); qDebug().noquote() << global::nameOutput << "Free disk space at the beginning of the recording:" << ui->labelFreeSize->text() << "MB"; qDebug(); qDebug().noquote() << global::nameOutput << "Start record with:" << VK_Pipeline; qDebug(); qDebug().noquote() << Pipeline_structured_output( VK_Pipeline ); QByteArray byteArray = VK_Pipeline.toUtf8(); const gchar *line = byteArray.constData(); GError *error = Q_NULLPTR; pipeline = gst_parse_launch( line, &error ); // Start playing GstStateChangeReturn ret = gst_element_set_state( pipeline, GST_STATE_PLAYING ); if ( ret == GST_STATE_CHANGE_FAILURE ) { qDebug().noquote() << global::nameOutput << "Start was clicked" << "GST_STATE_CHANGE_FAILURE" << "Returncode =" << ret; } // 0 if ( ret == GST_STATE_CHANGE_SUCCESS ) { qDebug().noquote() << global::nameOutput << "Start was clicked" << "GST_STATE_CHANGE_SUCCESS" << "Returncode =" << ret; } // 1 if ( ret == GST_STATE_CHANGE_ASYNC ) { qDebug().noquote() << global::nameOutput << "Start was clicked" << "GST_STATE_CHANGE_ASYNC" << "Returncode =" << ret; } // 2 if ( ret == GST_STATE_CHANGE_NO_PREROLL ){ qDebug().noquote() << global::nameOutput << "Start was clicked" << "GST_STATE_CHANGE_NO_PREROLL" << "Returncode =" << ret; }// 3 if ( ret == GST_STATE_CHANGE_FAILURE ) { qDebug().noquote() << global::name << "Unable to set the pipeline to the playing state."; gst_object_unref( pipeline ); return; } emit signal_newVideoFilename( newVideoFilename ); } void QvkMainWindow::slot_preStop() { if ( ui->checkBoxStartTime->isChecked() == true ) { ui->checkBoxStartTime->click(); } if ( timerStopRecordingAfter->isActive() ) { timerStopRecordingAfter->stop(); ui->frameStopRecordingAfter->setEnabled( true ); } } void QvkMainWindow::slot_Stop() { if ( vkLimitDiskFreeSpace->isStorageOK() == false ) { ui->checkBoxShowInSystray->click(); ui->checkBoxShowInSystray->click(); } if ( cancel == true ) { cancel = false; goto Cancel; } if ( wantRecording == true ) { // wait for EOS bool a = gst_element_send_event( pipeline, gst_event_new_eos() ); Q_UNUSED(a); GstClockTime timeout = 5 * GST_SECOND; GstMessage *msg = gst_bus_timed_pop_filtered( GST_ELEMENT_BUS (pipeline), timeout, GST_MESSAGE_EOS ); Q_UNUSED(msg); GstStateChangeReturn ret ; Q_UNUSED(ret); ret = gst_element_set_state( pipeline, GST_STATE_PAUSED ); Q_UNUSED(ret); ret = gst_element_set_state( pipeline, GST_STATE_READY ); Q_UNUSED(ret); ret = gst_element_set_state( pipeline, GST_STATE_NULL ); Q_UNUSED(ret); gst_object_unref( pipeline ); qDebug().noquote() << global::nameOutput << "Stop record"; } Cancel: #ifdef Q_OS_WIN if ( soundEffect->isPlaying() == true ) { soundEffect->stop(); qDebug().noquote() << global::nameOutput << "[WASAPI] Soundeffect stop"; } vkAudioController->vkWASAPIController->wantCountdown = true; if ( global::testWASAPI == true ) { global::testWASAPI = false; ui->labelInfoRecordTime->setText( "00:00:00" ); ui->labelVideoSize->setText( "0" ); } #endif wantRecording = true; qDebug().noquote() << global::nameOutput << "Free disk space at the end of the recording:" << ui->labelFreeSize->text() << "MB"; if ( ui->radioButtonScreencastArea->isChecked() == true ) { // We wait one second and then show the button inside the frame. QThread::msleep( 1000 ); vkRegionChoise->recordMode( false ); vkRegionChoise->repaint(); vkRegionChoise->update(); } if ( ui->checkBoxMinimizedWhenRecordingStarts->isChecked() == true ) { showNormal(); } } void QvkMainWindow::slot_Pause() { if ( ui->pushButtonStart->isEnabled() == false ) { qDebug().noquote() << global::nameOutput << "Pause was clicked"; GstStateChangeReturn ret = gst_element_set_state( pipeline, GST_STATE_PAUSED ); if ( ret == GST_STATE_CHANGE_FAILURE ) { qDebug().noquote() << global::nameOutput << "Pause was clicked" << "GST_STATE_CHANGE_FAILURE" << "Returncode =" << ret; } // 0 if ( ret == GST_STATE_CHANGE_SUCCESS ) { qDebug().noquote() << global::nameOutput << "Pause was clicked" << "GST_STATE_CHANGE_SUCCESS" << "Returncode =" << ret; } // 1 if ( ret == GST_STATE_CHANGE_ASYNC ) { qDebug().noquote() << global::nameOutput << "Pause was clicked" << "GST_STATE_CHANGE_ASYNC" << "Returncode =" << ret; } // 2 if ( ret == GST_STATE_CHANGE_NO_PREROLL ){ qDebug().noquote() << global::nameOutput << "Pause was clicked" << "GST_STATE_CHANGE_NO_PREROLL" << "Returncode =" << ret; }// 3 /* wait until it's up and running or failed */ if (gst_element_get_state (pipeline, NULL, NULL, -1) == GST_STATE_CHANGE_FAILURE) { g_error ("Failed to go into PAUSED state"); } } } void QvkMainWindow::slot_Continue() { if ( ( ui->pushButtonStart->isEnabled() == false ) and ( ui->pushButtonContinue->isEnabled() == true ) ) { GstStateChangeReturn ret = gst_element_set_state( pipeline, GST_STATE_PLAYING ); if ( ret == GST_STATE_CHANGE_FAILURE ) { qDebug().noquote() << global::nameOutput << "Continue was clicked" << "GST_STATE_CHANGE_FAILURE" << "Returncode =" << ret; } // 0 if ( ret == GST_STATE_CHANGE_SUCCESS ) { qDebug().noquote() << global::nameOutput << "Continue was clicked" << "GST_STATE_CHANGE_SUCCESS" << "Returncode =" << ret; } // 1 if ( ret == GST_STATE_CHANGE_ASYNC ) { qDebug().noquote() << global::nameOutput << "Continue was clicked" << "GST_STATE_CHANGE_ASYNC" << "Returncode =" << ret; } // 2 if ( ret == GST_STATE_CHANGE_NO_PREROLL ){ qDebug().noquote() << global::nameOutput << "Continue was clicked" << "GST_STATE_CHANGE_NO_PREROLL" << "Returncode =" << ret; }// 3 /* wait until it's up and running or failed */ if (gst_element_get_state (pipeline, NULL, NULL, -1) == GST_STATE_CHANGE_FAILURE) { g_error ("Failed to go into PLAYING state"); } else { qDebug().noquote() << global::nameOutput << "Continue was clicked"; } } } void QvkMainWindow::slot_Play() { QDir dir( ui->lineEditVideoPath->text() ); QStringList filters; filters << global::name + "*"; QStringList videoFileList = dir.entryList( filters, QDir::Files, QDir::Time ); qDebug().noquote() << global::nameOutput << "play video with vokoplayer" << videoFileList.at(0); ui->toolButtonPlayer->click(); QString string; string.append( ui->lineEditVideoPath->text() ); string.append( "/" ); string.append( videoFileList.at( 0 ) ); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 vkPlayer->setMediaFile( string ); vkPlayer->slot_play(); #else // Qt6 #endif } void QvkMainWindow::slot_Folder() { QString path; if ( lastButtonPressed == "start" ) { path = ui->lineEditVideoPath->text(); } if ( lastButtonPressed == "snapshot" ) { path = ui->lineEditSnapshotImagePath->text(); } if ( QDesktopServices::openUrl( QUrl( "file:///" + path, QUrl::TolerantMode ) ) == false ) { QPixmap pixmap( ":/pictures/status/information.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox msgBox( this ); msgBox.setText( tr( "No filemanager found." ) + "\n" + tr( "Please install a filemanager." ) ); msgBox.setWindowTitle( global::name + " " + global::version ); msgBox.setIconPixmap( pixmap ); msgBox.exec(); } } void QvkMainWindow::slot_logFolder() { QUrl url( vklogController->get_logPath() ); QString path = url.adjusted( QUrl::RemoveFilename ).toString(); if ( QDesktopServices::openUrl( QUrl( "file:///" + path, QUrl::TolerantMode ) ) == false ) { QPixmap pixmap( ":/pictures/status/information.png" ); pixmap = pixmap.scaled( 64, 64, Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); QMessageBox msgBox( this ); msgBox.setText( tr( "No filemanager found." ) + "\n" + tr( "Please install a filemanager." ) ); msgBox.setWindowTitle( global::name + " " + global::version ); msgBox.setIconPixmap( pixmap ); msgBox.exec(); } } QString QvkMainWindow::get_x_From_Screen() { QString value = ui->comboBoxScreencastScreen->currentData().toString().section( " ", 0, 0 ).split( "=" ).at( 1 ); return value; } QString QvkMainWindow::get_y_From_Screen() { QString value = ui->comboBoxScreencastScreen->currentData().toString().section( " ", 1, 1 ).split( "=" ).at( 1 ); return value; } QString QvkMainWindow::get_width_From_Screen() { QString value = ui->comboBoxScreencastScreen->currentData().toString().section( " ", 2, 2 ).split( "=" ).at( 1 ); return value; } QString QvkMainWindow::get_height_From_Screen() { QString value = ui->comboBoxScreencastScreen->currentData().toString().section( " ", 3, 3 ).split( "=" ).at( 1 ); return value; } void QvkMainWindow::slot_screenCountChanged( QString stringText, QString stringData ) { ui->comboBoxScreencastScreen->addItem( stringText, stringData ); qDebug().noquote() << global::nameOutput << "ItemText in Combobox:" << stringText; qDebug().noquote() << global::nameOutput << "ItemData in Combobox:" << stringData; qDebug(); #ifdef Q_OS_WIN QStringList list; for ( int i=0; i < ui->comboBoxScreencastScreen->count(); i++ ) { list.append( ui->comboBoxScreencastScreen->itemText( i ) ); } list.sort(); ui->comboBoxScreencastScreen->clear(); ui->comboBoxScreencastScreen->addItems( list ); #endif } void QvkMainWindow::slot_screenCountChangedArea( QString stringText, QString stringData ) { ui->comboBoxScreencastScreenArea->addItem( stringText, stringData ); #ifdef Q_OS_WIN // Unter Windows muß zur Aufnahme mit GStreamer das Display in sortierter Reihenfolge bereitgestellt werden. Display1, Display2, Display3 etc. QStringList list; for ( int i=0; i < ui->comboBoxScreencastScreenArea->count(); i++ ) { list.append( ui->comboBoxScreencastScreenArea->itemText( i ) + "|" + ui->comboBoxScreencastScreenArea->itemData( i ).toString() ); } list.sort(); ui->comboBoxScreencastScreenArea->clear(); for ( int i=0; i < list.count(); i++ ) { ui->comboBoxScreencastScreenArea->addItem( list.at(i).section( "|", 0, 0 ), list.at(i).section( "|", 1, 1 ) ); } #endif } vokoscreenNG-3.7.0/src/mainwindow.h000066400000000000000000000146061444746353100172620ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef MAINWINDOW_H #define MAINWINDOW_H #include "QvkWinInfo.h" #include "QvkCountdown.h" #include "QvkRegionChoise.h" #include "QvkCameraController.h" #include "QvkSettings.h" #include "QvkHelp.h" #include "QvkSystray.h" #include "QvkMagnifierController.h" #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 #include "QvkPlayer.h" #else // Qt6 #endif #include "QvkLimitDiskFreeSpace.h" #include "QvkSpezialSlider.h" #include "QvkSystrayAlternative.h" #include "QvkAudioController.h" #include "QvkShowClick.h" #include "QvkHalo.h" #include "QvkGlobalShortcut.h" #include "QvkLogController.h" #ifdef Q_OS_WIN #include "QvkCiscoOpenh264Controller.h" #endif #include #include #include #include #include namespace Ui { class QvkMainWindow; } class QvkMainWindow : public QMainWindow { Q_OBJECT public: explicit QvkMainWindow( QWidget *parent = Q_NULLPTR ); ~QvkMainWindow(); Ui::formMainWindow *ui; QvkWinInfo *vkWinInfo; QvkCountdown *vkCountdown; QvkRegionChoise *vkRegionChoise; QvkSystray *vkSystray; QvkAudioController *vkAudioController; QvkSpezialSlider *sliderFrames; QvkMagnifierController *vkMagnifierController; QvkGlobalShortcut *vkGlobalShortcut; QvkLogController *vklogController; bool wantRecording = true; bool isFlatpak = false; private: QvkShowClick *vkShowClick; QvkSpezialSlider *sliderScreencastCountDown; QvkSpezialSlider *sliderX264; QvkSpezialSlider *sliderOpenh264; QvkSpezialSlider *sliderVp8; QvkSpezialSlider *sliderLimitOfFreeDiskSpace; QvkSpezialSlider *sliderShowInSystrayAlternative; QvkSpezialSlider *sliderHour; QvkSpezialSlider *sliderMinute; QvkSpezialSlider *sliderSecondWaitBeforeRecording; QvkSpezialSlider *sliderStopRecordingAfterHouers; QvkSpezialSlider *sliderStopRecordingAfterMinutes; QvkSpezialSlider *sliderStopRecordingAfterSeconds; QvkSpezialSlider *sliderWaitBeforeSnapshot; QvkSpezialSlider *sliderGstDebugLevel; QvkSettings vkSettings; const QString VK_Gstr_Pipe = " ! "; QString VK_GStreamer_Version(); QString VK_getXimagesrc(); QString VK_getCapsFilter(); QString VK_getMuxer(); QString Vk_get_Videocodec_Encoder(); QString VK_scale(); QFileSystemWatcher *videoFileSystemWatcher; GstElement *pipeline; GError *error = Q_NULLPTR; QStringList videoFormatsList; void VK_Supported_Formats_And_Codecs(); void VK_Check_is_Format_available(); void VK_set_available_Formats_in_Combox(); QString VK_get_AudioSystem(); QStringList VK_getSelectedAudioDevice(); QStringList VK_getSelectedAudioDeviceName(); QString get_x_From_Screen(); QString get_y_From_Screen(); QString get_width_From_Screen(); QString get_height_From_Screen(); void VK_gst_Elements_available(); QTimer *timerStartTimer; QTimer *timerStopRecordingAfter = new QTimer( this ); void vk_setCornerWidget( QTabWidget *tabWidget ); #if (QT_VERSION <= QT_VERSION_CHECK(6, 0, 0)) // Qt5 QvkPlayer *vkPlayer; #else // Qt6 #endif QvkHalo *vkHalo; QvkCameraController *vkCameraController; QvkSystrayAlternative *vkSystrayAlternative; QvkLimitDiskFreeSpace *vkLimitDiskFreeSpace; void checkVideoPath(); bool isAudioDeviceSelected(); QString Pipeline_structured_output( QString pipeline ); QSoundEffect *soundEffect; bool cancel = false; bool is_videoFolderExists_and_haveWritePermission(); QPalette appPalette; QString lastButtonPressed = "start"; bool openh264ProfileTest; bool gst_appsrc = false; #ifdef Q_OS_WIN QvkCiscoOpenh264Controller *vkCiscoOpenh264Controller; QTemporaryDir wasapiTemporaryDir; #endif private slots: void slot_textToGuiLog( QString value ); void slot_preStart(); void slot_Start(); void slot_preStop(); void slot_Stop(); void slot_Pause(); void slot_Continue(); void slot_Play(); void slot_Folder(); void slot_logFolder(); void slot_screenCountChanged( QString, QString ); void slot_screenCountChangedArea( QString stringText, QString stringData ); void slot_newVideoPath(); void slot_videoFileSystemWatcherSetButtons(); void slot_videoFileSystemWatcherSetNewPath(); void slot_startCounter( bool value ); void slot_comboBoxScreencastScreenCountdown( bool ); void slot_set_available_VideoCodecs_in_Combox( QString suffix ); void slot_set_available_AudioCodecs_in_Combox( QString suffix ); void slot_videoCodecChanged( QString codec ); void slot_framesReset(); void slot_x264Reset(); void slot_openh264Reset(); void slot_vp8Reset(); void slot_GstreamerDebugLevel( bool ); void slot_GstreamerDebugLevelDialog( bool ); void slot_GstreamerOpenFolder( bool ); void slot_StartTimer( bool value ); void slot_startTime(); void slot_areaSetResolution( QString value ); void slot_IfStartAudioCodecWidgetsSetEnabled(); void slot_IfStopAudioCodecWidgetsSetDisabled(); void slot_setMaxFPS( int ); void slot_gst_formatVideoAudoicodec_available(); void slot_cancel( bool value ); void slot_haveAudioDeviceSelected( bool bo ); void slot_comboBoxOpenh264Profile( QStringList list ); void slot_disableShowclickHalo( bool bo ); signals: void signal_close(); void signal_close( bool value ); void signal_newVideoFilename( QString ); void signal_resizeEvent( QResizeEvent *event ); protected: void closeEvent( QCloseEvent *event ); void resizeEvent( QResizeEvent *event ); }; #endif // MAINWINDOW_H vokoscreenNG-3.7.0/src/padsAndCaps/000077500000000000000000000000001444746353100171075ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/padsAndCaps/QvkPadsAndCaps.cpp000066400000000000000000000050601444746353100224170ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #include "glib.h" #include #include "global.h" #include "QvkPadsAndCaps.h" #include QvkPadsAndCaps::QvkPadsAndCaps() { } QvkPadsAndCaps::~QvkPadsAndCaps() { } // Functions below print the Capabilities in a human-friendly format QStringList list; gboolean QvkPadsAndCaps::print_field( GQuark field, const GValue *value, gpointer pfx ) { Q_UNUSED(pfx) gchar *str = gst_value_serialize( value ); if ( (QString)g_quark_to_string( field ) == "profile" ) { QString my_str = str; my_str.remove( "{" ); my_str.remove( "}" ); my_str.remove( "(string)" ); my_str.remove( "," ); my_str = my_str.trimmed(); list << my_str.split( " " ); } g_free (str); return true; } void QvkPadsAndCaps::pad_profile() { const GList *pads; GstStaticPadTemplate *padtemplate; GstElementFactory *source_factory = gst_element_factory_find ( "openh264enc" ); if ( !source_factory ) { g_printerr( "Not all element factories could be created.\n" ); return; } pads = gst_element_factory_get_static_pad_templates( source_factory ); while( pads ) { padtemplate = (GstStaticPadTemplate *) pads->data; pads = g_list_next( pads ); if ( padtemplate->static_caps.string ) { GstCaps *caps = gst_static_caps_get( &padtemplate->static_caps ); for ( guint i = 0; i < gst_caps_get_size( caps ); i++ ) { GstStructure *structure = gst_caps_get_structure( caps, i ); gst_structure_foreach( structure, print_field, NULL ); } gst_caps_unref (caps); } } emit signal_openh264encProfile( list ); gst_object_unref( source_factory ); } vokoscreenNG-3.7.0/src/padsAndCaps/QvkPadsAndCaps.h000066400000000000000000000024071444746353100220660ustar00rootroot00000000000000/* vokoscreenNG - A desktop recorder * Copyright (C) 2017-2022 Volker Kohaupt * * Author: * Volker Kohaupt * * This file is free software; you can redistribute it and/or modify * it under the terms of version 2 of the GNU General Public License * as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * * --End_License-- */ #ifndef QVKPADSANDCAPS_H #define QVKPADSANDCAPS_H #include "glib.h" #include "gst/gst.h" #include class QvkPadsAndCaps : public QWidget { Q_OBJECT public: explicit QvkPadsAndCaps(); ~QvkPadsAndCaps(); static gboolean print_field( GQuark field, const GValue *value, gpointer pfx ); void pad_profile(); private: public slots: private slots: protected: signals: void signal_openh264encProfile( QStringList list ); }; #endif vokoscreenNG-3.7.0/src/padsAndCaps/padsAndCaps.pri000066400000000000000000000001701444746353100220020ustar00rootroot00000000000000INCLUDEPATH += $$PWD DEPENDPATH += $$PWD HEADERS += $$PWD/QvkPadsAndCaps.h SOURCES += $$PWD/QvkPadsAndCaps.cpp vokoscreenNG-3.7.0/src/pictures/000077500000000000000000000000001444746353100165645ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/camera/000077500000000000000000000000001444746353100200145ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/camera/camera-sidebar.png000066400000000000000000000544321444746353100233710ustar00rootroot00000000000000PNG  IHDR{`iCCPicc(JPT":U!kE3T T)MR,&1$)7Ma:o (8`/9i iV^7t{ק|b5^sv\¼:;*7,~;b;JH$ގȰdx۬ŹK[p͈)*:8쫺S&4Sq#*r(t:SHy;Ry<~}՛<n-HamgXnZ&tPybKGDB2_ pHYs B(xtIME/C̪bzTXtRaw profile type icc8Rm0 Ao%GzRFbZH"25g5;]ĕu-A~j /L!AA*#5SVv3|31u٨Nv0N.}<` (P[Dm'(!fY)jqYv*y! dJ/6EMI"i-}yX #/r$}=639Uu540uկ5"?VCS> AdR([/OV4EZ= h$txG8qlwB4˻qޝfY,_N^u 6xIDATxyGys^݇uXe˲Xu G0Gp ,$@XH !ksBC-Y-K,{svW軻zz1Y]]SO=SOA}G}G}G}G}G}GO[wj}@ZG:4tEZ~nD2@s+A#]3Z `Pufh?"@4J?ZOe}9G nF V<h r`gG;Ѥ ϓ_=י}hZ uhW:}ɺE&H7{e"Pt+Gf}\ZJVɈ,4!Q"3%Ĵ1)O|ynM3柼p^@k8&uqv1;YȊ&EZHټnEM֪V{ c>>>E.\sR3o/s{n+$K\-.cHG~y tcP#ď{v͠5@뗈CB mqx!hb7EQ qh_K]$Yh`I5ረrKK6k YS/Fe1#_~509WYn".!*ngz]jx׮^f'Ź⹼s[Mu_Lop u@7m[&,$+"hrudor[[{]>^x9 Jמ y.4$A䏖 Np+3n0r 1f@n[z\#`c: }EC`op/eYF@,߻3z{^Λ5U UaA~rlJF{] S^=Ͽ?gyv<WUIB~9fm iw~tr[l[n ]}wCMzW5##$ֶr7Tw |{>"s5itsW?;s&{ۙ~?|2pCSAMhqߌ{f-|xL^?7vy^maMf:=MޣaffGw /={;WfjtJdĻK{zB*ܹNY,^ *؈V좙"|9@h=fG\-93eε<9Uz`'<.blw BT c)qk]tRȷ+ ؟n~ēʃ ~9|b3UjY3#~WmRm!ϗ$TQOqd@#u08Qf.u;xӮϵ'/25ԑ(qQ( j辀?b/_JgOkzZ}|g1E8(@4K5R|/H^r /=zs+ |Uě:VLFu>0@ >knٟ^r[gݺw1"weV4!k|o-g|aˏ4;G^+R:h= DTP (?g.;f#gо/ S~*f} vb7ξqCvF*o=8!8B1/a H'LXI!gP1Xh}m\z+ GQT/ @CRF1-&N=MYϒ>9r +eA#fM|hSi~Y~']Y]H ^P (QL"~3Ȑ!K< 2Ȍ @ͭ⭭G?]M|0_EkM]dE*ԨyX%rӭRe iB!F#eA}ח]'o6ygpꝑwB~PJ`O]Pfy*Nb$Ra"(kC`QNGߘԕGڮ̏y3S/?MĎӀY(zԻv\qYZrIPOldU om]stS]bPzў)tr`X G6ˋߞ}eȝ?MYqL=I4hO<t61F _."6Ry.vw\8;ep&-ɌcX@"ѝPRN1R ^AFԜ&4H tjȐa>b-~\f"%jYDG%4I&:F|9hv!pkjN$8g3*B[cň1H3"s͏N%,0I Y ȁ`GC{E|$ڮE s˽uV4NRRJ ȓkCm@ $y,(Sla-z ,(l5Vˀ/nD~P) fB Y`%+ȒdS1s%d[q((@Cry8eraVJ0djëDãI/Y:VvɊ"'1Fxy Cr>c>)=6*Ϝ;>{``ըD*'y?X.֒߈Al.E 9qRΝ-M@Pf)e_hEQr6yj4 A%=js~F$[:*>J e:;h, 0w'B E\gM  Ž[e^Y/3cTf{9E:R 7_q|p30Z5f(  Ka厡((%AcGi a]Hrl*sRsSPP{_W7_=bAI$ %k$1=laWT͋`xbu0fe \;YJj,T fK~ *l GSIʝ.e7sATWR Kռfrw֯& |v3z GUܫ0@%G"s!D]ZySկD~Ub+CbxJ}w\!ijJy@ؒ¬55 klCS+ꌾǕ C \ BG;RBqٻ^5S=`rӽ3hUMoE(̭_e&d3:Jkxݔ5vpzs:4U˻R nنe֤%jl ?+,X7hr%=}6͡ sI_*G]`#  pxB̈"]e=+ *T"Fc+Dނw_~{! kxepS_`CD6kȻ (Jv!1XY'a6' j(RN4=0la2 .L&5$'7l7W] 6ZiU$"#"h4H|sg*/_ N 1xGDq6'R!VGLim3W.3@2F̣%ҬlBS:YLZJ[_uʔ89#Gq kjV:y꧰\#wrfy{c8/gy1@-N;uo/%YH,+\" R 19df_>k0;9 \ 0PϞ_?p`trBT|#dYVfG=m@Pd fȰU =]߮f31v O$SZm2ɰ_C1t~occ y @ՙ&,{QO5O&)1* N$~C> MQY)`jC$o:6ʰk?!j Uco~ LD~'CDۭmT]bZB 55E3/EG#p?<#Q!U7ĠRbڎr+X;~E kbS PJw!b &=ʅLrıSƶY$OR&D7 ޥKK PIt;^e%0K K3c|,P/CG}ZxKgSĥqr[GWrfŧ1騯[`1 7XH$N!&CڧrG(Z9^3&}QNAShq<^9u7TRdU\Zdh1FEȐeDeS4(09D&Ms͎) zWVEJ v]3yb~Dbi,ߡBb4ehf4OO1Yqi1GKmF !u\ղCF_z M@vEeȕxf`t昢F5eeir%G<[})iԍHj4lP4 5ߜbbJ$))0Ü]^Fs;xySg+$DuIkHZY]\tNCHXKdIlL݂H3DNaL[Bdx/P|Fy EnI$? X#X)9G﨣^m06fINkB CcǨ$ -tX CsaQwY<DXqh2L<+HOPMh2(Y  $_#E4KKCɒACS!GFxaEdSl9L#TAgwo}`Vd;+x#Se8T+wN_b3dȓ%eDKK(xS-' iŠc ߘ 2CAw(.u4IeO;Hgık.u2HYr O!Fe1ea.Ig^{8O RIXKM+:3@rP󨁵^'S#CޱgO,*{'EiFe1FfQ.d+ˤSTeXOzA~ÁOʼI{[Tyu HT,!ƑX5sԫy O2up-a)̲Y^"ɐ褎oK $NQe,%ߗhd> ç#7uk2A#1ȓgW{Џ)' C v1eO #5&sgde^('H}U4qĽ5 t teȲIO[lp\Fc*/ D4+l5lH~ d A&y+$Gam&"Z5\2X)VOH ,rQ@* *fUlJy5j A*eJ[i~ gf^/"cVy"$%k4a2S({;<`4@~I7! X`VxdJd:pTph &3"Jb@Uct*#`%G^"`.ZKh[=G%yoRxsd#"Rd01W "~ lݩl-t\HMxV4GZXyTcňz8Hث$>%PL!]6*S}D XHCe + ;@2ʩZ gDHH#'NWkhHh|"L3Ȱ"/G{7-T H];RCerdkJ ̱+X(+!GUͮ`,S&j'1CSϲPOL9n& Cw#;%d5Bz<@ aBgi)X@O3cFZN/Re]hroW8hR1hpCH&hG} ̳0! L!,?3]l]iyAwd*-N<7*.k I lG}0@2k(-Rb9#&IYrc-XDt=', ϭJ^kZ:Up;p};]r $u_G 9ƀEtۼ0'um ZfAD2dG|{s|1T+k^X yBxZ$N9AJAH`%Ntp72HҬ'yp 1W <&/ZFa;(9Ú{SB5GǰEh 0@G|TnQާGJJ{sj]5W*Ep6sE $#ojj`Rx?fɌP|??S+#)M*8E$\GܠD2Lc3cifT7{?;oח1?{SXZ0Lx8EV$w2G*fC5>2_M0RK$$Cp6y" u<֘e"iguLυY7>=) Tz iTY`EⵏN3cXK~òA5uGv5q4̵R tɇRciN2 h@cI+zk5a(:W.B\|<\Q#9F1V2Z@N48$DGEʈG%i@0H5!QT)4 lb Ǚ`3@P5R!"s+ZI.|_p:yn{4C̶Y 3tvAV3959E! $$Ds%UyouG+9d m!H-`rIa;UNl7)3!e$v X[cQ }uW,0рèPc /I p [a`Z*1Xd2 Ծ[-e } /hGZf4y=~8fM@#OaEot+vZG×dJ(I=M'2aI_Iv%XcZD@c3)ˠ ܕzMWtcRCg i7J F $˷^c_#t^+_dmrQ, 4/Bf6?#aˎn it5;ҿ p/0@< :s\Y( q[B["&*l>_u(8z{^];b;3(eK<H|f4!&ޤ pP֦*깁 r Jwƞ2jO,2QRz__0C<tݽB|ݏւP#b5[*kk+؄)HW~vLo5Ɂ1ي)U,"k-=$%JqE{특n^27=>w:3ofx%@!L+Es/_dGs:>n7:;93  D|4מyi[;x@z˩/5^ vОN;tVCIt|J/xF+_G~ް̵-M#j!wO䪙'+OL ae[OĹp[p`Í9dȐ>)'|xJD" A&7la7`1r־y;OmgjmO(W-t{voX3wQs'Z ę;ofN彻 p3ox7]:|zCЫ?yQFfod;/[Mn^N h0pX>w.oWHs%?ճ1W(凜^"i/*\$V7{;^(Zr{W|]qG } Qw$w5[_;pyArT\w$_v%侫u$>k\n= ڛ I#~u{pEkB ]⺕m/?NL0ͧ}ɏ^RU|mwvm{c; ʿ}`B Ea]?";@X)5N1@f??1q_y[ |/uL`gw&o\&IeMYWP!~޻ W' V)@^e](Qe-eS֜˧ίvyץorybPkiVonw_^]wy5k7R6h/w]^=_ބ udY}/k:'T9ʽ|g,;egz:^\C~x`q5W=]aa??wwCvI3Gϖ}e/C]|O/Ӧy|@{$xk˕Glglپ(Jcq'ĉ}pn/!.N]Ka39v~u(?vh2+2Z^g9G9$1Y*TFM@E%Ǿ5`Sw BaňCd;kY#ְyU)S3)&8MG;y /y ,^Bkܞ1(keݴV`R{%]s]oe0/y I{>ZG28ț$=}4A xe:} 2QqeGef@8Ͻ,vp>~Ќ8S|_O34-x:9E 3k\=@~}n|"G/ xŀHgoufh?"]r{)飏>裏>裏>裏>裏>裏>裏>)peXIfII*nt|(1 2##GIMP 2.10.122021:06:19 08:47:06 JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?+u asgvoKvcj^]{Dծt ۽!˝`PEPEPEPEPEPEPEPEPEPEPEPEPEPEP^K^ڵ[@kxCS,XգWmȭ':3C-A ;1Lk\48^@!Gjboi.tvy %xplrzw|<y-"Ia I]H#|WT}_HGA,֌O ǩBxV?C yQ@Q@z/zjגWW}m{ i-f?֒RD*R iM5SMG,~O<v6x[O&/es*ާnRpzv8rUo!o_ \RZH\IW x'4B?.VdRC  QE[^I^K^ڴ6_eZK@-Jԫ@*H[6رU((hXsVfb7?x=ii T*57*. zEJZqO_9G]QRJ_𩑮@0Β6ÔJ(j+Xhf]ߧ[ HV8 FM>kެgONّ%D8ѫF0K~DPa;!=JhiiE(ý̊0@I%_Mq|4)j ݨʀA, '|EP^K^ڵ[@eZKY_"ԫQ-J e 9]6 F8Rii3@}8Z/@1Q7vQS֙OZ{8ryOaSsNڟx |ď}Z>}6+#]4 i}܈c<裹)Ѩ_4Z. tY.X|ӟ{ȽaClJ0WlXyu[xRM?R}3P~9X4sD~h0#R+ c?}dq02[sIJFU㷸 SZYoƦ-@ jIf"K,+?*vt 9~4{²hdž޺Rk>3=JI&M)4hZG r$ƷM,I$r~ aX 8⹪'MTsW-g9>n16WW}my%z/zj?֒mi-H TkR PJ( P3IRPtY)kR9▚y4#I 5l(iP3ⰾ/\=LǜRZ>s<_M\, NrZ= g?0=ǥ|=E{ů5ƽ[4T^kx&ُ\ +]ɂŏ3ylxsZ% g9d{wվϋuR[yT^ѧ,xcÖСm>id2zz _&[@M UFv~6z$-L-M-Q 6rpMrmv:4M i'1k|1* HM4(zU?Ao޿xu[^I^K^ڴ6_eZK@-Jԫ@:eOru ձ&ZXEX9Gc^VԸ1K#;[(l  dѴvq@k&\?WWiea[-i +((*BQ8$i vH]'==-! *H"ǽOz֝Fgj]S\-\nOiڄ@?_4[.'OjfM4nj9 'TԼHU I;_oxlQd7YF{ ' *yu_o w;J.QISqaGNYWW}my%z/zj?֒mi-H*KR,2;UR=dtnh(-Mץ:ܰDc,uU H9kJ\:h hef3(qPހ (9l=<@h!NXSIP08Իmԛ-Z@W )==&y姓rGϳ77 z\ t6Vi ,hڀF Fi4כ|i :lnu7C9mR22ٯ&Jfh?4{H$Kp*v%Sp8ivqpRԯuJ}CP{|R`88 /uGP$fPyv0Aw1b?mkkG[IW .}1G$-x ]oxWŨ1JI<s `h x$IbCE=P0ҝEBCƛ;vj\Z?S qgњ4f3@f4-/i^ }Z+XFzl:tu-Jm ǢN?8/|c™[{el+=IwU~zk("cw <2I$TQEQEWW}my%z/zj?֒mi-H~2~׬$#\$SvH4GӼ-cwakqk"1$8w$䜯9[y^Yb#ff'$z{KS5) F.mJz~ QEQE7Fr6ݤ|G-Nk>'!tEXtexif:DateTime2021:06:19 08:47:06mutEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1[9tEXticc:descriptionGIMP built-in D65 Grayscale with sRGB TRCFtEXticc:manufacturerGIMPL%tEXticc:modelD65 Grayscale with sRGB TRCyt]IENDB`vokoscreenNG-3.7.0/src/pictures/camera/camera.license000066400000000000000000000001311444746353100226030ustar00rootroot00000000000000[license] author= url=https://openclipart.org/detail/170690/webcam license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/camera.png000066400000000000000000000341211444746353100217530ustar00rootroot00000000000000PNG  IHDR{`bKGD= pHYs B(xtIME6X~zTXtRaw profile type icc8S[! 99N4R HXBݔ]6E]k5L  *i3 iPA)r"]2ܾ`{Ҭdd pUF~h盲F fHC'/GXF58/U=ᛐ#U̼*|ƿ9UCm` `^p޸89\MMVDvr{!p$dhT\XCc3C+Hg!Y ,BQiW~0Ǔx`xkJrDJ0B{+ao&~;UZ@{tFGT>2E.=cM+LŦߎGs@H'6i1)3BfpEwaIm yr KNw{o}$zb (5"IDATxy%GYg}Ld&d왙d/ALbD"Y%xqQQ/B\T*EE4^ $3!6Yɬ̼{]}N>y3}T󫧞z*``````@pTiR*!ϖ[zuaH1BQUYaA縜<㹧Z C c:ʲ$\*.p>m9F>~y/?Z]ֶ6n'2e"["_*A{ciNyGa^<7,g9qf_uvǸK~~q~w6xYNry9)DWܗwrK -XeW_}保{_" _/` S5yLwuTc|?qߥ 0,Wu+lYh:J#wtgFčl`(lsF5d{o˩;,o@3ɷJgO";}uP៹ug[UUGV~Y\pIʶ'iB)Ƈ/^*#OnFd[[/ٵ{~ƪ"[5⏛njdM~A g]~+~Vt3bw|e X>(~dgySp:\dU#[!K[Oѹ͏_gYr#w<0R&+%lL;񴂄:at\dG,į1uWVݳ\{OKԻ2 _j_RL o?$ڱ"kR5^6J/IH6Q1aYMBTQnd~@U>彖[=̵XgP4z&x#"-lL Emyk|YF)񑌰DwPoypT+fj-Q>F،;gih; yRCDt<%9Ng wK%#T7pי~+E \ D7~,pՕ Iu>M3v_5; AOC*Ui &h$wk؄7`{"נ}dF8͌Pqbzqsr,z8qĩMFGyb08gr:%k޼j>4)n$SQE,A o^zf.T^R[RQd9R6s:j,qkd9 U"qhT)|1xRQ.'+8/fJM4D[_e,\&o\['p%Gs^Cٓq/`< G{.}Tf3Sz,xK$ = INyagqېGPMY䅜Oѹ~74U7yc(ZӤUNosF$g߉6Jg'yP52 u[b~RB>{"'t$R%dh}AOa>5XËQ&@(q8TQ|/8 k@rx{L 0}>xăL?guUCIN15spg&@n[Șy>~K l6K}~j{OG]YZHѪq1ºdY 2mr}Zo#A8+ wڵ*+4ZkER/*dHf=Wڼ1ǣI@"jܽkFkmD+cNqTͰ$#{L/몤҉BicH^yz[f==켉iySn,qNb hv?>px-?PaCǘ)56pIPAo_TG/|P]ios,z(GR|x\K// Sq$Hm#zN~PfFکlc넂L2 #Lv6cɁAauTN&*>k-_U0h:ݹ9A$ +zF '}ِ4a 54Gb;$[Z7!oal7'}TL4x ¿JS٘Is柤s'89Ifcz e%3R:qC5  62Ó_!$=hRh:x~a2yQ2/^`i0?kc=XH~ TFBVuKZ#Pf`bE;$APFF? |?ngQP@-mD鹿vqc V2FhrY\"+Ǽ-R@q3=%+)8iA"M2:Pe\"p96p Χ[l%Q *tE^@zEz TZgM3z.*ː޵ӾKԨB¡DZ:5MQNTdDSA7˱ O2N~{/Q 7o?Gƙt6 4a1!8}BQ)6ڝ-l'_{$X gY {|=9R/yf6Gjc٣ 61ԳR@Sl) [ݓj#lL%>{'\F Ut$cVޞBtoE 3L<-, ;Vd 'X2!%2va'Jp"֛ٚtTD p) ^,"LaP5-& 3)K<_}f ͊SgQ&Yfq>zZa9)<bY6i/Hi 4:=H=_ߙ*l)dNUpc>`aOQv`bPјf!%_[x 1e-hТAs<0!.$ :Dbl Y{~yBM1FO|.deɁUͽL*䝭#|UvX-Ƙga Ak==:iaN0yO#YETF) Za(,~9,RvUlL֘˹ F(StoФ`m s6;Xav1ފWjm+dı9.qؖvh?pH4V;}%d{YUr.eqƙdI&c)Q96f9 C궆,cUC wmL!ARMOLY~{&ԨSAÚkjXK\$\#>LՖfd9m(r& TgEPPw`R܃tF xIz/ҾE . Q_5GmLҚ[g_{6<#9 l:V:-TYd9Yde* DT]WI"n w!Nu֥7$ 4fN .Sf=uz%'Tþ;gCZvsί6թSe%5:x/-}$)ᵀXjHkHTL0) KFOo@g ;!z7,Rl;852zttgʷAͲCTXfeLբAďǸ̲5PKut5@Zɤ 7kbнEiL_߾Ep)Q j<<1]9kA*˖XvZ $f{SD(t@|G>D)C.R@%nPc &IߠR",AIXt@į<$_x ᨇDHyPSY&B \+ N0_xuHnNE K,Zh7kwjmpӴ;iĘRZ|)~!{lS^iK(]X.*Jȿ!M,; "Vn4@?uԵR%hCm8=`( e#]\hah HWP 0{̕*"V!H҈? Qvn.Oqr!hB6~|!)!iZc~;4  >S@,t5Ld_lv1rjdt_~d#r+MGkz ؉V -DZ͆`^*,Ssb~l ] B im=Эq<M$ V5}9&<`jY:ޡ`dc\GI 32U˂7kTh-Q1hA#-U:&.(ќ{UJGWd#?)- 焎AQ6- cT)HL}=,l$DG*4yF@050uޔ\0E$ވ$Iقh $K`?U$vi9y*yo);*rtB8N Uʺo/mO3NK޻R묜 30߅džAO&~A xFT{y+->wyPC41l9u͢}pbrZY46:mHn /)턬;D+ *na O*f7}ӱ4Imq#Lza+8)O$~ԒArL[iw5@ hzP M Q8x4~?W. I&Z `yKLB2J}n? I #J &E <Ӻ%Et9~KJ}2]'%HE>s?f`j#iQ]@ 3@d#Pz>é1k)LZ͊{y7+ I1dZ=2 b hI~S%_# a$PdY݄`7_嵱I Q?CC杖A1}򞴃)߇HP-h}XaPD-20Lw'6G>aw.M<29ZVA<k3 zv){LɀTÜ& " xʷOp2;-i]jMrt?5fY-Q`?L3KPf-3]P:Oq3%4$e97) ;R:R-'R3FXX9>G3Ћjuk(b 6s#p'8N:%l`+PFYO1jA^2,r)7:EuDu%Œu'ןRԨHSgefg zfiaEI'L (0?\qAu,V Q4GX*Oh10Xle_mY0H<-s"wNyDH`:q@Vop玧3A&_/|lh CfrOĹ @:M=ہP GeS]4YdpH;G䗲[&н,SG0[?G93 9I+_i{sx34 Ȍy?W[HxZLk:4du>3$Z« rl $CO}T{y)i;\P *ھ!Sf.(h%3@0g:+DDIK'k@9eFRf}2y7+ "So%Eț\y\};/T% 9f]|jؔh)d9Khtae)T!c I:Np=V & < C8~ @g֊nrrߟ{3qb2r5)qWGqL= q1A,|C|Ꞵ=0h<`M@ U!hkTb·9j@Dl w?%k Ĩ_yMn8.py&=^[1,4zT8ٜ,zef ~[۽{O23I LY>gG^wEXa e^ᛡeL}pYCC@kL`(AZB`%Z]U >lT'v{_qs|@c1ǚv#iJL}:O3v!BVYb~wK;wneL?OJ֮}~#85x'LxIi~zWf*L^yj{ ء`ìޝg#X_ X r5xվ}Bg5]}Z ktVthZ ߫4%\3>/$3yTͷw0}"[78̀Ztwk$:UfC ^M+ ؕ_=6{/0>ŝ]6jT/ 20 9hҠEa63ߠbV5+kD[]q{iDhRF#YJ"JVa:"i7ѲV(bB7PNgeTw1z+m؂DeT PbcZ9[(:UZg M4Rm5n+2"];jN7 t4=S:MA-$E)!J/ hPEPb%F(5ZέAշByJH_;?җw&;n|K8F=ӢT \#I- gM[bֆuZ0L<%OZGը6r>+(bpƸk/4=ո@&w%@o^86_O&+K?-Te^9ީ/jrA Eޱ֬mtGpWrhEacn;5jMH8+:'Yߋ͍O5l}/ܺ-HVx8m^.Eׂ$@Pf7EfŧwrJ&+>zcc(;H0yλW[$̮TQ>o/%a5kznUMA&uTXi]ء2vy` aՈy\_ѧ>b AWV/*wWoyA=}BJcűgYq3rgN>s^XwtgVWuC_ߝxE?sWw[3g]xv>\ W;EϦ=N0z~N3s䛰= e Y;7}onJ\`*= W7{g_漟 6yXh 1MgZO_bJ*g)$F(#=co?d\SgWí}D0pk7lhѷ~bSEY$y({'ďoߟ\}7:@L>Ý-m R˹1RG2X͞Ԯ|l[t1uZ,"r1F-+4Ŋgr5$NݑW6+LΐnXEv^uw&>O'yRZ{8KH4(%ěprxb#4i:AV$  UD#o9J|Jql̚4WM(D@|vKX~Eٕ R3v+JHEcY(џ=5;ao40h˞"A"y_Tq׳_,VY^ڻ[+J{ol޿ ڣ_/4ixc dxmuOѶr6kȦx44s^h.k+D $5_-֞)# Aޙ`&;<#H>%޺-F˪gxp8Gm:N2"8&*cyK+apwx(3ޫf! %?ܼQGxP~g3RsK\x9=@#]+y4^'jEW7}C<<[ߦ߳ ޛup {tmiE[J鞝l93փoY# x[#yax9*k2ReD/LTS؜`q&XJn[*)ݍȀ8lX N:> 4=׋[{mqR/M$5{.(/^rWy#jKoO@*ܽ[1}BC^{yefRvĥw$}8W_5+&{eK|O+#Ƀ4ޫ_U8;{/h;8~޸k[kX5W]P~K;~#]`6EyqX<,nՒs]qF-y~7O NjvuLޚ#~ؼ7!i4n6bjuL-sWA_)}ȍN WK_zÊlb?@yaѲ=@ [Ơ?a [As<1 s<1 s}m`Pȥ -TW  0 0 0 0 0 0@o&4h6=%tEXtdate:create2021-06-13T06:45:18+02:00_%tEXtdate:modify2021-06-13T06:45:18+02:00/EtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/camera/on.odg000066400000000000000000000220351444746353100211250ustar00rootroot00000000000000PKζT.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKζTTY5ggThumbnails/thumbnail.pngPNG  IHDRzA.IDATx[j#IE[P3F zCRfF),'o|? pj胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢}v;%}8n/'}qܿtDq gHD}q.4V>^r183c2Wk|4.z\N5gx>;} }!=/Ot⹢NOdt\4zIdkݵ#d|'w8f>2!,7+#f^uWx}̫mlu-[9AFXD6?zBY2{^Kc.,<"O׮z11_Hx}g_}<۪q>}8/>g>i,<UcE>n>щ=aDcc4i_x}طB"l|*}}&?Od}|nq>8!1Hd8F?uQ=-},AE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAo"IENDB`PKζT]AAmeta.xml 2021-01-08T19:23:12OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-97882022-07-18T00:54:28PT8M36S3PKζT settings.xmlZ[s6~0}hC!&s l \_v%,-K˚Ly D;X_q˘FQALLϭeo3MCEȼ(@TfR-j;]&ȀHADQzE"V]]#K.32,rrQdϙeҐ#>pw.Wg}ZoX+ 7j`r*^X*'[SaWZ:.';`qtipw\*m?nڧ.6Z",`mCB,l'*T}p1燰T֍u6C9;> _G؟`|) @%\hq=AѢ+Wk0Yc{O#qFm ѥ tfI |T"yt&~HyTR4ʌ"NDnIG#q$|n A BL%o4+,RGX&؛h)ϡ 3@}u4]!m8| dm}]}/γn1W AArrA::A.3zSzJ(o~xMeG>ɑu&ACЕJshVZ̘k'"n%W)L|$e:@F*}k̈́eFHQ0Ax K >AZkI,~N+ ERBO`'&Y0i5ϢSca- 7܁5a]q%hWI{ =5wK^ܨ=]aIXѸ*av:}g T{v@3%n ^PSϴLH#t=@wh!!p/*RZ $GҪ+b8~ tPKgb$PKζT content.xmlWˮ8W:q х4RH5 đm^?Uynfuu\o߮6BU `+rQ￾7u8Ƴ\S+2UY2Yk']eadeU|tjW-کdt?sٹdBQ}AM%_  ^Ԋ(RThmr\i٠rF̐$JH-SCRu*\O.  . sF>gs1Y]bHd5Tts[R{xqו.BTLzr-+\Hh{n >{KE ˵g/J*ϊ"g;DX3BHIkv`nKz߃CQK{eL).vDاQ _kka%^RW-Ck-t p ,K0^ s fҀ%! b!\Ak͵jQKc}n!n.fNs A^'Ap,wXXӂdZ'ji}_׈!lIj3{N z7!fcjËq<&"IX&[K3C0~kp '/|d}{ýV*60J @]jŤ`tT:X 8렠N9V8Z1o}9IEf|hQ=4xoO]6Ҧ;WndG-?% {C'[SLd[6V|NB*kTu@;O9yY<|K/*mxՁjph3]=l$ _ ot*kewM:JM,$iH2)@[ӥ2ZaYS_7<]Őtr\c[S $ \۔ uJ)n/s\kuEIbp;KJ. xzYҫJfS2P1KPKA PKζT styles.xml[r6}WpIh^$'j9^2ә8s"A1Hp@P}/ )P"e*/Q2[{w7)eS?l g!H6~|o.`qLB%XWKe<+pPљa8Cht0|G%BC(8%B(y}8|N "tuU vucs.^;(l̥Q]!*b}hS-Mk.(YA}{ 9%Z=`)CDY9O뗌e찳hZt"ƣi KyR z*ⱀLMLz1?sF"eQ:CMe4H&Szm{g8Chz\lNi hf(u)qGPEWLu TɶNP,ʝӢz0xE5#ځ҉3SԟQ3 1mz{ڤӮw4ҵo_4uxH8Z Q! /*=ņLlo`xXaݿPZfs;vdˆ9E+\ǒVR|U۰rƢSZY*^A7+9o ?w}'Q=^{:t|>-wpA0 x@.OSw=ԣYO#C#;o͑[ڃ8C\?eV}ܫFwnohf`W{}ppK')UOR{Q'fFC@eB7I~-)FE#_ogwѩ2uI^fDT{tw|M:5ymK_yv̎id݀TS*zQ 8Y,_䈘^UoqG.`bPN+ڪ^)* IpJ~|R{-_;DF@~b3C*)w JĸK|ߺ+]wnPK֞1PKζTConfigurations2/popupmenu/PKζTConfigurations2/statusbar/PKζTConfigurations2/menubar/PKζTConfigurations2/toolbar/PKζTConfigurations2/floater/PKζT'Configurations2/accelerator/current.xmlPKPKζTConfigurations2/images/Bitmaps/PKζTConfigurations2/toolpanel/PKζTConfigurations2/progressbar/PKζTMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sConfigurations2/floater/PKζT'tConfigurations2/accelerator/current.xmlPKζTConfigurations2/images/Bitmaps/PKζTConfigurations2/toolpanel/PKζT@Configurations2/progressbar/PKζTӷzMETA-INF/manifest.xmlPK6vokoscreenNG-3.7.0/src/pictures/camera/on.png000066400000000000000000000173461444746353100211510ustar00rootroot00000000000000PNG  IHDR\rf pHYs+IDATxy|geUHB$TcU*:ЉD6VKl}):(%֐EBȾ;$ryO\ܿ<ᆵK!DZՔ_+vm笊,b#yc7Zr -v<1@jUΰݵm6v{g(Ư%ɞ5w5j\}zj`͜eM=iWS0+Z?ݔiRuj7}/t'߾gkLn  Ry\YC~Wr~~QZeB$@UMN@z@Ḍe~("F|z>}4ɢFkƧߺ̳EgHq:mR?G} !j &oT^'z٥SQ13/xxu}F>(( zI꾎sEI,>ҟ@ (.1r$p=H>n6zgEH D`ϝ;NRS>ֹIH DI*"k,]]pdӑ)( |Ӿn? $ {ȇR;a0i&'xX ! LHfT_gb~ ! HripKE J˙~uBTI*L'5Si Mf\)uSie.ZQaK DøRr}h_@D5B4 ?xQ@H=ɯ7>k1P' ,X=^?*Q/uˎ9nR#i^qRS_=@ l4S=~ҭl !uIՓg/=sxƶB܌!ٕV"ǀơ-C= pJ Q [S8&XLe ! j'zL,9pj y=sDZ7 r+s-3Yd:ueQy s2,yhTQQ3Ego8Y8&YLԳISB^~H!(rMu>Yn|@+Xv*hGm\+]l ! >#z]\p?*\/?B~OOޜyq|f]PyNő_е ~Qy\rq`/D@|Gwg&[NިR'3g**09$C@+ql(ہh~i~QF"XqE}$'ڛw"/Ako{(Dc(.5M=[вa-QưYnG}&O)(HJYch dH?4ۆ}@Vۯސ@dOB~CD#: ).1CA!u^yKR qDGiSQdóEcCO@dOO A))D{.8Qqh:bχQgRРqG mEcn!8G DA Lg\)znn3Փa`,sBo ! rR5kǘfcv3闤ϧMUT }:@o>=d/Xb" yUyްUH B]m%r ğn%P|u1}9.k!nTWUS#rf:f+V̒Pl0lnDZ6m((HneEPrk㩂F/yYyI(D`CDY>KGK@1bҦMzuQdA?$EN'ϖQdO8BlCZZeSQlb弧:^HlŶ_cn]RKQA=,?[ո9)_#H Q_9 ]P`_'H @XflD@|Gwg&[N(µRd@O9$C@7J|T˩k;u(RAS9$~Df Q;h^ǁs:yB =S8z7}b͢]7Fkoc@mXXo G dh@. )^ :()N=B/a^x+u0" 4M8V٭acZ@ DARSf.'z}MlvcYT]d,r k/f@=Dm6|qP()I=4\r"9 [e\D#>"vB$,1,+,H8aTQ2/w4Cc/[mz~r;ew2+2[W K\ \o:*I%2Q-IOp=kH7dGo:~OޞXvlEgAf'4CHZ*iJK |O99o!~7l v<1ku?: V/=-r.y㈲36*H@Ygdm[p1}@Sp{8G4QwG£2.vm!j5um}/-\:}A)Ko :=}!kNwE(L~î?e=k-¤~Xܳ}t7KjO=l#~: o'y9&]4CX8bc| Qm ۯM=MB=w3!fC}^e2aÊ꾰yD9#GP~DP۰DS`}~,<=Ϋϭ>KKGMP5JPu^ƼRiWPĤ T=dm5e%Tal3xo+4AmD#!G<Fؑ'Ջ:z]:s50h:&3{?JBz޴~"am\iiL<3BhJ tEg_bRHHO$K[aA-3W&L9}P{EG ]=^?$"F8OS^.A =^._&{4t&j=pҋS]?؏oz5u3f>lI{_K~}g\ʸm:"acn'~" !'YL$  k߷j`=P` ց_|ts[_f9A&Ial=F/xZz㌾F,C%K1PlklN{P1~EAv56OhK%Y؃83eNA=)S6t3v3 Ҏ6;HqZb!ڃG|qG~E flÂ8uỿ|?;f7˨O烷`;5}?LCvݵF^?h{̗qz c3gٍr7McDOc# g mv*<'&cQ\Իw(ߢv*;{LyZvrG=xMC?l.`cy0\N >O=C&h^ǁe݀o'8'/I ڎi=h)z8?\JVpAt!ShBZ8#\J0٘"$g{5U(`O!{wShbo̥DQX(wmcdQu1j w>''{pyǁ^(%F52}T{rJ@FL9Xd{0<+<ri)mrl8e_ Iɥ+1w8two)ڵFTnn\PkAW~(Ȣ;lk1o)R#`f_1c7A7;jA+f>փ%7U #܍ -rq<ӁRJGGr ( ^;Ux(`)ڃ{OO$[.UA*"g{y3VI%G%:;[ M%{qO1^LDC^zN`Rۤ~G3#EOw3!fCrD@kdoۙP۰? -F[ dר ~ S<=n;zw}*{}"D;Qmù4e, UȠq`PCqq/ҔlDR9ۃxϹZrG3p\"`5UAQD'߽$:z+r,?X ڀ=wtS%M? A;Gڃ}#A! T+@2 !͎1|iV/r4(qt;NyÃ"(H؃#@{Ay/HP$ A(ɑH؃r+P%9a@eih@H`Cy B{/@8`ns6`@CO4HP`AKoHP6}o=F{P1?: ,bi:zs$( l4Hƫf̑Yz-eZ[ʑ؃H&'s4^$>X۸#A-8n@{E7t{0&0E F–n:;nh$#"||51hh_Cm ^K4b6䠻{ {0"@ށAi=g`-z}B`Ps)䟠&؃g@ ؃ N n:)W{?p)%\2Y`]Qq}g@wkbo1 Nqf)DAb⌿5k!PH=q=OlBp3J u1EG5k8RO`~G={D !h j?g@؃x:mԯe|k)GBP[}%Rj_ߏ3F A~L =|@k8JwW]8KDx}^m{P*ׅ"+gP  9F5ZiO83"KBG%K:iWߏB(*dq \i7opu]݌l wtkPUH_5c䍜BP#.&ߛܯσ㚍' }L﹮>nG\}uB,&m~=t inÚiiB(N<_tgKŗ:U[9tPXZes @w9񭋝U>jE>YB1ww=ցzڴHQ7sIENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-circle-off.license000066400000000000000000000001711444746353100246750ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-circle-off.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-circle-off.odg000066400000000000000000000212571444746353100240340ustar00rootroot00000000000000PKoT.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKoTK9Thumbnails/thumbnail.pngPNG  IHDRzATIDATxˍP@Q_HY[^ KH o< W oio郢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(x\p8|| }\D S+(߿~M"X5c-S%IDc>rg)},.1DqD걋|MFcٓq̿\v/!胢O\&BdS>(+&ǻy >(_ٷxs;%}PADzOb7Ld h\'2cALd7q XX"s.7nynueQs<sYLq{胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(X{r4aIENDB`PKoTKWTBBmeta.xml 2022-04-13T00:23:042022-07-18T02:19:30PT27M34S8OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKoT settings.xmlZ[s6~0}hM.$s s}9#,adɕ B8vv!vWkje@^ѻȝ!1빵?ݲ{sTKęEX)(JBDbŘl=$r3)b>X,>-.>1M˲viȑPP@ F+K1:(ջoJkaø̯߮&r B|+@qp*^Vut,JF^ɝm6w' mlvs,Qcl3m) Foі;$L 0#0PMb*s6燰T7+.S0CWƕ?;qm\Ss݊eT)E)$WׁÆc~AG7De%C6QpSQJ)ʐy`Zz޴%MD($HdV]Ubwڌb=ikCyeIy͕m T]_|ϟKK[WybUɿbT$ l2#쵊݉&~Tyx?SWN禋: q(4 Q"e )> MLP#-O%"Fa;^ەj#ߏ@O<[6#pu`i^H _H~O^eݤ~[T5UQ;1#J8Vy؊ād`| GQuY>c1ƎKiMS⪨3nj_聺ㄜw`pqx@~z qƕdWKX*C] =鍞ϿDJ_7yߟ$cU% e&n C ʸlOl,1'Lȉ "RvR,$M@6x@z9Kz:>"NmmGԓ ;]F_K ʦKP<.ѶfjueҊkXK+ BLn1Foe͌\LP~rq&VrIRZd28WMLx͈) &@›c[}p֍ 5NnO aoPrX lŹl(<[z+g$9:2F2mhGYghX8 AH`x5T:fs\ aۯ pT9:^[CSn7[A߮>Uzvjƨk/}VVq-m֨U-uy u/^@<elv& /'pfH *T(ɑ.e8~ t7PK:Mbb$PKoT content.xmlVMo0@9@J+&đmq>ppy/y{v̳Ah#U,).d;| 6VjL\}. 2UX0q]{]ĊiĖŪEˊ}tG=e쳭8ڱdt;~f\j, OߩZy1:H-cBV %q.aʽ3"2M#bsaTУ^U"!C2 3K3[e[e}nNm:PWA~΅؞TLr2kWJu".lHg]݅WZZ=8 g4c*%"P&B!aNp6|>޿X*rz˟,Ylt;`ZZV@hAşҶ+n!;Rg- -4ќ߄B:  Ixzz}c./ZOςhFmR)#tF2q,an T{N ;= jH7@VaY:٬'Lb2 `>’&" D_QMTv!IN56e m00V"$Ǯ8Σ9˃ R {F.^.q @n`!IH3Aw x? *]^`s+"e!I)w=Eo0aãh]pi T~$^=yU[(&uJ׍ŃL%Nm[OCc- Y/vٞל?9}}Ljw8wYd Q{hhuRQ7efs;J/K]dKK}՜$"=~PKRx PKoT styles.xml[n6S*;Y?v؋St?4ݰv-QJ(*no'!)ɔ-9r4[uCnS: ,[XصF8 XHxa}nE Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PKoTConfigurations2/popupmenu/PKoTConfigurations2/statusbar/PKoTConfigurations2/menubar/PKoTConfigurations2/toolbar/PKoTConfigurations2/floater/PKoT'Configurations2/accelerator/current.xmlPKPKoTConfigurations2/images/Bitmaps/PKoTConfigurations2/toolpanel/PKoTConfigurations2/progressbar/PKoTMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sJ%9]gys*y>xEAkXs1_ 9>LP̫xgiP5gYV nD_idUKDh,'_m)E:Rw_CƶW\ @;|>bf"̞H<ē Û]SJD, #RՇ<[ {+0ۙV%ju&=R`ԏ71!~;枏fͽ͑hOmbRf ۋh' qb)\"qߞ"H* UXpy0zTXtRaw profile type xmpXYے8 |W'ɖsH 8$̰U\l]ZRKfPU z{֙Ų'&mY'y\.K\ɮ9M1)d{B}t(f19^aPJ"GzE:lW]h-ġc .Sx4\L)C|pShD`81G#>xuCfŗˢ.Ţ:r)XLE-2'$aui@DhHD1>LP@8o HԌ/6!")9W_:QOȪU(᝗wNH%GY2$Xz!usp_^# 9C1M4 I:J,HhKk7fV=7]@-H gADʰU #hѤ4LD> 1,ETW0璢b)'1*03pTDY3{F?fD s*NG 1yuWhJ{G&8䊯2  (Z< Q槴ƈk Ѕ>LU61 T@Odr:ӕ*1Z$ez(;&"ojLa6)![y[}J)Q+ i 'G|r)R#iLč,J].Bxwpi\zE'W7TZzV ,о2X+4r.D }-̟FtЯXQ}eNڑ?[hq< 0ewZOf},g@tл|\hϲ-“_$OzpILzorNTϢw82IDATxyx}'[]U}A$QDdQ#vƛ'xw'ɳ8؉7q{cC˖lR%R$E&@Guu]R!)cɏU~ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 H ѨDžx<.$I{:}>_o4MN8Τ,Ab<8Ny>KI꺞bՃ p8F"bCCCbVs`ֆ-&FGGj |fJiBeVQa<PJZ.,,zl6p$NgT d29G)]jllE].Wҟc U.H _ZZq:zMj BiBH$2DQ,Hlۣa,Źᮮ{,IRҟ#sg,TYreNr8}Geyq0%"Pе"_Aj1jA[[J{nbln#,ԩS###s2d2ٻuc\t8 9#kt{W㸛noBnq Cϭ9|&eh>a}qO{<9͛u ,d2믿/>jIR 땂xjQҁPC3$vA]@8në0 ZQQg273B(bEqp``>z?pǏ;ϟOx.y^u\L&Ӽq1M jll^GG_~`Yٳ CCC"q6m>oZ嚵קBkk@om5F2l*]U-/c(iArlSJQSSs9 }y?IVګ _|񉕕Fgo$ո!|TW5)^?"m74#P[ '؎!"J kӈL@Udb=B@ 0H${J)AS___>]Wn;~g?xQroYKѶ{jxa$n P4F0;| beDb>j&H yokkcs`qq;|W5MSr8M-4xw߇>i{>99drwKN(( xۜRp6|:ܵYKrr$fG.#:3:pCN큪(еҾ !F8~8 wlN>-ᵽ G!]ѦF4uF]K;ܾjoYSSc3gqw4H$xd\7^nCk^95dSIK 7<=Sv544*ێ 'Ϟ=7,wyކ@>ڦV69瑉-M(>}aCCùhܱgΜʕ+,XO ?}waj#_f#PA(^O'kHPhKL;ߙ5ÎkmcYkBص ޲ C_6עNtuu|#߭mms4ͻ"Ӎ@CG7M\r˔nu(VA\=$c?>߬ٶux׼333n~~x8`q/ÔK7FA}{'</Ud5b߅mWؖCCCп_XX=QSײ'FڻwS0OF!:H-/K'IR%ɧcX?J_FvM ۩S4MsqBxO7 'O?7::'7wqgBx"c==͎n:o7_:* 30' n}>T,ۍ=555裏n ###•+W>966Bs<=l> ܭ:h%t=]{.XZl!r6socn]WE ns*LR@ 0{@ՇzhEvzz{b||?Ȳ\scLðsـu空CsoS.}>جQB*D1Bd_9J_F H=weYn$C!2p Zf_VLBt89psk!:s{)$ J ;vsssMV޷m&S~A׳]UTÍ{5 -o1tscW1t w 8-裏~v޽[6ov… FRWq<` DmSKIy4ť^E$K>_+]]]_{ᇷD[vcjj3X칵,nt jZÿCq {wlҷxPUFt:ЖS%nppϯe 9pcO_t%Y'ՇGi9wPrWi_ŹsZ'''4^7:jXY64vc(w:ugΜWZJ垀_$ɾRϵ~u-ÏnGkO?KnQx<)[j y˵[?4oc}7(l_9Lbs)|>߹4 / WZR_?\\\ռ7BPэ]{q~}QְX,E?я~YKjg6b߷c킑&:f18\n <4`bB-?nQGJ9R w d {x9tT]XX8RkbKFnuލtG *} CVt(H4NOOWTLFU9j{-L=htmjh/A2 $]K.Ue-*oT*՛J].WMB~i)ܾv }HB9Ӄn3Ls,;Hɪ{ު@OMM}LӴg2fYk>߼ 9; mtmuwxT*՞#RR]tsdrW2WfΙ/~׸it*6]!2A iDӮ^Wxu9]I#HtݞBӴ .!nЪ* _^^~nWY J)/x݆]{TvG)0:;J) Sס 8lmeeW;H/fUrʕ+1 qL@ Ar;ڦu0hՃ=y rRg2QPydd׋Ţl ?O>i-1 5M=) ì]ҳg6> RNUKW gϞ[^^xX X?b}^ k"h,-/M:nr=qDU UUErCCCsc%@m#"ط?S(qW{:'eYnt* ǎXl64u톫9 jQVb|>rsɊ?/ ]sss-C#k)}l$hPbxL&+b(Z]E)ENT`ޠ%api~+t]'{2f؅A0wt{nl\K%`qqD"Dy+Ο?zjy.Oz<L5XMR(N*Xp9o,{,>4a*G)-BԿ,{VHR#u V 3LEBԹsx}Jʀ\¥R2Tk`3-mxJ499r ӿR9]l{/fKvԷuYNbmllrOl YJ~sHk%Se{8uq;θ(r&''ʲr`pFtEQwp%'\`J#"N,wr.+*rXQ,˻.^r`||qUURJڮ?h6'g0t`:j[:XofK$&2)pBp8]QTVL,aJ)G)Ll{*cYD"Q/rǍR4M4M.Jp2tMp T gz삈@m=$ n䀒!3tCo10 ;ϗ[p?q̧|&J)HN',& fB8ݔu-ϟope,W^0,#lu]߼ZzսUIJn]-}kKʲ0[>^d2T}bXtZ0g2,/2M555=e=lOh!i^If1[7[n3M{fff{M,/n8֧R2L5<8wre eX\\  P߭0VF)\ 삀BNKIePJyA5Mԥqn/l <ϗX,ݭeIR'lnnN|VW6dO dXJ)<OY%,--&˅ymX t\e x\PUrx86lno\nD"! ! ,]8~XNA6- BPk5M @f[$ P`&d^t:m+ AKNW90CHIu>/e A0,g<Y`鲜0+K|@Ha%lZ.e <-g%"k3 V] /xlC6A<4Mu$ C.KuU=| +fk mU(Q״ %>Sf+,uBȍn', 0mxncmMPt:Ԥpi&m7)nYXf!o_vL|%U "(X@dAWwJFoFHoUnɻ|;IfwUR8N+xC/p ](T`Mȩ̀00oz[MJY v(8Y=b>ЋJ55)BRY` MUPm\kRVӁRf (*%uEY@,[)Ŗ0HUR2^033l{"fPPv{YJ 9`jPd}x< (WY@ МNմ`Bef)rI[<|9U UIV7 \3I^p*Kên_zi(2U6`0kOJs\S(WY@$)\1 r.S1LYd ٥ (WY@CCC1LY `\Ec&-r\3MJ(i0o4ÔJW(Pu\h4(Gʖz1&I AJ> %o}؄a!Ȧ04k`(ze+[hmm]G9B>j;0 8 W5ܼ@OOO0 #E9Z`?e B`hkk 'U,t|6͒0[ȥ<<ϛx|,ePY655 v +KЊշag(dӖw:HZWu8K{@:̒0[!sFDQޞiw4! qpD (s8Tjȥx:8=>p[SXUՙePp8b^wB !fAlU=삈\&T,,ce~raZT^C!Ej%B.?{<(<ϫ(Bʶ[ $)t:yW򙴐-OAtv:G-*H,]{w+0JWs$WL&So.kY$I)?N9Xr\u0 1ERԮb !,ˤ(0W~+L&dY1 îio߾3,g$I1]Vra4L,MY^ҮCk`dPqr){K3l fKQ swwwRr=(d,7|9&TT}Pė!WB_UӴWxX r U85fym5Ô"ˈΌ[^rkk9Q O,FK(aLu"J :;iy!4MOirmI,J!XA||SS .rN68KTV,bz"SRŷ#vnRHJ)Ǯ0|mŹ֩aA~W|qKUB=x(J9/J`~*[*Ta~l٩@חuTEtkk%IB03te bʎ&Dg&J:/ ^ ?ۻwoU>ϜN;V6!f`pV9L_=.X:yM?3W+]*B qHn/x J>QO !LL])fy @U!CS (d00=tDikd 0 ]P,Њ I,ݞ808Ç_%RJvpX$I6 !(@ 0sZTkV3e̎]e M*]x:4E%MSmpxf)77e̾}]zmmmq!Bv/ K$ݺÐ &/"tc65M̍ !8;߃E_,s݋.+j<ϫ-|- *Hp8|FL>fw"0~4җlC fONRT(~A /xUT{b7MfB8\AV `61~ X]뺃B~Z!6B#G|W/4], 5M̍^İ7Chmm .6@SS}W J9O+*9w-f6Dre #gO\t\#}}}jllU=zWꇟE1~ ԢRK`*BϦqP8+666~ȑ#eTU!FGG_XHX*LJ؊AfM4g_G$y~>@  B_0lFy dJb1;|7HB[[[~D78XM#~pᗯ]ģ k%O,y^ڪw7["@www2y% R \:*\`Tly~B /݁-:m?|kɣ_)(2K)!Ȧ&(5$IS_{gv[*@I))`&F.ayt#%ٓ/l6[G}Q-@ p8R5M'1;z-bn*_|cCN?BYWW?oBTo3_7M% RPIzJ_ p[.2LSxO|.p{Z[[SRmɻ_mmm_q8%'0 CU6G`5O@ 0%J,PdP(}y~cn"Ɔ`9ij#N!~m%$IP([Uvjŕ /ZYYR@v<>$M4vfW2Q&. bPPxAI5B p[[wՔT[pCMMMѣ& ae]pyM.L]KZlA@0zFO4 PD.zI+jkkO~?BҖŌndenvQ J[2PJX4 -gyeBr8y 3Co$uM߭6I)ESSO>ۆ-7ݖ@CCD"v%;ycvv:\s ]wp(v&ɕ(. \ ]G>M9D"'Z[[P(+}=awիWV(nf~*~k&H#}vL2 .38# n4`u=3'*}Mex|$IiM$]\ĞCr2@S Xշ_>-qfl;}c?emmpo|痗&ht %6wT)`-(Ici >uy=bcc~g-555Ʈ]L(k tE98ȥwLTjH,]ù~<[uJSS8J_fؖM8+|fffOE[BQjULS'J^{3Bx<---VI=k[5;;'ly=x{w/ܾ@/ 5M+p /~qo-nϟF3+ jH,#yp!P fF.a/6Ͷ?sV6ێɓ'l6_%}v Ar Wv,.{wK755O=ԕJ_[9رcfBp{ѹ!4vt.J,XPjB15tCV7\gy<E?pݑw|??E*iM]ҳ:TKܶ9DtSW27!$IJo仑vd/?YYkZ(mu zыfgCXDt~CX 9EKu @`< }-g-vl~ۑL&?|~N|55Mmh@җQjbynX6fG$3 RSSӉ={l%뱣 \ԩS_)raޘ7B HNԷw??`эy2/A|aZ|ОVTVqf^|ᇿhٮuwwjڎ7={60<<.& q< QX -={AȦũ{fkyI*(r^L$Mvwwc=`0Uz+PJD?bױ*9YӤ΢Rx߯vJ5n6!X{`~J)r$K@tvYZv{⚦ڊŢ^<vѷZm(_ܥpD"]CknhA}{>4M"ǑXG6fepx8Ib===.wҦ: G&''4LSJoI GSTzp<@Mijom(5a&Ԣ8'FMĠ hpf)n{1JvǩH䍎/^*u6T/~?JR- BF9E6$]kn_]VǺp"!UQd+XGtvZ{ 1].WTQ=CT?jR/?=11\. L&Ӽe~/D ҄@]=\?n/^/x~±uPEAwo&]SϤ!2ȥH.]Cb qPyAv[G9S鏥ڱPSN_XXCVӐ @ pz|pBBpJUT|dt r6B.P]m6:tDSSKh %ϝ;yS.]i)#_ycy  s=}~t`d_ѯ-onSPPX#I"N!J Ceah* C뷴5uHD7qp8f4ٓiiiٖk7 k499ɥR~eeWEi$+Y߭6$ (9`$<σB64x}C ]Sat*2ry}\jˮ{}xAlooX,|*jm ,;v####ꇯˍb>Y[8"p-qS}UxBD)w /ぁ8| { -bxX,y饗[ZZ_G$P5w4CKn sشB+{.@ ?Ϟy晫[yKjE@)=yĉsuuu322۪\#('PSUlDRdAS !:Ιo𣆆{ šɓ펌4M(A\,59@/\"6Vy(BP(,EqE={|?2H&5ӳOBN0)D"VVVl:%(m BrEdݎB^1MDOOOzx߸=X  Ȳ_~/>h...>(@@,͝g0<H_ E.k9i+xQBȎ_W,Ξ=(+SSSR4MH `8M5 Cv=뺓<˺n6_F,T@($$N>=<;;ן'z?<66(vY; Ba_<\y]eA|$1z)WBsss.]:866v?EQdY5oe鵄3 ...>2>ǛjkkMr2L(r,#NgM:qJH<D"׺߿RX1*r2J)%ǵk9zzz^o(\-Ͷd٦|>u"BrE=ϜuS 񱅅X(*455 HD0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 S1?[l:z#deXIfII* (1 2i&&GIMP 2.10.302022:07:18 07:29:20 BHJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((((((((((((((((+?/·^džiLy$&gcI+I4 SCt?Mx?M4 SCt?Mx?M4 SCt?Mx?M4 SCt?Mgx!ӆƟ3<08|aE}I{?:Zx;wʃb69$H}OҮ3hzBs gf?MxE2izZt}+?!i!td/=2?,b< }'ú1ĦG|'x (@\xzx3ByHKekk.!T,Z1:3>Io3Fv3z}fQ#30P <dw*bbpOolc\:>ئ(%pqU'FG5TUkEjʥ@lgFx'b*s;y_]覯+Ccw]/Ӵ[-o3!X6S*z[|b^ x|{Y>|G4'-+@+HG2;h+c(((((((?m}jQQc\-{ p~+х`\A)STmN}~mneGe;Nq^ I$LU 0k|%0v`s( 9<*E5|A_oIu ((' *E-|A_g~X&g,ɍ"nr@Hkƺ֥-E$HJc^\)$$Q z'lex?}޸B0ΚWvλKt >(p)(((((((* Xm$e$>= kyl%algn>\,@-=~_\Vt^ qX2r sIY鋺8`HѴ?W5.|u>!b4G/[QEQE$)hkږLF\1@pyH~[uDEǔV$FRrrr玸 TZYEB0<+!7@3 ~W(tVS*QEj`QEQEQEQEQEQEQEQEQETql=oּcASڽ~^\>=?ֲR} >%&wfbBaf#nv68'sE{ǓuL&roVg5QEQEWiBف4hf%x-{ΉׅJ|/ l\ zMyW:}"ckj{U((((((((((+[5q-"R~wxm2?Z ?u:S^^Ƚפ((yt-(`>m?+4؞GI/ۿ>5#s &~כVO/6"W (3 ( ( ( ( ( ( ( ( ( o#-墫<zkA~ҟq`c`׆WS^XEPEP_AA 9toJAP$t۴{yQkM14QEjbQEQEQEQEQEQEQEQEQE>!Nt??z5XOr#B~yKJw99沨R]H/`Y l੦ܶ _xQi{e 8RNIC((+j? t rpjO_bx\c|c_oI熿k5'vtYX/Ӧ"ndm*>Sg8#z*|9"(WIj(( $_ K_WyZ襠 %U$T$ہG%[Ȇ7ZlR fRKݑ>^sHGu]fżǂl.1ZjC:(1 ( ( ( ( ( ( ( |_΁s)ϧZ$חMH?>$$y$SDmN=XXn+Gid8UXu# :x?'on- K]8 NrwmGR{` +#c*E5|A_oIu ((' *E-|A_oI熿k: x#e[IExlj-c><@XzF3ۡԘpHq㷽{mD]+jۂnFpzGvTJ@ W<=8{BbJ:0a++ M畄iHba8!Bg;Fqz'Km+D?ƣ5yQY/Ox*T|qϲVMIqOsm5;+͵opG֭א&C=}*luy ֊s7KW4uOrՅY~EWD9I{fU\i_Y<ًIKإKj4KL8re!APNm~u9(A9~ ?1ۚ&R(K iԩrF2NNy9#4HLwଋ2WR0A?Fs RQ^+e8Q@Q@xW_) Oc𝭭Ň{ $ As09F2ھݼT?!?Ƽ>9uj?ƈ&Cpz5m^E{L˼i>oi6NCF#>9ǃc@Tp! '~C?U?0U'~C?U?0U'~C?U?0UP%tEXtdate:modify2022-07-19T21:40:56+00:00c tEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:07:18 07:29:20E^tEXtexif:ExifOffset190LtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength6428T?N*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-circle-on.license000066400000000000000000000001701444746353100245360ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-circle-on.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-circle-on.odg000066400000000000000000000433271444746353100237000ustar00rootroot00000000000000PK3T.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK3T Thumbnails/thumbnail.pngPNG  IHDRzAIDATx1U- ܉ XԀZhcq`eG%Fv1PhrFB87ɸ;{7{esv%ܰnIO@50[7b&Q7֭QԧZ1Ϝ?`*IyKw(u$>(Q#ԧdc,z $DcC9r^I$G5qtD‰$G GqId[ۿK$>UGÑWV.sNQe!A'H&DX{+&>*>!ֿxtK `È=lxt_F->r׋..7['q`ɜmP'dDuKH}LvQ>1N3@}\w 퓞ľD/~\4tiVʹT!>r//*j5_\<<-MI|}*^< ^zhT}TljqoNpTw} Oz akii>0iSs[U9H7WZ+{ocjڶ/ĩ?Rݸ{hqWҾV꼳dbGGn.7B}?s?{?YJ$cT&靷.I T[30:R"sh*IOR}t.k'w~AYrF}R|bZa8,gx p`aDODO~|"mr-,z˱m:;KKHç!>_BZͩKE~-5o1󞿃G({+F/|VExx~ C{vibQq"q>4#DGd%Rsm#q}Yi#מY8^edR#fJT2~yed#s:E;H}ԨL~c]}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇} uCq(IENDB`PK3T CCmeta.xml 2022-04-13T00:23:042022-07-19T08:24:47PT42M45S13OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK3T settings.xmlZ[s8~_a$nSL0N `/]FA`HhBhij[ql9:ҹ/-#rFрALB߫_~.u6! Qy)jPө(N ,DHePf1il}gI0fRbqX|X\}`<,eӧۡ1GBA |]ڀ)OEYޝ.V,d"T.=2`Qdl(Nc_i֞쐃Qc qRn?[1%(>uu-( FV849,l\!pwy}u痰T7o>Άb(goJLlWƧW_F %\hqx9AѢ +W(i0Yc{O#sFmMѣ fBfH WydR9TR<ͪ"nBiɎ#qu2"DCP+pSb0S4Es2KV ZJ7C94)Auh\[ޟG0DW8c'B遞ym&_-{ja8c_2$ut\e \E? #b|L:NEq ?Dq>5DYfy?8="M5Cu&Gs}Ƣ'z 8!qxqx@~FӘ++;ɪ/ ?WTz=H&~lU0,WY%)wM(Ӵ=fA6̜0#'HEۓS tSz(.ɬSdݐNBͰR؜|(Gv95&Q_>-屰r>ACЕKrhv^̔k'"n%;f>N2] dV-DQ5lf2#u$ ^g<끌WGxK(5nf?"T)~b#X lťlIgQ[FS oξoLymd?G YwdXgXAdMW#5k~K#wo|}sh*C{h-vbh;=+^dan{JgꕩW#0l ĴZ7'%A!zNAT?O*?jYn,ǣT \+gVux%ܹ?fvJKP{7%-SsvkVˎ}ǭMJZ3*<vH4F|i*JnEٵ9 :?:8*#gAsav\`;,CF|BOJ#@Oh!#p?*RZ(&GҪ_+bŷ~ t7PKfD4=qb$PK3T content.xmlXn6+ @8tU 0-݀( Eu%0GYH璇E*-^j/"oA9GA$%n9Rhx/Z4YxD m28i23Y1Xe.:kuFls v59;E+[k+klT׼s ^5ŁQ*, }_Raih#ao Ad9]zK Op`wڄZ(cvfu^\t ױ vQw5*6-ՅiP]Qbq e:zkI8={I`#BL G q\#;w5pAjkY[,(vRkӎ),WwgEQ}Cdv5J~oZQ߭]'{-F2wSSSaNpԏ#\hW*GT":GD+B3ޱ*O,&{ 8_4]?J\cynx%̏}Ymw\86Ѿ&`a[gr}@1U&)A`j)œD,a`6 G!#TOx?PK+RzPK3TUr3-Pictures/100002010000010000000100F97F57B5.pngPNG  IHDR\rf pHYs+IDATxy|geUHB$TcU*:ЉD6VKl}):(%֐EBȾ;$ryO\ܿ<ᆵK!DZՔ_+vm笊,b#yc7Zr -v<1@jUΰݵm6v{g(Ư%ɞ5w5j\}zj`͜eM=iWS0+Z?ݔiRuj7}/t'߾gkLn  Ry\YC~Wr~~QZeB$@UMN@z@Ḍe~("F|z>}4ɢFkƧߺ̳EgHq:mR?G} !j &oT^'z٥SQ13/xxu}F>(( zI꾎sEI,>ҟ@ (.1r$p=H>n6zgEH D`ϝ;NRS>ֹIH DI*"k,]]pdӑ)( |Ӿn? $ {ȇR;a0i&'xX ! LHfT_gb~ ! HripKE J˙~uBTI*L'5Si Mf\)uSie.ZQaK DøRr}h_@D5B4 ?xQ@H=ɯ7>k1P' ,X=^?*Q/uˎ9nR#i^qRS_=@ l4S=~ҭl !uIՓg/=sxƶB܌!ٕV"ǀơ-C= pJ Q [S8&XLe ! j'zL,9pj y=sDZ7 r+s-3Yd:ueQy s2,yhTQQ3Ego8Y8&YLԳISB^~H!(rMu>Yn|@+Xv*hGm\+]l ! >#z]\p?*\/?B~OOޜyq|f]PyNő_е ~Qy\rq`/D@|Gwg&[NިR'3g**09$C@+ql(ہh~i~QF"XqE}$'ڛw"/Ako{(Dc(.5M=[вa-QưYnG}&O)(HJYch dH?4ۆ}@Vۯސ@dOB~CD#: ).1CA!u^yKR qDGiSQdóEcCO@dOO A))D{.8Qqh:bχQgRРqG mEcn!8G DA Lg\)znn3Փa`,sBo ! rR5kǘfcv3闤ϧMUT }:@o>=d/Xb" yUyްUH B]m%r ğn%P|u1}9.k!nTWUS#rf:f+V̒Pl0lnDZ6m((HneEPrk㩂F/yYyI(D`CDY>KGK@1bҦMzuQdA?$EN'ϖQdO8BlCZZeSQlb弧:^HlŶ_cn]RKQA=,?[ո9)_#H Q_9 ]P`_'H @XflD@|Gwg&[N(µRd@O9$C@7J|T˩k;u(RAS9$~Df Q;h^ǁs:yB =S8z7}b͢]7Fkoc@mXXo G dh@. )^ :()N=B/a^x+u0" 4M8V٭acZ@ DARSf.'z}MlvcYT]d,r k/f@=Dm6|qP()I=4\r"9 [e\D#>"vB$,1,+,H8aTQ2/w4Cc/[mz~r;ew2+2[W K\ \o:*I%2Q-IOp=kH7dGo:~OޞXvlEgAf'4CHZ*iJK |O99o!~7l v<1ku?: V/=-r.y㈲36*H@Ygdm[p1}@Sp{8G4QwG£2.vm!j5um}/-\:}A)Ko :=}!kNwE(L~î?e=k-¤~Xܳ}t7KjO=l#~: o'y9&]4CX8bc| Qm ۯM=MB=w3!fC}^e2aÊ꾰yD9#GP~DP۰DS`}~,<=Ϋϭ>KKGMP5JPu^ƼRiWPĤ T=dm5e%Tal3xo+4AmD#!G<Fؑ'Ջ:z]:s50h:&3{?JBz޴~"am\iiL<3BhJ tEg_bRHHO$K[aA-3W&L9}P{EG ]=^?$"F8OS^.A =^._&{4t&j=pҋS]?؏oz5u3f>lI{_K~}g\ʸm:"acn'~" !'YL$  k߷j`=P` ց_|ts[_f9A&Ial=F/xZz㌾F,C%K1PlklN{P1~EAv56OhK%Y؃83eNA=)S6t3v3 Ҏ6;HqZb!ڃG|qG~E flÂ8uỿ|?;f7˨O烷`;5}?LCvݵF^?h{̗qz c3gٍr7McDOc# g mv*<'&cQ\Իw(ߢv*;{LyZvrG=xMC?l.`cy0\N >O=C&h^ǁe݀o'8'/I ڎi=h)z8?\JVpAt!ShBZ8#\J0٘"$g{5U(`O!{wShbo̥DQX(wmcdQu1j w>''{pyǁ^(%F52}T{rJ@FL9Xd{0<+<ri)mrl8e_ Iɥ+1w8two)ڵFTnn\PkAW~(Ȣ;lk1o)R#`f_1c7A7;jA+f>փ%7U #܍ -rq<ӁRJGGr ( ^;Ux(`)ڃ{OO$[.UA*"g{y3VI%G%:;[ M%{qO1^LDC^zN`Rۤ~G3#EOw3!fCrD@kdoۙP۰? -F[ dר ~ S<=n;zw}*{}"D;Qmù4e, UȠq`PCqq/ҔlDR9ۃxϹZrG3p\"`5UAQD'߽$:z+r,?X ڀ=wtS%M? A;Gڃ}#A! T+@2 !͎1|iV/r4(qt;NyÃ"(H؃#@{Ay/HP$ A(ɑH؃r+P%9a@eih@H`Cy B{/@8`ns6`@CO4HP`AKoHP6}o=F{P1?: ,bi:zs$( l4Hƫf̑Yz-eZ[ʑ؃H&'s4^$>X۸#A-8n@{E7t{0&0E F–n:;nh$#"||51hh_Cm ^K4b6䠻{ {0"@ށAi=g`-z}B`Ps)䟠&؃g@ ؃ N n:)W{?p)%\2Y`]Qq}g@wkbo1 Nqf)DAb⌿5k!PH=q=OlBp3J u1EG5k8RO`~G={D !h j?g@؃x:mԯe|k)GBP[}%Rj_ߏ3F A~L =|@k8JwW]8KDx}^m{P*ׅ"+gP  9F5ZiO83"KBG%K:iWߏB(*dq \i7opu]݌l wtkPUH_5c䍜BP#.&ߛܯσ㚍' }L﹮>nG\}uB,&m~=t inÚiiB(N<_tgKŗ:U[9tPXZes @w9񭋝U>jE>YB1ww=ցzڴHQ7sIENDB`PK3T styles.xml[n6S*;Y?v؋St?4ݰv-QJ(*no'!)ɔ-9r4[uCnS: ,[XصF8 XHxa}nE Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PK3TConfigurations2/toolpanel/PK3TConfigurations2/progressbar/PK3T'Configurations2/accelerator/current.xmlPKPK3TConfigurations2/floater/PK3TConfigurations2/images/Bitmaps/PK3TConfigurations2/menubar/PK3TConfigurations2/toolbar/PK3TConfigurations2/statusbar/PK3TConfigurations2/popupmenu/PK3TMETA-INF/manifest.xmlTn )"R 5I==#Nڷ_?:m`eb2+6cVj_l+Yl-B@"yT.ɬX(J&IT$-}g90l9*|PvpvPU!@ThE]a͇%3o [O|&[[Eۊ &n8Ղ^l{CeltTy} DW$H aHwoh5cq͟fwo@T:ܳƴ9ӝBi :Gs2(</ SO߾;PK_16YPK3T.++mimetypePK3T QThumbnails/thumbnail.pngPK3T CCOmeta.xmlPK3TfD4=qb$ settings.xmlPK3T+Rz ccontent.xmlPK3TUr3-CPictures/100002010000010000000100F97F57B5.pngPK3Tt1 t6styles.xmlPK3T>Configurations2/toolpanel/PK3T>Configurations2/progressbar/PK3T'?Configurations2/accelerator/current.xmlPK3Th?Configurations2/floater/PK3T?Configurations2/images/Bitmaps/PK3T?Configurations2/menubar/PK3T@Configurations2/toolbar/PK3TG@Configurations2/statusbar/PK3T@Configurations2/popupmenu/PK3T_16Y@META-INF/manifest.xmlPK0BvokoscreenNG-3.7.0/src/pictures/camera/window-circle-on.png000066400000000000000000000535311444746353100237110ustar00rootroot00000000000000PNG  IHDR\rf|iCCPicc(}=H@_S*vP,Hq*BZu0 4$).kŪ "%/-=B4ktL%b&*^ы "&3˘$<=||,s~5g1'2ô77m>qexܤ ?r]i v Rf>I0 \\5e ٔ]OS3,֚q pp({={rqݍ cHRMz&u0`:pQ<bKGDi pHYs+tIME # zTXtRaw profile type icc8Sm! `|0H鿁kFJbi4#|>anAV#`V= $Tw'x QȀ5 TzeK _Ut`tr`xd{8(t[~+nw&xOľI# 7Cjui;gX-87n5}dQSDh,'IHZoTPԇuyKBp%gg1b8"K̞H[=; '^ HgF(li0l5/9]8W h3!LS1q/bcQ貹ɣmA)3ry4ډ SS`\ʸRʫLܤaoGG!/w %ՌUx4zTXtRaw profile type xmpXY[0 )ƒ-8 Un0[5dRIX,KVKfg/H rZ)R.%XRJWFR2]Q&Y:XTm[Y1k7`SJ2{Z+`I.2p-0hC; ]SCx&H11 aY&%!H>'U-8(=bO?i4XcY/\E$sN-.MCiM#p" p 2$@6 DI$3:Fo5SZ |8gǻSZ*,ʳ !YLX!,@ǁ6M\3D@Y4'ඣvbfkZ{>$I=au%:A 3s~iBڍd.i+h|clHNC@ )8 &P4WbH@:RTq1-a@~eXΎH0qP]|-a\:ny9G{Rp6ie9SW\=Ӏz` OsC^c#p1hWkw1Z"EUI_x ʸnEw]>L\6:-nRfZ7bNi8R\.gV< ]pbjvw Al׶ +audm2`٩ q+x31FS?S7˖2Ԍ3Ul`LvF0լT04`wZyGEEU'm< n=un&xL7GԕU[6&]ܪg$ZA+MV.Cxp{ل WT+_= pWMcPj_mSvϕs9p^*S;gK-gCtca~GUb}eN̙R 8zVK*{Ծ2SQ.c]YOporNTϢw2IDATxyx׹ߙ.KeYM؀ ؆fOhB٠m{4w۴mIڤ[n6 Mc@B a ^m-Kem9#|'ϙ9=b;gy@ @ @ @ @ @ @ @ @ @ @ @ C6zXevf%өr\*+q:.Kɲ,#JMCMӴW,[$Y $E,d2\.dC4MGD"744m4M&SlIIKt1 坝s.EQJ[VvFӒ$HFp. l}}}); RٝtN$''Wd&?aR՚ٹc˗/ W[}*{U_\HOO?a0>P.1B~YҲVŒv, v`a\4M{ϟ^VV^_EQ?B,]]]hiij-jm*tK=T*-Zb>T__k}sK2v"HrIe A(@(F(t~P(P( X>7xܟw;qϸI)i}WU*傂ז,YZDzōVUU}ktQ`s()TPk F2X Q#>Qpج`mcX`yx:O@ p#q䊊ǫq8\K4Ќ`D=i@т*^|x=n5 eh,}`ۨDb1xI L6TTTrqq E>F#D@ީSnhhe=2 Rg2>4TK帻4N Wj2Bw{3ح3s`ƽxݫVVmݯh@)>~3C-EQ$ХgBLwwBΘ}GEYYY׮]#^w"!wYyyw{:1/,"-?S1tۛ<ޟÆ ?tq%!0 ;v{ R*W@ZVf\ʅjkmlQٰa3d`f6MS^^luu#8hS `]@Q䧟˲0p:kacƽ|׮]cTjݏH܅AUWW?244;khFi s!cq!(ZӌR}5t5M뚤Kew4\{С'''Y1,ˆ N\Φ)z}eoooNٲe˓iiipwLn?r/kkkk~Xm1&/ 32@$#an몠$&z\s_XXoiY"pߡC bTq`/e1Y DtsgXQ>M Q;]\.'n}?l놔ِb-HcM38F nox}* O)77-[MEEœGQ/(EEf"|^4WKSn:Zro喧Мݮ޷o߾'S`- I^WG16:yرTjfQoaٜ9y)`fDӭSHR` Xz,ם0{֭ms8z_7'{.~yzg7.0GEί,]ܶkjj.++[~RKny9KpJ OقFw?oK8q.ZVV7pa綑?J( β~|{,FozMMørP[[wyOO{ƿb tī/yW?4:isDc1(ʷm۶/Eۜ@ @KK˝{}{xb Vqb.ixL~\_0hZ*^ꫯ ן +֑|Q Mh9w>Kd|-yDX꽺Bxdw>0<<<w_CATfӼ曇İ{@6Fɲ]~sݻwt:*}-/>OPZZd2q*2#M[o(jk{{xxxaiieV "^9@(Mw:G;O wTz_lhu٧/.tT#3g|qn;fJ `<38^yj3Yveh_:roZL( V44.KYZZq;"R )WB͟'{EG;C#G o,'---[*cB(޼l#<0A֞H"[pOWTT)!} 5Wx[ۆ%K:t ، )TPv3n 1ܵ _%k74FynCCۦS/n"Bv{ÇUFQ,۸Bw.gX~}b ,[%|p"74H"B9@CbW$ONPaQ(XVk8EecBXV2O>|yey097=lCYk4TH%[ܹ/sE^䐳b-n JMܛփHrcΙ35voWjn*n,wZ716wiۋMUZDu/%e\[ӝ^988ĉӄ0<<ѫ["uRA:RͦzBC57ONA }MZb$A|R X-&Qղg>e6 ;2cǎeY, }]]\<B~~ڀ?lb(..F>OGLoicc#.̅n 2Vm޷(O2Չɐ&\__k``WW c~~4#bI[W3^h~.//y&WSv;Wټ%} ;?!o%q'+c!=y[貖^ u\ ¥v"3Ǫa_d- :~8 Skmm|groDiG%'!#o)gYKK6Ѹy'9:uiD0?yDvUo(/~ԩS BVkRCC}\erPOt. !RX&m"o8/ADK kRs)|bd]vvΡPb?)ǐª '>KpVMGRy؏"bhAO,*V0Y]]]!}M>Y:J+J.+h6!5 @P_Rti8M# ˦M|8XZ_y @,ϢΟ?S ˲t]]gԬ\p~& Gv ylCM30_BnUp5յjtt(l>6Q%P0ٜݽMD=\<8?Mj.CkQi 6! XS---wq%a!(Sz_nL$9'}C$===˭V~q 9@5Bп%;p b1]L'QMG+ᨮw@ ժ`/rfL9T0.,y~Ϡ"$}ֶ%Ȫf rZ&i>WYn~3l\7KύFcPtttlx<2V[T'E S &i iκ!oċ~ch\6\.eGGz OٹeYq#"H!Q mEooIllqPb1;::6ۨ"y=nPfP!m8W]d>Jux=_|yJ;~l9INCi !_؎Rz@rPD*ݜ}8Ke(M! 8 6J1Jo s鞞dnH:QlU`_?CtRz߿x6axrKb޷qw{io*NJlUbJN2OFyK0ስZSxm|#BRz$Ћbn7xd044u\PJDPßpw;h"q@ѸhU 2!31Vx yߍywgB͝$d2q:@&!qw{~y 5l6gp+cQ@3eǦAV5# b1pJdNO0aqw{Vz qE&W "%BJ,}ak j˲nMz&B 9GJoHbv!P$&KQ{xi "hF<'v8nl6NO'X]Jo}%J`:3OOɅwV8+u16mPyv} ͠eF V OC)kjMϢD@/eþDq&~>v{#)ywF@1Ⴂ(I$ I}=?] 8Rz[AMcohe.' 8s7nΠqh~5wף$URԔ~a  i(@1nxy+6ʗbx3~SpD+66ݴ7ɨpUѹ,ŧ)ӿq:F$33pi/g{<1tO)#7wpw=A"Bi(c4՞:3fe#ߦ7&ѵ>7تoDѭq@JpxBdݒ:2X/s HF6Du8.3"m "Q1Q]عyz84 A uҞI}%Abi|NlŠqJǭE{*\Yb5m#Db: (/oJpE( PG.gx>4"W1pIII)ɕ\M`o#}?e2aO:s!oϘz9zdfH %% ܰk1ˎ~?>]T=ty5L[Gaq(g  L&3i4aqX DyHq2pkyfJ]6bd2H_Mr-BFM",K [_?MHmK)g•VZVj6asu6ųKn2]{*u19wܾ;XX]1qU\vavu"%}ު<=RݳH<2'MK(b?{U?*lFr:<|~_`aRL);Gw:j9ϛ7+:u|i`| KE1Ŕ0b><T`|O̺j_`6OLH?Ej\M cBћm@ `ׅM|~s5tqm)**0^a?2 sC`:X`hFfqO,@nG&HJ-@=(pu6rΞh*%xI 4y&ko6[PP\.7Ye^E ^WΤJdH} }PswA3m8§(ʷj*9hڦ@:kwX)>a>fp/77w_||gEQ-[35e gƍmTDHRg70x.fN]/'Ûϸv:XYrfff6K"N6oD!vT~cix%H1;0,#eY9z}զMc%)BйcǎE"翆 ԟ·W?y*Gvq@ pY-v"RZn`>6-_Ige#E $)'l?߶mۃjb0uWwM7.PyIF'c?Y]cwp=XSBɲ$;}o+BP~(wF#<\VV7psr@Ѧ!iBܦNΌͺTb]=[ܱC~k뮇 mkZoEA DwOift%b36Zi=;:go]yyy{qZjjjڿ_~].rU#Ypuc9[#><(_,++{ehiP|˝ юaʣeFfƵ}]999mo8v[o#S(m.!Lzh8mSD"ߖa;ʂg@wwl6694@ު0/g ns !R9h>}S !g`d -Rzq:P͚5?ݰa'\YJcc㎲Iwȕdݭѧ60CݝP{H=W#۶m{0ϖ9/F1tOMʃܛ֓Brءrjm\^_}#+bL!Gr_TTT<S."rEOMRy3EW\M6?@9{'v[YYƒ:7!9K .dŅ ZNpUJe֭[6Ms?444<0yٰh5UqM3Fx8uA|RmHJځ"|5PĪc#fm4@zNd- Rymn էrKx*Ula(P(zGm;!0#?iuu#~|Pbbb@.KA,!Ca l{CyRRRu__N˗aÆGB^\&+<Ǿe)))gWNv>#!2@*OHnup>`$''Y|v˖-O&''W⶟es}\C $φŅhs >w z.;4oɕ/-YSL 0G'WQQd['ѧ!g $[4MpN:k3cʕ)))X,}ؤ9Y`6 }v~`*R9,Ȇ# d % n-tv؜u=jp%!B?LKK˶`FWMAҼ#Ar:`8ErssYѸԩS߭Q@L r@N>17:[GVښeͨ@,((xuժU@VUU}ѱ4 4#Ӕ%i .1 b5:Pi Vq2#Ã`@|H ^;\ /r#>F#D---wUUU=ѱj.qp'\*W".bb WŁLB DbIv:i(F-`b8exͰy?UEuaTfĘL]@ r&Ӆf JA$H,X hHRau`~g[6ҭeYZtUd!DS袨AMxAEa4(>܃XÓi1X fHeƺ*\S)I.4-cGψ?kv9"7֥cP]ExdkOö,Sk>ƑtfXͲ_y QWO@."wFu~NRW+ ^JͫsE !  ZC ( ( ( ( ( (Y {WƏt^Kݒu=xFG$œM"3Þ Q?=EsnNc䚳=JEeu 2A"H((((+Ljij~fOIæi^NqKzK{N? f݉W}^;ںk̅L^ji1])_3J׈մ>;tQE!Q@Q@T7W1Ms)q!v-*&"Ē5sg4avֹ-:)5ydi~>zMkMu2.EVEPEPEPEPEPER@dڀ3LiDX꺃j7.XD8Tpv|.`tө_o18<蜔"xAJ1ݛhn\I7dbNLJT((.vSL 0|џFgڳi%a>Y_޼VFZʬ߽R;7ןưT *WF"|vaAQEQEW-oﳣ2돔ru5nwvvE8h<g.Zac򮲳<=om1&֝tEYwaEUQEQEQEQEQERU><l4=P>/nk@=q^}q;\Iںy_C٭EEWxX$EFbI8bx_O2\;k'W\e_ߠQEza\,ѣy28o]A{H1Igs36vJλ\G8w^\PQEQEWS/.W׮Wx3¯"8DP((fTFw`%WēN `JTU&#=[P@y9#,?#u>9Bp?~VpӧƆ6Yrj(((׵ac[6QyQX}8.Nr*MS#ԾyxټIv/}+ݧMS>nGRnOTvyypdlgw?+Ňԋ&ۿ_ʣYR4Qzik5qޥi$((:Oؼm^lZ:Ɉx^\slQE!Q@yd?] \ׯבx3nqcQ@I8Nץx[C@R}:eݱHccyլw/C+IYǩP:BtR<2:0e8GJm4<ӽEwdDƴklo%I'*~eyGY|g\tpxkY|HEW1QE#0U,$SmBIBOe?ϭoxQ16CסkKEKxم~i{5Š)@,TIwqR#5U+O]:"™H̎?nzJ]Y %cO]EV'PQEQEwH/dW` ڮhWWYx9 |^\slQE!Q@y{o/Xa*O"2/6^~@PNm&?t;93?Q yjHOGQ]wG,VfhT Fd?)>5E\dԖp-4'VE*p4.-#~׵B|"ϕ*M\yat'Te%c'JxaYapaRW ͧ\٤?8v>܂޼Z])YC*п^UK#(?{ \_/^yy0[8'ҡKMD1U;dK,JݎKɦQE{$n]'@BV1?N²{ȭzv"{zV"ݞ<%+=((֓NzF3R.͡1AnJ?kss"W,2+֫og^ߔ !R3ۓy\XQEQEUk44I>єϦGZExօp?DS1P{ WH6j1x|vq##3fhI>Gi5c֢+SgZ6wۨytUӨIV4V潢Ų'a{ڰڥUT2>v9S,= W%9Fck*ҍXҫ*RRڟf)F9ayg(er"粎=}٦'N+OCxDc{gʶ53BSwgC7얟hWΘ}j+gҦAQH((jVRcWgߦKrʌ ?Ǡ;c>"ϗcM>ԣGڰāwI]? Ԣ(((qkTRe:&][hƁSqxæxS2F1p}Ս`H ;!-p2r0RǸW_] \lQE2FM sJq#[қN,~!q?ֻ+wUXd{hVt̾g6' Gz*楧Mܘ:0j^d\_, (B` bp^X&d(f7Ұ|/BNrOB~G]UyXڼ]?3rKwQEzAEPEPEx\6e1i7eqwc5k'hO]zU4tnrstMծ1)y^\JERQEQEQER@ A<}jbvzµ=-n--hbHmeaEyo)qolf[pp~hFV&QRGoErzPڋz7އ޺A 駱ES$jV>R9G5Mg9t Fsjk'$^~?Һpdoz;{V,l俻KxS+NO)osK}OS_ss]7/bha  *%W{)$((+'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:09:30 21:33:31Q0tEXtexif:ExifOffset190LtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength6092|G*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-ellipse-off.license000066400000000000000000000001721444746353100250720ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-ellipse-off.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-ellipse-off.odg000066400000000000000000000213531444746353100242250ustar00rootroot00000000000000PK)T.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK)TيThumbnails/thumbnail.pngPNG  IHDRzAIDATxm@@A_H9 > BmYaܙ3$]~O>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(S6i3H$r}|0Wwh}ŷ?׃8}\ŖB/f־J֣LX}\2ǹdD"{q=Ŋ3U"CMd>c{ykDc<,c5["q[ѻ*_& x9!xcD2^c>x}'}PqnAp 8NefXc$ Sȱ?-<N!˶q~XFž lq,q6\)ı q&2m},W,vJzH .gG}^ `&*BuGE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE?cWIENDB`PK)T,*CCmeta.xml 2022-04-13T00:23:042022-07-18T07:12:57PT29M25S10OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK)T settings.xmlZms6_a$3I:-pƼ~0 JrJq8mg]5w|| GgK-sC]DL߮eo3?tGg3KЇDd9BNR}&dHGHyQ8E@+.FdFdq sry,\Rt0rԀA.>p_f֡dSQ6)_V"v}ORs+@*Vu7twXе.^H3م֙?Y$bb;lH+˯іVfr i@DDdW[n™kƍq6b7> _ț_>N "t2~"l}ppP<Гy!8R! _c#G@`SŒ"|xELDH<}196,*wm9C^Őx ) ]yQaG :U|Dבۚr@.n_ү5-5oXz4ZfC|UI*֙ɟdt)E&u*C)?Mc۴L1}n&j~y0S)NѠ?PhQ7W4x y}2 1r6\MD9 4=\;Yt d=!ø6nSf?W cK@r$wT\qPW,𚬊}1#J8Ry}Ȁ,c8*Шg?`8;<*MJ0BObP?ㄜ3qx?Cqzj3(gH s*@O%$ |/T-Ao%da@VL}ՄU-A[R~hA-sV'tr=_J|M H>%mցp;rtw| #£y}u/Q0f>A 84#Gۚg/V^CXZ9\F+gġiu3#al\%n$)-K ^`U 2'oz ۼRO!Q@£WG}` }?5n0n?B֐%z*sbvф2++CeY1OB}K/k]~JEۃ"<&o9mi?d`ftߘ +]5 #km2j?Fft&$LF֬_:=m.̡i۝gVMsޓWUW~|Y5m3We>W+6@SOucܮWx)uwϚ ^R0V7g"a;KL$W6y\6+8op)Jh, yOΣOySǮWtU2+Țs9@s%7:fҝYcVOjfJ_/e[tWؚUt`fH\YJbͷ#eՏp9r@/PK%gb$PK)T content.xmlVMo0@sbB ۞ZRw Vز 3K=7cOe19rm6AM Do~yc-w;xIv(yeC&+ `W&mࠫTR#LZђԲT*^uGnfs1>KF~_ف}vi=XէXNꥢVdq*D ֪:IZ p^p\̐8I-cCRu(?- Js.s܇|Εhwٞ>sk$x$-wI^!\|˱k!J*}HhKw6I3CxڃpF +.˯D\L#Z?D( H&חw%PTꢌ)E1 0-h+ h4à ڍ`Yޖp hu} t Ix\N1kQȿ )ALH/C[Iq-P-ZҀA HzN-ӻgjH?AVbY:ٮN1M8h'vv y@暪`ݴn6$Futm)msm7ΰKʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PK)TConfigurations2/popupmenu/PK)TConfigurations2/statusbar/PK)TConfigurations2/menubar/PK)TConfigurations2/toolbar/PK)TConfigurations2/floater/PK)T'Configurations2/accelerator/current.xmlPKPK)TConfigurations2/images/Bitmaps/PK)TConfigurations2/toolpanel/PK)TConfigurations2/progressbar/PK)TMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sV|",3 fOfY%>'3ď\W\~wXa3'6VژLx8j: iU[R5_+\98 "TQD DiIKRU# ;~?ݭpB1 b@phlض'[r$"G@6pqҔ=r2dSv$?M!2@-е7!0uwwf?crSq cHRMz&u0`:pQ<bKGD pHYsHtIME-(7zTXtRaw profile type icc8S[! 99N4R HXj(Clk&'hUfLҦ #RD}4+pG?DCQ@#lwe?MYHnC8f>!x9z5 98_9>o&bUgiH5k YV nDoidUKDhXi'ڰSFu8ͥP4m3,!]@|>bf"N}<CĕlӤ1MB/CHŬ69OT.:Qh}bt\lʽ@@B:֍MܑfvqL}rYCb$L)C|&"pRt̒R*8#|/?2dv_&v:]ES5O5R(2+ ` Ȝ+C}E2!n}4F@ߝϷ$jF2!"a/%dT(᝗wNJ`!dHc3"Fc> c F{( nYHׁ\OdAwgF]XrkݪoCM7]Р[4@5^UP/E{w= a:L,h)@(CGUg/pa QQZ8 >;8RLC[!GJSг_`=_MX+b9̠b)s9D=Tg;.ƈALPTeA̐#0mWz}L]i"[L跎mAte`_T%ڤ=U^1fiRdHƶ[}(wC\\qHܼngz< ;aĆ]BZHPw}d6dٙ q8sLY^+@ew+By7'*ۓCX~(":;4<* ,ʔZ^(}Ӟ[pk,>rLX*;dGLd&ZAKW~.Bxp{i\M}+(rD =+dž.оKSv C_ 0.оGvg -gCtca<wهʜ>̙B zW B)eGwIf??pexorNTϢw)+IDATxyty(o  Dq(J(C;~NNӴiSI&$=m^_fs,98LnJDq_D B eJ"r@s$ޙ{g!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!B!BGtPj$ @ DpX%`P%$Ir(al>>BsO f<'fx~S~R/ }KVHdVDbVX<-Ɍr|T.RbQL_G4? ihVkjZt].$Ir7@  B1VJeZH$u^DFQfMNNn5L[VkE b<# j[VwkJVezLNNn3͵pXtf z'cLc˻.b^W=66`03 Vk4(`33]T*Uu> .bӅZ+0$$IOMOOW* <(ݵ~%%%ϿfLjZ5g ?900۷L˴T0G(: KKK)**z_$ٙ.j&ϧ?y/.S*0A^aÆ0ć`@ hOO󣣣SaLr;St lΧՐȳ(P=$h$ pj$bE֭[TYYyP(aL(by/;DI3@(P<Bb E ^ ! @8p0B~ uD۴iӯOafvtt|֭[h*ifHY T_D[~ 7xvpteN*6n7o+R9ub#(#}}}Vz Wi@Ҁ4S ,Ie@kqa3pZzV(JKKTVVpBL_&ߴE8N]KK7:::Uz`ػpyB:* d5- fZahdy .D͛7rXIT0;tnP(ai*gRJl X,/(Zn24)SJ|7bENo߾:`%@Qk``еkz|||B-}:2*.X@B1ǔ #0eÚرKKKϭ k6$zʕ+ߵle˕6Un/4#( ~ Gaj6X'~Tem֩]vZqIΗ._gv.b:_RUZH80F`zx0Ie:GffݻwL(ŋp/Y|3* P!r/`hP̣C092 bdݼя bh޽Zx4X`hhW92JI 9oJf/)`ݺwgp@$Ljg2Vu0͛ϟ?\B$tUtQ`肀 Խ8999Lq)Ve|ʦhoo9]*7C~q%>ׯapƇz`<3+DUSSZ}}߭ VU(~TL% 1]=lFSc+H@ y'[SSjX5blVm9tk4[L-HDpҥ_z)&s,._x!UCi& HWt$Ib";w={&we`rrr˙3g~z<o5|⊆0oB8HX*ȑ#_me^I@$>$LJ:(>JL46lHxY,V[ntDv`ffFԩ7L&\>fK=Á 5Py;py|VH8C0ݾ NgVm=v333 LiVZ#gϞU0(a˕O$VW\[wPQjnq&zia!L6p8_)//?t}$$mllqss,NWphZz3b>13eO>)Sܴkct196 Aw/VD }}}GN:F$."[ \"iTuLLBqp\߱cǾD#ϟD7PhrA*W}>J;p?iόS %!A@6@hUX_U {'tG֭[_HUR&&&; A@_^" ˫awĶT?%r555c$ͳiЕ&Bk 69@;}$555Jz皤@$8q辂tT|te+J/;qH$\grW|>_B; Tb-8fx/Pdk!CA>@~ d(T׳bhToô;g-`۶m?ܿEE0!bِSn^5&tD 6<<bC HW!V$Rpܘ֯O `0(;w>2'NR<9P}Ĺs; fH(466v|"j!gnw^ccv0;inIeyߓ+~Z6{DRz_6;褥(bυE7D(,YZobwEھ6==MknmIz2BY<(DoƶK7̦9iB<BKPZ2*Zi~2K7\z@ /^{YBtWɹ~_)r3ds>yWnxlWBg?_ ]L_u/?6 X0x?Um|u4[[[f7|>2J\!J C. oܸ}oDto݃bAPu_oy@ggK~?nh4wB J7Wη3?Gyt|`2jA-v0ifG( h փ4s:APAL&S _25Ģ/H$y3]_z#Z=JRӝv,暛7o~e $Ir_xzgXp٦N×56Lp`݆eey>Om0Y$p ڋ Vv]  M7;43 dJud&Sv >3{j\.]RZrtӕsH+fmsXܙdYxPeA Mw#pwErL!v:>>np::w@Rk#S׫q:,\7dirB(l6װ, @,ˌTIJLqMMMUl6[Yrev"jZ+XwQ/#@lN@}L !Dt:ױ, tL!gN!P(&Ƅ!m,:4F!ʢ'6tB49\ZkvB4^" 4Cݲp B(At-k!zu 6>#i>g?1u(W:b֧9D B weibL! v܏~C$#L! :rq2]P[K!^[Ϗ7 4CݲD"-^"22d4B@"X02]'Mt+K*hbN!W@ p}n'uBD|7 @.%8L !D*GY*/q BiN{U*KM1]'MtګJedggwK a^8|qeggwrrrndn8ӜN@#68uCAJ$\.7P]:i`n8ks A\xB q٧!Hc^0'69yt:"@}[ `NPT2/id:"@}d2Zx`Es2{fcBeό=nwf}_(++;XFY9y`dG!+'<@AAEX|ߟw b2e6(4('` C((t<IB lAtbxzf6lx@*zDbv٦a#L 2]g]C $LP"Xzi'lmR]]ѸblZl]PPz#N{z<-ATNNNM~5- jc]23cm#2v;n_,cb1B7Fe˖Cmט;B ];L6Q__tuy\I!KirM(]g4 N6-5I{z]gykyyyfőq>ߣ]X :/}C#vWt^ ?6nT!`TWWDt_kz!\kM 婫ݻ)HI'bqoݺDJz~`RJ EAڸqG} $(pXn>@nk8\`9c" 4XB9r˩nt0+N<ӉQYuj@@[ 7.-LY,@;+((s=/HGZ$?nnnփe*((Hp'3[ U}2LWq3S&cq/ c۷oiCCwlvɺEwٳ rB1r[aAyPu7%LW1z_>ylvH&;"@<|WxޟOZS0L[rn/Il 7@ю+PG3t&?++kthcǎ}133tf] Isƍ?kll EQK񡨺 j׆(1HF`%nY,Vt߮6xYFifMNNn9soVkE2 ~((h8 #=pV̥Rz9V5HDpҥ_z)E"|VnªZ|u` Fz:  &u,ٹs?ٳ\.7-,sdKXlt`}U-eLW 1皁]m`2|Vm9tk4[L-U(b( &r ~C-(suLW0ۤnwl['fxԼbɰUf|>eSS?R~43 UnJ'Xâ0hOxf)9&ATMMk'mL13]dϟW/UT@(]id1]E"vĽ%笓O]^p`K'_Nj!._W!_R E^쁱[s;t'Zjhhxv>ihM;]]]/^xGRvC<=Bκb\4EBA0X' >/sCP ݻUUU_-Y3`IΗ._IeMbAma)英 Da042gȣ> gff޽{_ODV#Zn,6D J2@ O(P|BBre4h4d$ P~| !C ~;^fC%%%VWW^\\J' evuuh0%A:x;bTch^%(HRa0 R_:^QQ@ p%ԵM'H__1/҉2'lKnX,VT_lF*.S@ s``#### px`q?7j>`q?7j>`q?7j>`q?7jxm2*E@Mszt{< %ۏ0q?7jF.1"-#{V׈5{U0(|=ׇbUqt5HO_ .eoĒI'HCFchEp57f? !1$U+?ܲoLH4mL>vb<,Պ7Nu~C^6rAbx j nWaty_9|8?߸B Iu&wr7򎺷HF2jgKCuRg@?HJG޲\KܲoqP8ZQ  ho5^a J!n[G=o_sWOkym{kqjgKC~jgKC~jgKC~jgKC~(((M4VHƃ,p^Ik}p:?TZ{rgVok~"K=. YFA=S4ǖsk_Mu<'M&ing_,WLcb@>ޟzKM6I]凅%DwKJU T@+EO<w& pip%+A#792:Fo*G}UQ@)hMŠ( ( 2*]8:E0<#M cx"uɴI?ِm?vT&R嗚>aqk"02⠳q4I;?N+֫&Úmb?:}U{W+m+5i^ uDLd++5ZesÿX*A(e-x#iSOc(5мqjV Tz _ֽn-fYbn=Q@Q@Q@Pյ{MɁ}>SufDk8Wڵֳ|WOxTu oˍ7n1}OVӴkZ_die\vM^V^&u2~° /溓=aWx J6:'ڤKvw{ ''ws*U^Qmz1ktK tW?W=SMV峸GOb=yOu&fE=dSKFxF^" O|{i tfU!}QEQEQEQEQEQEQEQEQEQEQEQEWh\nي3ޟAo4k+GIaq,*mme.R \Hp?+)ˢ6ƈ殐~3=?U쪪@ V_Ht-1- +|ڵk#`(~_ sL2>ƼO3pAcW>M~d˸A})Zj/cٿƻ0C(e 2^]5ٷ~UǨ5sIΒVq ZFvљNGQTt^Tu4m/WSQE1Q@Q@Q@Q@Q@Q@Q@UkBNͺc^o@5k)Kpֺ{J9 5}Ctlx'?3}}ciZLݗŸVCs]\,q4%VC=Dc)oD&l>i1{/6 ( ( (+_XZ6ow zc^qx~n1;zhA(tfE<pAM?=?8cf.s-U&a퀼wa4ka8k6)7 ? ^E*4,#udu VK,2 ~a?hw2tErV7.9iW8yI>OVFUӪQE ( (gT]G85.>eDwұmjJ}\Թ$RgSU/u;== \"Տ9:TL C0~k% K) K3'Pv4TNI1lNO::縚S,&tWh 9=w7t$i^5{h^ 5rL {#>^e, &TGx$Y*J]OPhGxr3)n=cR_\d$W\|inrd߆z(~(R}HşhX6/[E?Tz?¼TH [*XXS}ʻ/\¡o (/+Ywg6cϵUϸWcפֵ9~=*$Jۤy_58K$]N_8q=- SJ8HgcTd՗hf?^}t-t?7g|6Qoz<º;@ hZ3| o;G4w?߉}?E| o;G4w?߉}?E| o;G4w?߉}?E| o;G4w?߉}?E| o;G4w?߉xQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@%tEXtdate:create2022-07-19T21:42:18+00:00E%tEXtdate:modify2022-07-19T21:42:18+00:004vtEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:07:18 07:29:55z<tEXtexif:ExifOffset190LtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength5711VŞ*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-ellipse-on.license000066400000000000000000000001711444746353100247330ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-ellipse-on.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-ellipse-on.odg000066400000000000000000000422531444746353100240710ustar00rootroot00000000000000PK6T.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK6TOThumbnails/thumbnail.pngPNG  IHDRzAIDATx?k$uQA8AB| 6+K+x;ZPS@“\,,lM<);_k胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胲>޽eHs}j1l;>vUvh}[pt%i>y~g~|0+8Rʝ7>z8:~}Շ--q2Vۜ]qȨ}<8^O7D fd9 Ǧ=1?x}~~bKKd>.TtGᱶDFc3ٕ[qCkw4l>+Ȑ}љN%'|0o>6_ .m%毯]8a6L_fk]tGKxs; G܂L;$2~b>ve)= i>DzLg%r_}4\ˇir4b#deM]4b3W%~ qL:7{K'5e!qLv梉\hx,6i>DoG.7E\}lJ23k>ӛfg{YX;3 6pXP.5N}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}P>< [kIENDB`PK6TCCmeta.xml 2022-04-13T00:23:042022-07-18T08:54:51PT37M56S14OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK6T settings.xmlZ]s6}0}h&f60$0eGX(Ȓ++زΔBlsu.|}f&g~0rg b^S۟>sTCęNEqu&sZd@`Q D("L+n.&d+ &72*A޴,+ 8 Dqsi}F'88e5z{>ch=aeX"`"X.=ga47豯^:9ay=&w^ܭ*n7 kgcBSgڦ",`4m}B;x,mnenb*sq~M^a]['1}5^cCc ].4߿Z|yb4Br [f:Oq b1c")U讏.:D,·@X$O$ )ȗU.fKM[NiX 2ա>T8:Q#YCp)2qۣ mMo_2 #5Xz<|@˒ѯO7鴴)E#g~_JPMfKX&+3^K<=ݘ ݄_o*f)ItQ;]" .J8XYWXL?B:OIS@չi:C$ZlS+zy;R-ql)gd-Sɧ$) 2\7[VJc-$𪪊> ȺN$q8| ,)\cuҚơ⨨3GOtOqDsqucՅ'9GWveW ^/a t(t7z*?+ b?6NǪJT,MXIٞ2?iijNM@LY*ݔ)ImSޑӴVL}OxA4 Jeq8Oy?Ž юppOl؏L•#l(aX; J˦‚'Ը Gwհvq+ザa LJQADfa;-DOj-,^`%*WZz˄ et׽v x4uR3vNj90[}P\a:V?5xeDi`!%p7RZ0"ʪ;L's_PKmb$PK6T content.xmlWn6+ Z2-;Nl*Ah Eu3t;*Lrt̐^}9(9zFd`JfI 鰊;:4>Ć!ZmL u"@sQ }V[~fVP;Xg|.Y6\*,UW `秓bϨbV?AƘ>Tth݇;LH3ngܨH\B7|_DHDuaJsK\X|'f*%,h؋ұ(ω奱On!L{ , 3h&0[g.7 AL_ˮ#Ж2~((XU (Sw38çѦ;H?Akg0,ڬ럣72ډa9<"]s{[Zu%xqBgfQn:tgΚWE]q2&SҾr B=!v @l !ILȁV%@w흁3Δ>YakMCl~bE^&b{}7uߦoߏ#es],4= -xĬ#m4o )&>ףd,(zvnTNK2g,B\㭬!!L HDvL2r_rɎ-,|M8N.'UYQNھ#+~ZTY$=^B[/g+xSSnM!Ƙ8cnVBQ1,Q1콘^FLBgw>G9"BL@pWyԺc5'TO6?WxIpϺ) KSH .itZ7({3+77PKU ePK6TUr3-Pictures/100002010000010000000100F97F57B5.pngPNG  IHDR\rf pHYs+IDATxy|geUHB$TcU*:ЉD6VKl}):(%֐EBȾ;$ryO\ܿ<ᆵK!DZՔ_+vm笊,b#yc7Zr -v<1@jUΰݵm6v{g(Ư%ɞ5w5j\}zj`͜eM=iWS0+Z?ݔiRuj7}/t'߾gkLn  Ry\YC~Wr~~QZeB$@UMN@z@Ḍe~("F|z>}4ɢFkƧߺ̳EgHq:mR?G} !j &oT^'z٥SQ13/xxu}F>(( zI꾎sEI,>ҟ@ (.1r$p=H>n6zgEH D`ϝ;NRS>ֹIH DI*"k,]]pdӑ)( |Ӿn? $ {ȇR;a0i&'xX ! LHfT_gb~ ! HripKE J˙~uBTI*L'5Si Mf\)uSie.ZQaK DøRr}h_@D5B4 ?xQ@H=ɯ7>k1P' ,X=^?*Q/uˎ9nR#i^qRS_=@ l4S=~ҭl !uIՓg/=sxƶB܌!ٕV"ǀơ-C= pJ Q [S8&XLe ! j'zL,9pj y=sDZ7 r+s-3Yd:ueQy s2,yhTQQ3Ego8Y8&YLԳISB^~H!(rMu>Yn|@+Xv*hGm\+]l ! >#z]\p?*\/?B~OOޜyq|f]PyNő_е ~Qy\rq`/D@|Gwg&[NިR'3g**09$C@+ql(ہh~i~QF"XqE}$'ڛw"/Ako{(Dc(.5M=[вa-QưYnG}&O)(HJYch dH?4ۆ}@Vۯސ@dOB~CD#: ).1CA!u^yKR qDGiSQdóEcCO@dOO A))D{.8Qqh:bχQgRРqG mEcn!8G DA Lg\)znn3Փa`,sBo ! rR5kǘfcv3闤ϧMUT }:@o>=d/Xb" yUyްUH B]m%r ğn%P|u1}9.k!nTWUS#rf:f+V̒Pl0lnDZ6m((HneEPrk㩂F/yYyI(D`CDY>KGK@1bҦMzuQdA?$EN'ϖQdO8BlCZZeSQlb弧:^HlŶ_cn]RKQA=,?[ո9)_#H Q_9 ]P`_'H @XflD@|Gwg&[N(µRd@O9$C@7J|T˩k;u(RAS9$~Df Q;h^ǁs:yB =S8z7}b͢]7Fkoc@mXXo G dh@. )^ :()N=B/a^x+u0" 4M8V٭acZ@ DARSf.'z}MlvcYT]d,r k/f@=Dm6|qP()I=4\r"9 [e\D#>"vB$,1,+,H8aTQ2/w4Cc/[mz~r;ew2+2[W K\ \o:*I%2Q-IOp=kH7dGo:~OޞXvlEgAf'4CHZ*iJK |O99o!~7l v<1ku?: V/=-r.y㈲36*H@Ygdm[p1}@Sp{8G4QwG£2.vm!j5um}/-\:}A)Ko :=}!kNwE(L~î?e=k-¤~Xܳ}t7KjO=l#~: o'y9&]4CX8bc| Qm ۯM=MB=w3!fC}^e2aÊ꾰yD9#GP~DP۰DS`}~,<=Ϋϭ>KKGMP5JPu^ƼRiWPĤ T=dm5e%Tal3xo+4AmD#!G<Fؑ'Ջ:z]:s50h:&3{?JBz޴~"am\iiL<3BhJ tEg_bRHHO$K[aA-3W&L9}P{EG ]=^?$"F8OS^.A =^._&{4t&j=pҋS]?؏oz5u3f>lI{_K~}g\ʸm:"acn'~" !'YL$  k߷j`=P` ց_|ts[_f9A&Ial=F/xZz㌾F,C%K1PlklN{P1~EAv56OhK%Y؃83eNA=)S6t3v3 Ҏ6;HqZb!ڃG|qG~E flÂ8uỿ|?;f7˨O烷`;5}?LCvݵF^?h{̗qz c3gٍr7McDOc# g mv*<'&cQ\Իw(ߢv*;{LyZvrG=xMC?l.`cy0\N >O=C&h^ǁe݀o'8'/I ڎi=h)z8?\JVpAt!ShBZ8#\J0٘"$g{5U(`O!{wShbo̥DQX(wmcdQu1j w>''{pyǁ^(%F52}T{rJ@FL9Xd{0<+<ri)mrl8e_ Iɥ+1w8two)ڵFTnn\PkAW~(Ȣ;lk1o)R#`f_1c7A7;jA+f>փ%7U #܍ -rq<ӁRJGGr ( ^;Ux(`)ڃ{OO$[.UA*"g{y3VI%G%:;[ M%{qO1^LDC^zN`Rۤ~G3#EOw3!fCrD@kdoۙP۰? -F[ dר ~ S<=n;zw}*{}"D;Qmù4e, UȠq`PCqq/ҔlDR9ۃxϹZrG3p\"`5UAQD'߽$:z+r,?X ڀ=wtS%M? A;Gڃ}#A! T+@2 !͎1|iV/r4(qt;NyÃ"(H؃#@{Ay/HP$ A(ɑH؃r+P%9a@eih@H`Cy B{/@8`ns6`@CO4HP`AKoHP6}o=F{P1?: ,bi:zs$( l4Hƫf̑Yz-eZ[ʑ؃H&'s4^$>X۸#A-8n@{E7t{0&0E F–n:;nh$#"||51hh_Cm ^K4b6䠻{ {0"@ށAi=g`-z}B`Ps)䟠&؃g@ ؃ N n:)W{?p)%\2Y`]Qq}g@wkbo1 Nqf)DAb⌿5k!PH=q=OlBp3J u1EG5k8RO`~G={D !h j?g@؃x:mԯe|k)GBP[}%Rj_ߏ3F A~L =|@k8JwW]8KDx}^m{P*ׅ"+gP  9F5ZiO83"KBG%K:iWߏB(*dq \i7opu]݌l wtkPUH_5c䍜BP#.&ߛܯσ㚍' }L﹮>nG\}uB,&m~=t inÚiiB(N<_tgKŗ:U[9tPXZes @w9񭋝U>jE>YB1ww=ցzڴHQ7sIENDB`PK6T styles.xml[n6S*;Y?v؋St?4ݰv-QJ(*no'!)ɔ-9r4[uCnS: ,[XصF8 XHxa}nE Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PK6TConfigurations2/popupmenu/PK6TConfigurations2/statusbar/PK6TConfigurations2/menubar/PK6TConfigurations2/toolbar/PK6TConfigurations2/floater/PK6T'Configurations2/accelerator/current.xmlPKPK6TConfigurations2/images/Bitmaps/PK6TConfigurations2/toolpanel/PK6TConfigurations2/progressbar/PK6TMETA-INF/manifest.xmlTn )"R 5I==#Nڷ_?:m`eb2+6cVj_l+Yl-B@"yT.ɬX(J&IT$-}g90l9*|PvpvPU!@ThE]a͇%3o [O|&[[Eۊ &n8Ղ^l{CeltTy} DW$H aHwoh5cq͟fwo@T:ܳƴ9ӝBi :Gs2(</ SO߾;PK_16YPK6T.++mimetypePK6TOQThumbnails/thumbnail.pngPK6TCCimeta.xmlPK6Tmb$ settings.xmlPK6TU e ycontent.xmlPK6TUr3-Pictures/100002010000010000000100F97F57B5.pngPK6Tt1 H4styles.xmlPK6Ts<Configurations2/popupmenu/PK6T<Configurations2/statusbar/PK6T<Configurations2/menubar/PK6T=Configurations2/toolbar/PK6TO=Configurations2/floater/PK6T'=Configurations2/accelerator/current.xmlPK6T=Configurations2/images/Bitmaps/PK6T>Configurations2/toolpanel/PK6TQ>Configurations2/progressbar/PK6T_16Y>META-INF/manifest.xmlPK@vokoscreenNG-3.7.0/src/pictures/camera/window-ellipse-on.png000066400000000000000000000550011444746353100240770ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGDi pHYsHtIME # *ZbzTXtRaw profile type xmpXYM8 s۲8$YJ$Ёno#@,K%~ZTujZOXNZվN:4ͧiN ySb);DGE&&pDPqtR'9Ras)7d>%BAF3.ٟi]*& CWݕ11O#\]ԵQGqm P􈘏tgY!d E|k?ɲq9k\k X׾ϲrՒ9k|#ԩd#@@orNTϢw3IDATxyx8>leٖǷ8ĉpuB/XҖݶӻ]m,M ! $1vNq|ݒ%GöF4#y< ϼW3                                    ,q@$I:8-v\%q:2%!I @QrIg晙k0 dz igx6gF>oqdH`PsEEc4uFqhl6fSZVnWl6nW,&}NwLoYĩ^XlDXlH$#b ccce2YL&Ka)#27„bQ \g0rҍFd2iI*-A}|||RlmJY"*_FQ111=44vxxxll,`0:6P8T*JeFMJJ:'sP1ժ444vhhhH咰]Y\1Y듒%''j'ѝBdVU׷Yo[ C45)01Nwl۶mv#"fWUUqvi\,[ )y>Jf|4xG(!vFmitp aFY^^VAD?_c .aJ]Wp[abH+DQ?JÙ ވ.O}iKktBhݵkcIIIl_e Iso=z@^E ?:8_\wۯ킞:n<n' 8ڵk_ADaugxxX&MNNf@ڊBX]\*!!֠ қ:ݮj8=Z !!h4j4ݻw?g]+@[[ۮtM&S I[qrF.B pOUeV9氚IjA3SSSs/`}.,IϜ9ejSFJo8k W/Ӛ]s%%%/WTTr_(y'!gwrڬPWL ?;w~ LyA*.E=K1HXz:jk_ u"0 NٳgWWםNP]E0 הLU5>-xl\5u2UB>/6˿kw8p/x;v9%_z+C)fs>E`1 D]:xL >olllnW fy~pwosΊ 吳fcDZX^29gFXܯsΟ?'O`#ŋ駿{ȼk^c0 [xĩ4Z\Z ?kQѣ/٭f6BE~OJǡb%RF.37DǩN BqqzʹnfNNgC4lyb C% gДy<1rK=;tNg, ϛfZe!Ȃp'xf J8vey~$.zl6'WVV>O7mC}}= "i,r; ,OU;ff Kγ]݀r;@XZ(s- à|;ڔYPo|Km&}YDV{b||݌U AyHdݙՌᵲ9*A WW|WUU3:+ ֝}mޘ`ݚ$Ȑ{Ê ulUUGB 5558_NʼnHh:2rܑ'ӇGBMM3 -KٳgM`Ld a1W(N3j}N]Ҹ`Fa.@ccc###dTHSs%<i>pM驠A 누s3vrk@__ϙb?2X^N&(A :JGʆ R$خ3=kd$*-:t````4Vb܌`k}Sֳ]FZVhLFFF } $놄3[v:22RY8)Hd0 >{&2n =Á86|ߏHccc8Ąϗ2gs.lDlW__Ki<,-34#y}y)t:ubb"{P3AYjb3artڏr#IٮK {υn8i>d,_lW7i8uLǻH0 ]!5Iu, a׳0W{J.[Y|qG~'9x"4d\4?vuqZEF:>&! 335lW90tl^M :D"= =0!zX0 7}*G HF$17 ,dd`s e=+ƞn{ťR)!^:MAFS=?43^^x $w0=Cn{ߌd2-)O40s[ۧ~lW7i2P(m>Wr0z* O4|}vΟ)=092IB: *ua=[@A+V@*tcd41SCW5]l9*e b}FQUЀ? v5$適!MH$:A\iUVZooKMl9$[{|C5jC1 =Z,^bZՉV?)h4z׋y LOh%r9s[9E6F쥹s2[F.z4ulſqG)r^^+K|AV01״ms9@AAt 5F]E2^;$ശoOof,/{YOH4QPPrſSs'N1e%j@1[f's^/;A͵ м-k׮}4OM@Gׂen31S1 ?HSڣRf+p8ڵk_gD2F/ɫ /bam=G&kbXX>N: B5mg}d%r2qڡ<;֐ΣǏ &\ rZΒx 'mai˵0 Rtdݺu[`z|˜4(f%ߋwel~2++b} խ׭[T*ag+--}A(az#@Kgg{n+8ü?q?a,'> H.?BK(N.@#)yʰ$̢(ַZ8@W,Tuԝֱ? Bצ RIYef+pnS'peij ߤsbcKk8Ÿ!y0 _X{-ͨcNs7Z-gq^VTT<C~.51~8+ˌn9k5cyhyo\j VTTȀp}P(Zn=YTx{& DJ0=6 )}ђ.JR8<_\pu$x^#0O`jl)wr8ǽ=6V8b(~6jfƦ !`m q3$8?Q}(1X;;jzQG4}͂LV$9&*^L\ðs/E2$tԟ 7}t؅)))ͺ+((x<F0tHwa^ldvQu-74CjI 0h4wu3(8L&Ss+sVoAx`1zWףA? KKKtΝ_ h}PVp,//!f]8qdɬ$4+oxl!w4Ghr? )$''fۂu$`k b2/@(iO{w?LoVA]iʕ[iz%5d)z+ޒS\jG_[rʿ A_mƍf͚sN*h;t0Rle Z9ΟSU~f͚nܸ1;׆d۷?rw9 4;L{cKo=k'ٙ(c޿-W\۟ vyBEQ޽{oooyTXS|A6p9#`i51Y 3N8_y C-}~t17ۻwλ9O"u,> . ؁t@`ܹsxޟKXi.d}Ap82VG;v/Ԁ\з?}n t5z =OHH4vݏٮӬ $IrΝ;ʗ(,6.k -8mGW  z꠻|@8ٺu֬Y:AG 0khho @ |e1F@7BJOE zZE 湖BhݵkcIIIlk.anĉ?>EQHY/Ր_ѯp=Fy)プ F5=Mug@i8.--}qӦM?r%Baf0 :HJ˂eKbHqHo taP?|g:6ow#9!Qf$ill|ɓ?kAA4ӂ8hҲ Q €} t(jt12l$K7neAA6'Qf$ijjzl_ǫQTP.UJ3 -f聱K`o,o\^VVwZ0pw6EQtvv]SSr6H{`bҦJ* `xH]YScWyPz~)))JKK_0nwsp̙vH$dvpyN&S NF^i(L Lr pxP(fLy<^Ywwݷ:!iJeSzzZ:;F3b$-}}}z:ÐٔMm hP:Xjj Nw OT<dž+,lhhhຑB!2c6듒%''jRtrE+BWIccc+GGG YFZ}AT6TVT6G㤛pîq_*Ѩș̜Ț̜0L`-{ è΄N\!ۖڰp@ȵ$5If9h4L&Sbl6fSl6fS^;)BpJ,D"X,H$Rt866v@&cbbbbbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA䢗WR<eXIfII* (1 2i&&GIMP 2.10.302022:09:30 21:33:52 BHXJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((((((((((((((((((((((((((((((((=SZv]6{$$E 8> @(؊X6nU0FNUpQ^1lf aqrcib= a9 9mXa!><ճ`Y1n8}Mx| dvF ~/ßB~{s'5$I=*F"3@3@iiTII9.$rR6^zǯRO 5^m+DTFѧf+MXjH %[Go$i!ep@Ԋy}L fm3POcrX( byy x&Mm,p3ơs*T`oe!?_AJזmx:rX@;[#8$g`;×i2r9Pr* 08 Seɤjj M]rBHAռ5_PӦ b(N39ʢ((((((N]N\n`\E\$Mzv-'HEPz92aR@.xCq/Z+s)kbyvJFx|~TZhEɚRb0Tb w @TP`* |/_~ )':I[ oQ"E$hIڣsMOiߜ[[I ~}+dhy[JT*h3u{=no.DtU$f&RHӭY@0-ɸQEQE0FETK[gSVfDŽt9!>{N6I'2 ֊S|Y^[S[3a@F1S,X<ˉ#RY pv10[–o݉zgI$rI$I }lֺM٭ث>\0=NlZvuKGh}Gmz޻a#Q0i_Vg:zW,θO[QZ QEQEQEQEQEQEj?kZ  OWCQ`s#GOG&2Q^q<@=f5=URflT5K&_69'teU Qy)˸-JȎƱ-P͝]ܰRWT# GBsLU2"¦zrWrW{{W mQBgϞ*mΉZ/_3~,I&W8;z7W:|wo)wa7esѴgޑv=´(+w (((((((_j?7~uOmK'ʻG٥sYǹUWg~h{v{Š(N(q_m0$\g5by%մwR0S^c/KSa(oVF0=2+|id\|0lL=ej^ԭto9g^hs+JL]Hlp]쁜=+V=*YMqڣ5{=Zw?öU=ɫQEnsQ@V~.j$W;QI}PnșB.RWs_d72GQf#+3CY.3޺僩nqG1fʊEetWF 2E-rEPEPH̨݂NTؿ`S3?lUӦIEVA͘:j77#T袽AB*17)97' |11qIw'?OQX#7W<ֽ ($DP3Ǎe]^[/uQ^aQ@Q@Q@)e"ABkcwݧk/Mw!G# z{=וV577wRT.,1x}<=hIy^9,.RKk 1-!@_swmہ9<ף2q&g#ǟOq袊 ( 򮾲?>T̒F '5Mls^ka/i<8ϴ03.Bz^뿳jol.Gӥia*tEP (#4 Fs@R:/hyjiT}~]LG/Ca7($A#;/ w ܠ#[K$1WS#w:F :;}G~N+:ٞ ν*F+AAb .>:C!%љTGcEVEPHʮ]C+ FAP -]nO٤?!tYUSC/ 7*ktۣc$߳S \_d U=ܶ7)<-^ǡZMYIYזNC((;p~3یz=E*QDeV\ 6}Rr;(}HtΥg MF&\-mRekI "(USSv ( ( ( ( [ 1Fz?ҴMfeh,0?\J # fv @bO x5SVTm]:}V3-®bp y'!Cb2}B\JBf9'rz+%d%e|W @y( x4[&t_[%ۂHBи U(tt`FC+  xF}Ύ߹qdם9n@>XKMEAL{{7fe FAǣ%w@۔[ 2 |EsuBz{VfS}QU;W#m(,pUūQLAU㿴{ygiji QRVg^YcrNaa= u)5K`Llzsc\,<uϨn-o|,C|H@I+)O5>tqupƯ,6&6MK d6T\rȤgvpXMq%Λ\4zsa&׹#r!1`Nj𵑰QEQEQExSĒi/6<. rQH`MGEizTiɗ?0 Bwa'(Px ]&+1~z}xq xVKPRFPdd6k|I& 6bcQrm%1c9[ =el5gRn~~ThXF0A8+/X pdAZTdv=.|έI37Jմ(ueScF?ε#9WtnsN#9A.U)Ƥyd8D筷[ZF|KpF3ZVԚlƞ9s%QEQHΨRq@ Eg\k]|؉?cx2-m?rHΦ^vzzDgs\uK̨@azJRg'Oo֡hw:Gƒ>c?笜tuq5ԦYy$=YMfk:֛ӷTEo)26k־&\ 10GŐTe#ܛE-Y4څҋLd3Hp|Cyax}5%2Af!x,B稤0((((((F񖷢BB[5e?eA"`1bP; YK1ỉw#TmwiE{:tf6儉743h)n+R{ydvE*ZiΩɧjWk6Zm"|zuQ+ G:I!:'x]bO4iiR.$b =8h((((((((((((((((((((((((((((((((((((٧%tEXtdate:create2022-09-30T19:33:52+00:00%@%tEXtdate:modify2022-09-30T19:33:52+00:00ixFtEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:09:30 21:33:52& tEXtexif:ExifOffset190LtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength7512҈*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3Z tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-rectangle-off.license000066400000000000000000000001741444746353100254030ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-rectangle-off.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-rectangle-off.odg000066400000000000000000000217301444746353100245330ustar00rootroot00000000000000PK*T.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK*Tv:gThumbnails/thumbnail.pngPNG  IHDRzAIDATx۱mAEQ * ^m \+\@θѬG{No?ov7{?M}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAEZee.NDr XA胢>(胢>(胢>(胢>(胢>(胢>(xri }`ʓ>_~4ן>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(wؐńIENDB`PK*TBBmeta.xml 2022-04-13T00:23:042022-07-18T07:23:50PT32M5S10OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK*T settings.xmlZ[s0h&M6@ov%, 찜ڸ '}o,|"STP(D\ }=vk|ө2n o\ a7b:aB2ge-rB>?fbqX|Y}WT5M+&OC1x"esvi]Jw)z|JO儵b%E/ߎf/co]B V0rkˮ#8;CUrLfܝ* oc2n6NOAXgug`zM!_Ox}+vMQpU>3Ї|v AyP3ב͎<* DK⸷9"@%Ex$B,#%^"6{J1<,}_z6,9wZ |N(H">A9RMޑk,*I]2tp@`cx=p1pԡx)np]ۗEI!W. V" !D*</|}J'KGlHӤE)~զ:$ibz(b`bONz|U<)g4K'!,v4%U, 9 yWi,\X;ђ?$ r}!bYtq) Yi~\&zB)?p5pehi=r>3}^ b5+i3DU|FldN,+DQ;P8Fu8Ф;p@q>z4XRJKJ0Dϡbw( ȑ゜wnM8Jr40ī>CQppdo\(jP[=-}CPdI:VQD@TQ +[jA5sӑV)9Ę ?^J˓]FBD~/{/)jQbc+2+4'PfD>8hmP/8kF0 <;?>y`CKg:nu5K,_QDt&|މlm<ٙ1(cOox<..wf p&52ԓ]TrҌH8$z;v`k'E~4vh!)Z`q)R:@ DaFBG^Y/6$1>7{PȜȉM:lm ŭ(t)(-K-yNDTx_\`QTfݑNߝaaM뺁6VjkhݍTc3jOWt q':#kگҶks =}-v>+^KMeOՌ]r0lc Djԡ '®~z_]N+nP OV7w"awwWYX4븤11w TU[nia0`bܫbˠ$ex_kaoZII03#kV) l0 Ttn}KX B·g;nT?Ulbnbkpd0g=ځ;]aDϨڊUtms0)j2i 6>㔯z ֿiۤl'gN)!(!>SV^o%~S<{PKq&PK*T content.xmlXMo6Wvۑz))H{c$JbWY˲(m93|3?Nbzr:yªPw?=4e1&C2f;8Q¢ӂ>%d;t7*ghrBRsDC΅޳z&D֙_J%LK%Lܒ|b#F|֕,e%lC>wbp~LS9w1)>㼼4Ed&n=X%S<sZ3} FRT̨w%-*i0Tp JJ(e1Œf2InBC;f=|r/N܌i[G w /RF#6e(d&[0G@!p}j3Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PK*TConfigurations2/popupmenu/PK*TConfigurations2/statusbar/PK*TConfigurations2/menubar/PK*TConfigurations2/toolbar/PK*TConfigurations2/floater/PK*T'Configurations2/accelerator/current.xmlPKPK*TConfigurations2/images/Bitmaps/PK*TConfigurations2/toolpanel/PK*TConfigurations2/progressbar/PK*TMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sWz_ӟZZ.[\Olʮ) }SVޚ8}2U88F=-ErzsH cHRMz&u0`:pQ<:PLTE»ӝےߓԜ󝞟Øؙڗ彽¨ԣƉTptRNSS{wLYNHĿ; Ǭ߱@W|xĹOJ5z⤰ڢV bKGDr6 X pHYsHtIME. 3zTXtRaw profile type icc8S[! 99N4R HXB2˦HkMaaxV%mF4!mz 1"!ENKm <4+pG?XQ@#lwf?MYHnC8f>!x9|5 9xz ߄_&bU<34j3m,\gmjﯴ_%"6䔢QJsq;/!c[+ IN A> V1bEfO}|__ɆM)%"|d)eLso:Ug茎 |d\z0|VMsGs@H'6i1)3BfpEwaIm yr KNw{o}$zb !|_0zTXtRaw profile type xmpXYAr8  9%ݶjeKvemqMđ@@J _"\ejQ;h&-j$cJ|\p;ŤQb-fm>jacT "ؔ2AVeب#i"WL,0dCnHV7wqL5%& # 9M/1D"$QJ9PjOg4,IV!fI>6'KA;id>o8H܂L -AKBD"?$,KVHehADHaOQ*>"rB)6E '2JLTcaʸh&@F`mzu+l .2X#?Fv~zŪj`Ȱd/d+SA']q4LbBJM,8N-^rWbcC)q-1h/dcZϹH ʘ\a6X2iS͒@^6V/o6w&nŜi.8RGOtۦ '֯f o)ۓp:y26 +pvS1FS?S7Iew?hL+ˊxV+̫ QX!Y){WI*LB1M{ Ԕpk,ݶ]dHRo|ryN]uj ٿCrD>} (5Q׆_Rm twi8P.:t8g"-Om@_"硊#J}aN>Ox3݋mJpb lɗ_+ӉBeBIf]9§̍;Q_7 iU]Z{@^Jٙ,|֑s7rA8Ґרh ^qc>H""""""""""""""?/y"<heXIfII* (1 2i&&GIMP 2.10.302022:07:18 07:34:38 BHJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((((((((((((fȭy V6D ?iT3.{zP^ ¯?y;7;G*_#^ ¯?y;7;G*_#^ ¯?y;7;G*_#^ ¯?y;7;G*_#^ ¯?y;7;G*_#^ ¯?y;7;G*_#^ ¯?y;7;G*_#^kO7'rᦆ>u6Z%2@uu RKu(q^3 S>g7Ӓs

߱Gح?+Ofg|%kV}}abfZ+־i>߱Gح?(a|%kV}}abfZ+־i>߱Gح?(a|%kV}}abfZ+־i>߱Gح?(a|%kV}}abfZ+־i>߱Gح?(a|%kV}}abfZ+־i>߱Gح?(a|%kV}}abfZ+־i>߱Gح?(a|%kV}}abfpoφutMN6VBUoǨVඊX]) c{W"frI3gYYظκ/rι?! ,(9B(((((((((((((S?g*kzʸO'κ/rι?!CwQEtEPEPEPEPEPEPEPEPEPEPEPEPEP)}q5x=lo\Ma?to]\\Fux?t ;(P(((((((((((((zʸs&tI?7u\v??:_:P?Q](QEQEQEQEQEQEQEQEQEQEQEQEQEx=lo\Mv9[?WXO:i$q]EC;yѿt^?(|C((((((((((((((!gqEWAQEQEQEQEQEQEQEQEQEQEQEQEQEr9[?W]U =\Fux?uto]J𳸢+ ( ( ( ( ( ( ( ( ( ( ( ( (9Oǭ?g*k GM???:_:o?7u\sYQErQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Um}q5#Oyѿt^?sq]EC҇9,(9B(((((((((((((S?g*kzʸO'κ/rι?!CwQEtEPEPEPEPEPEPEPEPEPEPEPEPEP)}q5x=lo\Ma?nе1Cq;Chj:ǯy% 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@ 73Q 73W@$FRˑx$`3Y~vZ5O,R9'ʯ ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (?'%tEXtdate:create2022-07-19T21:42:46+00:00]ad%tEXtdate:modify2022-07-19T21:42:46+00:00,'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:07:18 07:34:38tEXtexif:ExifOffset190LtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength4383,/B*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-rectangle-on.license000066400000000000000000000001731444746353100252440ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-rectangel-on.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-rectangle-on.odg000066400000000000000000000426651444746353100244070ustar00rootroot00000000000000PKi6T.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKi6Ti#Thumbnails/thumbnail.pngPNG  IHDRzAIDATx?e!#DA4b% ] ,, "FPYh^X8Mffف7r99=k胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胲}N]N1q7+c>r/&Xe\aCFcz ;XAhmqƵfd\߷4y3]EŇǠKZ[-3L\۟E_.{@g/+k'ˊ>v7ۿweځfs}>{?Yxa^KSk5)} 2022-04-13T00:23:042022-07-18T08:51:19PT32M31S11OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKi6T settings.xmlZ[s8~_a2m)&\_-,y$9 ܚV-đ;7eo> ㈒I@R)ss< N uqˡr /o?"Fpċ[!$eŘl=Ĉ̟r3!b>X,>->Qu0ԐA.pw.Kgﮧ~Z-X+ ^дl |){ 2O¨Z:/' ]˫9swB{6lls TLlNO9IX@p=r2 phPDDoq~ (xA31ǂq{jDww EăKsqokd%E &C!COf:c~B)䞧s(ٷ5K@PŒ!| ?"XD}7RMޡ+Lfh5Kʇ.h85@< `aЕ|pޱ0 )^fka*ciI9E4Jf}|}I VşOdi-RiԝCբ$ hbz(b`# ONr|U<)gG'sӅXhSW8u^BfB#2F܁KaydOCgЦsiy!⸇*ʽ]!~\zB8p5pUhi?8|@:@.S8<)a$/ӢʪɜYU±V@e(Qeq+pzѣRZXDUYz;.yGw;no'p(.W"_i\aW=Ypd_BB*Pٍ=I!M$,aU$+@5aUKБW-(=fn2 Ĝ^BN8+zᡐ{Wl<KkZ6:rKe)+aeͻ Q}ήOoGW6̔(cMoxy]]$2fѫH2]TqdҌ9z+v 2_r#M$!(Z5!=rzڔQ Oq E2px$ޖe@8FAGR'} ŰeTeNlahM.neKqLEy޲7P|k3mx{ohPD可 V~ymjF0xbjt*9zixX7۟{U=s<׏k-:t)oLi~.M4g]yey~j,ji0}V<N]?p{w3A5}rW æb4J$|4ucvL,/:*\% TU naW/X;=ieW& YynJ&DZY-ƅ!~[iȭ^aUž闤]Ke^{1~=څ~4~MMtRNoOjXP۶{5-߳Ձ=%|)cʳH+]Ho$lgN {'K)Y B|J'bPKg21q&PKi6T content.xmlXێ6}WJ $iuE6v@H } hHvo%*.`]8 wC/ ٮi`G+47ݱ$!^, L1*num7+N "Xef%-kGXu|2]lr*Ya\>1Gd J>JD($#/9f&ev~oVQ++kT98j0xK4?Db VX9>gt^+a2'LR R >@2F}yڞtŋc) T'i>1ֹf;szDbރG7ʣ.⬸4y ,$m"q;jן &-BDQ|*h%g[+1\d\v L/0(E~=)k My_; B9N S(ԯ7 (LI یAC9QBUlV{zfC[ *UU,q]yըf\zfӐ Pf(Ŧs3jQm.Wb$lm(V \, 0gړXeE=?*LC?cB=!`9F/|CV8 X(')k%$Ic-:  JJ9[&i{)Ak]hZ4fIVȰcR\wɖDn›[vWd( ,F|bX@&Jaj~XaJ|ޓN ckQ*(*6ffsU[$UÝ*QL3%J1~U?0l5|o678d52JNm oC@Ic7ߢEKg,VDnW!PT9W j6/C?hݴJ}0$n'g@9Ov>5UG*:-7&|o7 <-w;ǝ[r,n1Yգ7o<(~h1M9ubLk !зi Z]qUw:2}"{J&H @XŞ^TeB mRTprŎ* _!}{<ˈFe8L30c6H"Yq,(Y[sq0K N[m"SG\p6!I@2e(eN־a\ʜAsPKBnDPKi6TUr3-Pictures/100002010000010000000100F97F57B5.pngPNG  IHDR\rf pHYs+IDATxy|geUHB$TcU*:ЉD6VKl}):(%֐EBȾ;$ryO\ܿ<ᆵK!DZՔ_+vm笊,b#yc7Zr -v<1@jUΰݵm6v{g(Ư%ɞ5w5j\}zj`͜eM=iWS0+Z?ݔiRuj7}/t'߾gkLn  Ry\YC~Wr~~QZeB$@UMN@z@Ḍe~("F|z>}4ɢFkƧߺ̳EgHq:mR?G} !j &oT^'z٥SQ13/xxu}F>(( zI꾎sEI,>ҟ@ (.1r$p=H>n6zgEH D`ϝ;NRS>ֹIH DI*"k,]]pdӑ)( |Ӿn? $ {ȇR;a0i&'xX ! LHfT_gb~ ! HripKE J˙~uBTI*L'5Si Mf\)uSie.ZQaK DøRr}h_@D5B4 ?xQ@H=ɯ7>k1P' ,X=^?*Q/uˎ9nR#i^qRS_=@ l4S=~ҭl !uIՓg/=sxƶB܌!ٕV"ǀơ-C= pJ Q [S8&XLe ! j'zL,9pj y=sDZ7 r+s-3Yd:ueQy s2,yhTQQ3Ego8Y8&YLԳISB^~H!(rMu>Yn|@+Xv*hGm\+]l ! >#z]\p?*\/?B~OOޜyq|f]PyNő_е ~Qy\rq`/D@|Gwg&[NިR'3g**09$C@+ql(ہh~i~QF"XqE}$'ڛw"/Ako{(Dc(.5M=[вa-QưYnG}&O)(HJYch dH?4ۆ}@Vۯސ@dOB~CD#: ).1CA!u^yKR qDGiSQdóEcCO@dOO A))D{.8Qqh:bχQgRРqG mEcn!8G DA Lg\)znn3Փa`,sBo ! rR5kǘfcv3闤ϧMUT }:@o>=d/Xb" yUyްUH B]m%r ğn%P|u1}9.k!nTWUS#rf:f+V̒Pl0lnDZ6m((HneEPrk㩂F/yYyI(D`CDY>KGK@1bҦMzuQdA?$EN'ϖQdO8BlCZZeSQlb弧:^HlŶ_cn]RKQA=,?[ո9)_#H Q_9 ]P`_'H @XflD@|Gwg&[N(µRd@O9$C@7J|T˩k;u(RAS9$~Df Q;h^ǁs:yB =S8z7}b͢]7Fkoc@mXXo G dh@. )^ :()N=B/a^x+u0" 4M8V٭acZ@ DARSf.'z}MlvcYT]d,r k/f@=Dm6|qP()I=4\r"9 [e\D#>"vB$,1,+,H8aTQ2/w4Cc/[mz~r;ew2+2[W K\ \o:*I%2Q-IOp=kH7dGo:~OޞXvlEgAf'4CHZ*iJK |O99o!~7l v<1ku?: V/=-r.y㈲36*H@Ygdm[p1}@Sp{8G4QwG£2.vm!j5um}/-\:}A)Ko :=}!kNwE(L~î?e=k-¤~Xܳ}t7KjO=l#~: o'y9&]4CX8bc| Qm ۯM=MB=w3!fC}^e2aÊ꾰yD9#GP~DP۰DS`}~,<=Ϋϭ>KKGMP5JPu^ƼRiWPĤ T=dm5e%Tal3xo+4AmD#!G<Fؑ'Ջ:z]:s50h:&3{?JBz޴~"am\iiL<3BhJ tEg_bRHHO$K[aA-3W&L9}P{EG ]=^?$"F8OS^.A =^._&{4t&j=pҋS]?؏oz5u3f>lI{_K~}g\ʸm:"acn'~" !'YL$  k߷j`=P` ց_|ts[_f9A&Ial=F/xZz㌾F,C%K1PlklN{P1~EAv56OhK%Y؃83eNA=)S6t3v3 Ҏ6;HqZb!ڃG|qG~E flÂ8uỿ|?;f7˨O烷`;5}?LCvݵF^?h{̗qz c3gٍr7McDOc# g mv*<'&cQ\Իw(ߢv*;{LyZvrG=xMC?l.`cy0\N >O=C&h^ǁe݀o'8'/I ڎi=h)z8?\JVpAt!ShBZ8#\J0٘"$g{5U(`O!{wShbo̥DQX(wmcdQu1j w>''{pyǁ^(%F52}T{rJ@FL9Xd{0<+<ri)mrl8e_ Iɥ+1w8two)ڵFTnn\PkAW~(Ȣ;lk1o)R#`f_1c7A7;jA+f>փ%7U #܍ -rq<ӁRJGGr ( ^;Ux(`)ڃ{OO$[.UA*"g{y3VI%G%:;[ M%{qO1^LDC^zN`Rۤ~G3#EOw3!fCrD@kdoۙP۰? -F[ dר ~ S<=n;zw}*{}"D;Qmù4e, UȠq`PCqq/ҔlDR9ۃxϹZrG3p\"`5UAQD'߽$:z+r,?X ڀ=wtS%M? A;Gڃ}#A! T+@2 !͎1|iV/r4(qt;NyÃ"(H؃#@{Ay/HP$ A(ɑH؃r+P%9a@eih@H`Cy B{/@8`ns6`@CO4HP`AKoHP6}o=F{P1?: ,bi:zs$( l4Hƫf̑Yz-eZ[ʑ؃H&'s4^$>X۸#A-8n@{E7t{0&0E F–n:;nh$#"||51hh_Cm ^K4b6䠻{ {0"@ށAi=g`-z}B`Ps)䟠&؃g@ ؃ N n:)W{?p)%\2Y`]Qq}g@wkbo1 Nqf)DAb⌿5k!PH=q=OlBp3J u1EG5k8RO`~G={D !h j?g@؃x:mԯe|k)GBP[}%Rj_ߏ3F A~L =|@k8JwW]8KDx}^m{P*ׅ"+gP  9F5ZiO83"KBG%K:iWߏB(*dq \i7opu]݌l wtkPUH_5c䍜BP#.&ߛܯσ㚍' }L﹮>nG\}uB,&m~=t inÚiiB(N<_tgKŗ:U[9tPXZes @w9񭋝U>jE>YB1ww=ցzڴHQ7sIENDB`PKi6T styles.xml[n6S*;Y?v؋St?4ݰv-QJ(*no'!)ɔ-9r4[uCnS: ,[XصF8 XHxa}nE Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PKi6TConfigurations2/toolpanel/PKi6TConfigurations2/progressbar/PKi6T'Configurations2/accelerator/current.xmlPKPKi6TConfigurations2/floater/PKi6TConfigurations2/images/Bitmaps/PKi6TConfigurations2/menubar/PKi6TConfigurations2/toolbar/PKi6TConfigurations2/statusbar/PKi6TConfigurations2/popupmenu/PKi6TMETA-INF/manifest.xmlTn )"R 5I==#Nڷ_?:m`eb2+6cVj_l+Yl-B@"yT.ɬX(J&IT$-}g90l9*|PvpvPU!@ThE]a͇%3o [O|&[[Eۊ &n8Ղ^l{CeltTy} DW$H aHwoh5cq͟fwo@T:ܳƴ9ӝBi :Gs2(</ SO߾;PK_16YPKi6T.++mimetypePKi6Ti#QThumbnails/thumbnail.pngPKi6TфCCmeta.xmlPKi6Tg21q& settings.xmlPKi6TBnD content.xmlPKi6TUr3-!Pictures/100002010000010000000100F97F57B5.pngPKi6Tt1 R5styles.xmlPKi6T}=Configurations2/toolpanel/PKi6T=Configurations2/progressbar/PKi6T'=Configurations2/accelerator/current.xmlPKi6TF>Configurations2/floater/PKi6T|>Configurations2/images/Bitmaps/PKi6T>Configurations2/menubar/PKi6T>Configurations2/toolbar/PKi6T%?Configurations2/statusbar/PKi6T]?Configurations2/popupmenu/PKi6T_16Y?META-INF/manifest.xmlPKAvokoscreenNG-3.7.0/src/pictures/camera/window-rectangle-on.png000066400000000000000000000341241444746353100244110ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGDi pHYs+tIME $^m}zTXtRaw profile type xmpXYQ8 )Ʋ-8 Un%yZj Z-S3xi΃U-hl)K.V2\.%FJlӤ!Mbo_Iì69O8TQFZeb˵̦\FTб.l.OSxˆA4BRšHb ESJG]#^, :"baW=E;x[@E#ާj%)qbW-@mQLm@f [Q pʤ y-~>+( 2!> PRȫ( bϒSfdƢJz@wĝ\wD@Yt\Qfp{JS+-{v{ѿn-A 4hA.HS耓H Ewc:DzsH[8E)'DaFY*W&fਈ+rN;ǡ\` 2` 0 6P'\zI[WGpr#SY'O0P KcWbBU$ 5N)crH ܺ~8ܞM1A&U^4 _ȇ,B,)!EY,0l ojTzc=2*y2h L털)n*Ƹϔ?lSآP[:CBsqrEN 쏢 Կ#MɻO:wB^:7&˭x;_[w!.-rLϹf?R(mnSZX/K9&\1\-& \vK9&Sqy&[_{оa߷ {֯_?60 [^^p8\ Oz{{@VVឞ'+۷o; Ό7O:H$'xaGocxd7JD'nD"}>_GGGQ/XSO0 mhIe˖777_Ҳ⅑qOAVps 솉=.yyyt]w|@n޽޲eo߾vY?X!pȑmvUs,/!Qj% tp[@/]p"t]m޼a[ZZ2s|0ɈEdJDD/D">8|n|kKKKݨUM6=M믿~yWWH$Rd6r%%Cfw 8 @’Xǡ׵lsy[[[=V\\+17D4P$qM*B$,o"_wn@AI):Np8"SN>88Dp8\|СK :MK_u8]ohCAI)/ M(TUC4`x~r+**^P%&@[[B[kkkMVV܃&BPIOO@f#}{0 @WG˫(m'.ޜ<pBA  > 5E .w{lX,s c|ٹ$S0 +q g"MX " cYD 01,@da " cYDЄ* Bj:;|j.R|&.M5b*j_n%'dS*M8jbEЭ+O#;j"ȿ`%YEp<@#v3|w6XY!{1hBP;>zhcnRv+B1hBc[Ͼ|q}/d# 2T>c얄aPƫI6#m ֧Mvޘ%5!Ѿ=. Cx X_W22.9C82NC=1!2;1(7%1(c(J2.VnWeS@]]vB0(#٘V @iį֛b/eaL-߽)a>=- vg[^i얅bPd,Ғ(K;TUEwn[8O=OX~7u-KTu`Zdi[@i ֑:@wnYM5 a~=IܑF:bPڈk>ꭖ=qwpիe,҂3n9-0(-7F7`Px/ ڰo Jҭ~Z.5s&x@RsZљ7yJX'ev$V+aOrIqKwu~#NBw q@h_rbPYֺ9J䣽>ekl9 qfcZ?LS?zL6/ *hya~>7[ Jo7Wf^$ZY!3 RFS7V {A=tCvF<Jz33(%E''w.:!a&_p7t^?' J:CC偝O-g,%Ujkn91(Vm+Z.5^>ϲ[x J/6=_}Fv@I:j[8MQ & .뉁G4nlVX}' ƭ*Zs* FX3> Sn{B9:g7_hzMvUͿ#8=ëؽSqL>T} |!q7޸ҝ.cؚ؈߼Okwޝ20ZW_'ZB;*X(؏#vs}ݟ=촠j ie#SFzIDkk,Sҿcu-OX;0~8Y$+"u.^7Ohe[,{*0 %~|aԺe;Y*n86/[:e%7}+> Cd=Y&E'}_mtCS' ,ރ| A7e۾-K)7_y-[em;fj6OyZv˖aipmJk< .>h1_a官8'[ d8V:&ƸZ_^x8nݲX"LDHvIѨi4>SX'h >/]-^Pu-2`@Rmb1" -2s]-S3 x_2Kl2ڙo ֡ɒݲY*`ô[Nj5n떾J\C }j߱-JݻOXod5n3mJ-&0UyMhZmK E)nh[{nŅߔ2`Ew{N hì %nFt4~(]]ySZzHf<ߕv>`ն @w~}zz>'l,|EZ핍 К깆`Y :s=f柖#LDh=:s QȲS}UQ gB3 ]kcL^j9 08/1N!K/uR;ֺ܏/-M.>31NΖg |;?)Q㳮V4=6GGۦmx{xr=a|CWQ:Ja1/7 5,w6i|'$kwisum3pz4> s6۹f|mkƸpb@8 i'l|kJբ`%fNOB7 DJhaAnEJ3#( !hem ퟉V[ rqO{qU?vxg Hϛ1{6M*l,?Ȗ;c#牻h4( |g](~ jm@IHEwّ:@w% 9Ro3L~K0()f9%yb ;uޕ= J *{@)(|@ 4ƃ̫e]~B(醊_f=Ͽh!P1$Pt7Y,{_=@Q=gqJ?= g]_Ikj]e`Hpد~`o 4ՅCeb)i1G a HCsdZ) $ 膊Ugd08riFmop%u.-ZdL0Ґ \>187[&IiJ7T!su.UëkeG12 '5 _K6Y'-J 5Iލ/n 4,œ svM9hGI(Ϩ@Â,_֯34,†—d %LR1,@da " cYD 01,@da " cYMӴ d2zjLDh稅05E9>6EQX,s}x}.G":=ß? HqP@Xۼ^ﱑ E1]ެD/ԋxϏpOÇ]P],W"xU8\n 0ANNQö7wwwO7MsO[aaۓ&Mztz`08ޮh⵿`҂(h* JJц6s-ՓfGB%^iggg[kt]N>d䢳UvD btf2eǏ-WEW=OwEE PPPԩSBφ{&LӀ/7цDm@ee ٳ皭[~sxaIigGn8N²&".oPT|Gk P=fIIˋ/ 3fac 0˷ɇs@_vZꡣQ4*j\}+Ey\o- -p\ޮ#qO7pwgp -kiiY\QQqcEї,YR{eeeM?<οhv%qC1w "&84960/))yy򖖖!PWW@iiv`L?07>F[[[/ 0bvab~Mѻ~[(*zGc?HG^QQZtE1QPUU떻/..~%esL(*|}}}L@yޣ^{?_l˗/_VSS ybYc!Q"[NNN3LSU5;wѢE,[FMN:{?TUMz<e7IDc: 6qϒ%Kʶi XYYa޽{vwwWn JE1˷VWW7̜9Q?Xމ[eXIfII* (1 2i&&GIMP 2.10.302022:09:30 21:34:11 BHJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((((((((((((i7ٴIn%3".=rFX kVdf_Xqw;!sÞpFmӂ{Mw2OvGfO]8$3.GQLJ=2dG ݈9.xTjl%OtٜNI<:|Q]G)FIM+ N1Ezح?(~iW}}abZϬ?QKEzح?(~=W}}abZϬ?QKEzح?(~=W}}abZϬ?QKEzح?(~=W}}abZϬ?QKEzح?(~=W}}abZϬ?QKEzح?(~=W}}abZϬ?QKEzح?(~=W}}abZϬ?QVGb:N[Ҧ%,J8fdP{A2#9V[Ek,PFŔD䓜gYYظκ/rι?! ,(9B(((((((((5Kہڽ+-Og;6 }:WE<-IdrUҧ.WX>5~4b9H*~V;~ m2%NjG/@*K (9Oǭ?g*k GM???:_:o?7u\sYQErQ@Q@Q@Q@Q@Q@Q@Q@ToOy܌͎[#: 'CRW4{RHJrŘMϞܷ&hU>r؜:<;cIdlpa+/$$[+(S?g*kzʸO'κ/rι?!CwQEtEPEPEPEPEPEPEPEɦY]QdݵfOgb`L\K+Z욅IxUvª׳͟;_@GK"ƃ.*RicLWNӈ=ϿkJU(9B5n X+! q\z# (Q@Um}q5#Oyѿt^?sq]EC҇9,(9B((((((( 4wS]>I SݏNyHřI=I.isfcmQ^&rc@-?bO"q(Tg?jد[OMpvQEsEPEP)}q5x=lo\Ma?to]\\Fux?t ;(P(ut#̝XS\*ܙ04ɯjr> ZzWd̊7T1v Ԛ 6t$RK61¹u#ʷgN ȷEW{EPEPEP)}q5x=lo\Ma?to]\\Fux?t ;(P(rªA2kolw\JPC?tagNG>wE x{Zm\brye?򮢼ƻ-X[Vw&G#^^+ ycܢ+(M*A Y;{n_zK(O@;ڹTW;.><~aEkNQ[x^WIE9=nncL%b?WOL4$1E 9)TIɟIBQEAQEQEQEx=lo\Mv9[?WXO:i$q]EC;yѿt^?(|C(((5k6r@}q+HC+ {5)&Llzv>#^upHmvEt%YH ShVgwZ6$0T>x{gJ{[lRxNFzjt+A<`;YO𷧽y;=+ڮY|K--V;OpcI*p{9,|u??,Vt){Yۡ.c1f$NI'%WJ@>gJϔTv_V}w?z۟vk]5=\(=P((((zʸs&tI?7u\v??:_:P?Q](QEQET7V۴3e>܃=j(Vgj|uE*=:^iV #oZnm䵹 F6W*x3+[ӯӯxGG_JEt*qg,d:g^3d1QG\rtQYQ+#ZZ\ d!KH PV.~^ ):Q-P7#_[oV}bW@(QEQEQEQEx=lo\Mv9[?WXO:i$q]EC;yѿt^?(|C((((+3Ycԭ( ro_ONqY3gly+#u*pA Wc ]nIO}#\u{T+*^b(JXQEoMRX>kQ4TE viĴVyN\5^.&-{CS݅Q\`QEQEQEQEQEx=lo\Mv9[?WXO:i$q]EC;yѿt^?(|C(((((+4 &KL1n^ 0IG󮖊u%M&Uƴydym\ߦ twf(!7cێߍuWELd欴9i%&QErEPEPEPEPEPEP)}q5x=lo\Ma?nе1C!j薺rI+8=n`|:ugF ퟯ?Φ.I]X+?4}'kOie\3y?Ggfi+?4}'hA\3y?Ggfi+?4}'hA\3y?Ggfi+?4}'hA\3y?Ggfi+?4}'hA\3y?Ggfi+?4}'hA\3y?Ggfi+?4}'hA\3y?Ggfi|lhxfm\YB=2513G?Ι-uKl%(eQ2G sQ'wsH+#SҵOO9Gcn`'46.6o#,zWQRQ??y??y??y??y??y??y??y??y??y??y??y??y??y??yQXoK.A`.Hsľ0XtEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:09:30 21:34:11FP tEXtexif:ExifOffset190LtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength6089dO*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3Z tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/camera/window-resize.license000066400000000000000000000001651444746353100241700ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/camera/window-resize.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/camera/window-resize.odg000066400000000000000000000225531444746353100233240ustar00rootroot00000000000000PK`T.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK`TܝRThumbnails/thumbnail.pngPNG  IHDRzAIDATxM`a,++d NQ5BAE A(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(2V4-=›KFcKeoѪC4D_.;vs=_9na^m>69˕&2\Up}l}Y髌>(r^w1n@}PAe>6A`]8^6snp}0}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE?庖 }~iVGc+JD8KOox+F<;*E}>(胢˽H Zz8qq"l?Wcv㉷xͽ>e>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢iBԼIENDB`PK`TѻBBmeta.xml 2022-04-13T00:23:042022-04-13T14:05:33PT22M25S4OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK`T settings.xmlZ[s:~_lmeI2S2`@˔Q%$_)[<GV_?W!xE\`F 'p ]/o +ͰʐqHJ5E\T7 1ee B$/ݲrBYLwQX\.WeYnjđPP@&GfgtsQ63~lK/uqn19KϽY)'[sa7Zo:-u ;`yrivs\Tmns% O]lNwEX~h f6XTݔHT/ɣ%˗C /7G2 82%!v6S2G֙p"1!ʒ8KJc1GHRiMP Q*j2 c3=w w޻mb <_yqeGY5  JQOB}z?b%?EߟcU) *U&n zC$mO<5'Lɉf &RT,ݔJb)HOoyqj h'Of60 (f>A<ʑ}m$˧ױ<V40( ]T FoLT{.)-+l~jL@պޫ[^h.pNuYIz\HUp_usZ>p8 Rࡑ|D!e4޹focmgUSef3]L{t l]oP!X}:%LX;ׄGEW6@@L%7tRoAYpLC􋔒S޵-9SQ- kyE=ZLt9ԤVwwAܫQv # 50 QyhϠ eJn\l# GGjw65% qh{ U4u\UDl3p[PߓkSe @lXK_耆3@aV5Sǝ-<JZ/Qn-l&)gXciя"v*q$vcZJյкKm o'L2*őPsD3*Rk9&|1,c#x?c@k\\iy{!y0=)/v Y7۫mڿ CkPՒ$wl=F CgQma/rmG>LXG+=@N7wu˵Ў@wl|?ʔF()Rq(bG3RLBپ'9ôdWtC8vhz V6/^^q,marB^rQؓsg|n=Jy Oľ(?9$רS)k_(ʟʯ[yr,'mUUk4h*+ZpwĚUȳg{,4Ml)qNaR@o lturu1C(u)`&̛@tƝ2C ;Z+YE"TGjOa-8|K6kh 24ߊԌ{H_֐0T6p/ ˚ "={$@J5MƊh!v_7diغA"lk5Ց=* h+ߙJ;D-Kcy 8:>PK`PK`T styles.xml[n6S*;Y?v؋St?4ݰv-QJ(*no'!)ɔ-9r4[uCnS: ,[XصF8 XHxa}nE Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PK`TConfigurations2/popupmenu/PK`TConfigurations2/statusbar/PK`TConfigurations2/menubar/PK`TConfigurations2/toolbar/PK`TConfigurations2/floater/PK`T'Configurations2/accelerator/current.xmlPKPK`TConfigurations2/images/Bitmaps/PK`TConfigurations2/toolpanel/PK`TConfigurations2/progressbar/PK`TMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG s|d.x۷klllGT(TݱnQ n45zjk&^v! B$ӷ-OMM=00/=pVPN`;'DB<((*Ejo:wvL&s̭B?эKBZFev-VNޮFgږsa;},+n"HH"݂Ӟlraow;uj.r\^wa+ Riv>UU- ?d8^(jvOjYxq`5no etVp<@Fram CЂP$=ʢVt@QUNM@xܞhU}>NM@Q:si+81PmkC)EyٸpYmV]۞t{v"F|H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H`jQh`4oO/YOQvbסz- MC6t ]RɃ{PQ+!7٩ a8~bE;] j߆ 7}0䗺 L~2S^."7ZihlIdgΜZTzaݺu/>w~ǶԊHXLHwǬD"^}շo_l}g?: jPYsϫ]*=,Uj\v{k^jVP$烦jYˊ&PAx|(NI-gy@ѧ_@q&{S1,1:-;z|+ tGVV?> @$0H` "1Dc  @$0H` "1Dc  @$0H` "1Dc  @$0H`j8>iZݴl'O%lwvvvcX@dEEp{."]tUr?\Dtt`&j}>FlDt###o,fzj2ѨU`[8h7ݞ#Yes?..@QL:`ӦMoڴ/,{,*N|8DA/zoJZ-lԃiFy63'@VT$ Rq{n h=d!5'|WN>庎gl˄j^)=7uEzgynϒ$ ˦i,M㒗+zǿ/7SV/Z6ݞ:D]T*ugѣG?f:4Mw{n 4nND. 788H[V5YLǎs{ rzr~~6˲Fn&ιK$I(JpU(Jytth4gWZHdȲ\w{Ch AdYn SPe=4no|Q8i8YZZrm]mZMӺ0Zv>`pwoo6<{С=x|O@"1Dc  @$0H` "1Dc  @$0H` "&"˲=P 貢ݜw{4ZFԺa8VzuC_d !MR-Lrpl,׊fBv$==0M" ^>@;j$IN49'8t6DO2\$!qD"Kg $Y###whV=\N 0akFӹ,$ FGG!I%{ᅵ={RiobcӲ=-C^eY$ |d@CCC#Ȳln߾EQZ(J[Ӵ,eggEAOO h}/9̴?pw7kPfCnEW# q^_咮,chQfȑ#Q,izg+4 PHd&U1YKVk @K*J],qUFIqxhedvl6P(2@Kr'dضr˲9fƈmk^~,+fƗ^{alJ[x$IReY1UUϴZ;bdY.aRUUuRe:HQ,'H|tYn=Qoh%tEXtdate:create2022-07-19T21:38:49+00:000P%tEXtdate:modify2022-07-19T21:38:49+00:00m)IENDB`vokoscreenNG-3.7.0/src/pictures/cornerWidget/000077500000000000000000000000001444746353100212205ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/cornerWidget/linux.png000066400000000000000000000567231444746353100231020ustar00rootroot00000000000000PNG  IHDR,@1f|iCCPicc(};HPA;8dN|!Z"TB&7}A$Qp-8X:8*G''E)ܤ"{. JLMd<&3b+@qYƜ$%[_KuY}Vgaӛy8 J|N)U88FֹӘ4fr cHRMz&u0`:pQ<IPLTE!  $$$,,,/444<<eCϔtIlE`x*}S~b ~/5X\l$f0N GaGlk1q?:m-n$~Dy3wLtN"^d޴\߬BG/?S6֮XҨQȢLzdxd~d^N4[:ZR^>,9& !FytRNS@fbKGDH pHYs  tIME  )-EzTXtRaw profile type icc8S[ {g8N fJ )Zӯj`UI0MH^ƆlrHRO\ f%#\{ݕ07e#B3`HGBW'/G]XF58#^q{· ɄT̼*o> v}nՂ{y[p5S'YUV |_!F:&1dl5+C*Ql(DDž7?J|1ս ǶSG-rD=+R\eoD-sjj\\8X耣TVԾ2'vF-gCtca?UfԾ2?!̜=3 :h0oGUԾ2Sxߣ\$ pwJorNTϢw1~IDATx흋C[ם =.Iڬc;ukGR#Zqf *cM*KLc44ulw;>wggx?{ْ?-$ʉfX]F7ջP i3w,լlJꄗdDu`P57buմy}b&u T,6-lVU]eŰpmVu@'NWKn㛏X!,txL޵hDXvgq8hio]lSiM<,Vnm*G<8,xZ]NL AY!,';b8TfDWT޵i,V墨x^9޴$r8Zt Ѡ)+H *_weEQQCbs~;ԇP^*5+5{C+HZ+u:N`zXSZdT{CB`Aɘ`c9NP,ɰUc8fM Y.|Xrٹ'2p:mV2Z~vrMXaɲY4-}:Wa@ׂT}>oӂñMmi怜HK#,FQU |N ksvtvz}>_Ow$Lmn~CU,ooMɔźڻ{AX E]ŵy:{}@  `X.O+aΞ^d W*rtt!AM {VKXH@2dZ{ePe\`u{`I]2`W_ |b=}A (G{U1؛ 92ir:4gH1eBMˊsVEa7@X jt7 Ah'vNG0F)/al]n<5<_ sn6Lw .;sB"b6h;,l{98F[ ,al⇮sCRhcAyr9y(K|>iE+ (V{AW6јr 8l$u56 PYL-`V=%M'8mvC`4 W8Y֭[.|+`6!,*VYd5G>~ᇷܙuE_k*X_v |s2.G@X1"+ kP}}XX\&"љ+6\j]I|2!Be[~G mv~vbjMKU47V (! QQXoZ̾~439׮]Gw1ݙ_{qDXԫŞzoBThȺuKlgW߾zW׻n$]E]QnSt٫שּׁ u`9UH[VXӢ06]ysq@8Zu*dY;55ƻfoނt<5 uGW.XU8I*ۜ8g;]j=Ƨ%JM||~:;ٛ7?)ZO6M YҟgQgsw{Z[zl_~G;BvGoͽd ?~.o- V8b_YYso}ɏ}[o{gID]X`T_wEyeiV7jӨEaY~/nl\Yyƕ/?y㍋sUQ#B*W?RV^oLu+X=Xŝɻ:~ 1[ǿT:o{}do"_e!k JQѣߺ3=pm, _ @*{(4"<+;: QK?jOh}#׮] c~F4JY|(fMAG @}sgwgwՙpr3r ,ʜB:'zef.=wֻ5f!G|;DseT.<ψ~GJ[wdzWְ@Y`>ٍUZ&WPH>\-SD]bx;uCWVw@Hh)|TdOԖ2^Q2bΪdvwȎU=A/g~VkYSVxVxPow?YU V3XSj!^SZUmj㷿Ͼ-ɮ_ ǛЂ̢%+ bI~O㯿d-̱V:6_OB_ fb3 x&,AZt B((R@#CP q/=-YmZWn$) BnXwejLv9v%JKL&+]Vci1A*rx' @H:'O2$eЧ%x楎䆽[ @:n$Z *< Vy7V7CaCcbER_ZBC` =/-Ek?h X A~2R~Nh B}zh)Z*:-lHfֳ/?lxZҲ|gYp ~?ƧeC *d Xj5OKSVD"}C - U@xnj`ZZX.r 2 P`VN' gj\X2o#'FjO_߃B!-/n~jTZڂ\gO/= 2DduHKH%^&$.[&_w3д4X􋮶 %j# WU2$|y~: LK[Jћ Z +A~&:qy"Zզ^6X<T=TYU$2iU1u/^m<҉XVގtZ>4y`9p%dAaK$:\.}a1<>sAa(h#[HF{yYR 8(H&YGi5%ͦ:+ snr#5, Iadd0 cx`{->` 5q65TY,@;>kL gwڭKrNY+F%) jRe}H[Y_JN e=Mħ4Ƈkyh@ymdD\/4Hr*EeUv&s] P K(.Vr6= \(o% }LARA+<)A}HiQG)\ƿ[6i& p'H/[C?Fwdu^󽕌Ө/H kk|G, |R:~VyZ0nuPy|y[>李C9cPz[?Y4chq JBb9Rjfeu:0AVĦŒq,k7 Is:-/샊J^f"Ӹ4#bYjYyZcd w!0Zrj:.[D? މ6nmYtޔdDT b 12( vN_oLrX-E,CA`ٔL&}Iew:,ްҒjڏB [D6y=FZZayA!Kc^tbb&[UZ}&0ZGzq[#+Q֡+z*X[Ы!j@Xb) ui! U.-b6QaNtc_2`,ן(3]̷ZOZR ^[o7f o(HwfCIuimK\t0T>蠽g&x5TW h!)7ZC D: 5kB < )u9W%blR :taRr{ٯ i]ť{K݅:[Y) j{P=oDwk,"톡J!!*n++O -:lP,/;f 'l>ЉY5m!&K+d3hS +h' :_XSuf IYF#4SE`@G놎Ǘ>/O}ZBzG,AO>0Wِ{t&B CZGFA:b[ {yүDc+ҧŹ V[wz2!CS3 կ97",^n {5O#y{`>!NZ0)8m6`\[j,7 ?kV=h?abgsMTy@aju('R;4 ,yt{DX'A+jׅ#tB!daiXPj`y TU ߮ŴFY"nE Vq.zu[]4K-^PDB%YU;[V-[ųn0`>P(Q6=)ouЦ'd!tWa>B5S*,CKf7SU-{QޥuE%,5Cy8+6Tq?LI S8%#,Y9;L`*aɂ^R?ҫ`9Lw-v2˹ZA,Ȩվ20 <29c^0[::mk[fRY| (n (,5kVvѦz)|O+tNȨ#,[vLY:Qe2T.:ŋAyk;Ũ',LZ'0JC:A-F0~!p4ΑjX,߂oy_D %eyV`K,s:?D ,d ?CF4memqoPnaL? ^0!]`Y1o㵭e{zW_QĒ XsݴV7`VlcVy-5l;}: +,_nIeo\ۀJ xW3+oq5z }:y$*bT::qwp>c&,< "xq&"9^USɳC?'X JńMu`&/aIX0{,hT?dltqmkư8z~Ljy= !K!Xz^D{glLH]6wn^#&7/$=/΋N='Ҩ҆i܂,oe(s7޼n,@Ń[{*(Zq"-π/Y^?yHgQZwWNb8@zn21?Bq Q+tīOY[!u >%j:FLe3@B'pG H ^,b#t^>zǠY:?qe7Tx%0V <kqt11<.6I jȔ<#8'/f gn0Y5g~*aF^N\t]~jHC[uAܐ62{U¾z!]\}A~XP'ĶP J!-\8Wev2L<@?tFHE鳧Mpd>9<i&@:^G!}S8ҕdYg,̫鷆2uHA 'z4TQsˤө8t&8=^|Ϡ q͌V9{~ld e%p>r'D6M`<T!E@$`̕GXi3f=zSe#d~|n蔉Lcc5Z֞x̀?#a|3);"QKgKȬơQ|hNoKu)f| p>4d)bvv%u9{jU*y%D_<%E|!3=uѝ(d7Rhdl,ck +@p9 MFER1cD[X+t2 a7I=Ob+N.;j]0vRp$A?:Yk'$gxO.Wyjw%0ƗӇJz{Gn B?Cn"<$JƮZ:U,GH<5yK#BpC:g'xq<-jc]ڻ@hD/QZyU,Q_,U(+-}ʌb@i挆gkQ;HUx@.(~%z8^.X(a>u%Jd %bg.hipNon$7bF#ąQ+NxW1LH PAb)&+;(,B78Hi`1|_ :RF1BZ Qai'Xu 3X6xek.w2 2ZyyUɯb%@\)+Mz;aptڮԄq;IIAWr&E6QF,$(5^#X!]ðJX=iu \*>CIjhEIq@ -IGLbzmicj+.cn).}θX'M!.ꇿ:.ҠwT5$#odpIQǵRaใ4TCNTbɩDxS_ӅuqЊI F)!dMV$Nh<ĉ Ƨ556;֚eD_'A1(k/hT!(X,3*?dϥD<6\6:BvxQeHT ,e8*C:4C*.jʧ 4JY@8U_YfN^ydZLhgc1qSi;Gau4 _R9"۹n:ƬVʤ*phDEY8s ..EuhZYH/*FR*i%!0;5u# K(JeFEf%qO`=N= LQ1dh -Y^7pCۓbz }8QbV(.A.#ޕ9ΰl3B3nj 'Z#*,!?>xRa>{5$zQy_:qmک)PVLqR:QJdVpyD"L8)F(ɛL \:<"k H94,\9}Cw:/ֵ!g{7eW%Xq_~};t8qTTtxXi ai|i͌KH+XGܠ\? ZãBeAYa( Y*I &׾42rDRpCgT>uxR)pJ 'ZkcE̽Mp LBb)=V;gJ h oXu4WA+$QYlt9 74ZWqoM>Yښl;]}^twwg6LRX:mT!SM)K.Ⱥ|PNKΪπr{[O+[(6o{sU1I{d҇ BՃB!3W TV!\^s!Z=oA7̭nOl;O fvz\zNXT'Ɓ@nmPJtvy%VGe"5uӭiٝ*Jd!=^*I:f%XYl'; F鵝'׏ C) QUT\]+s\Kw&e+Shz>'Bnmzoᓩ+*D?b⊭HkN+3$A&SYIJZ3a rC k-C%fh5WLAb\ST(wlR]qMkZ &aqE/w Š:R,'Ww=ܨ^XvrtJ$Ze\btjZ9*-4<*@d" $~(r3 yC! ^h&AZR4!+beHֶW^Mhk`d' n^($% MH+ w&> '{k8ٜxYQTd嶟 *b;,FdA_hl#ҡzHBfS,V{0fƳ5:4+/]]0BW/2Z{XQ`;LKb ainŨ[B(.ڬ,am=ہbq;!617yΨ$`d3qv*7Ub֨nW Z =*)ed$/ ֞ me{$F aj[LskZDk} Sh `muыcK|ruzUi0SaT&eXc88Ɠ$!¨&.%4ѨW~:@( Ϟ-Oj`EƤl9^;c3p½g7>Q~ }O߃pkoJSNhu 8ڞϊ֣]*Q$d\d,9`^[QW[7N;}D:N A1hNɾ0J* 6]Ylģg(%6!q[E1!Zv|!kPvDx*ꚴ4 )rJ}Y|p -Qbbdxc)lvvDVp?~`=#&]${AT瓴ܞ<`DcͭM "aN8)̴ꪘФio6g;VhސtcsքIҿ6m$]AtWv)5BQA۳z_Ĥ%6= Udtjjz IhL&GEjmuzzw{z5(#x%4")P ?qL po0Gpń&g-#DlɓL\ih;{K[hL]q=611 -ՖIEޣ4:? fEyA1x(BDX52%&cXz4ps_b?5@^O>/jqM\=~!`bk{S/*) DU.{ד L`MH}>l蹑 ?'Ğy6to|OYk}b'vb'vb'vb'vb'vb'vb'vb'vb'vb'vb'vb'x/%5e6eXIfII* ,@(1 2iGIMP 2.10.302022:11:01 19:01:15 BHJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?z((((((⏎Ot; N3)Nδhʴ!S4 +rGOS^U|`&! EE*v<a:W,O34$1gw9f'I=M2Фȴŷ>_\-ċ*r=vr\iԖc&6xEt5;Ǡ|m^pVǧNJzשZΝڋ6+ +Qt=}+3MZBwV5uxeC;U9T\|kt lه}]]|Jr' Q!EV`QEQEQEQEQEQEQEQEQE2YR^iX,qfc5ۏkZ*fo=ۄh:(>Oz/xVіƬGOs_/׿RVGTB0qqE{PmkiZqMSW= crA"H   P3ǘg־wC2F+ >NMɷݶJ}  :pUVBdF+ ( ( ( ( ( ( ( ( (8?Nы_>Zeޭzqzk/?Nы\ 4]WĚU!f'w~*;{BlCw t^WxؘgJÞ1%Vqn8 6='c^oxcW6E?pA,N~(H# AQ|-ּoomt=W>7giP)KG-@㺟CH}GI2`rڼQ07 b"D65}Mi/=?TOMRoQvz^o£¾2xc;A2c<@zˇ][W$n9ʱB5'?jǮrc͆( (((((((((#%5dFU!\'s=;%Ĝ->]x_P~0ݛF2>[7qO0%ϧꖗ;K QAGQduZuiF_yˊO.t?.uwb2TƟG>{?})Н%gʟJEI8};<)4L92A}p ՀKl(2r zfL'p~bT8y-NXVGZ/+{N7f+vkֺ+-8.28|̕Uqu&KLK(f#=5׼#r,-s3F:OzBPz)]}w0/ui`'ֻ?O xl,f@[?0k| Vd>Up3::ȊU+pr+xsWAV{$̑r1jsl/4}znLQE|!EPEPEPEPEPEPEP;he~ 4ےtHT`N㿺ߟǏ';?Rw(?=2:~kVJEe$zw//}0ZxA4Кxs+\+cP69l CTNjҖ1zb8'U~ܾg ,p#@TĔ:)@jd栗Zl DMWB0gfFkq_m?ZK[ %0R:M\uKUl% A"CI0>mYG}X,ɍ#ں G~$𾬗7clݑ} }9v~! lVInUllrWcO.h/!TQEy ( ( ( ( ( u1h7ڑBf @+;4jg8t bA`Moj#¦QyKKs<#p=Ice5Υq*Usabk#(z?6O+ȳimHz:=^ {iq\ p; Hm_ʪԿ ʫy'E(<EVm:q'Y~6ɉEmQ@6oq^eQ^ղ5Q޽HT*056K1ʝAS0\ZIn0*t>CybI!qznjtRKGFySqT+dD-n¯N/=>$"R3Gy<{kle?4V/"+L0i~Ƿ+2W[[\Ķ2oN1OI j}a#]}uSZ0?_#*`2Mzyz=Gy5BjLGغTRj1WЭ JnL.YQZSjTN/!c=~tQ@Q@j(+Wyuˈ,R<P1Kڵ}lmB.TkԖ[i}t/+?+ĹLBIGY>¾,rJ"%I=+ Yn=ci:6Vkܰ !GWt=V_&d 9R~W,.R՚NbwK'kyFӸc8# T}y u~~ |a"PwuiJrQEqQ@Q@ T'CQkno1"qD9n7y9< + D#+Jomu}%jNؒǒO$֎-y6lU 0)h <3;8}k)F23yjY}C漻υMղVȆ%u_}C5}߻/ Íe;om*~@QG@Q@uElT7;tZZ}Zy[>kmM0ՕOlW Ugv5MPnۦ&V8#Wyұ'Ң#V ׍TWGn# >z)%p碨53zWZ^]&ڽ&E6( NՍϥ*n4eK'r'b*¨쫑f$܍O 4Ѽ<ӫ6<{m^C h;cyɭ($@7ʹvxoxWZ~XmϽz&Q^|K/}D 5Z*x*J~f\VT`bM IȅX}f,u?ՔuC#qT^EA l}+VN7 GGBQ]gQEekUqcu?tK#Z

bh> {NKn.d9yebU֩]D+|"6ڧ @:YoʰGJGlcPA(hMWĵFqQʝk>}IS'#ae'%)ڙw=FI[^jnpCa?kf~0 ǒ짃3:ϊ{pLq+Yc@P0Q]\]EqFvTSsxbfyq&{ $gmGkҪj`) G4iGT3/!Sjklk;R ə4u>Mч9s77tys¥`iM6k>U23dQ)fc&,-Xmm;_ҽ>ėrOXA]K s1j։O[GNVS>\yڷ,QW]4(; J*be]|9??UtV_;|9?7,$Msc²}+ʽfbS]!yzEIHn2LF7lp2GV!L쎋"2:V*FAZ߀.Ad11,֮q=ǷoRļLyk=N-uMFVX@k٭bGܼ Ztۺqǡy+ݞ֩{z$**$ Ѵ)co5 )83OsLWJw-0=O=%R)lQE#(((4 ( ( ( ( ( ( ( ( ( ( ( ( ( (?ٞSL%tEXtdate:create2022-11-03T13:06:18+00:00k%tEXtdate:modify2022-11-03T13:06:18+00:00B$tEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:11:01 19:01:15=3PtEXtexif:ExifOffset190LtEXtexif:ImageLength320L+tEXtexif:ImageWidth300atEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth240x~n`(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength7406f*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/cornerWidget/wayland.png000066400000000000000000001020311444746353100233620ustar00rootroot00000000000000PNG  IHDR,@KATgAMA a cHRMz&u0`:pQ<bKGD= pHYs B(xtIME  )7:2zTXtRaw profile type xmpXYQrH SiF`[{cz8ĘIRKC𥪒1U/M[g"t\&Nue\E.{aUXUa$׫{k0vѕkD @K`jPD;P*wn k" , }R=M^#%ceF;pbRavwuK[3=@n9VR됄ȖuE!ု$23e@oMHԈO6Z |d"gǻ/df(]wA(%Y*v&g+CXy!us_izNՈ°RMt 35$"h| 6iKk7fs%:Ak !Βİ跻s46ďMO{:z-DACcB)3}FF5DJT3fW&99::G bwq[>a;\eU9%%{1Ƭj#)2tK.Qd H*rl5zLbP̂ ,0}3YޗT)'{j%+ڧ&%`",'Ih!+vq2mD)}g/!4h?+T{٩ `>~Tq@fz+ L(G .b\ y}W;EDD, W 8 qlV[%`ZU}*0XX&J'!GX,G YE&˯ DQ|G؜RzZdt VPJ)5z'ILVyPua1)`"V1($Sw7k6{* ` x_)ru^!ɜn)V_shcp-9Ĥ 6B |x،ܤQ)^A ]޵S,-:V`,{PAs ͌ |)X ;JdwJ9DPDv֡mvNd - b7` Ȩ3#Lk$B6-2@Q|h~ 55&(y=κ6B尃eĚq8nwǀwE4E/Z&}8`]|%X'-ܰ bwsJvPd׋%,F,qY.hv T O<:_7) ^ju'b .VeZ'݃(nE6 acp>'h֑Wt'Y՜Rʗ.lTmDV,7";͗uN{~-_ RJkGX)r3vԐcz+ 0XE.y^+઄!D~Kݻ6-y=)1人X\g˸z ^78GdK|%XeF d8jAJ"mүT@h}ZnDkxMdn"{>(ٍc~F&.Ģ | ءTJe:;RJe `_'J$1XHb|8W:3~x[b T JZ܉@Ot;zGsA}݀6dO)g6r'`em>'v%JCTO0"? f&߇ Z:4ߠyAoڄ "50x@$s`'0T/&S qiRG)'#V&~Fס.ĩy@|5D烊q '#)c/'`uET &d9 < j#Vr⃈j !z$Iޗ*a ԶWlH]윬/-,R'Sp+жObڱJUA%U[?߄?_]÷â?NS_ g = r(*<_'0)gwoE|Nk+JQ7'|ia)&xphW"O-H<me*IV,)!؅4[hZن0G4 V5Oeh;$Bl.W~PPi(C(nIT;[.ت|I 1EB ja(@q 'UDkX.4/~Hֲ:@,.:W*X~9܉>T7Ԍ)Ζ_aW@#5U(11{npp!Fؠ;gP< 3`k۹ * F+DCzH.^hYr|_i 2' urg |~ +$>o\8C`CcW :̇y[˂f?_ P\b5QmP !:{ҬHʻ +0, cZJp5\ V|".G;8ّ0$1X.t6x_t7Eھ.z=D:"n5 N]q4$P?'>0,dwWCcWr77D_m"U y uO/5(yo20|@#X[ݿWc '.-bȶ[ա*@FARua"J?0T) 0rFF6Rm'Re+ }.YnOƑzQ>9mbb}=, 4z'T/p7LjϠ Gm3|n̈́ nA}C@Zmފ ;zƠ6i*lOnGo#Ѿ SΏ+&Qopޗ"=P- "mhŋz+gC #k3&4"X,hF&/Q~]FvBHΤ_|zCC~  DC!}Oygp%4 ^V" )NGv.yOsºEZⰔR{G~߀ai(h[s=ˁ;؊Y &\ĴʗF{r^ܒ"pH) IOA@.1cl?" :wc\º܍ sẅ,EjV/F*$n< &PS%qS4F/: z45teb(-G$oBdק9,{!h"ՄB( ~XZº ǑܤF{-BR/߆я\g>a퟊PG;p)(ֈ6~ '?%Okԇ%o-˝1$f/M3m8 a 7 y}3Ny) U۷[$JeQѐ~z=wt J}^ ŀp3t Aq߅z guu5A=,}Xrl#TdpC ه`쯽 EK9ȞQ8gR]=9Q@8ȿ8,^̗  36Ŀ`?74`HwDLDA(x= ƟmZ-Q@(IJB}V(hY C X' 9/pE kFJBr.>$0р!Gr]T`g$B&a&Mc1^>,W{c.^׎nm ajv^n0Z ta"T|-X ~s9+XdNFbs;xz`m."Xra AzHP=F3VC N^ 93_*8~%"z;$1S-* bڮh+du V `5ӽaK E7/a_n^A :C8x=-%kN:Jۦ̓G0 {lbH ,Ƣ(ͦf# [`h, t}> 7R9+ Sv&?3;6f] [C h"h^ {3+Ē$F}Mȿ, lmz-ND}J^ N]`~(C\ m^}{ |^ؖ764j,}_Ko#TCo[![k?Kr?  I %oݡVH<ȥߘ.HT ^LB!(+3KkZǴqBFq?rP:WJJ)7@}ӈB9rM- }/X,  6R[1^ ،4{,pC)hZ w ThnC) 7\Om0.OeGq\}%]km p> ůhĶ-y4*azNl7ZswU#X9˸Z x7W3PD{p_1 ́%eBiLC+ /Ľ\+i2^%!&?)( }yeFN=u? iYM )ԡ *_{܎XWm,˂F:oؿ}}y &tg?m`fMfh^P3F:hGZ΀} _u~*1xմ.¸ףe0Kcsg OuM723 O`9J [i3k Ff&BY{{3 ~(yF*rS^E(JU=~J. Zh] e-=0& CP: Qо-wAr37C`'~cɛ^t,<۵0C1NP]`< O^N )Pz$$N yh /= 80\oKo@[U`L~+'%o(D!HC$>[P<(CsEŨ|TbBşyn$KЗ18wr }!Xz74M|A9q>AyVԴ &]O t_6*6 0TIT*sKCC0 +*6KRT b&R.vA(hJFCJ}B]3AT"C@R@~PP 9N@MW:vEжVZ"dN/h;[9ߚ瑭z;h3/;b^iu`8h*yaїw.jԄFp:3-:7HU[]1pp`Hu)x!9zWap 4H̰pFg {L?Chj Â]$="9Wz"Wd@?ItM`w 1 Kݞ;ſ3'qﻶO@2h]VY})Yj8p#M4tį*dWp PHyoac~'G`iM"^~ AJcDt~玥h_ !BI{I1`_dD=g<,"H—5ZX,}X XmwBtH >ȿ.w`ivJhC:99 e%!^~II nC8z^6`f$n5M+ ,IX,B- ULɗi$7Bssem&Cnt>sHVNKqmB3 cXA( # {5Ie)S?eh~)鈇3 P?cD(QE:GьafsؓO#jh@o`?I5KhKqD"d>oEc(\,20W|S"U5͔)i%SGh^#?N`dz|Z Xal;e4inJ}덝/9 f_@"-g6@SD{ g= CwOrB:yIDʍ4fu{JNAث'Xڔ,J VnҴtop q>G) * w@b3o ?V;x@ӏtvǗz;(֢JiY[^ 1 `t:1 гI* .|a&| e8Dn`fR_oY$n1w5OI(`UNO* {RcR-k!꠷n.XQNy'Q>{qFƕʣoQ A{Wj9/G H],Җ:, >]9etAmqtJ. 1FAss' 8Êqι@gX ǷKY)%=1|r/xt7:PSuۭN@ajuuH0mz-d*K~SǸLlfGIemd`YQ\،!B{\B5֥G'"y5F >W8 }': Izxϩ9"Xz; ,[tJ> )BՐ\s@8RRjC[ ~ĖC a0wmA! }J\IKv܏*e :.`~}QgB4! 6^^:/ Th/N;k!:n/<z`d%(v R/`p pJwSu," M3 NՙFE$ڱNN7Ba !.%nvK`Ʋ>&2_!L(ru)7c Ք;vBD0X;QWdJT)[$$XIhyKXy%\x)uj^=[m}@x4JQ';[vr%qRWW,E &` s PahHŜ*!RwbmXϡg#ĺ5дz %^QMvCYK>+K&z47cWW*7EA79X,'j6o:]wBωB-R7X=H|9^,s\c"`#ԿL-$p;3)0}懝+Z{йN*YaH́ޯ~‚XdσR0|p&zF>4]jL}K<65FsϬ, ݀ LJ;MqOG7AhB >׵@t54HQG'Zn&L]&7<$ /1Sw 閣Ze:~>:}* y(Ͻ>:yVA"+!v4/Y(zҬ $n?tk39EJߔFc0Kbš~hSvfIȼ `WXa%v#4_<= mŁX-ŜrA fJ}&XhznS:h?%UcI6B:E(ԥhD*7 o4;p`g`Fr,VnZ{R*8Scv/f\'ε>?Xu |b(֣1P@qrЧ(0+Zٸ.Ȏ:QDۮwBc%;h+w˪ ːDR>,'rP.rײ7NE=UҚDkYpnrb}ge/C:99_("]`̇b#Gbt,V"$lRjWeG!4,K\~<-wI*7 5I\0Cb!\Kw.hY7bkȜ҇~J\y:Bc δ^59Z_%9>#@b9}jNBJW>}9K@RZ9 -e]nRS%4ЬA`)60ˍ7A£@(P:e**^~%u)7|·]qq3yajt$X-Eb+m;4 uy?K=BIh].4w̱C*qp8̍U5Riq]~θ<1٤{BjvK)vAYRE+Bd'dC` 遞߇9Gg H$4qi6%bNWY`uRzjP&\{=7+_0 `s*7²C9q+.Fhr߾A@K]|ryABe , āb=[eneA4X^N`FIms[+O)WR8C\ 7Ѵ"+!ǽFa HQ vZ '.!=^3-KMzPˆta`#Ԑ J}6^NGRwk ֕ ^k ZX3h[k_n)}`V>mhn@G UZ2`5F[ZXPvƆj ztaUJ%x$Wۯ8l#+ H;F)PZN䝐t9 >( ayww,,$e)TNN )D[!A@~բ bkȴN pU ) Aj7\@/6z,wyWN_;?+<qh4-AJYWO/BF4 oxlEa&_&Jh`M=\qҀ5c KA[9'M߂5t>"в6y=滥[ ?QPջj%4`EE`!,!u=LRhQ@VA.^N1VzV^?[%!5bMR7%1PDIs5=$-bLVJb$C`0$F"{ һ>jYJ wՉN$yPFx!t~W$BD HX}* _(l?C5l͐\ P..@c{볯RINluswhtF%kнџ(Do[KzhZI.axCrnQcڴ 4y}A;,X^0j 0V.Qҍ$!pPT'?n ^p34-֛`|!Gtu\hŜL ?%+fz;@ꛫV'X$`a?cvb' ]L n -X k Z7 g_ qe"jUwFYn zJ#Ҿ iehlDZqА=ZNaʪvf(zjkBnJc>SB\V:MȎA]1A(@@E!82~hڒ&L6e7vcD@Zȵ q!qU0򪭪_8R5![ .Vh)7dOJ}&8(#7IwhJ8_p4̓<@9^}@'jQ4~9J}H];1WBRi)q\Sҁ&k t !+\7DmyjҪk \.3p+A5gj r#t)7dܓ`ewItK.2OtBzIچ90O4ݨPPez1>EH+$V#\'[&A*zr\(|fEUnѺGKyGs;-?agVj8u>CK>Y Ec7ɣ0?}s~-7BX hU,@В\H7F1%g,r)kfBTmPKI{mH8?;Hul^$Zo4^ wBM{E(]BX# 0G0#UaI(pd 3%R$mNFrҒчqZn*ː}w&+G";qv 0 rGAW3b 4uC ]5NhtmC)$Cyn$NribD~h(yCms4jϞOuj6/ d!{Fz?VbQe7BjN\ז x R:* OMλ>T4CZLu5r² F_?Yh]M MW DAr]&ڒ8_U (/ /} npu`KJӵ; @*M heCv::5 |JIznquнZ eNBhmaڐ+# u+H+vJ A|3F@8`H}wBtr[MEW@ ts0yR׮(!6|E_#fV,Xf`iDOZJW, gP.;TRnc$! ;MuP8pj &OA}|,wQ)<KiNyƔN^Vp %CPj@ y]uԈr敶RPzF?_X֫<м+R, à>]IϨ #}P (5S)>z7¢?pC쎅*- ӷMӡg_b>|' -ZeNwV rpN\FjEUeaUtKdP $,(N-CA|.VH+f9wh( ;3ezZou&/"mȓbxSR ?2Ο؈`UeaU,X_6"zhO+%u9h[g4&Ֆd8ټSP쀔3'1Y՛D7t?BNYw{^Jn&_ u@,IE1>ۚƠ4԰$H2`F G-E+oChZ4X0U:A ֖wMPA#9M sԒ!bF)F0l+(\YZ%+{<mr:EUjeVVAu7K"{Ay]NN4y4kXC3DTCnBѡVUV|˧/ -B$d`C {U+X9`F,{@gY,d81]v&^y'P٨ "wM= nƓmBf2Ol簁TL 4ƝIiҐS}j-dp,j;imHMx/ (SFQ K-,k @**BjU8#1㌈4bw~m:βar?dg\ŒQtY$y- W1@e9; $HYZk:xu,` ]} zue4`i$xv+-AΓ/Cs!*MCǭX['>'rl=i%` V,s4r= V & { X#rC8f :UlA h-J(Ζ:*RwM9Q[Ð?0Ӑ?Ng A氳DZVD hOj{mPrUhIqB!; vc+y,z@cgˈAM0;0F q+$BݝyrP7W Bu)YUlk<;vc\,IeQ7ZI)O;#-:W]xv^6=ru-s5q;Upcs;X6ڝbf ;"\$n]ŀ< ^`fau04 t?EiG1-,M/;EK83k^ !uBһqc1CмJ"{#"M!6m6d8p= T?qy׫(L"w2\x٢piPbѷu5NBl!t.EފRB% ̳3)kAj,U`=4`MHmqkmL20݃CP,zoPhY q(CFkrYyRIe }`]`CJ=7}0`zp2 6׶ȭa8Ӡ<V#h$Lϼ[r(lz`{bzծ8,Ѭ,߃ҍ(cf 8 鿝fRSvty=CB~)y>4[ NQ`sVRG.EMAfDFzeTẎkt {a4(Q+Biw>BE?)W_|6%i"+#!j9|8l:4bQ? K7'; zIa4qS<NJMو A5H]HUeZ"Xj-4m6ZlcPRg"GP`t&3AJxz}`(ޠ^c>dVqriZY)_]R0S6B,`^zW ~e0Az7!= 3 weJ"XL R}:BCnP6A) 4CLKmD w#b@5 ,&Xh <~,~Y.ӉfJW [Q-Y(q`+R:(w`GgV*D;} < ~{gޑйz$ӥڍQ'b]C1 W6W3Pw|DwZ8$}MFJkZbL;,BCX.(W~nH@1( ip ȞlR B4;_\o :5pD~#Gv 9.%<rosޠ-I.v P<* 9@R</?,ўrrLEA-` o5Zhv-Yj#Em]Q3zC+>; k|fh[vG#,r`Y  aH@)<V[NZᬍmx|2 MԣRVŲ\y fP68\te0)IY ' T# |bz`B=. C 6XcH9SЖTU5RG=l$)T3hZʍ|(M)~ $%796SrʧdK+󨳖J=$;<< oAZQ`6yuUzUmqGU`8|vS]s~hun s0Jէy‚_:M@d@X%^1FqR_DFk$ġ.9 se|M D,L80@xtY>3}N Fbbj)B0LT?Bu($3lT"}Wy f;n X/M#c$v0˜-@MȾ0cZ` hN~)8k}v,1wZ\S`)@i@LF*Bc_`U CĀHܖvWjR9+h4B|W$l P9ۤ8Ot)YJ5:);@m8`'N)Rr~InX, wޑ+s)r`(8< Q8>}ؖͱּ;ěP_=.pH!' }F 6@X> ~\TpLJ5MůQ,ϏE:ɷv )lNTеVt.u@[P8 'tFaCV4&gwzY4ρ!u!2҉1>6kEȼ١ZB.x}nٍ߀u"^Z;(Dk:G=Y;^K'c$aFVmv<(PaYfėe%1@ Ǔj/3o"@#Ih VrǦߎOd_YKb?' h:.`| ΕLfQD inHŀƴLKO3²GR!,->`}R364[_ sX3C"f^0,U'p 1 ϓ^W T& h8[GgژhڝP%&WCalhrc|&/CL' 9 -~HX]q 4J'߾(?j@Gwx.XAL ?Nz=+bq)I i:s^2@QCOHcxx +  4a xr3 c)7P GĒݒגVOB@#~6Om6/KmF!%WJ#qGSfQqs֮ @cu8ʝ=e'{C$+`Xh>@RoL0*ƽIe&>ďSY`Ś v_5O"&6gW7eK+s7H{ɷyy(44?6`E4fҒ1dw{=Z(/y>),4g_7o.A\EW*Niq;T%X%z$`![j G+EVϞ& oW#V? qoǡMx߆>z` ߠxE=L]_ zPhY0k<]c`6ab'.EK[~-4y.Uz_ H WRK|[0I|yuRP<Ѩ«Cp r `%f}(hy!p\{VFF+)pPe_8 @v&ZŬ4-ef^^D#6M>_%kA3⿣<Ǔ W)`RJ$`.'4d 6/ou!FL4}hIOUIh=( Kw?M gLpEɛ4=犣0о )$6ae`B}MtYKK( y=6 氟fL(.ǝ 1VדP))'{X GjiP[":~ԕ'`Ei%ږo7z†w95RU GXU~)a]˜ʳ@V`9~] FzXWmXHK ? g_)%y|O`%xWz~O"Y&Գ+%^<͹Nɒ C0yR)o[4F^,嘑'S L*֨CkiwՇb{:y >P+PK‹0/$G^ru=6\y6h['PY7P@񸴄ws&䏼>J(QYq]J zSoB_ק^% *y"S]~24~ow)3m;0G(8Ҳa @m_D^ =WdAb}=m>(6\m(|r:a|d?~^ ||?Uײ!}XGh ~V 4N&?N 0y JN $X01& oyX8_ x T_šB=_`! ?n.8$2ahB=Ȟn'sO@$Aڂ ru]8{/fI!XJY&J|!}/UiraGE 7RF_3!A\+#ovW֥G3K Qc"QRz?0psA^Xn5TP@C g{SpPW*"3M`YXS-v>/D"B#Wi)e9[kP!{l-XǼ>Q݀0# @mw҇_kj}XoyK&{B(t?]wAbqY*j4@{}RtRB*`:?}gP-W]3V@Kz+C1 | ߈V»~#tRlVS`/J~8Lg0{ v@*{@#!<~6\j:LpW>%# ~2ӠL%^;֤Ԕ&@.AOKsDZ_fr ~(NQ} 3º~_#]ms򧃤|M^@נm=4-X47GOlx&BG65*Fapd,&7>ha-;k @mfBo9`E xAu! zu  `u(VWB}N"Ùa$Vy$z oQ - XGUFX NSDՎ8  QKJc |k c)iUިE}W0<µO>wHU_)Nw6b1yA ~ , L~8^DsO867&wҌͭh.~E &t3XM6.Ц.oK<.C`+pZm<$2%Bh%P;!/$ .~ hbQVյ N"X\f/w$Ta`Q왉UA$/A;{u21 JvѼ0o;Ԛ4/EP|X^+Wм< |h4/.|&ٌ1: DxuW৚`MXr$AnlF(~&M| V%NE3Eh iFvlGU`Dm@"@o@,B$8E48&f"`9J7!#{,pxi!1O' %K$YMj8 o# |Q&6͞Z~$,cI4<w i?w Q~]~I D!`I !I B*6v` Ab=ۃ;f ,hf1(VEy̲`8)"]Pi@ KDUHpbd8 `8S~8aBUzVӌԜZ,%ۑ6i jQ@s43jdjpv=zЬDy]TH#w 4u`q~'p$1lO\UPA@WOXfH}E—Ȑ9߾ƾBjKF8PNI#f%c@4%DIqI4](zW}ߎ Vٕb®u-]IZN59oh&gQZQkr@, (Peİb`>01P(4+ ,"> u B3H9$!eXIfII* ,@(1 2i##GIMP 2.10.302022:11:01 19:08:25 BH JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(+5ojXiQ2nhn{1BT.Už7(+GI5mrBe$3"}?S9曲M#:?ྯ9kj3N={ֻm_G!Ѹ2O{tNxE{}u֞ާϴWՖ&h#>i ¹_jyݥ:VX>ZPB# NJlעDԑe\=I}OVM__d4-&defwr8o*_CI~ʔW:QHm"m>VHI*86}1'P/@I\1c9zx|Yk.W{05QZzĜ)uX<7Cױ!8sE4Šc6e=@4$;ʁ:Z5[Yqq!E f>rkoOAchz?pSH%xFDb0T#PEP7F546*LZ{;- ;^)P) }Ie.o&a6n0qC۳bL) \Ԏ?=i};C6X^8™x5?7R¶;77d -]ӟ.w/ɥ^Y/~8s7<#*ay!3SV߳=@ ׊b^rX~%T̿77jwXdC(8JjswCudyݗay.H_bIGN[k(`tH4!21;ƾ/RϚshbT?oX*<2aQS>tw(=$\ _6DoO}|0\G4~T!t$~5#\NXN_~2_U/_w67h'Ngw9]7/ݦǚEVeQ@FRό0\y'YK\ f IJ$z>EzLM'ImS(jzUzz(zJú߉|AeH1胩cO_N:]h0g?J~0ÿ ]iOV,6dc:We>"ז7BT. 5P~>ⶩC)R2qxhbhʔF54ykQ%9_Uҕ*ZM)%%(̠(gkʱ(,=v0Xeyd=!3sJ\vB&2>J$( QPޚe^y\5Š( ( Z-s)5ݖ&1ԥuQE~|t9v#~rp?:/Mm}uu"NyXG\MQEiwQH>ήCq"bzƏe|Cr.ءv2lWQ@w |$YF>Y%{3ָ#G5tY=(I}Iacaa "A_?fO K/=K["w:\n᫮b+ኜC7fkQE'a1Js$XisTI tlc5i d}Ep9>GF4F?S{:8Y4)̌It"r6]q:\L(Q;ri9$i+5JQR ( B*̓@qƐ֮RMZ߉-m QEAAEIm&Bz(ډ0 ۱[@+w]t{p*R\E@*Jׯ>e_m%ROD梏>:xgF.tOHP32 ]6 _KPNNFp{í|wZ.q^* œ} כf+I~+}MltQE{GQEjxwEg܂B(}*'8Ӌb^CıZگN#ܸ$qqHmm$1 DQ /e*QAAt~'Њ+_ÒlJyS}̱#+Bu, 1޶4J(Wԝ,Cu\J0( $bw1rQbm%vEEuchvg 4bXI1{k䘺}Ҳ]Q e)ϑ3"($m4}8&uYq V[,MoQ2ROn5>egS7oCX_W-ivi"B>Pr~|3mV*{,';N.T+neEWi?k2t3U"rle/TcΊ( 2flVex7u?5> #h+#_ ľTҔuJ.#s}M} u1~ӤWpfܻPۭͻ!ME}ܢl 6DL?SNkHX/[WP8~sWlr@_0԰ةҫ{+߁J5(#Ҋ*խRlhq\N`e%vU#9ݤbŘ$ґ_&Cվ 9;}+UXQճoHlK7ƯR@=j8]59|6vgWUIY$@ kx*4_eе'.(<3-Okx8<<Ҽ޽֋y=xq: x ~lWXOu>JPv--‘2򭅜ke Q-ĩ 8b_YFk >ՕQ_"zZZ,2}+6Y$ BV q"F&;(S>`*N&A$.R+*˖I}E9ԣkvvg5OZ6>i4?kD*%-, &+D6=侻v涆om"E1WH$l20k6rBl#H#=龄QE|tm$r+U,GRp+qEB7>%{E~,{(@3_tݵF2wƫ[ c-ʎ1-+]0WUe<жގ!,2QbHעS`n3_{# Y3Ym9zݧk'y_߆g,Г_|=t:~G^&tk%K!['1_S¬VT]z] E#wV"_.-Njqd/]s~b:JJ_ 05kv cӧ`yjfTc'ɇ'UEymQ_NQEvdny`xKX|ޝKUdb.'}g sUo;Z?1WrX_C6U3*Aʾ ӮivvxRC@'|UKX%Y+X)dV hЏAďT|6N_QN3]R>ZqAEV4 :SHHP$jG@)RW涣EqXCVr%ui+:8):pP笯ĩMs<* +u%NjqA(+3Б#"Y$vNJ|kL=UZj.T${W"G'_bW{yj #kM.ߋfF6 czg\U)+g~GIAHcZTG<=Fi#ǩ>yw MsO_'Wԥ,v}+Cq[μ5[(?=ࢊ(+GkNiId"WXoy++φ#lI :uu[l+ PG5V9u|NJw=(O|(|5>7QۮG:xc񮺿Eȫlot?%gQEaEP1 pne'uڴF3gqQwC)R!E*è55h_ȨG,YRk䨪J͹u76$&)5\džd q4}A2)!u9Z 03(\ ( Ko0fnZ,RA.=+ϱQtZ;4%9Ej(B(⾳-n/ErlqzO{?,l[=62:->S+c$Uc@& wZ8ԃzMZC{iջT;SW ФfNP؜c#}5P+кs]GJǨ'!G I ti tt .ZWtgSYn(<('XԒYUYO`j c(Y-#qRke~3^&vZjٞ#.E9 aN[ϗ3ּN_w#ر}Qk;s]Ɨq>)3NÿUVeOjйEW֞HQE! OA@  Pq\5<0kĒrOS_ 4To緁ʚQ( 6N=܁! 1$ 5nVMB PR@u0%N5T%uY5vS J\)UxgE~(EF;#m݅QT#CEn-V 9^'  %[A, ,q$ ta. GWF֟KmY z~{?~KCO$gEgxf6ݏOEskO6W7U0C+,6*g|M/iInwTTp̓IJr2 I_&>qRO-Ay'g3!4.X>v]&zh&799>%e`*F᫭Ildž*Ŕ)A?Jq?VBK17}ik悩7ajd sN|t뎼Z𴽭O_g{YrdQE{QEQE |z6غҋ-/N{^JN-tmgΡc蜬oβVa֝Wo4zZzW[ D$)+՝/'㺞*%Jma+ѝeӈt\cq׸5j?or"N^e'FIh6\QE|Q@Q@匾u2gXY ==ZyUhV>f7 nZYS8UBSQ*|q!+E3P4aEZ򎠯 ]CnA"' R8ǩJ>!|KIRDN`\]r0AU}#2Fb_N3.VQE}qQ@Q@Q@Q@):iia>lk?CȯtmRx쑶A+GE51Fuq_?d4?wҧT}UEy/Zj>}x88kЭnmdWF5x|4Z-~_yS w&+((([9[ O.oq>@裁Uh&씟/n:qr涡ETu;-&\o8#s^{:eM 夈Q#$Z8S(&jt׾A5[*ݧKe@߷OZNOrWʽQ2+؄#YyŠ(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEW %tEXtdate:create2022-11-03T13:06:18+00:00k%tEXtdate:modify2022-11-03T13:06:18+00:00B$tEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:11:01 19:08:25k*/tEXtexif:ExifOffset190LtEXtexif:ImageLength320L+tEXtexif:ImageWidth300atEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth240x~n`(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength8349**tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3Z tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/cornerWidget/windows.png000066400000000000000000000541701444746353100234270ustar00rootroot00000000000000PNG  IHDR,@KATgAMA a cHRMz&u0`:pQ<bKGD= pHYs+tIME  *,~3zTXtRaw profile type xmpXY[r0 )z 8%u=~wAYy3 @5  %")Y&k-j'-SԤEM;eHiNӔ;\)&%`1 l[Bn7,b}KV|CJI&c/gkVqP&EgMhN!}Xk'D<a$4TpHR *}I9gQ #dFU=I§$ KAkܯ8H܂L #%!d"BkL' D~s5> "V(UWAXJda3Xc!iZ jDC,&ʊyhێ \ ,| V%v裸z)Or7 +}K`M=D' Aę9pE`â_W5fƋ ?'AG;B!e  lX>NeF%T`)J9DVR`b^ :J}Ŷ<Wg C8tS,")ՔS@pbaL:\=u=02GR}nJ . MmA|fyMPH+ B#ƅGlwG%:% ttE7[Ea-`=GKeL/HN8n5 5۽.NX}d Xi|v털>pLpwc~L˖2 VBaV3+s˽=3+[^Udd!S*4OUMyv/)RX ހ} }PN^\dr%Lj߻r«Gˣ&?ԇ/YB}.¾MGy>7J-sRc.Bѽ0?hRZ<=b4D; v8z]eoWZ})\hW¼]j7H-;=*:%?p,!AorNTϢw7FIDATxi%Yvs]byk[-L"R3?ŋ@`6Da Xd0D@B2EÖې!HYm"%y<Þzzk}y˽e֚Uٕ:k2#EƍsB!B!B!BB\?0_Vqfwmڝ귏TS^o#B?s@_!^c޽/xF^=>cnoν_gu&%5H` qe:ngvw> Q\{ |M>en TT^L\IM3J׮aot_1 ,!3oIޢ7x#wWG>'[ɔ6|?֩XLmb-׵S!8mWX`e`SW<)ԑ%=s-s}_vQ}/ſO$+Ü粠QjƼpkꘃ$Y5IW:oB`o~0͓7*ė-9!%ħ `pܿ{mo]}z~J{, 'R/WAPy2b1Rե$Բqo`1VE&@.?>e:{M o\[1w>o&xa$LRfgjm``^̯/&c4x[7Gv>lo_zBRG6W777Z{N[[?WV^]ō!WsIu#+H[1AVE(%-xeI  |Jtɋ7py$ĕ{[6vw`+ζ_zFbk9!K7*v&-^S6̴t&I(I(IHSKO R,ryo{rJ`+b\fqVmoo'ю֣#o-B}ׯPU捪[Jđ(tP;31x!Ou;)%DddI`Q7lDۻ{봽GukVkm kan+&.j7_!TYi`D`$d\cxMӕZke{ÄvAKvH [TŌ'ʍ,3tz G06UtT'ԐML OFK)\`z@OJy|$ħݏp~Gvm8ہ?3_4v{1/z?̯:{׿UqԢVlakU8uC&*H?P) SdYgXB۷#} g5K?fͯ# T5li5p&0i`&t5x2LU'%΅h_h|Zo6ӛ?oW*T[t2F ly5pd IoE'}zRY.S!%N͞-ۺKwEGwcv.rlb4|D:GWG7Fެf.i Z) lD c 5JQX3nYG[j=u{{w)_wţoUhްȼkT*xcƐ•$Λzl> FO %I4' R=R\!@7߹kyGˇ| ⬲bf'_g`x=QJ8< !t6"U7** Vv''=^]q / s[>lcgGG;"QWtʯ B˹lad4ao 2h1X;L;d1ڛPXy*Jrn<"i5KJ^i툔qX%ۻxwkv{ /n5˲<3ޠ~[fflq-RD߮k Zg[[7OJn+őqcmNd t5\%so?Z$yh Xo;;+\_>pm(h֒ŦR]cpL_?_&- m4qȈKeą[ ֧ an|wlW{Qڴ7ҵ!۵A p-Q (h8e5q)ȵcz^::A# b0sXoxP*(sM$^]>ؙۼv6𾮨4ntS\8T`1HjFZfloAivLhR0ܰ^m`{;= zE Q^X/郮ݺswpp{W5~_xZgn A/z>옺騒AWbHG't@z$@/B@f@`@3WzR] $}Q^%I`=d~o0gLpO(vC[7n7Giv=CsM߰shjf(AVun*&F 2rLBܓnO`?(Q0!zd/i%NWQL֘cu6wCmOU|o垯;+lF?M~Q@ V,X +U&BP=1*dR &O,½S434&usQ13R$ו njskpj9:\gEkmb/6^KM%N0onDL2i,nû;%x:y)8/u!9RMB+<ܿ_JR+s ׭ӡb + ^ikO"a%:Le9]2:^m}mﰵj GUo_V-~}vuv>ڍС6-zrXθ&=JB qJSp{-q·~Us}wjq3X8lwN6oiVVHT kCǵ5=@=$731VO>)ҮHQ̒O%>0h{>w7aW~:GyՏ֣[USk|vA7d;; *A ZET"=<6"2J1e^J`3nCWז2[~usk00 U/3~3t3 WTrle{=Šm\u|XE&oǟxK(=ړ=KxHi΍[om<ۅ6f{nEcV4˪1XU5ȩwÇ3~mq#bks;88H tAنv>.|-gS21;/tE"\s+݁0s@z[{Eso2>a9 |!֛jM0M#̣83!xEڀr*<6sM}Ad$8Wfji޻wvnze,64?TpImiT,2q^:Wxmb-\Q٭&d/G??<Wˇ艐Y{_~S?/ԣ[Kyyܨ~-rΌ|.d4XWQNYpʜl학,ҵNN>atVBIC.U2^\eںΪ …L#M%2Ip]MXOv5Qn&t&QOyF;|8CWQ(Rkvw,t)ӓYާH` !NŀL)RSQjml $fwy,ZxX {s(#-%#UĻLiR .sIRb@{$}%f"$% ʝXrK8d%82mj^: &sXbH`Ͱ<1}B( >O_X3)Bq*sJY,U9sT&w.\BXQ8J9oX간PpebjH`Ͳ9z <XL"%TaC"Fv %NUyJ8Po$฽Li6e8E !0"H9oѕKn @ڱ{ ,!D1e $SDk\:e2KL Y#R R ,StnOʼnQCf#%x*D9R.(K?,%Ba8e@K,Yu%Z*H`0Dɪ>!^, ZJubH`2XR gtY<ÒI,$ h/Ϯ9XB#P͗BF$SYXBSbX ]L yd'sc%5˴e$%i^6 ,e9E9HY)i]`F^02#Cg*?x^_/yɓBRy #r&/R f*8vtx$:4gZ6Gm &?+/y?=/|g\Ic|{zL 0>ݽ&=aN1l(0sLHG_>Xr[!70=[`T!tzkYBp :s~+2gשWZgONJ9BO)#`aD {EB$|yD$GG> D;r dx(:` q=T?Ta=76}5D<`tY b!F8(qfQ\ٽG`/}T(Ѷ}bHNg*׶JX]{iR#PL9,PEcs?*(JeRu9Œl= B aɉmpif B&vJ2EL)`f#ϕRg ڒ_<3 O̔mt`FGg qjD=։O] *eғqyoxR9f t4\Ls'''x:,K;pet*i%&\$4z@y$ #ɪu!kp#Ө(k9FٹYT\<)MYSk(m`>Esf pR%%ʎ$XL^{1=I;Ɠ@˫u4Fk {LKTPl4cfray2K`Yˉ])έuX8qf x4<`\ē3nnrA `fE$MWP K'uU'T'vWK9hT#"6d默 JB\|>`>jZ갦2" df1DH( S=dY~7Q,# `cb:108> 8rT9e/a?SJUoU13Ge ,1WC҆&SBUpBFa1|2B{ ִe\\y:Rzt*10pweYQ/*Q?, qt1@uU"[< b+8OIVpY1xf .=5 rO<Ë? P37] X,Bkxd9ʳ/LaE@ZT\y* ~Wy(@JhQL!` 6ʱ>U\< !/-kcDt=i%}ųLFL<5\q0s q?󎤽t}@Ò9Q~k Gw9iYB)NDQR̀@ĥ˝Gx +9"5ÆLJBKKO=|W-RGyJrJ>qFh*O &\(;?is&Er>@ 2:k(Ck,Zk& +\i2%)^:F%Iv^. % Nk;d}QByFR'r12RJ2:5GN4 UQ盱a@YǼ80o"z瀙SB;B$ ܦ{)\)gޝW^r3y@(WYe 2$+ՂP;0] qv+"WR\d`,%O :S_% 5üdyJ,SR#\egMf{oB<=ix)2ER.vDpWĥA`&sR^#c: 9gTbfb9G\",ɫ k<"z"!gqi,!e@kZ<3e H`4π<[/f op$N&2*وBx%E ހ@1um U tݺ\gx><bɬ LXa)}2=ᅘ OvGvZQf)͓qŔ(NJtL7Bli'W8&,|֍T6M˅vIXwI4RpeG\f`<%g2.ǥSwaBrZEb$Ǒei/g@p a#'<{&6$e-b*hb#Mk028EeϷ AWbj⩸4&J@^I+O@f", 4gf3x@L+O葁@vM@/2<׿d^稲>ᨋ+굍(J۫^t;UfFXQZ_oWWƛ(RX;Aj+v+bBDf@0OmFOJ;rSD?8>'n\GGnԧaޣ{T:7+sQ%|TtPw;:cm~nوi[]~Ɓ#L\b|sj*vhՑ#GIA}E7iͻt)Mpi~ui%Qmdvw^#*JZ3 B{}^o'ps0fmrF=':#]$:<#O,e_nŅ(Ú,0{ȬMpZjM[" ; QkdY㚚 ZӫmX^lG$:2e/¯Ȱ`nVGptRչEPQ-Hu\aԁp}+d=iT 'c$ T1Eid/,6_j`=d[7^O``y#n߅?M`\ӹvj]?::vtx><62Rܠ,=U[hSue9H H'rCœR.gR옃g|NCό +})ΎRӼf_]t7jnzݾ:wn GEy0ĸYX >Q偊-"C$D联G aR{O1F )xH.H3*i/4gG4FSosݭh- ސK5&=3ϼZk-FFۺvtpF_%#כCZ0fWU:2<zFBDIav}]=1'5ә?S8԰4O5,cfutxp;Q; v|--URV;vFOWr^jTL UQ0a$ʁg$H䉔x /##~+Jֳ ecf5vjo}Xt]ݫd\,,l:5^'u "ء )SA4$;79&D9=)*,#DߔR=%T3dY&a֞z3^ռsVsw~u50+lެzD/SZoej-l222Mc!I <9TĄO3g(&mˑYX/s(/;f{;noqk6.K*jŻJcR+SkgV5Fh+ԇhj)i"@T$Fd'N_җCczn6};fSQmiuF=fq8NF`"8 nڰRL!5qI&~ɐMzτrK80:<1fNw<lΕJ{;ڜS7WBUktYpQM}iyf2)]}ؘoZ]\A׃V:X=n97?D(I׻k;7(:RR\\PScStu*M“0â`gm&%':DL~{f7Wv|ةƇqމaԷ7\X.ӽN;hkح !+#U2o"(P+k_j"0 z$b|rFҭ$D q=w̬nǷ{; 7ګ[h\\1K+FsV w2Z:l:36eʆc432I bL!| @dXbLN~=U&{w>^ټ?vVvv~W*ylάsQP6&rsel2BHQ'@'ƾ3bDzF}Y ,qeLGf4 {;K;[[{ QsiMs]oWZ.6 F&mGڀSz&Hҁ'b"&3b[hN&BzJ`iw#2:-?]aŽݝŃEպwyV-ŰZc]n;sA@826ge0S&dLp0^:+O\ ,13j>+"uW0_ ^o^Эynh܌Z X-s}|N֒ re1smUJA8V6ʕ2Xtp9㭋.= R*%JPK mN__~$o>6k3i@][mVƙ}Smtu~dҤK"9b YKRP y7)਍zsx'#k`>1yJu}me6Fuu^ghh+$ 딆u HX}$Rҏ=SS!#Ι9{(l9 M ̠Il^q& qNp^!B!B!B!B!B!B!B!B!B!B!B!B!B!B!TXN#!xaDeXIfII* ,@(1 2i&&GIMP 2.10.302022:11:01 19:06:53 BHJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((((ٷn|-0cg; krO%6wpKΠ7+iي⨯ECo3OXq`w1a=+V9u{coon#uuؐqӎ9=2%}>0bB?L+V|aM2aYOԲqҵsF?hOEgqw9xFpkZ&$84[YW!s=E}#8HdsI䩑,0gImVut/no,1ḅp^=[Kr!&/q,.8?ןju5)g[}3.n76kn`'~9lJȉVW~qso0-ۗh N:ǥhYCd-bVd[. U}ycG4X׺ȶ. M#`u8ر7p-[400A>23Wfvozcڜmi 9kh*=لJKdEk}uZ%?1KHeԡF"QTdcszk!/D!;/%g{qXbh,}Lwp%-PYw]6Z0vA.<Ӄ!};湟c0J XF8\ϖ&tKi-->)ۑWFa rd cӎ:օ%%󥎯.㷒Y(BxP:Ha.\ԔVUKy1)h2Š((( ȋPkx'b#_QE}!i (,^ 9-ʺcσ=kq,ZmzCU-{NVrj+nbrFx&ǀ LRQ[P[#UKy1-UQ@Q@x Y}e+>/R/^~cG=\Qwϡڕb׏rW,(<(((((/G'};ӏxU⿍#_QEuWZǤ?RVTQ5>6QEQEPEPEP^){B_YJOWW*$?Ti_%zy_ΟcӟJJyŚQ]QEQEQEQEQEcxW̵nj<ڵ|^+>+>Hʥk!j|l((((S,u)ed?1#UIz~VކB>yƅݏ-zm5^B(@((((( x'XW/x3U_6׃4(:ϫj+_ZH|( ((((!K/%{]x Y}e+~^,|#0[j։0W-wV|~bp_BU9w"o!EWyEPEPEPEPEP7Ïjc 3z۽|^/>+>Hʥk!j|l((((S,u)ed?1#UIz~A?k  u?!^ږ]y+<(((((@_;п?pW?^ [I4½ 2h?=c?*+Яs?ƏW^2?i_,}~X\w.G$?]c?/g,}~X[?B?OW^nb/g*(?UW^nsOn9|&YYP@&Dߒ*/ jwvZ7P۳#^;a^\uNkݝgOԶAEVGAN1}*AiDBTTC^((((*7ÏgUw?`~? z9_G=8@-+dxJ%~VvE0QEQEQEQEQE_u_5W5#YWUMx#QEzGxĒWЍFf:_>N%Š(2 ( ( ( eť+K00SY\WC^uNg c$c\9e~[=8Z W'i_>0q^t}+,|o+<`((((($?U}+ouzlwOQEqVf[t|oK(0(((:~C)C zUgb| b"xW>3½}k~QEzGQEQEQEQEQE`xD_kq"V^_6W+>. (x:u2.cM>P*Š(((Okc\wuRSMv zUgr WY<+Ji T2_"EHQEQEQEQEQEx׳͵Q{=|^&7L]B(CBRţm1GdRykާ^JHjMRn]r3K[3[QLAEPEP\o_7qk]r_-cZEZ?OO*+8Χj?!^: g֡^B^kD(O$(((((xԿ3;|^3L?P+4mfv'Ȋ2z+o^+彊B?w{@2{O"l,n%˰{kB/*?Axl8yEka4h7}ks>sUW\}}xN7*~vҶ-4x}d"]D]ڶbNye12=vQokZɵ䵷/Z}3ڳ>"|Ft=Iew(sH;b1h$:rn=\Bt &_YI8\ۊ;?ܭsdUX/w (N(((((((@`m- [g ְd]im-; 󎽱\YV=mgi34nKЖ>iWui@?7 tPI{nE$ޛnWFgۀzt69[nه.B[Q;zW4VX&e,=o}X1s\1J$+awfKp`;G_'VimaZA#nxxՎ15q[˰o̍7vn^9ζQe-UdW wn2A=yePmnc+)L_701Z1XK*d_.&XEw$n9=1͉1h"% GG mts*&lD|^zNOe $L \MN=L%9S-QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEv&9%tEXtdate:create2022-11-03T13:06:18+00:00k%tEXtdate:modify2022-11-03T13:06:18+00:00B$tEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:11:01 19:06:53-ktEXtexif:ExifOffset190LtEXtexif:ImageLength320L+tEXtexif:ImageWidth300atEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth240x~n`(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength6139r*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3Z tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/css/000077500000000000000000000000001444746353100173545ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/css/checkBox/000077500000000000000000000000001444746353100211025ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/css/checkBox/Checkbox.txt000066400000000000000000000003631444746353100233730ustar00rootroot00000000000000 Betrifft nur die Checkbo. Um ein möglichst sauberes Bild in der Gui zubekommen, ist beim exportieren darauf zu achten das genau die selbe Auflösung wie in der css Datei hergenommen wird. Betrifft alle: Farbe blau #3daee9 Farbe grau #EEEEEEvokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked-disabled.png000066400000000000000000000011611444746353100264660ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@_[T ␡:YU(BP+`r4iHR\ׂUg]\AIEJ_Rhq?{ܽ*S͞ @,#J |E! "L}N_.γ9@ ie\tqᨁ#@R025E,WLIENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked-disabled.xcf000066400000000000000000000026551444746353100264730ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v == == =================================== === = =     餤 餤餤餤餤餤餤餤餤餤 餤 餤       vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked-hover-pressed.png000066400000000000000000000011501444746353100275030ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@_?R*v␡:Yu*BZu0 4$).kŪ "%/)=ffp P5ȤB.*^F!0-1S4<=||K,s>`2'2ݰ76->q%xԠ ?r]vsa?όN,ue{ϴmrŧ`bKGD pHYs.#.#x?vtIME  ZtEXtCommentCreated with GIMPW@IDAT8c]? dAlt`%qy<ˣtHn6b^&݆i 3qAIENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked-hover-pressed.xcf000066400000000000000000000016741444746353100275120ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v>= = = ================= = = >=>      >>      >vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked-hover.png000066400000000000000000000011501444746353100260400ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@_jT ꐡ:Yq*BZu0ChҐ8 ?.κ: "ƃ~{Ӭ鶙JLvE ":1YƬ$%9]gyst9>xMN= = = == == == == == == == == == == = >=>              >>              >>      >vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked.png000066400000000000000000000011611444746353100247210ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@_?R*vPVBЪɥ_Ф!Iqq\ ~,V\uupG''E)IExwq7*L5〪YF:U!0aC39QLs|׻8>Q&|, xxz9GYIRω #e8̨IGbJJ ie\tqᨁ#@R025ED,$~IENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-checked.xcf000066400000000000000000000024621444746353100247220ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v==== == === === === === === === === === === === ====                              vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked-disabled.png000066400000000000000000000011451444746353100270330ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@_SZ*V(␡:Yq*BZu0 4$-.kŪ "%/)=B4kJLvUyE YƜ$%9]gys9>xfxxzjp'tAG+.q.8,̰NB+̊F G 5pa Rcиd IENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked-disabled.xcf000066400000000000000000000024411444746353100270270ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v == == == == == == == == == == == == = =    餤 餤 餤 餤 餤 餤 餤 餤 餤 餤 餤 餤               vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked-hover-pressed.png000066400000000000000000000011351444746353100300510ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@_JT ":Y*U(BP+`r4iHR\ׂUg]\AIEJ_Zhq?{ܽFiV`tL'b6*_BA .3˘<=||,s>5o1'2ô77m>qdxܤ ?r]iό*ucE^xwowoimrUbKGD pHYs.#.#x?vtIME ! {gtEXtCommentCreated with GIMPW5IDAT8c]? dAlt`%G 5p/mKeÛ IIENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked-hover-pressed.xcf000066400000000000000000000015341444746353100300500ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v>= = = = = = = = = = = = = = >=>              >>              >vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked-hover.png000066400000000000000000000011341444746353100264050ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@ߦJ8A!Cu *U(BP+`r41$).kŪ "%~Zxpw}wШ2 nTRW+"!Lk,cV_.jb@@$aiOm}+*9I$~όqX,uljēqU)_yrUkuOhA_^:!EH ]'BΓ>A/K!W؀Zʼnq/)^cͺ|;N>Wzۿ?Iз \\5e ٔ])HS(3< DVqdW)Qϻ;oM?8ri(bKGD pHYs.#.#x?vtIME !CtEXtCommentCreated with GIMPW4IDAT8c]? dAg$`^5pQ@ƑW ϠBWIENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked-hover.xcf000066400000000000000000000016221444746353100264030ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v>= = = = = = = = = = = = = = >=>              >>              >>              >vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked.png000066400000000000000000000011451444746353100252660ustar00rootroot00000000000000PNG  IHDR iCCPICC profile(}=H@ߦJ8A!Cu *U(BP+`r41$).kŪ "%~Zxpw}wШ2 nTRW+"!Lk,cV_.jb@@$aiOm}+*9I$~όqX,uljēqU)_yrUkuOhA_^:!EH ]'BΓ>A/K!W؀Zʼnq/)^cͺ|;N>Wzۿ?Iз \\5e ٔ])HS(3< DVqdW)Qϻ;oM?8ri(bKGD pHYs.#.#x?vtIME  [tEXtCommentCreated with GIMPW=IDAT8c`2`d```]?5 ;$Dm@!> G 5pa RcиT :9IENDB`vokoscreenNG-3.7.0/src/pictures/css/checkBox/checkBox-unchecked.xcf000066400000000000000000000022321444746353100252600ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit inches) (xoffset 0) (yoffset 0) (offset-unit inches) j Hintergrund!? "     %$#v==== == == == == == == == == == == == ====                                      vokoscreenNG-3.7.0/src/pictures/css/css.qss000066400000000000000000000076761444746353100207140ustar00rootroot00000000000000QRadioButton::indicator { background: none; width: 18; height: 18; } QRadioButton::indicator:checked { border-image: url(:/pictures/css/radioButton/radio-checked.png); } QRadioButton::indicator:checked:disabled { border-image: url(:/pictures/css/radioButton/radio-checked-disabled.png); } QRadioButton::indicator:checked:hover { border-image: url(:/pictures/css/radioButton/radio-checked-hover.png); } QRadioButton::indicator:checked:hover:pressed { border-image: url(:/pictures/css/radioButton/radio-checked-hover-pressed.png); } QRadioButton::indicator:unchecked { border-image: url(:/pictures/css/radioButton/radio-unchecked.png); } QRadioButton::indicator:unchecked:disabled { border-image: url(:/pictures/css/radioButton/radio-unchecked-disabled.png); } QRadioButton::indicator:unchecked:hover { border-image: url(:/pictures/css/radioButton/radio-unchecked-hover.png); } QRadioButton::indicator:unchecked:hover:pressed { border-image: url(:/pictures/css/radioButton/radio-unchecked-hover-pressed.png); } QCheckBox::indicator { background: none; width: 18; height: 18; } QCheckBox::indicator:checked { border-image: url(:/pictures/css/checkBox/checkBox-checked.png); } QCheckBox::indicator:checked:disabled { border-image: url(:/pictures/css/checkBox/checkBox-checked-disabled.png); } QCheckBox::indicator:checked:hover { border-image: url(:/pictures/css/checkBox/checkBox-checked-hover.png); } QCheckBox::indicator:checked:hover:pressed { border-image: url(:/pictures/css/checkBox/checkBox-checked-hover-pressed.png); } QCheckBox::indicator:unchecked { border-image: url(:/pictures/css/checkBox/checkBox-unchecked.png); } QCheckBox::indicator:unchecked:disabled { border-image: url(:/pictures/css/checkBox/checkBox-unchecked-disabled.png); } QCheckBox::indicator:unchecked:hover { border-image: url(:/pictures/css/checkBox/checkBox-unchecked-hover.png); } QCheckBox::indicator:unchecked:hover:pressed { border-image: url(:/pictures/css/checkBox/checkBox-unchecked-hover-pressed.png); } QToolButton#toolButton_magnifier_rectangle { background: none; width: 24; height: 24; } QToolButton#toolButton_magnifier_rectangle { border-image: url(:/pictures/css/magnifier/magnifier-rectangle-unchecked.png); } QToolButton#toolButton_magnifier_rectangle:hover { border-image: url(:/pictures/css/magnifier/magnifier-rectangle-unchecked-hover.png); } QToolButton#toolButton_magnifier_rectangle:checked { border-image: url(:/pictures/css/magnifier/magnifier-rectangle-checked.png); } QToolButton#toolButton_magnifier_rectangle:checked:hover { border-image: url(:/pictures/css/magnifier/magnifier-rectangle-checked-hover.png); } QToolButton#toolButton_magnifier_elipse { background: none; width: 24; height: 24; } QToolButton#toolButton_magnifier_elipse { border-image: url(:/pictures/css/magnifier/magnifier-elipse-unchecked.png); } QToolButton#toolButton_magnifier_elipse:hover { border-image: url(:/pictures/css/magnifier/magnifier-elipse-unchecked-hover.png); } QToolButton#toolButton_magnifier_elipse:checked { border-image: url(:/pictures/css/magnifier/magnifier-elipse-checked.png); } QToolButton#toolButton_magnifier_elipse:checked:hover { border-image: url(:/pictures/css/magnifier/magnifier-elipse-checked-hover.png); } QToolButton#toolButton_magnifier_circle { background: none; width: 24; height: 24; } QToolButton#toolButton_magnifier_circle { border-image: url(:/pictures/css/magnifier/magnifier-circle-unchecked.png); } QToolButton#toolButton_magnifier_circle:hover { border-image: url(:/pictures/css/magnifier/magnifier-circle-unchecked-hover.png); } QToolButton#toolButton_magnifier_circle:checked { border-image: url(:/pictures/css/magnifier/magnifier-circle-checked.png); } QToolButton#toolButton_magnifier_circle:checked:hover { border-image: url(:/pictures/css/magnifier/magnifier-circle-checked-hover.png); } vokoscreenNG-3.7.0/src/pictures/css/magnifier/000077500000000000000000000000001444746353100213155ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/css/magnifier/AA-template-circle.odg000066400000000000000000000273661444746353100253570ustar00rootroot00000000000000PKN!V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKN!VZhThumbnails/thumbnail.pngPNG  IHDRzAIDATxnH@QWnH;36@%ğp0ϟ?78߿>>(胢>(胢>(胢>(>~s Zf}lgpǯVYbMm/۰;pti.cxvGO\~Ox=]k&ïۜ׍?d>- '2~Ź;r)=.b3](i8ϵabDpI[WqSrk-/T[u鼏~~|??W՗{z"8\o?|ɿI>(胢>(̷3>K|˹toSIׇAupv|JyX? \% W/49_h"Ł>{aҏ̿'A J.}ndR5Tu44ʹsW?=[^ӽxra>[.v`7Jsӗ{O'/.!wx˕;G::w>ha|#i5/+pyد2\[xhqwxS_2Z!t>1Z1x'|eȳ_@O=~o2_{_>Bێo<{o3>[w Ƿݸ6?l7[1胢>(Grۿ\ݙ+,$n~_ưvv c^FO/GENoqimK{t{q},߳]weM[}(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(B2kIENDB`PKN!VuVyEEmeta.xml 2022-12-29T22:51:042023-01-01T10:52:41PT4H8M42S82OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKN!V settings.xmlZ[s:~?"E:$'&&eJX8Ȓ%_YK˜@[Ve^QJ 'pGa@cׯ _LCH$D_3Ĺ®t*$& X*UW"iѕl}g2(8*b(_T5M+OC1x*ysvi=J.z|J儵b%E)ߎfac=FB V0rkޖ]ۓ` U)1T<~s:(>u-uz(k?plscl* 廛C_o)?^Ro~@>;Wb Qj: -B˕Α-pOLc G-6؃P ) ]_)ٷG7YȦ%G.Q~@)'V@P&/XZk..tq@`J}չAQUjuw,0UCm-o0twcUx!,]"9_E9R|Cu.$*P]J0M8e~yx?Sh,vNmGXD4%7Y m s0Eyh"on%7ap2_BTgȢKDb./M."׷Jx1Ӏ{V#phm|y{$){$)g\TY"W):)eO~x]o}[2gGp*򨓄((n>M,1G18,JJv9Ry#󑛻MS7}78MۿҼң #BQ[cNU{"熠6l($* e#VmA5eZgFZlfDS`.hx1nƧxuO|ZM&6ݺJff,M@Vf7_OR,,˾fY3Ěw$3W9Fw 8r辘D|)z=ˌ3 i#Rɫ2Fr_FPH3@ H OLU!ݧMؙ:RNP,3cI\SO%|RX7EENlahM.EKq"ռȮ޲4߿o_ލͭ 73/#?5X?ʬ7R ;0k=/ԦZOmH5V`xAWtZ h\厬:R}cPPv>+~S]eO׍]rC0`DƝtPDbaϏ^cq=Ou&寊#G/E| JRm;Z[zi&%Yu1P"Gu  ;;gCs膰l  M}r qG_gs#=aDߨي Uls0)j2gݴYqƷM}_|#ULYidlo2;(B~:]~S<PKwu&PKN!V content.xmlZ͎6S vol;9` e3#E~yIЖ喻,[dYWER_x&|0=5 \&4%o>,# ^4VBKhR>[V.)I,Q%Oeԥr.RC>Y] Te!{VgºvnPuNU׹Q@''VsR~~07WKv.)[;^ǎ N:jr)&αv!TnfA Z1\+9m ]_/zYl3)|L N u 7#]8O)=}yŊs #Fn*i]Rڙ*TKs} I.iEI8-΁r~HQ(tt蟟>>'\^.l쑩 OȎd2 u (pEM_`hË|Vt(8PΠX/2VČO)Kk*RH_ .*x#d$%8o+B'@fDrAz Zj*Nc`m9QN,Yq߆[`g6 IaVtUlfڐm`)%lmT ƌ\ϠPЇݴ@ \1tF:L~L#˂~&EQoP*IS\ K0 CVizľC@PN|5>_vh} Dh8_x#X] =3``i|/^y4n$Wp4'9< ϳh"J1ⴒ~đJXQ"}/=T+]E'|GnR8.)8;( kaX3-ӱyCܰ\ <:uEfw;B a%/{1:_ǰ|Fu&ĘʧLGҴЮE70F&X`^1Z7x&d+}g4TweX&-'u#?z.ws )!L,vjhnJA(v^Ʀ|(m-8,)g[UBecM~7K^ %0((-Pp3` K"K!]"4B]3>wZ7C(:Ӟ{3/Pk^}ythzGW 7^?r '%Ap_ n:>v^h8l ͼ28+ohT5Lԝ<R]vo)3"uf4Fhoȍnt@'lOh] a ط-vU'opԨ\%<>~忳\^|4`Od3;'awz5Pƞ~ap5vNIz$"{FSڳ@ekYB*kfBO$7ίoTH$o a=CQ\0*J ߈R4 ¾:R(9S=ϛ }ۍ} ~J| ?g\3+])ƿzb ˧k8>NhYC?et)"_$iK@ ŋgOƿn@{`aG"|y_Osb"<ß)Ϯe{'Kfupnv"Q uŖ|!F 3ȵy_iyd4( Hlg` n0y]x1dS[o-\ݾ0֨VpUUŰ7V݁wTnOZWa/" 2H'(z:v$/6f:DZn^4ŷ- 6Dz F.*~0f g+טOۉE?tI3PK`6.PKN!Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PKN!V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKN!VConfigurations2/toolpanel/PKN!VConfigurations2/progressbar/PKN!VConfigurations2/popupmenu/PKN!VConfigurations2/floater/PKN!V'Configurations2/accelerator/current.xmlPKPKN!VConfigurations2/menubar/PKN!VConfigurations2/toolbar/PKN!VConfigurations2/statusbar/PKN!VConfigurations2/images/Bitmaps/PKN!VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKN!V.++mimetypePKN!VZhQThumbnails/thumbnail.pngPKN!VuVyEENmeta.xmlPKN!Vwu& settings.xmlPKN!V`6. content.xmlPKN!Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKN!V\O( }5 ustyles.xmlPKN!V&Configurations2/toolpanel/PKN!V&Configurations2/progressbar/PKN!V8'Configurations2/popupmenu/PKN!Vp'Configurations2/floater/PKN!V''Configurations2/accelerator/current.xmlPKN!V'Configurations2/menubar/PKN!V3(Configurations2/toolbar/PKN!Vi(Configurations2/statusbar/PKN!V(Configurations2/images/Bitmaps/PKN!V.Y(META-INF/manifest.xmlPKO*vokoscreenNG-3.7.0/src/pictures/css/magnifier/AA-template-elipse.odg000066400000000000000000000274201444746353100253660ustar00rootroot00000000000000PK<"V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK<"V)~Thumbnails/thumbnail.pngPNG  IHDRzAIDATxnH@Q*rwHe`g=GP> ϟ?78ϟ5}PAE}PAE}PAE}PAG?s4!\c>V{X>9 c۟_lUma=Z>8.o7L_l)XIokq:[l@RV}Qtb}y͍KO!^[03nl[Qά^;~6q0lU1}\4㜱bOn:Hx:8ʋ[?9]>[_.RW\Y~v;}1lFϖ%MWe㗳uNw`5qU猽6~-;K_;~N5Z1y<3ZM/w[ʛ_gw~ƙi|Ye%/V(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(AlIENDB`PK<"VYdGGmeta.xml 2022-12-29T22:51:042023-01-02T08:36:07PT4H49M29S100OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK<"V settings.xmlZ[s:~?"En`C23&9en 02%ladG_,axϩZ#V|c78!r78E{ }9r`ɥNC"n9BN7RC.dDGDyI8%@+.Edۑ5Fd[jaU@ GwS"R:CCZ9E>~WZ l /h]~~6KͽuHg_kaZ]8e`uQBjNf!U=g6_vE*nvʦ$,!m8e+ M MDDP%K-8t^jr"cK}"oQx-[D\1\ůV$#m\0 Gz2O<16G3J1$84uFɱ6U,wۀys,)Iw !:`ڲt|ڒCŐx6 ]yQeG _$5|D]7Zr@/nc5-9\n=Z`#31<]Y6՟t-R6-,sU?PSEDvhbzbаB ONr|U?<|)''cӇXhU Q(+>zr +9KEEgS|ăݞ[2>F.],_⻄tZ߾+q`FzCw8YUC8ap"$a BPbW=x]N|IȪTwB2 ({*$4*Y߁c?cMҊFT)YQgPO)_HLq1=swm ;VہEYWZWf̀CVUQFBjXX3]3 kGY2VY0 HVjê-)ߵ Ė9H/s 9XHھ%}!}N .$ߗ/}7%000+4TgP `vWTCDu#Ԉ{Q>>$\$ "i|\y7$:r5yԛ)S0!A8,ΧܩId.̦בHXf\IЈvQőI;"P蝬0O6Dʍ4vׂ' ӮJx)ga£xW~VkI`$ݞ5B֔Sa96=}4a.š23eSgitD_e^wWvhP/ 6^5ßu: [7zoG՞Yű^ހѽ67ͿӇnt4N|6=cח.̑i{AϬ/jڤo+}F^ۅF lƤS W3ba cypU͊_5ǯΊ`:n^ &D/'@wJmvejUIRv95P63X95v!'˟> J];m3 jVuVP6,j,r,hš4=2S;hHn,u{zy1- m0˲5KwV~s@޷=D\5Zs>ٵd]6xAm]5/ =y!LyiiMnq}xŚoC?ʪH=s{PKs&PK<"V content.xmlZr6S4O2vSIeƛI9[+D2$!Kޗ_$ EF, t&<Ӟ0-a-4\4!nŷxOӔxx1-8|k`]TZzرbEQEUr\x%.Zsw*6ʪ5>XlzRYN5jҹƇ*S %ȋCFw-4w 6E)qWX&Umfc'tU]l64QVK+Pp1 ͮPzsbFaڪ=sUԋ]Xg׊UQwhg'An ǬŝrLW&/+뤨8*zddEM;Z:Laqdw Jo0ay6]„Uݰ$9 &3(&wt1eD*{Y2NH ڊЩ6ChL^+ ,Z:O;vîhev7ЎSX_W^[N-^47R {[h醍L7 [K1B^赑XhmLƌ\i`PЗRQsޭHĆs%Pt T8Ps ʒ%SYh)]зl#t8o,-Jdpq c0\WD'-l``ib8xx] (ŧ5Hr 8A\V%9-e])b>%pʅuNc# [~ܸb 9z%/k%@ bPf(O2R548^ H.0jZԗHN] JF AiꔞǦ8C-J,*hWlVgfE azWs^0(N)-{5$B o!j9w-{Ftx5:m[W "nFsw</,곹fo@=c(Ej,#eǃ]{7hp? =Wn86vMl$&t#oN 2"WW7e)o7xk8~5=7zXMaG{4Ёk Jp[#]5eZ_XWUȿ`8Y|@D<3"_bfV[<"(6$bwShigym|{yLNp}{a042B'xzrҰVjxix^)) s" $S(/f;H aEHAl+mгj~ ,ΰ-]zuZ\wqQjQvH2B;ʼnN|H6<_% ~a\btp"ei%%Ps'9XSߺ]BIL7752ph.N˰ڋ, v` EBasQ`5e̺f/Q74^[,nGc~Խ)+TPBvLq"|\u8g? #זaσ[) ?kht^n0?KGhzN 5E | 36G1- μ'g+-Hrgxuz 6ݟGlvJ*8eA2qB 0 KBoL.9G.sG=#pB*o ūj=Mú~LE0Qn^t16m9PKS9/PK<"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PK<"V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PK<"VConfigurations2/toolpanel/PK<"VConfigurations2/progressbar/PK<"VConfigurations2/popupmenu/PK<"VConfigurations2/floater/PK<"V'Configurations2/accelerator/current.xmlPKPK<"VConfigurations2/menubar/PK<"VConfigurations2/toolbar/PK<"VConfigurations2/statusbar/PK<"VConfigurations2/images/Bitmaps/PK<"VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPK<"V.++mimetypePK<"V)~QThumbnails/thumbnail.pngPK<"VYdGGLmeta.xmlPK<"Vs& settings.xmlPK<"VS9/ content.xmlPK<"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPK<"V\O( }5 styles.xmlPK<"V&Configurations2/toolpanel/PK<"V'Configurations2/progressbar/PK<"VR'Configurations2/popupmenu/PK<"V'Configurations2/floater/PK<"V''Configurations2/accelerator/current.xmlPK<"V(Configurations2/menubar/PK<"VM(Configurations2/toolbar/PK<"V(Configurations2/statusbar/PK<"V(Configurations2/images/Bitmaps/PK<"V.Y(META-INF/manifest.xmlPKi*vokoscreenNG-3.7.0/src/pictures/css/magnifier/AA-template-rectangle.odg000066400000000000000000000273551444746353100260600ustar00rootroot00000000000000PKo<"V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKo<"ViThumbnails/thumbnail.pngPNG  IHDRzAIDATxnJ@Q*J" qKlzL@ooo_ߚ>(胢>(胢>(胢>(G?s4!\缯?>9c~/L}6:l9ݍqcrY܇.cTs+/$ortƷ}PAE}PAY2Έ,񂧳toSAk뇻Aéz㙹>>Ck}}e2g/: pGX=vOsKOv (TCCɍLr6z6<{xקgOmдgemӧ[N\{Ϗ]~BőʃRXw>_V'㗇r+6~Ys6/rGzΫ_~c2 v^mrތXg˸rz(胢Nx:@DܝYy8{w.mW)y } 6NǮ<o'g$40cfL}7Or=r7.}7.Y/E}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PA3aFIENDB`PKo<"V3/CCmeta.xml 2022-12-29T22:51:042023-01-02T08:35:30PT5H9S102OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKo<"V settings.xmlZ[s:~?"E:&IN[`L [YW200v<V_nWqDcN q۵ܟO}r`ѥNC"9BWRc.dHGHyQ8E@+.Fd;+17"(e^^7 #=  HeiJfȻe3z_R]i%1,RiGR.5ڡ~ u _ YƁ.˳WcrWsBi?;y͟k$|j{[w߽-'q5a&AnP{vD,xA3Cy}7F|s)kD\!\ƯV$#/.\0 ' !q?C@rO39L_cG7x%C` 0~E0%n"3xAGԘlmX:Tnq1&^u\W^Tzr,VC:!LE;MKj1Wm 2oKR=/<<&ӥ##+4UMM!4-֦e鱊] 1d?7U~i0Q);'A,t7x -f0 ^B6Lf^\2F†+Qu &"(E7ǖ < y2.6apӢַ'JvQ@O=;6G+wh[?4H2>$tCU )`07iSdU|FttN*HQ;!8ۏ@B.8;Q)hDYzRssp?Cqyjs#dQΕxU_UVDSRn |?q:M*dW]X%凖Q2'iybN7!' I^+o("ׅo5e5&s&t2  J5aiGݻ-QU➕O~$Xb|''͖/5aVGz3%Jf'(gtl;5̅ٴ8# ˌ QU#"Ϊ1lF" IRZ \ |>ª453'0k2fimpugMe>=j󞼪zi㞹*Zif&>1}v]L/xw|}7;9~-pmzS &b͆xtW5RZvլ;}ǪE iV*qjq5hT镘kicX]->KD,U팡Re. TƆeZ̊CAwme{s喓$%zwRYj1k-qeU]l14E 7 rb.Hՙ)_̮ <Sxrx[v{&ǑW\:@2R/vV)T-vak۾=+{FZxT"NSc8"@4g\Mvv_>>[\Q,liQ5"ӔX=CZTTಳ8"X ה2@JmYOawYs< $7dwL1EIE{EǶ\CF=dPcF8Z7 +ES~?lm,ـv-QN q]onĝՎ7l0Mf(Ǻu^5g3՜zKҡF#ă)qge0nb6f-  }H} ,¦->z'!E1)]UI*cIGfik4[cSyP,nehwp;]})85xl^JXӶS}޴ TzX2vbK`Qe.}juL4;HX"-e@n0o}?)6{`0Cn^7 ̌fi8M @Wl(pu=v]!KA7 vG`v qP !ٯ!/p\ W(A2<nl1!f. o.n;iNnӼJDJJwֶkCAT?J9vdm=VXV/(O]~8V_]Ƞy>ݗ%פ~4ݵ]?Tp0\dŦC##R[$&\COԂQȒaLCچT.ij0[#V+wMІWZ %fygUgٔ(Ȇ@NLUg 2[al)Խzk2zMQ[\=Ӂ2 1o`O䀋QzykKj& +x; #o x*m[3E{K=f LDo ֔e 88'񥩁o" >sIcGuU f$UCJY77]#wEdt%N/wBӶg΅mŸ&jsdơD7(`&QYon4.NV渽HG8ԞPzjVfϾSZU5N ]ˡ,V$I6pg,,@9=3?FvH"ВQ$C>_h1(qdkII%}]{|RjzoFA8{ :f">pל;l!noG@`R-( '򓋈X- ?eU Od\<Nw/934CČ= uW՝6k wekMjcTPKn..PKo<"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PKo<"V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKo<"VConfigurations2/toolpanel/PKo<"VConfigurations2/progressbar/PKo<"VConfigurations2/popupmenu/PKo<"VConfigurations2/floater/PKo<"V'Configurations2/accelerator/current.xmlPKPKo<"VConfigurations2/menubar/PKo<"VConfigurations2/toolbar/PKo<"VConfigurations2/statusbar/PKo<"VConfigurations2/images/Bitmaps/PKo<"VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKo<"V.++mimetypePKo<"ViQThumbnails/thumbnail.pngPKo<"V3/CCbmeta.xmlPKo<"VA*Ҫr& settings.xmlPKo<"Vn.. content.xmlPKo<"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKo<"V\O( }5 lstyles.xmlPKo<"V&Configurations2/toolpanel/PKo<"V&Configurations2/progressbar/PKo<"V/'Configurations2/popupmenu/PKo<"Vg'Configurations2/floater/PKo<"V''Configurations2/accelerator/current.xmlPKo<"V'Configurations2/menubar/PKo<"V*(Configurations2/toolbar/PKo<"V`(Configurations2/statusbar/PKo<"V(Configurations2/images/Bitmaps/PKo<"V.Y(META-INF/manifest.xmlPKF*vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-checked-hover.odg000066400000000000000000000303651444746353100277240ustar00rootroot00000000000000PK""V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK""VٴDDThumbnails/thumbnail.pngPNG  IHDRzA IDATx=n6@aeeH[bשSdw 4=SXH3'Ij;f"!b"!b"!b"!b"!b"!b"!b" ZYMJx bRm+1I-v8p7mZZ/r{qa+G~;V~$ům³M揄YnX>bZG2|%m=a]}o:*׵AX2\.]/}pbtﮆw:p~$NZ#Yzpu7sb(Ny!&9~S?% TMdZ/knܪoJ vuN{1G7A'%.o*j^]s7{~z7Trqإ~Ql ;0ez6~G1O{7oSFƛ\iu,;Y7i-_,/$[sF=Ut <,eS_Vt' lUtrfos\/f+X朿8L;#soys>2֫qp~[hw؄[xY8s~"!b"!b"!}GRt|^ѓ7~oaqQX,m]¨1'tuYdrIK֎(Uom"ȮkpF}Y~1J^lI!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"}}}=}p2V2a=YXIm>đk"8ǺM2Mj>BG?;DV3q, Hh>jXW1}ԃǮ8׿~%Hd> X1T}X 7R$rgcq6W$r!d>X?\|䳒P1xKU=+a <f"gl Oq&!Dw;#7Inn᪝T}sGm>R6?vƄ},!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"^IENDB`PK""V$OFFmeta.xml 2022-12-29T22:51:042023-01-02T20:49:05PT4H11M31S85OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK""V settings.xmlZ[s:~?"E:&IN` 0`/SA|,9 0\ƎwuZݭ6\Ȩ侠~Q Ļ/]χ߾wQR7 q. 1}!H2beivZywt9![Yb 3rX,,+ۡa<<9.%S;e=zw>Mh9aX"xIQYsKy ~p.{ZedX;CUrLb;.U*aXxg$M)O^k,*6I]2tp@`Jx=@bb? C*[S;%eXmCmMo0t{mUx>,"9_I9RMu.$l PaE&2T?<)g4;'!,"S,q9 <Ы4KX;ђ?$ ȢK|v)܅YX ;fSzM o$ZGxkZاE^u;bg~OȲNDEpTI]w%ϼqzѣZZҘDւy%z%Ci<ΑݦéǛ> {Vq_i^aW}* BQ[BjhX Am2F'XEQHFFl ڂSkʤrO ,5'Lɉ \bB-ݔ7j4"|yMQGN]?Z5S& AnzI@Odk+5IƹK^:wYl"3杘<`IsƠtQ>]<63\O3A7{PȜȉM:lm ť(t)(-K{V]ߨpc33mxʫQTfݑN_aaM뺁6Vjkh]Tc73jOWt q'9#kگ?TOi۵9T>~馮zʄhXS=}Y!oi1KNm "uڸ]/:=?Cս#:ZŢY՟%sgd(zpKK G+p%)S6wKZK}ӪNJR9Yn}KWX Bgpd0gځ;];B/[n϶nT_Ui617>F􌪭ZA6㑢v,֠o.kCF|mS'ISGZ6); mRJkSV.HNF)ÿPKilm:u&PK""V content.xml[r}W^DR{U'M% I! IYR~"|6^@Q)[;xl O_| )+2_2\jT:^-R^HUXɡix5gAr'%eʾfsUj'RR~зu],-kߛ{dBQYb8] $HJfLd\8*RV ȪEI* uc[Hfwl&`gx*n2UDpoh=2@VcAױmϒE}IkR*Eq8΁t pQM08dr=}|$=1}ؠyUGh: @;8]ӎB0o`eh=.NѶg[M$gIAׂtxd>N3:qL_cDj-ȀltAJIf RRNY-p*5ۂ-rl[=~W|\=) 1xd 3 !5ͺ)G[.y!>DomX&eMIq`}>$fB ePtŗ.4M[n#]/][eFscKf YQmq"Ms-EK08 cVK@4pJ7-蔒ktrm:&ri=4ӄW}Dx "3\~&%Gϼpz7n( pV,9<5 L8f#VĊ5/RLҌV"[BzO-K< !NttC3O#fVV^ۚo&V,9v[9H3#o.,*8Kf?#V %ĵM?IM/.4v/A8rtG{0Ί7*c+"|NxRvYamMsPV\ֲ]Uk8M\ Y><.hu+h9!rtM瘖1ȷ&fofoep԰\E<~_ .VoI>/JMg V?8Hzf}V~KHaak^>Z:`ͅ+ p( |-xw0bUjT B5\o_?Hilʉa Iq!' F!F?T6%>zuN!jdLΕAs  4SpվАJN FPA:gNinBupP|4Fn]5?VPKTDk2PK""Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PK""V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PK""VConfigurations2/statusbar/PK""VConfigurations2/menubar/PK""VConfigurations2/toolbar/PK""VConfigurations2/floater/PK""V'Configurations2/accelerator/current.xmlPKPK""VConfigurations2/popupmenu/PK""VConfigurations2/toolpanel/PK""VConfigurations2/progressbar/PK""VConfigurations2/images/Bitmaps/PK""VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPK""V.++mimetypePK""VٴDDQThumbnails/thumbnail.pngPK""V$OFFmeta.xmlPK""Vilm:u& 7 settings.xmlPK""VTDk2 *content.xmlPK""Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPK""V\O( }5 tstyles.xmlPK""V(Configurations2/statusbar/PK""V(Configurations2/menubar/PK""V3)Configurations2/toolbar/PK""Vi)Configurations2/floater/PK""V')Configurations2/accelerator/current.xmlPK""V)Configurations2/popupmenu/PK""V.*Configurations2/toolpanel/PK""Vf*Configurations2/progressbar/PK""V*Configurations2/images/Bitmaps/PK""V.Y*META-INF/manifest.xmlPKN,vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-checked-hover.png000066400000000000000000000020351444746353100277300ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxڕV[HSq;ԩiFᔑ-]!DB/cE/I^z+.ADPThOn3]3ls>8p8D"I,3|@ `0l:ne#}  nhԲ2co6yحxܰwdxjj{zzlmmۢ(Fr@𫅅i? hN2&Ӧ / *'C\^wOkk1,e<xk-,EFaiz4Fx1^摤 Ԃ!p6.wI!@[FZA{\H<<»T-GKq^$/&y.w:߫&}݌J5Wc_# &QLbs?'/2"4bݒB+tUDo2Cd5DjƮb \Z1ÇYmѧQ bdC$r|[8-}F}QXT(AIL;b I"IPSlrXV7I4"6T0Q+PY`v5n ʌ"4زb)2:?([tpN2{&&%sn/3XltGDWWWw'Er5Bm*`4&f5a)- Ψ@ܒIZL&)++{GXYjii9>44x]T$nlp)--}Oڭ2vl9R2 ((HiteiY ?AC=0SF sn MMM=N2fR'hfז KλA,IENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-checked.odg000066400000000000000000000303521444746353100265770ustar00rootroot00000000000000PKN!V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKN!VǮS99Thumbnails/thumbnail.pngPNG  IHDRzAIDATxMv6@a .;Vl;2]0U%3qd"[}O49'稺}͆Zݍl'Xķ?羿G=TaY,Tjm= OZn0Qn3<9r|".rtoEC>DC>DC>D3: 5~QZ~=\ oвpx\ϭ^n?"6Z.K)+_R1iݿպq*}[S$1;9a-o '%.7RRjZ]s=?m  xvz`(?U1ez6R}v>kzc&8x;_a;Ǜ兤֜GϞKy|0t!OeVw tlY.:92[ɷ߹jelū-'elۘggBa~Ĝb-y{·[z5DoWvp~ 6 81[9nq~+b"!b"!b"݇_Z?m>P]3=?T"[.j%r㸠/"Ke^zY}T }U}8/"Q߆KyW*gWozVcM[Դj'7祷sge:-7R]=*(oL8C 1TgPLMh򽀼{6|V9?=0Eه}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}GKW'>*|*V.?v%C5~|,WPFI*DJKd>}2LǑ8o_b" !q<2GnSDFB&#<qȐȤ}qp DBfc3#֒c !N>6խ v2{։E}T|Vo hS>\nMka}?3}T9b5y#fHsq{zB֌}&2sI[F9]LGu R<;XG>p"(CyH[!4yp"H)lHy{tC;sqԨe,N}*IENDB`PKN!VRFFmeta.xml 2022-12-29T22:51:042023-01-01T10:55:58PT4H10M17S84OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKN!V settings.xmlZ[s6~0}h&&L`,sˎq%גW2\jmg!}GG|:e/^P|J 'pKOB߮]~{3N}!u~b +o∔)`>+ VnlwG%0<,iZ1F (#ܝKR2sQ֣wSJ_ K /)uqv4 ||.{ 6Ow΅cVm۵=aoPSlNH ن3.}SrMAX~5 }?g30=Baa{Bq'phW8 ])>䳣Ɨ~U2ב͎_\>h>Z߭dhuhр{f2P(T\I٦顉CÊ1-8e~uxRh$Ma `I(( f&O^ ݹ܄&!E"}XE]⳥^rnb'@IBO=[6;2vh|TT&P1tzMKy kBav6lN,pb(F(?Mdq 111g HiIc)8+JCi|nM8Ji]aW}*UsP[BjS, yCPdI:V!b" tdTlʦ-(?TR&=tUf9aJN41悶Ǐk tS޿hCe5&6)úBcj& AnzA@Odg+5IK^:w?W EDgb;1qyבތA|ûpyOw9sg&0g^yJq&A=ɢ#vD!y(_?~. *ith!)#VB꓃FFdx6bSZ}WK+Z-sjYKVZKc:]59s9,U̜@Ul.J5ԳDCJe{sX("Kv]+SAI ߬6#5+UEwي5Y(I$.wy <zL]M滊 'ߞ>~UfsՔ*?c3`:YBH/iMJ=)94#aMZJp?#]%HyFkڥ)59!tQNA),)xkx3}K#26- Tl!Uquo&r'S@M咦W1,J֬$-{3%B  !f9w-n{Ntx3; 4sg=G.q\XTp<sGKk1#lW˓h{^]h^䵃pf_a;4nT4VDҝ<<:2?Rښ [ZvU4r-dMsխ$іOx5cZ .EEƖvSr^7$Z%X?+f65Xxz [5.!=Ӈq#yghq꤃ApR7x*zq!DQT9Qe,L r"q|= M")'3$ťP+SR۔93 PW~1Q!K^D#7> (by.8\wX؜YLJYɃN N   Hؿyn@#0s$Zxz`' 34 l- 3:Gŵ^?Pzt"Pk_[ 5?T[W!ÛtG '*Cą]vJ6PE!Z2g;҂o:3RjaH-$6m7y^x1`[oMv* * J{cV e\hX]4H^F5xd^Fp v[eN prL_ DěN,#06ҐD~t*1Q4у4Mu@Μ!WC ]-Я#9'1gcVfl/Ǻk/kp)fMוPK3n2PKN!Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PKN!V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKN!VConfigurations2/toolpanel/PKN!VConfigurations2/progressbar/PKN!VConfigurations2/popupmenu/PKN!VConfigurations2/floater/PKN!V'Configurations2/accelerator/current.xmlPKPKN!VConfigurations2/menubar/PKN!VConfigurations2/toolbar/PKN!VConfigurations2/statusbar/PKN!VConfigurations2/images/Bitmaps/PKN!VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKN!V.++mimetypePKN!VǮS99QThumbnails/thumbnail.pngPKN!VRFFmeta.xmlPKN!V)ts& , settings.xmlPKN!V3n2 content.xmlPKN!Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKN!V\O( }5 istyles.xmlPKN!V(Configurations2/toolpanel/PKN!V(Configurations2/progressbar/PKN!V,)Configurations2/popupmenu/PKN!Vd)Configurations2/floater/PKN!V')Configurations2/accelerator/current.xmlPKN!V)Configurations2/menubar/PKN!V'*Configurations2/toolbar/PKN!V]*Configurations2/statusbar/PKN!V*Configurations2/images/Bitmaps/PKN!V.Y*META-INF/manifest.xmlPKC,vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-checked.png000066400000000000000000000017151444746353100266130ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxڵV]Ha>M Ӊn 𢿋H!* A n LCmYlswOB<<\g(;F{X,v@$}|P͛z~vGpD"jw >j4?Dfy iAx># BZL?555p\8NڔoBР 5vZ_' $$d:$U \:u 1Dr g{~ R+8T6ږDBessd t\nP3x|=wV`.tZAzc%$EVmU?RW*4gG'L- <ҸS!Ua&*aV! (ѓXk,IC [lTB>bZj'9WK!Ѝn仏iy$_= ~K؍*xD@/xZ"lUC`- 34LxEրN8G2@VC4sR"Rr/vKG4/~Jpp,PSe|d2#+IP<J4`V_` d6O g9al~$Z2d[䊴-lP+MߒЀlKUE9"s hr-*YN[[3UZ\[Z5;ΑMq3¡D.XsZ|T]4χr_+#"DXlP6vq[j)^,SE [Lv3WNϷ{6IENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-unchecked-hover.odg000066400000000000000000000301101444746353100302530ustar00rootroot00000000000000PKX"V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKX"VZpSThumbnails/thumbnail.pngPNG  IHDRzAIDATx]n6@amt>gy YH@Gԏ< Hdʢb~}~~&On>DC>DC>DC>DC>DC>DC>DC>DU67x̲bzݸv }|=ןsHg*cX7o[O0Y uQZ򿮌uu}^ oSqnvCy}*rYWq XOG0i_jM܊ӫ75D_1~$6N*.Jlx֍)UEU^avYϱO'7Trqإ|Q?U;0ez6Rc^k9OU_<z㗞;_%_ZFRukw+_ϞKb-N*ũ4omy*_rhE%eWF+>r˙JV/F+mЭ/F+\8 Es1Ƿq 8n܅wp| 6 81Ƿ{9nq|+b"!b"!b"/_˾(\ݙbt[X(K[02qCg?_ZE6oxv@) }]8/"QߎKV{uz)[=$5mqyX3uO٪~FVwgTŽ>t#085:I(nXg<ӹ|F6w'iӑK^_l/:>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>>>>Zz,(A3b̢ؕǑ2V2u\_֦Ld>Ze俪V2d"Q=y@b$2igX!8ǺJrd3c]1&2)>DZ>Yd>q)2]2Yd>N~U:x1>b㒋|k}L݇6هD}op&r,GqMs8Ň'4ay屘d"1aNi>UD>s,f#]H5Ni>Df#Gj$L#Ƒ"-#GKQH8q$Xos(c z?wkbIENDB`PKX"V`EEmeta.xml 2022-12-29T22:51:042023-01-02T20:50:48PT4H7M32S81OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKX"V settings.xmlZms6_aN$טc `a K$误dqvv| }ZZ鏕 ㈒A]AP!׷k?Dg3KЇD\s(¯8\Hxp4d'Vܟ]6#+!7"(e^^7 #M  HeiJfȻe3{_RUi%1,RiGR.5ڡ~ uo|/Qshu^w@wY ]˫9T!]<~:s 諘+rk侕 f2lv7:7o?q~ g"\x.5b{w[H _ț_(j7_ Fą+rejE22@{T'Cnoq?C@r39L_c=G@`SŒ!|x?"XD}7RL_#jLf Kʇ-h:8u@\ `aЕ|IARGءx)6&NӒs̕Amף 2?ޖl{_HKGnWiRg㮝>TB,"McӇbȾp㫭YL9L>9 rGWBE \%m,+4KXYp%.:D9 ܒA0r!@fe',[\ 3FM  CIB Lqk,>v:s:'GVpAYlļGu, C?`8;<*MR0BϠbP꿐c{no8w6! >x4Vз'*?J~6tU1 :ڰ)hKw-)=eN2 ĜnBN8!'k pwqtF.$_/}7)0004T'P+Մ `ﶨTKCDu#T{V>>$\$u A 8,ΧgܩId.̦אHXf\HPvQőI;"P0O6Dʍ4vׂ&쓣ӶJx)a£xG~VkI`$ݞ5B֐Sa9 =]4a.š23eScwD_aNw_h{P/ ^64ßu2 [3ŏZ7#;m2jFft&$NF֬_6=m.̡igVMsޓWUW~|YO5m3We>W+6@SOucܮWx)oOmw75ǯNoJd2Z@G_Xb":[Y1KdT@E[`V\{v,4((:vuoo̠ۯZiA0Gּ˱e 4>족A]rc#hJIa`Q_UͬZ°HSV.HNFGɟPKjs&PKX"V content.xml[ے}Wrx'%R?*W$W%xIEB#)?_ P5Ԍ|YY5@Ӎ w?|{3W5Ń" )6?o@Ӕxx1-|k]+bEQMUr\X%.Z*sɖBXf*sف.ZϟYIs,tΌy9␑e\Y~7IDQdณ+wU&Ֆc:V+ceU]lhCAĜ73f6^60[TRKSKTD|C :ŏ=|\\vU\rRZէvr\׶}K>+0\)Eeq8ρr~QO(dr?}|8G0y] EP#S$ -*l*pQT VKZ.@Efq;,ϦKmE7Us< `uL脘Կ"Եࢂc[\KR"t dPpPIo5+E[ƩTpWll5<ʱ!*nAV^Ss#t!E#45(ִn*TnI6`H%Uގۨ%+Fpq`~>R |m.SelЉk)]0l@t}?zQH;n)_`v{`. >Iedl _e5 =Iop&O{ϸ#`+/ܞƍΚf$9geGD ?F(S)k_e8esO:*Ʀ(G1;so"v^0.BnehT!rLFnFΗ "vRD~Ⰶig ^Lػ ]]4ՂHڵ܈vyGCgK)oBY wpFCt7?Pf7i @+Z.0d'o$2ɃsPDqSpjfh =F26-c.jquo&X%T4?|#p8.Q Vn,wC»D(B%B!%>su:BgvA|YZn}ӱɱ{hn? 7NwusaQD\7}qL*h!Ek/|'#4o ͼ"8kzhhT6VLԝ<ŸR]vi!-%8EHȴ|W3 e־!b8H2̻<ZZqM6I *vE,,7ε!mpI4ۿ[B̀_6?pvf|$VOs\T_}'y8SF`.@a*P{ 8 |-yw0(\ լ2jjy 8!ibʅi Eq9n@rtm*tH!jlLytGmv*P %VшƧpYi;H17389P@|T3P"ȳIt4>/:/u;B\ԅ7 `K[B Z_wNBuoiRy_[͛l qZdc/ gEZZX~LU!0-R` 8:ئ-o^y6^&뭷[.v_EXiz*jhGʭoGEs_.~%xMd^+HsG NwV#Jp߿: ӶGY~fuH5kivm?`m"ϼ|# %;jpZxi#bmĦwZ?BAh~q}^[ w _uw˽^{L]Q5ܰ& /PK0PKX"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PKX"V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKX"VConfigurations2/statusbar/PKX"VConfigurations2/menubar/PKX"VConfigurations2/toolbar/PKX"VConfigurations2/floater/PKX"V'Configurations2/accelerator/current.xmlPKPKX"VConfigurations2/popupmenu/PKX"VConfigurations2/toolpanel/PKX"VConfigurations2/progressbar/PKX"VConfigurations2/images/Bitmaps/PKX"VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKX"V.++mimetypePKX"VZpSQThumbnails/thumbnail.pngPKX"V`EEwmeta.xmlPKX"Vjs& settings.xmlPKX"V0 content.xmlPKX"Vϣ[[-!Pictures/10000000000000200000002000309F1C.pngPKX"V\O( }5 styles.xmlPKX"V(Configurations2/statusbar/PKX"VP(Configurations2/menubar/PKX"V(Configurations2/toolbar/PKX"V(Configurations2/floater/PKX"V'(Configurations2/accelerator/current.xmlPKX"VI)Configurations2/popupmenu/PKX"V)Configurations2/toolpanel/PKX"V)Configurations2/progressbar/PKX"V)Configurations2/images/Bitmaps/PKX"V.Y0*META-INF/manifest.xmlPK+vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-unchecked-hover.png000066400000000000000000000014451444746353100302770ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxڵVIoRQ[2 Jb  ¸3n].Oa\V Sb`l RC{yw\.wX, ) Nn0^*-OR7͜f[ͶV Љx(ZbͦA8/$[Vx"ɶz m0N/Y:TZ+UaUYcnt#Ha6=7??NV'W)4S^.|"j$d2 ]'R)";ѷ <<͊  #NaȥkgX^Q#-T q~(rHm \edzQdXب@zvp4EJ މI5ڬATUyT:%B OZ6#>:RX g\Tnt:t\H9`\~/jRrr+:W$_8=lξ&W\x ۝ w+roщa{vӎ3ϟr2psbXPW a0L5p,{5|*6[8F38SE ~N{WLg;CGXaA~l|0.[UJ誈 ].rӾJMNuvص0&&gIENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-unchecked.odg000066400000000000000000000300671444746353100271450ustar00rootroot00000000000000PKxK!V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKxK!VlThumbnails/thumbnail.pngPNG  IHDRzAIDATx]Va"u]FW6]AхLG8`&sM<~{1Tc?~A}D$ >HA}D$ }|-s\ s-6Eϵ~Ot}dgUXlϸI-v8n,lcoȃŅ^~~GwI6uól>}y?뿮[(u u|%=iC}oF~uU^jŒry!_šqsbk5GwiNo|\?NOZd׫7]w@!k1oz//>^oIA}D$ R_Y񣾌һJkjPFZ ;s~JrYg@aIb_atTK۵z7nշW-?)Rر丧H&⤤%yF[z7z}Tw͍^%7TrKe7؉N^fd#|s^hr_F~;zwo[X&|__Hjn|gyKq92XaJ1tn1 6V29|/Vċ_يU^tle/'f+\/f+Xis_>Bi>b.16y{=o]ЄzFjio͆9GߒD$ >H~u~/}u"\y-qlؾEbeF8^г/"K˸^@K.ۙLG3ٸ޼=-[#77ynQcׁcH9oy[ ߲՜iY}Է.qRٛ/Qy>-ˌ܄F4 3Fvw#Ʈ3秗nz _x>HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$Ǐ_}WɻDXR+^Q"ыϿ%LG]FP$LGa7balG1xc]E":ǺDc;xc]>iX=Ǻ5!qێ(2O_C$}|2M[|lv珘 B 0Cӊ5s\h>: k?b<] M M~2Sro~0O')LGqr:#j>j'G=98 xw+Gm>ojuѳ q,SЫd|]xXPQp GD$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HAh-5IENDB`PKxK!V gEEmeta.xml 2022-12-29T22:51:042023-01-01T10:27:49PT4H7M22S80OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKxK!V settings.xmlZ[s:~_nmeecjS606L KYd`pLUql[VB|bPXR(+D< ?qPo_lx k8CؕNXuĤJ X*4Bd7?mp@9Q\^._7_hUM(FL@ |}ZY?RSh9aX*xEQn˛wYsky Ax.{Fed1X;CUrLj{.U)=g6O_8 O]moKKOo+eu0``zM!_Ga@x|h3n.ϳUr9|Gbl1+c-鯸q[lk)Rz%Cz l*Y u@bqr!nH}<ވaQNrM' Ĉx t]qQ?[ ^ HL(^vk\|YISsoh|[CKO?d4m-XP]sExd("^VQaɏ/CÇrNcsrn"!(?RWPX)Zm,N5x  )6Gݜ[  b=[tķ90\+CLzNAw)?ZC8gp"&gHrZGV5 bNJib"(2dΏ,KTq7 Q 8(n?M˺lOG1,8+J*v;(<Α9~m#{CFY(k8PԖX]%(m4(bb ȸFCنMA[P~jI599 $ Ϯ%tAi!"?n^[TIabk+ӭk4'Pf8jmQ8lF0 |wq$` rMj7[Ly/!O:rXڛ1(]`TLwxޢ>ǻ}ID.,Ǚ78FQQH;"ݢ)`Te4w8KKZu`Ir|ږQ9#%" |eh>H°zR?8f5¢%2|.rb{D;oty- ]EzSEG/?Ʒw*\μvxrX\`7YVn_QaC{6jgd݌Uc Fw;nO_G-Ѝ&ؚ9oocWvcU!t?&2Z`=7@_OAØ7.POUmҭ;+ %O4% 1sߦjzMFuzcDu"ջ+z:]_& wl(z*+ !^g+t)S6KG}ǴӊanNּ*Ne# sj7N߻vdtuCxMMMC>;Veo0omEj 9g΋nZC\5Fb$˦xCoO2FmrvSwN9RJkSV.HNFG)ӟPKEs&PKxK!V content.xml[ے}WJx'ER?T$W$xIEB#? P5ԌlghtݧO7.!ϴ\Մcں<{#ҿ}'^/Sr\0#o z){]U,)I,P%KETb.Rc6[] \e.;E3 aU;~2PU5|3cMDXqHA2V.-kߛ{Ϥr8Dogpɕ*Rib j11Cs㲪I._j64QT rbHe3]/ -fL⥪nv"WU>w..;*H9M)SJ;SLvak۾%E}ExC@9 pwIā'\Kvwu:9>?'[^.lf葩s͎Nd6(u*NI%XEfq;,ϦKmE7Us< 7`uLԿ"Եࢂc[\KR"t dPpPIo5KE[ƩTpWll5<ʉ!*nIV^Ss#taaGhkQ ֭iM5RTܒm.QŷJ)RQ1JpWZ| -}(M @Fa]JI]C'][eN cf MѨ(u).% k+izC@4PF6|5>y;xqKch)>ұE\_׌xIG%\(Տ8a{¶t8y.v^MKA_\]ۭ } "ʑ7Dγȍs]WnqS ޏ@V1_~<>ǰ|uǿ&ĘʗѮLG´ЮE50F&h^>Z7z8ۚ&d+}g4TLweXq ώ d5] 3MvvH"]>._c cjk[MNJ$N?^ޜ?;CͅE q=1yĪy<:׿EwLDۻBocm#G'p7衡Q[1Kw ~8Ju(a5))R`F Lw5Pir-$ü[ys:Ս/єOhS5R%`߮Hbe%Ɩ¹vRr]7b_-fOg F\_B8;3uv_C i9.>R )I@R#0v0[OF<; ^bUEjV #5#(8ukY?zzo.TBwC]RoX6o6KEPsj1̓900/"bLU!0-R`z uql›es5zץ~V"GޠƢ+rpAůh[kpvޖA:A5P5jD nWYga(,nffl߶W&̫7p^5f8"XlFl*M/p^Dw,_D'Y{s:%g/5_PK>$0PKxK!Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PKxK!V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKxK!VConfigurations2/toolpanel/PKxK!VConfigurations2/progressbar/PKxK!VConfigurations2/popupmenu/PKxK!VConfigurations2/floater/PKxK!V'Configurations2/accelerator/current.xmlPKPKxK!VConfigurations2/menubar/PKxK!VConfigurations2/toolbar/PKxK!VConfigurations2/statusbar/PKxK!VConfigurations2/images/Bitmaps/PKxK!VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKxK!V.++mimetypePKxK!VlQThumbnails/thumbnail.pngPKxK!V gEEemeta.xmlPKxK!VEs& settings.xmlPKxK!V>$0 content.xmlPKxK!Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKxK!V\O( }5 styles.xmlPKxK!V(Configurations2/toolpanel/PKxK!V?(Configurations2/progressbar/PKxK!Vy(Configurations2/popupmenu/PKxK!V(Configurations2/floater/PKxK!V'(Configurations2/accelerator/current.xmlPKxK!V>)Configurations2/menubar/PKxK!Vt)Configurations2/toolbar/PKxK!V)Configurations2/statusbar/PKxK!V)Configurations2/images/Bitmaps/PKxK!V.Y*META-INF/manifest.xmlPK+vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-circle-unchecked.png000066400000000000000000000013171444746353100271540ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxڵVkpRKRdk")n衅˜ *^72&T ċPä 0(i]MO7,YG}y Cva,jv\,Kg(6n"$IN v}Rl^hjg,d2X/` z}y(rEf/ b~2}F\/[Tu6} .JV}*_„W `~P(ؓ*%Jzu{ "#ϯ 3AU ,Hx<5F@ }aˌ|&p70j9F)RZX*h;\-' lv0DC0zD@yhBsOO}sGޢ 68 -;y$6mp 2]@Q0߿$c:$m\~i1Aw ѱ&>+¸-gf wq‹do%ƨ$d-O7%?D;WDiksÉ>N~--T;D~~,sz.1#qc񵓑 v94U>|sW%tLZRNIIENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-checked-hover.odg000066400000000000000000000303541444746353100277420ustar00rootroot00000000000000PK, "V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK, "V1%%Thumbnails/thumbnail.pngPNG  IHDRzAIDATx?r6@qhecpWa|թSBze3;@Gdx³^\rK[Хه}؇}؇}؇}؇}؇}؇}؇}=G` lzݸv }<^ty&߳AJJ폭x|[hpq݈,ckΣkɝʼnZ?ʷׅWɛȟ̟.g벅bx >+ZGB-mn]},;qQRqZAX;\ i*6{UEjzIO>g۩װ||b$n?^]lu.#k1o~/GO$?E}؇}؇}؇Hx9N/)]}u~Q.'Ǐp}nrCAr3OENl4.K-z/)LdZ/kn܊Wpk;?:~'ǜ6_xTqRvoHu['{~z7T|~yإW]ldH_%[eznBSߔt.߳شj)ﯷld"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!2io߾}ڞ\,}p䭌Ǧ2ZO[},#njJǯ_~gl8oGO-ugNd> GȷW2O"[X\@2Py" !CqdB[ P}/ezK0 GH1Y}Zj>g.E"yqx ,<DyHq`D<ذ}CHj$c'/i>򯘪Hة{mHQ\1կ=qeL2x!g!dq!HKH e8Ҩ}v"yd;y]4rO+x*>fNQNN!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!b"!/=4ЙIENDB`PK, "V GGmeta.xml 2022-12-29T22:51:042023-01-02T02:41:25PT4H54M25S101OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK, "V settings.xmlZ[s~_lme!Sl[`L [YJrW20ŀaX;>@K}ݭk߼C%9ġ."cn`o?x ϑK.uBqˡr ℗Ï>%h^t8m1"BϯVO'ʼnF>O  HeiJȻe;PR]i%5,RiwGZ.5֡~ u|QsOjuYwHwE ]˫9T!}<}9s 諘V6=$ah(3D\9d4&S)nյCzr"hyXuP-".\C W+6h WMHM. ܓ ~fm?gbHi0i댒cz lX2X S"0CtDɛzkҥ!:kK*.yCnd*tE/5|~uR0v)D~kT|ӽ%5+xۭG ld;>ܕl{_L"ѦE%tJPj ϲPLOULV!iI32$|l C< 6u3pE'@P.a#giõlOCTxТsKȅ EWK|psnQr%;hCO={'+*vh_'O$ PU g7iϫ . jsrdU G*;Q} Gu, O?pL vLɣRZԈ*8+* *)+)<9a?Cq}j{#dQ;+3f!>(#! U, ֙ʯ |?q:K*d*WmX%凖Q2'iEbN7!' I^/)!ׅd5&vru j4 jzVbq/ʧ~$XyZ$͖/5aVG&z3eJf>$(gb;5̅8#: ˌ+ .82iGD U{;bFvP&NRZV!!r|ڕQ Q 2}{>Lx2c XCjs"ıӴ"XȚ2s72'G&LWХ8Tfy,ߺ~N2mkfSMGvF#80צao9ݩ? &ӱ54uOK=sdm^3k˫+6 nѯvaQ)g1TiU{{Wkob9F+(Н%k]YZUeR0]Ne TM VNa]Âҩk+F zU dl-*6uY̚;k Bm8ԜPGrj 6~w@ݷ=D\5Zs>ٵd]6x\Am]5/=y%Lyi}-b)! pe)%5߆~/U {~1PKN_>s&PK, "V content.xml[ے6}߯`)}]<ڭd5ʾB$$!& H4hAw4ў(Ȱ"lsO?52.YG<+SXVһNdKN V,3bYFKӬZjIQ>'͕rߺrؒr:d?X}5k|(}4'%;␰b[4 .6& Tw"QZqd҄ ltSZIݾK.]Q1RQVsA Pp%1 Էi3]O -yTTmJD~ꏇD:w.;*,fݷ眷Jj+we9f?UHhL铤|$ń6+q\ēCc):ˊd2EʒY Ғͦ-!0k sQ Z`b-dIiq|RܱM(gPL'F,ybGT%  ˔:"e4i*BZCF9LEIz=- xYWy-{{8^7v@ }@v%YtUqwUUjߥw8GÞQ9Ѕ9m#Ӎ EyP_H?&"^4&zaSQ2ZhOO` W,+ |W->C@}I6SʀG* ƹlB6(K~ښ/S[6[Xľ`E%.aF;_"=oA2k'꧎=%<:c;mk (ŧOX| hM;sYIs6B/y%}ܤO.GQ\E-2l_+^N6\{Vnn T]{14~-HW'w6 0, Y;T)=M#p9v\TЮuYR*Nto."D0(]sAn!jAMI+"$B†syWCȾI|su:B΍fF rBgmsx~oߩ>KWWu6Qu ;u_A.n~l$ y:ݪqSn$ !t#k^}_ͫ\w-S7x бa.yMCj!9ˡ)l7F5tZ̊X]Qj$I]A]R):lGjr4dl̀1ˢO~FmfoOT3M.RX+4GAtu_}dtVQ͎{-;&m.%/{ oXO< 䍖mXիcp ºʉ"LL<^o?KߗHwR ݑ"Fg\}(DeW/^pq0.ʎ/C^Z,#@t.8_ze8ہ3wco|OêVJO4/5h4r:B/7kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PK, "VConfigurations2/statusbar/PK, "VConfigurations2/menubar/PK, "VConfigurations2/toolbar/PK, "VConfigurations2/floater/PK, "V'Configurations2/accelerator/current.xmlPKPK, "VConfigurations2/popupmenu/PK, "VConfigurations2/toolpanel/PK, "VConfigurations2/progressbar/PK, "VConfigurations2/images/Bitmaps/PK, "VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPK, "V.++mimetypePK, "V1%%QThumbnails/thumbnail.pngPK, "V GGmeta.xmlPK, "VN_>s&  settings.xmlPK, "V]W,3 content.xmlPK, "Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPK, "V\O( }5 kstyles.xmlPK, "V(Configurations2/statusbar/PK, "V(Configurations2/menubar/PK, "V*)Configurations2/toolbar/PK, "V`)Configurations2/floater/PK, "V')Configurations2/accelerator/current.xmlPK, "V)Configurations2/popupmenu/PK, "V%*Configurations2/toolpanel/PK, "V]*Configurations2/progressbar/PK, "V*Configurations2/images/Bitmaps/PK, "V.Y*META-INF/manifest.xmlPKE,vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-checked-hover.png000066400000000000000000000017721444746353100277570ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxUIle3c;IYiBQ@ q*KHq'NV=@( rC[ (VL,(رN<38ഹTxH|o q7M.JyR<]5Msu(ᖪ7CCCW$=qonnJl6,lkrr򣩩:(J---}J#OB֢B6Zv}p \- 굹u]_f1Dz[ n¨t:}azz[[[/tTjbͫQ<|fF/1ѯeY: AVwdǵ}χ*q@|w{:<ǖ/m'PG\?A;|1v֖-V~$n/DSaDwc:yZ4$#\+F"=`,vآÚZ@Qu{=WwQ4E7 ev)m=&Sf}6\|q³cdkUU-a#o ĥBp^AƩm&EBΜP2@ĩauj_یa'E)x]\\5hqY+'N wScA# A4q_ј$W$׏!5W03kR5f "IE|@4 "j:MǬ)|?;Ksrq<-ϝ&u#TSd2WI.p_X%w =r=111\ t`vv͙h41 cފcioDg~pzc|!J] {{OYIENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-checked.odg000066400000000000000000000303501444746353100266150ustar00rootroot00000000000000PKC "V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKC "VApThumbnails/thumbnail.pngPNG  IHDRzAIDATx1n6@ap+A:.HN9F23C|4H0cI#Jž~||$W@f"!b"!b"!b"!b"!b"!b"!b"兟9 '6x̲b6W<)lq{t}%_bpEn+1_M%Vp5e/ؚsZrxb+Ǐ|ݜ+ߒG2y]&W.ސbZ[2|#ma]};?zQR\A2.iߊ]}pb U m{:q~%\NYGpdnnH:pCQrZ1_<~yd>Bdߊ؇}؇}؇}tog}F:~ԷQZ?c\]_/oCǸvܟۼ~<~S5ZO)=} T dZ/sܪJ;5D=$5+O뇠iyBGZz}TOl^> o]>/ؿ>JϏmpg!7J9x}:g`Bx9`K֏ZRx4 FR4;iKq3~XC>Kq_)]b |)Wxgq#=I/)=0Zq,'<2Zɗ߹j9hŻ-Ot˱J}as_}<L;soys<2ֻqO4x7 Ƿzk7v/-oEC>DC>DCcܝ&wwaqS,m¨1zҺ-y$Jծmu9~剬ߎKWY=|a{yx~ȣ68~y~[|Mݏlz!jTG8`J5 NNx=%<ߔtN߳شS>_=>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DC>DCd>ooo&#n5&죎~o_}+JrSjbq?$+7I1c32?Q,Jl) G3.DVc낣_ȕjW h"i>փGDzý~.{\X #!i>VP}7[kDo>&se܄}$"3g#h֋^}v2ĽE"r3].#Ѻ0>q\&cRɮqchR\j 2022-12-29T22:51:042023-01-02T02:42:06PT4H50M40S101OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKC "V settings.xmlZ[s:~?"EÞ:&S&eJX8Ȓג_%8}ݭVw?W!zE1 (y("JݸRt6 G,/EٌޟO))Q,(, \rGH<ſ F=z#۲k,ߜ*e9t]=wsǯ[cn\ҧN%AX} 򧷕Nu0``zM!_Ga@xk/Aь¾VUErÏo>ߪ('W?:u@ Z!xȅ+#3^_"1ZJ/2Z)`mq?#@J3ʃ߈)9G؀Ȧ@Q~@9'9Iw; @F,nh KMtV\4=& #%XuE=@l5|~ur88QN7.N;Eɪ1W]6Xw5 X!,="9MR~Ku.Xa%&2T?<|)4;' ,"C[,uŌ"4KXÁъ08Ф9 >RpآK|1 p >t4gt\;49]箻J֑rkZno %svdY "Ibi|c8д;rbh4&`GE^@R~''Kd>qspqzC~FI4(k8PԖX3M3%(m4ab ȸFCل-A[P~hE5g9 $ ?]J]BD~._f^[ɉV0[h"Ϡ͌ pԽۢ^pN5ʌ`q$` 2Mj5[>Ly/!O:qXښ1(]`TLsxޢ>Ǜm$"LXf\HL(rHnQ0*NvP2@9dZ@Jab:$F9=m˨ԑpbCp|!eh>H°zR?8fJaQS_9 -7a.ʼnT3]ci~|Oߨ ;.lg 3X?ʼ?V ;0lh}/fz_팬jNq-þ4Ѥ2;fNXX@U#]_v}@\P| B-dj~ڠaQpHݧ6֝ۄ' {~9|¯?xa#z21"w:O߈_LFX\=[grٮϓ܅;6PW]=ZzᐉqޓOÊg{ѣcZiE07'ck^[kzru|Äccb];2!j<ۦ¦BS}u{2LH_7궢Ckf5}NƊڳLY7c#Fb]'I SVDZxw6)mNE)%Fa($g{#_^?PKke)q&PKC "V content.xml[ے۸}Wxf\Ty+DB$f"|I D 5#ד˲n}3㑊n,ga")+6w-;^.SrZf‹> .e3z؉bIŪeArZ-dKZtZK]zjTS6[] 5=sH毬uT\e) k>WPeyIjvd!cŶ˥m{kZ\llDZF{^܉LIM3*ld!iM'eu]b64&'Q-@ܕĜ73f670'["fL ⦺nND|#^|ZRvU"X9FZJ&ٕq'؄'Sܝ~ƚ/sV[6[HЊ0NVڒT^~0`+| rw,!3`P 0r> XzdMõ?3$%IeaּT~v}`Zn2刋Dv(6oa:߾ܰv\E{WФ޳zw4JM RB醵/ H_ʡ3ud9 x4CW.~ӒE +裲~<9B O/X[yPyO'%oϊgi?0`BFaPf n2V4-tLReje6Ah6C:[?&T:fd#Ñ el: ??=bITmbpR=دQr+p*I5! !io!Eo!fa{7C}fyoN7Dmi "*p{ֶ'/ہO/-;gɻj;꛹UmXA{.۱OUYʊN.n~F2$_ tM؆$!t#oA/}_˫R[ڻ`9k+EErBN,\CgxK۱ 8RMs#1Ё)J0`wUm,3wFwMxBgj˓%Ȧ`kIH]|;b3K|-bRr]Fũ?NÄ?m?0{Gv٠eEsG19]8([_O+,,k9ͫH))nX?41Qi)Ogi@8:rai{E, OދX^QLeW/^qtZ@/C<-,DD!.Y.e.1zgq3 )4oݮ!$+X[?ٚmzr:ㆷN575͇̳LQ0BemE:9FKI}.Æ1:q#ᢀS )U*^tI#T2q؍x8KC+R㗖ÞִR|ed@`ȗ;yTXE}Ro0cs{]yd݂wߎLTEpAJ$,OYa؇ }L(t8NI:Tn=:^9Y;r W{c(_5V["'no5UP BY;& ""vG {ďVIBH]4.$qK lC y۵xF=c?З?xTY؋D -AUb=;"D0|P՟(;YO)@1jVzi۷GvPKEgՎ3PKC "Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PKC "V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKC "VConfigurations2/statusbar/PKC "VConfigurations2/menubar/PKC "VConfigurations2/toolbar/PKC "VConfigurations2/floater/PKC "V'Configurations2/accelerator/current.xmlPKPKC "VConfigurations2/popupmenu/PKC "VConfigurations2/toolpanel/PKC "VConfigurations2/progressbar/PKC "VConfigurations2/images/Bitmaps/PKC "VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKC "V.++mimetypePKC "VApQThumbnails/thumbnail.pngPKC "V1GGmeta.xmlPKC "Vke)q&  settings.xmlPKC "VEgՎ3 content.xmlPKC "Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKC "V\O( }5 gstyles.xmlPKC "V(Configurations2/statusbar/PKC "V(Configurations2/menubar/PKC "V&)Configurations2/toolbar/PKC "V\)Configurations2/floater/PKC "V')Configurations2/accelerator/current.xmlPKC "V)Configurations2/popupmenu/PKC "V!*Configurations2/toolpanel/PKC "VY*Configurations2/progressbar/PKC "V*Configurations2/images/Bitmaps/PKC "V.Y*META-INF/manifest.xmlPKA,vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-checked.png000066400000000000000000000017411444746353100266320ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxUKlU=g1ӚML4@ R"THRUPUXTu u+شDYD!%q$V[_lO=,6lWɚyw;XpYm<}N#e)DQ_ ߅B93E`{Vk%HA?\\wc4kxqss]I*>' ]cJ 0$ rviX6FP6N&AX|-N)4२gyVEuc9p;JDnRh$D˻Sle;nw@lo)ld2t}J ѝrKsB( n`d_lX !^~v?F~bFq!Hާz~uWGn AX);_>$=jg{@U :պqi/d2Z;~xcč`j5*vO?wHb1i[ [EN%u9R+A ;wڲ5 :,afO{.ؿf F(vjjjJ2_\U#$sI/+&U&NEEp}gMY07Sw}Hu)=k4Utұ.IaS^i>FCj%S y333$_c@0ܾdn\_Q\=4k.!?"!sss\br'dJ>xDTfg:-"{4eK$W?)Ji\iZԴ>ҍɇc4ovq/@OybIENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-unchecked-hover.odg000066400000000000000000000301061444746353100303000ustar00rootroot00000000000000PK! "V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK! "VHhThumbnails/thumbnail.pngPNG  IHDRzAIDATx_n6@qG2>+24*rg!J&)#I ~ztk!b"!b"!b"!b"!b"!b"!b"!r}ooo<稺csm}S?.Ͻ#TaY,Tjm3{XѸ@,+_Rȴ/k&nU"ӎ ?'A%q yF┪D0'{}z*޿g98Ru`(|2=~G1OZoNSDO!Y~1~RuN;egXњM;y"09/}_S7nnu{FU*#NL8B)q֩^VOBq 2=Tu7幀{6 gȷW2I"<Η' Kp KZGO!#"S]؇P}n2X0CB8Mc ܦ/A^aGRuc"Oi>"1Ci>̙ɴqQH ' 2022-12-29T22:51:042023-01-02T02:25:02PT4H53M51S100OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK! "V settings.xmlZ[s:~?"E:`d&&9en 02%ladG_ V-n[ _\2(y7Z x]~:!]>$C!~% /nn?BFpċS$;bDˆ,ss!b>\.o7yy0|tw4`K( "/#ܗ٧u(!R}yJwưH7VsKky ȿF=zyݍ]g%t-䮶R.~vae͟k$bj{Ywߣ-'q0A` )ց=]}vD,nR+qR!>i޹Ap W=݊dd%e=P &C!COg~J)fs(9G7x%C` 0~E0%zo"3xAGԘ6,*q1&^uBW~0䣆ON *F>"@oMyA/.1Z¬\v?`-+!<]IֹůdtdE&u*C)dfmZ>4Cӂ_Y+2$|lzˌ] BK,+4[XYp%.:YD9 ܒA0r!@fe%L-j{B`%ѳnSqbqnD9I>L5cV=xMgN|NȪTC2 ( $4jY?cc ҊJT+YQgбO(_ILq1gno 8O6BU_]A}Y]E ibo5OLU~G( Ϸi2V0 HVê-)?Ė9H+s 9 XHڞ%}!F.$߷/4)0004T'P+Մ `ﶨTKCDM#T{V>my.`CK:NjZ@FL.GY<͔(]`txE}s$f3kH$l3.$GYTqd28z;v`# 2_ePH.%0}U-x` mTcgH?LĞN:JQ$uC8t{P YCVN M> lt)(cK5N oFuwm+Ex\ګݑfMvkFٰ[Cv`xMF n_A_3: &#k֯}ֶk W{4[N39OUW|Y5m3We>W+6@SOucܮWx)/oXFsx) Ro8f# kHe$ıOIc+"޷[ds]o_G 7<@{]#f_H\hcZu)sR$B]tbk8Cil_$ЙBXhLe]qUFtEw;e(a#'ZH$շE]1{4W)2ס->%}@3.@c0qVޤejiH5BZ5HW'w_}J'JF o@2li^Ʀ8CJL*8t΢NƊtK\.EzpJC$et ?!5]"]" !p%Br%>yu:B; zuY7 "n}+ذho?soN\\<07@u{x"/[p"5HѲ"Np?w ?W'ئ&b(F8dDZ^\ߔ 缵- 7D؊h0;[ڎ=h@b*CaOG5pZF oZYu5bUifD+I֓!)Ĕ߾e]=̨5Jy!?-.VH1xߩö }G VÍ\JNp<4K) J˹c@d:9yǾạ: 0ĺɉ$LLkJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PK! "VConfigurations2/toolpanel/PK! "VConfigurations2/progressbar/PK! "VConfigurations2/popupmenu/PK! "VConfigurations2/floater/PK! "V'Configurations2/accelerator/current.xmlPKPK! "VConfigurations2/menubar/PK! "VConfigurations2/toolbar/PK! "VConfigurations2/statusbar/PK! "VConfigurations2/images/Bitmaps/PK! "VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPK! "V.++mimetypePK! "VHhQThumbnails/thumbnail.pngPK! "VGGTmeta.xmlPK! "Vˆs& settings.xmlPK! "V,F6+?m1 content.xmlPK! "Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPK! "V\O( }5 styles.xmlPK! "V(Configurations2/toolpanel/PK! "VN(Configurations2/progressbar/PK! "V(Configurations2/popupmenu/PK! "V(Configurations2/floater/PK! "V'(Configurations2/accelerator/current.xmlPK! "VM)Configurations2/menubar/PK! "V)Configurations2/toolbar/PK! "V)Configurations2/statusbar/PK! "V)Configurations2/images/Bitmaps/PK! "V.Y.*META-INF/manifest.xmlPK+vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-unchecked-hover.png000066400000000000000000000014311444746353100303120ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxKkQ47M&iMjb(@ 7(]V]ZbT<Ĥi^Mdfڔ>p ̽s_j0C.V(-///gƐi.luӹzO$U0T*uPVO x6 ? r1xI./eI[kj2MAb]>ԍ+%@"F'r!d8vi&I-hpvvv* M< d.6>qo0DNO k6*E*&dM ,NwRhpZb}Y;]-8.Ϳ5CD z'o[dKV2z}=o dh*-jqt90q`vnwiV f1`QL!>I--q^Y`+LPb*F N2:ҟ;n0p89H$4ٵжИaL-%^@(1=^!K; ZjtX?y`>`&AɶavapݦprnpxouKhlׁ@1깣][x؝{|لqT*ӪƚYz<px┦/a9?IENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-unchecked.odg000066400000000000000000000300671444746353100271650ustar00rootroot00000000000000PK "V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK "V9vThumbnails/thumbnail.pngPNG  IHDRzAIDATxQn:@aG62+BrGBB`&|U2S>??W@f"!b"!b"!b"!b"!b"!b"!b"U'6x̲b/zոr }cu.o?֛Ǻ3Ӊ^$)q!bG:Y\Utu|g 7-d٫mλ!e>c~x|79og}BuQZoWq_]_/oC}?yEqg^GhSz{K K\Un `G?1~%4>U\ħ]` TU OlzO[z熊.^U>/ؿ>JϏmd;T5Ci-q,7~iM_L7Ks8~).?{/8<xX2~gF+:E/)=0Zqq_\a\}r`ݖ]zrlU:l񋣏|Ȱ[O1s|kWpˀ[Ɲhmx7Ƿzks|Ƿ"!b"!b"!}K{ڝ ;E^.b#߅Mbu #Ncu[dvI>K/k®mu9~9YW >a{yx,>zDMv?Du[٪~BVWgTŽ> G(şapju׳ՃP\B1MCh:򳀼{6>=[|'ه}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}؇}GG߹&W6cPF1LfYfd>ZeTgeThM2g%#q E%S%2lE{ˈLȰ},ɢyCNJJd>^DŽcuɥjC}z}z$FqA$8FCB֋/i>S7`镉LuHZvYgHBbaH!t@R1#G@Sőcٝ3le,c+90cQf}T(AyPRFWIENDB`PK "V6GGmeta.xml 2022-12-29T22:51:042023-01-02T02:22:14PT4H52M41S102OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK "V settings.xmlZms6_aN̙Ƽ.@/7FA\I__@v8yvWkj͗K_B%ġ."}gW?g>Nȁ:P9_Iq >hV;G}f&DPfŧEe^V7 #N  HweviJȻe={WRX)Ӵl#|){P?:O;_KaZe`qVBײjNj;!:Tl!O&$Q D`ϓ*)zkҦ!:iK"6y CnX*tE+5|zuT0)^E~ka*ӭ5+x۬Gdۇly^|O"hӠ?V%c5'iDd(*& +Đ0W[rF|rb>6]]uB)΋ii(3RT\t2'J3@s|dU G*[2$4*뎳<%vұΣRZT*8+**139Rx\ݞéۛ6 ;V끐EYgZWfUCV||UQDBjXY]_ o|?q:*dJWmX%凖Q2'iYlN7&' I'jm.yJ.$o˗אlx03K4T'P˕ `6TCDub#T{V>>$\$b5 ,n|\y;$:ryԛ)R:0.A84Χg܉Id.LWYf\HPvQőJ;"P譴0LO6JEʍ4vׂ' 쑃Ӧy)'ØG,#<Y76(:!H=Ik(.3z.sb{Dhtq- ]Cef"#OS{Û[]|H&B_Ymj?x`jtߘ9C[m<;zj8ִW:=eW.́i6[AϬ+*ڨk.K>[-N~_SOtc*㚫x uw&oW ^&b06f'7"A;yK%W6yX4(gp);(k,~yOΣ9SۮWtz<)fК394|_sj}$7:f86y^̊;K fJ['eotW,ۚUwJ4U=I~YQ̗M] ߞ<v \YJbͷ3edo${_= PKSs&PK "V content.xml[ے}Wrx;-dS /I@j$'˗@QP+kFKt7}qaͻY`V?LX)8hL?& :>yF4[\҇՞kJRsr]EkZ༵Zk1VRVtP+|s݁-,Y(1C\@XjB@9☒jWUZv5ʶ.QWY*H)惕z -.lbhPFY-.A\֑l3v1^0G;L(b˩bDzmD~ ӇW,[:@1R,֖)ܠ]0~F*$hV=Bi!NK_8Iā(' ,we<>J9լDZXJkzlzz׀YTQqwu܉U\!A4kZ-^Ӧ[622TH6mxPk#xۘYEpp`]@}PQJSFG" ] c.&7  )Y) ]g$Wwlw0}-(k,Ep~  0\%">f:&04g} GoYNFJey gIS_3J G@1?F-D!]lhUE,I%u&`uYtnޚcEExpɳ4vK^p}t vt_qBTjlמ(5v0gJ :Jӊ\#}..0' XvREW.|&H/@6pJ8B"OEm#0/ѸnHpM4:*P>-&-%eC̕r4lWJ-UXT~u(u")lxM$N<6-S!K>zPf3*9)KoqEz 8SP[B&rP&r9o!no~: !:mw $n}#=49'zoΟ0@us,x".s"4pNwp?an}plRIm#FTWMm8↴Vl|Nqc@s@3|Krٔ=cxCݡp0TV)[`9Grioe[k'ikkg (7'=F֌Е=4 91'uNadr|VL+"BX+1Z2tr>+ŕn]%g\+fǓ /m9--^8J9Xb_3lYJE0 j$Go1PK "Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPNG  IHDR DPLTE3f333f3333f3ffffff3f̙3f3f333f333333333f33333333f33f3ff3f3f3f3333f33̙33333f3333333f3333f3ffffff3f33ff3f3f3f3fff3ffffffffffff3ffff̙fff3fffffff3ffffff3f333f3333f3ffffff3f̙̙3̙f̙̙̙̙3f3f̙333f3̙333f3fff̙fff3f̙̙3f̙3f̙3f333f3333f3ffffff3f̙3f3fOIDATxc'F*U0RU<4IENDB`PK "V styles.xml[ے۸}WAHc(Kʳي-DA"3?ɗq@)[sɌl vhp|{_5uO`Bʔg\_] _hJOrH=^uЈrqME R/d)^W=XqKKr/ +ގ,^f37c/`ꋯXG)/*,\jfMXUiW5i, #euOD)^_)DK| 5/Mtn=ڻ09L3w]ewYX{QunW.ہ*m9筪JV7yh=Q==ʞb4C@N|kwAhwIpIGCx\U(-- Iޒ)#NX"zYAYQ&Tp:~ND3@'zո$qԱ7l&IyՎD %uu9&l$^E; qH\F%ZRr G=~ .n%J@9i75 P'-WS&;k"qv4J z괢!5WDjf&@Յn 13Me \w]Vډm**ezU"P27aj,8Z ,>kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PK "VConfigurations2/toolpanel/PK "VConfigurations2/progressbar/PK "VConfigurations2/popupmenu/PK "VConfigurations2/floater/PK "V'Configurations2/accelerator/current.xmlPKPK "VConfigurations2/menubar/PK "VConfigurations2/toolbar/PK "VConfigurations2/statusbar/PK "VConfigurations2/images/Bitmaps/PK "VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPK "V.++mimetypePK "V9vQThumbnails/thumbnail.pngPK "V6GGKmeta.xmlPK "VSs& settings.xmlPK "V2*Z>o1 content.xmlPK "Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPK "V\O( }5 styles.xmlPK "V(Configurations2/toolpanel/PK "V?(Configurations2/progressbar/PK "Vy(Configurations2/popupmenu/PK "V(Configurations2/floater/PK "V'(Configurations2/accelerator/current.xmlPK "V>)Configurations2/menubar/PK "Vt)Configurations2/toolbar/PK "V)Configurations2/statusbar/PK "V)Configurations2/images/Bitmaps/PK "V.Y*META-INF/manifest.xmlPK+vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-elipse-unchecked.png000066400000000000000000000013701444746353100271730ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATx핿oa*z@Jjh\H:.jĩquMk7&n?IvQ@j ?;}?ږ$t~= `EÐnryF1-I҄,>(JbY`ZS.5oz}D E677r{, 90+{#oW]a*>Bt j"J=t:^΃? tG~%:Pn6`5d H$t:ҠT*]O&/u+`:8_llk#֠][[[FnaVbi0}x + j%b5HKd#SOȭ/byيMȂ>-QCő vleь¹y]B q*v%Z0i Z&0/`3k%Px<]F455RmHA}D$ >HA%?sԝ!,˜V[F܍v~y==OYEHN-WU?j=6ڮamFjb<7yVF.?ͥGRra+&Sj@}^.ְvtk]v7ԾkP#;"eKuO՜rySZ]oZ٪=\.=Qծ>'xzN鮧^ۍVgŻm.y X:g̃//$->HA}D$C_>Kx:Q),x&5nPruj9qx^;mn()ɧq]k 34痖KUHc㣧ӯv_o G»>4>VֆW'oͳg1z}t] u;pF6>v圱4'ԝ-<]68yPj׋8?.d{+S9eT_)?0TVj/f倥 ϰc1esuӱ6`/V|v/=n\9Z9gr_G+ @4Wɸ/S @BǷ_8 Ʒ6%>HA}ܻt@w{"ܝy~q;,?E5[ٺO#/7DvSJEǗdBr>Y,/ǫ'$g"wdIش}}QVR)lwۮlwGFUTv>vU6 .+gl$Ԯg13.M'GV]r})e=_>HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HAr>~s>>HA2K?Vןn5KWޑ{ǶS%}ceN |YHA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HAghKIENDB`PKF"V7 EEmeta.xml 2022-12-29T22:51:042023-01-02T09:55:20PT5H1M5S103OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKF"V settings.xmlZ[s:~_nmeecjS606L KYd`pLUql[VB|bPXR(+D< ?qPo_lx k8CؕNXuĤJ X*4Bd7?mp@9Q\^._7_hUM(FL@ |}ZY?RSh9aX*xEQn˛wYsky Ax.{Fed1X;CUrLj{.U)=g6O_8 O]moKKOo+eu0``zM!_Ga@x-%6LtA(ÏYwvs1|Yz"Br"Mz ?1T\i[Kkc/w +(0ǗED999a b+t(,-f6L^XV܄  MJP#n-x-^ۜ]Ec=젻gJߡIfi8O$9e\ fp)i/o/~OȲNEwŀ8s8дf@I1zXZKKZD/dw) 3nN=޶10oYmn$qJJ"v뀃/+ Em >U[2f/N*&k4}X֔i[3/iynN@bBU.5h< D]kr68Mlmsu&jY8G-'U&ο4} XnY _f5%IQgK3 [q@x}1ȅ8SFsg4(*9 G[T{;e""'yi)|>C,CO2*3u$Xds{cI\SO'RXD支ENlqhM.EKq"ռ2cWXӗꯈNۙO_?ʼ?V ;0lh}/fz_팬jNq-þ4Ѥ2[3mJn,*wD_7u}>W&_P 26h3` *RMug6䉦žy!zUOo)^؈NowN?7"Qz7wWY\ˤ11w ԕuW^ea8db܋l"exuV}Z:ؚ8Cũ`=r\wOF;|ڑ  {;o/iTgު wm>5>F􍺭КYa6,yMk蘫H|4ohwRÔV胾Mvq n)'AQJb-QwʪH>S?{PK#t&PKF"V content.xml[r)XJnWVq27B$Da$X$eI9I (2ekf׎ԙz^XqHN6M2~VaEQd^ap,]q$6pdaAKcI._j14AAe\63S]O UyƅTqTqY7Gv&ǁWUt.&;*HVZ֧ SBعiF,I/+J/(4?YHhQ^,"D=`m١1 yau:'( iQASNN0gTU#Y^`[`ml>^4( hOQG21bT kE4Xg}FdP0PH5-WvNSzvֆh@(ϸ6J73NMJK6vi%Jj̫D5P%q\m#*1'J~NE+m\5 3gP(hCZ` d7&dY/+TeCW9)-&myQoQI\0 K0o[]`cm{_=tvjwma HLj2BafW<[{L?ٓfKw 3뒟{;c9au+ν2T3_$N6p1*ԊbH(a`%´TRǚ6 ea=nkS뻮].c'-(8a6UqmۧVNO+X%."[T`FƘmٗd^6=mC}W 4KCG1TwscX~a* dlv\ 7Jacۥ;W8( "uXzD^Velz \!,tqn54ծM&?G%O~uboh{B.roP.n!f9v< !kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKF"VConfigurations2/statusbar/PKF"VConfigurations2/menubar/PKF"VConfigurations2/toolbar/PKF"VConfigurations2/floater/PKF"V'Configurations2/accelerator/current.xmlPKPKF"VConfigurations2/popupmenu/PKF"VConfigurations2/toolpanel/PKF"VConfigurations2/progressbar/PKF"VConfigurations2/images/Bitmaps/PKF"VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKF"V.++mimetypePKF"Vz(QThumbnails/thumbnail.pngPKF"V7 EEmeta.xmlPKF"V#t& y settings.xmlPKF"V}-%XF3 fcontent.xmlPKF"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKF"V\O( }5 styles.xmlPKF"V'Configurations2/statusbar/PKF"V&(Configurations2/menubar/PKF"V\(Configurations2/toolbar/PKF"V(Configurations2/floater/PKF"V'(Configurations2/accelerator/current.xmlPKF"V)Configurations2/popupmenu/PKF"VW)Configurations2/toolpanel/PKF"V)Configurations2/progressbar/PKF"V)Configurations2/images/Bitmaps/PKF"V.Y*META-INF/manifest.xmlPKw+vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-rectangle-checked-hover.png000066400000000000000000000007561444746353100304430ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATx=KPOڤijh#XET T'?A]E''? 8(ЂЊmi|x.j%6q@{aIpXbXQ!$'q>1dKQ9QJ_t7] Rl⛁x"Q):!P42T,Cj̇8 Z4d!'*VX@sӌZ{/Xt#zkvyx[?W:UҐ,j .w[, zȪ8`3셇nzojq,27񐈁*Gx\f59mرO8qWiZ"}x7>ژ:(~n10X%#@c"!SE 7IiDk5p*<=j3WGh4ޖNJ?IENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-rectangle-checked.odg000066400000000000000000000300431444746353100272770ustar00rootroot00000000000000PKF"V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKF"VfwThumbnails/thumbnail.pngPNG  IHDRzAQIDATx?rDWrAAMp+Ї0fzc>OqCZbo_<4}D$ >HA}D$ >HA}{6xbh]8˩lu_3-[>fiVqJ%mphY=ǵinE|/>rwtsT\f;oX˲gz^B5M#6/glkXۻ.+j_ҵ^l_v2PR繺jd9!_Ů~d.Jnjv^>yz>]Nӷ+d巳w'ۜwsG!:/g_ف;Hك->HA}D$C_:Kx:~Q֮),=~Q-'k 9?%>nt6kiabqf vrjSnZb|8LmխPoo \[Ow-kë޳=?]t8#K1ciw;Ylp3rԮpr_;[#]eZr՟!L{ө;GR>aҝZ<_ͰK\!acz6c3~m_.0/&u[]g7~rr2JVf\i񋏒q3_\$3o}q|vӍoi6othQ>`xm~ݝy>Jf2`D$ >HAr>&:@wy"\y8;~,E5YٺNN#tڅ "if(Dv}һ<1,!gq;/a8<=c>468~tkYJs2 Q}]8B~ Q{>=K͌ ixG738B67c1KO?gq W>HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}߿m]w[ח;H_nFK~dGJ~7Q8N$r}?AU'gSazBFKl[ gxo_;~%&4(rY(5QIk7)G룬$åk>ȰI8xM8ZsE|;Gϥ1vO>HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ >HA}D$ eIENDB`PKF"V7uFFmeta.xml 2022-12-29T22:51:042023-01-02T09:53:36PT5H1M44S103OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKF"V settings.xmlZ[s:~_lme$l0 0`l.~0W20pI8v|vuZݭ6_X ,䱤~QJWx,9v߾,PR/  q.+1c)I*!bUUinZut5%Y,KsΣj\.,o/ӧQ<29%e3z>rFTܖ7F0rɱ #!b+@R9HTˮc|wvq\RzmnspJޖ:=a-@˟V:59ÀI16J|ᥧߵc?F3~\}P*JnQݽo! C.E}wܹID.,ř7̸FQQH;"ݢ)`Te4s8JKZu`Ir|ږQ#%"0Q'?|aQ5~p͞5¢%2|.rb{D;oty- ]f.zREG/?Ʒw*\E;@<9,.}i,+XB7į(°P}3nƪ;οznF_ؚ9oocWvcU!t?&2Z`=7@_OAØ7.POUmҭ;+ %O4% 1sߦjzMFuzcDu"ջ+z:]_& wl(z*+ !^g+t)S6KG}ǴӊanNּ*Ne# sj7N߻vdtuCxMMMC>;Veo0omEj 9g΋nZC\5Fb$˦xCOO2Fm2vSwNRJkSV/HFG?)PK +r&PKF"V content.xml[ے}WJx+;W\IN8B$DK,I<%n$P3ڵGl@7}k?|3W5Ńj馪" )?|귏@W+EBMFiEh{MU,(I(PE/h^k!K/\mK\Xn𮙫dGh9f.,k'Ufswu(!V2R|~PMS. c[GUjXQW rSe\* a6YmXe9n\lRɗ j$ekw1 $fKzxw.&;*H9VZ֧ SBعiF,Ioϊo+Jϊ(4?YHhQ^,"D}B6n!\''xs4)2uNQEM&;Y:#I=%"ugSE*I9 BuT3: &OT\ *Xd"%83 ûW2Fz- h8uR Ǿ` 6D4E9xƭ?VڿjRZjװB=45L+QUjZMT k%6?hDTUCp0`~>$@F|cJHAGUVtB[cvw%Zufl^R-v237l>&Ĕ|l+ mZY":48t7;7fx Lf8 h@Vl&p>]!yP \ռ -GnǦMrJVCSmk3z东 7P(AVrnDȽ!B]" ![w!f9wOp;|4O7CȽ<p#nm:4ً2?+ٳ% w'.{N_1v_FO}O/|MӞS_)Ynv!o,.#X`lA (p)a)]R`B 埍oFAYȕ f 1X)0N)PZT8S0qSğ1KHjpi]+z㿭:Yb_v액OigFlWDv87/~O}'4ut3$jUGwƄ}WaTP,;t{P"of %޽ E%mKw@3^X:4MIT +&o`]1Ɍ6u ngk/lQ5j_.,iLVxwJ⵩ca9 èpd2m"!UJȦQtی"*!)~Msl(f;d=7$@LڭHy)] ,kLqsDϰ=^P:jf1- `Geg <$3~:K;оm@;e ub@Z6AZ"=D`'a -, L% )s|]*zM#co5biv&U"( kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKF"VConfigurations2/statusbar/PKF"VConfigurations2/menubar/PKF"VConfigurations2/toolbar/PKF"VConfigurations2/floater/PKF"V'Configurations2/accelerator/current.xmlPKPKF"VConfigurations2/popupmenu/PKF"VConfigurations2/toolpanel/PKF"VConfigurations2/progressbar/PKF"VConfigurations2/images/Bitmaps/PKF"VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKF"V.++mimetypePKF"VfwQThumbnails/thumbnail.pngPKF"V7uFFmeta.xmlPKF"V +r& } settings.xmlPKF"VTYB3 jcontent.xmlPKF"Vϣ[[-Pictures/10000000000000200000002000309F1C.pngPKF"V\O( }5 styles.xmlPKF"V'Configurations2/statusbar/PKF"V+(Configurations2/menubar/PKF"Va(Configurations2/toolbar/PKF"V(Configurations2/floater/PKF"V'(Configurations2/accelerator/current.xmlPKF"V$)Configurations2/popupmenu/PKF"V\)Configurations2/toolpanel/PKF"V)Configurations2/progressbar/PKF"V)Configurations2/images/Bitmaps/PKF"V.Y *META-INF/manifest.xmlPK|+vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-rectangle-checked.png000066400000000000000000000007671444746353100273240ustar00rootroot00000000000000PNG  IHDRw= pHYscIDATxUKA};YAQB?(,unѡCܱkԩCA)B(BfmV!BSK0̼7o]#HP/!Ƙ.8%)r&``HD]p4 *:B>)*A3ȿ؍1+ Xu?E1E*g)VfG'eTD3^I( s|9MBtsm.oK؞5 hxu! .*J 8`8HAډ 9>ei "o|N"_ 72_UJA~ vkcJ^LW9l0ܦmk#X%mc \D.YpP.Y'8wN٧_uUn=f0AMnX! kIENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-rectangle-unchecked-hover.odg000066400000000000000000000275441444746353100307770ustar00rootroot00000000000000PKgE"V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKgE"VX8  Thumbnails/thumbnail.pngPNG  IHDRzAIDATxmXQHSVϩ6Sd0`0(v,@f+}C_O_>(胢>(胢>(胢>(}|9K\ۼv:ٸǿϗmS{~Ydz /Wl-pq {;9nL<nM>Yc+G^~Do.>_9.72n6c {GtC[7;θra.5=IlAoNi*z:ζRUo]G/)LL6]tB}3胢>(胢ʡ/팸/x:m{ _ynPFysjy?wv\Rޭkm1︷9:~YK6#U{Y=vO9cSƿ< P|rc=ӭ ^=ק{O-дڎOne:}p9g}~'4-.;89]/7^~ɟ֑.\/G aƋ^js"s UmVu/e n!6Ǝ/7ۯǘn<ͣ{˸K=L7ǫ<8ZyqȃN2~9>ZAW*9K @BǷ_6j/7ݼ^ϳ{W _n|;- Xo0|mO:_%SWa[>(胢>(t퉸;sE?#̶ܹܺO1#/7oM'rǿnO~sK2~w//߯.r^y~A胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(ϟ?~|F?ͩ郢ʙ?5?h_͙q胢>(胢>(胢>(胢>(胢ʙS}8}PA9U_SE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE@ PIENDB`PKgE"Vqe=DDmeta.xml 2022-12-29T22:51:042023-01-02T09:43:14PT5H56S103OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKgE"V settings.xmlZ[s:~_lme$l0 0`l.~0W20pI8v|vuZݭ6_X ,䱤~QJWx,9v߾,PR/  q.+1c)I*!bUUinZut5%Y,KsΣj\.,o/ӧQ<29%e3z>rFTܖ7F0rɱ #!b+@R9HTˮc|wvq\RzmnspJޖ:=a-@˟V:59ÀI16J|ᥧߵc?F3~\}P*JnQݽo! C.E}wܹID.,ř7̸FQQH;"ݢ)`Te4s8JKZu`Ir|ږQ#%"0Q'?|aQ5~p͞5¢%2|.rb{D;oty- ]f.zREG/?Ʒw*\E;@<9,.}i,+XB7į(°P}3nƪ;οznF_ؚ9oocWvcU!t?&2Z`=7@_OAØ7.POUmҭ;+ %O4% 1sߦjzMFuzcDu"ջ+z:]_& wl(z*+ !^g+t)S6KG}ǴӊanNּ*Ne# sj7N߻vdtuCxMMMC>;Veo0omEj 9g΋nZC\5Fb$˦xCOO2Fm2vSwNRJkSV/HFG?)PK +r&PKgE"V content.xml[ے}WJx+;]IՎ8B$HK,I ?%i7p(iFlnA\yuChyZ*iBNO?h>4%1^%4dZLK Xͪީۺ\QԐfU7+hj%kXmKbs,[3gK,eF\@SxZJB3CmxSNl`-!Bg˹H/~Mb=s5`I+"$Bu&򯆐sFtx5:O W{_Zw{m}'X0_m|]|2eO7-FSG7#O\ut' LyP6\N培+ŲÙo"y3wF*;/@/l[`(NT*JD50O8H꾁ўnw?p{'3M'6ПîdݫG8քQZuXK S- |8 ip4L[ G-S=/^5Ĵ.mDݶ +1;nig2N}H9CyC,v7RpQ"6gk~T`kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PKgE"VConfigurations2/statusbar/PKgE"VConfigurations2/menubar/PKgE"VConfigurations2/toolbar/PKgE"VConfigurations2/floater/PKgE"V'Configurations2/accelerator/current.xmlPKPKgE"VConfigurations2/popupmenu/PKgE"VConfigurations2/toolpanel/PKgE"VConfigurations2/progressbar/PKgE"VConfigurations2/images/Bitmaps/PKgE"VMETA-INF/manifest.xmlTn0 UM]-' 6\b'{O]D6`-fr* @]-޶Yh[ F!]ZUdB*6UM0r9:1]XN+_k}~:^=4V|P Fsȓ9f]qg w=nseԼ.T6v;jHٔC}, V}%ox`-G0@6yh Hͦ5OӗlR[tn+m 8ݐ)z__ ePdҌ i _oPK.YPKgE"V.++mimetypePKgE"VX8  QThumbnails/thumbnail.pngPKgE"Vqe=DDmeta.xmlPKgE"V +r&  settings.xmlPKgE"V3 ~1 content.xmlPKgE"Vϣ[[-=Pictures/10000000000000200000002000309F1C.pngPKgE"V\O( }5 styles.xmlPKgE"V4'Configurations2/statusbar/PKgE"Vl'Configurations2/menubar/PKgE"V'Configurations2/toolbar/PKgE"V'Configurations2/floater/PKgE"V'(Configurations2/accelerator/current.xmlPKgE"Ve(Configurations2/popupmenu/PKgE"V(Configurations2/toolpanel/PKgE"V(Configurations2/progressbar/PKgE"V)Configurations2/images/Bitmaps/PKgE"V.YL)META-INF/manifest.xmlPK*vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-rectangle-unchecked-hover.png000066400000000000000000000003071444746353100307760ustar00rootroot00000000000000PNG  IHDRw= pHYscyIDATxc?- -رc;ZoA+'U _,fƴ`4Z0jDXWOR,ip}A!44% IENDB`vokoscreenNG-3.7.0/src/pictures/css/magnifier/magnifier-rectangle-unchecked.odg000066400000000000000000000325551444746353100276540ustar00rootroot00000000000000PK<"V.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK<"V؍Thumbnails/thumbnail.pngPNG  IHDRzAIDATxmXQ6`Sm-c ``ˏWRX9W59_?\_zAE}PAE}PAE}PAEǷo ?h[uֳq?ϷmS{~Ydx oWl-pvxsدs3qxGLћe79z~if=Ruh{y/=e 6BŻh(>}=í ={xקGO-аgfmӇ[N3f;e#nz19o>w?.\ʫ_f a#`/G,~1TζYu;6~\o,bg˸tzk3~٥;O<~{¼wig~ߓx|G+o3yЋ_G+W<_%8~A/\q|eǷqP=`r(胢gq_'<}et{"̼_vX;ٖy=rtz}"7@E/} |ͻaPX~zyBb زȝy(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(}ӶOx>xą׿Ak5q;胢>(胢>(胢>(胢>(胢>(ㅟ"8;}^>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(4 {IENDB`PK<"VfoFFmeta.xml 2022-12-29T22:51:042023-01-02T08:38:33PT5H1M32S103OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK<"V settings.xmlZ[s~_aOmeebj-&02%,adkׯd`ðvTcKju|cw2ǂI)\!P`[O|2N#¯\ aWb:aB2ce|)ݴrLY<bq\~Z|[T5M+OwC1x,esiJf{)f|Jw儍b%E-nߍf/cB)Vx0rˮC<;CUrLj{.U*E%K]6]S,<2GP7z(nh KMtRL4] #%XuE-n_l5=8R7.zMv̕BhH|ۊ!\iZY sQ?P?cuhbz,bv0#Ÿ2R4|(4;'#,C,v69* yh$=ga7w2g s@\dͱ%c"EIK|2 s ڛ|U@=xTɨ{չ1Dpu-eKsQE5eуSZa.+T9fA5ډjp".'洆dzJ/3!*fL({i4 |?8h{*9% LN kjT T9&Gdd2a  K>@b-<;xm'$+ 83H&/t3bTJEsQ4L?H κЋMh^+  Z$&N4m7a72)r[ݾk24s#nԤԶ`a[(j0D)Vê)QM*$K2BhXv*Z ncV\)GP(hCnK`d&/LQɲN/E* :I-1I@@m;[jH;nH~0zz;ocG<<ݷsgx[|]@0k(#)hquq ^pt35tUs.& _qIQq#f5;e>x^-5 FetU$/GD k5-Ż*洮*s_]5qĮ:#vUN,"x?Sq< l3jƹ.Z-:uI_|cmDϏw HAI'ORYH8j9MdlU)ŋRƣٗ0 BzgE >$!Ό?(_o5`cb(&q>'qHNѧAH/91۪/oR4=mxkv,*4.p5gx +53R|g@Ƴj*p46MOn럽R#BK24~hql: \ XU|*` 6clդqQX嘧g` Xer.,!Ww1lݽJ!\%><^ !JttA3O܅ V۵qdۿ&._4fm߭cJФ퉸oirgPۄ7ꧮ&C[~Gd&}P7+H/mn-%X`lA[ (vaՇ욹H)]R`B /ZAYt_cPb4טWKp4Jq2Yߢ"WE_E:Uc)4%dV\ý ib(׺ߦhmx]l2Ey+x떿CSG7#O\ut' /LۿvqP-6\~?rge;U /fJT}l m݋@8<mHu3$8MS))p\3ܳ<Ѧn:C"WElX#F9ed`z$^/ +9w0*l(ٶLa[)+D&3;pSΰap6Q$"}LY*+D z"O]2Q=vRϴ0#}iQְۃpp.o&=;Jkqϖ /c++_(_5_oowjڤŮZ9|AӰQQiqGQ0E+|{_RF#-mE!?73_>8gnzA7kJB,D$"3561b5'ѧvZ םQI](AR阹cp1RU,"%]dsS3 ʼn[aȞkUNgT d!)l.W|Q+-%Gy7r!uj4#ܰbV8lUSܻ7th) U@LuґVTafYϢћf5i톤aZveׁMM.3A6hQ:?В] IIDp^QQ$a7iM?ɼzAi 0)WB°OO>4Gt8w{Ji`TmwOX3ᇟTS[FȜVvРcؤר}Z v~ _~,?" Np/<̤E64Fo֘Lt]SJUM(vTa׵GXւ]As+zua)*1sA?aI~mjIW[9!AnPɅR#wI1ڀ}ܣq4tDMD]4m/qon7b` 3Z691D5K~4$\wp$i%Pڵ~W4C K΂SRɖ  YzWࠫ#Z8Chv6b/|] d::BB<}uF^fAt==C x7v`sG;NQsJ鎵; 91c 9%uy9#iEd.xΑm|'h+/mČHfTo(aI}zo,n>D‰(Ս1Dڵ3ó ҇`~A*|0|.6gC|+IJHĦ%r Y, AokIbd.zzEmH. &S4)!9t^/CfWݵ1sa:}:RFPAyowƚr)'%m{c(Ήaf#eŔTOKTn_ūחhrw=żOs[UyqK?ɑIS4xm5Ef5v9ӗ#yF#.huP^]=5-͂i<.h ={ZǠ賓INp>OY>Es 1:-0FOn \eC@iB7~Q A~-u##^ gi#}m+7K}JۃFI_;s '(8aJ?FA({æŽȍVމ/ ^re9V?A.Sϊaͪ$i% ZL\Zp8ۥ2_8e v{h0J ˅ݳ-bw ì)*jp5VaY{s_ZnCy̰nPK\O( }5PK<"VConfigurations2/statusbar/PK<"VConfigurations2/menubar/PK<"VConfigurations2/toolbar/PK<"VConfigurations2/floater/PK<"V'Configurations2/accelerator/current.xmlPKPK<"VConfigurations2/popupmenu/PK<"VConfigurations2/toolpanel/PK<"VConfigurations2/progressbar/PK<"VConfigurations2/images/Bitmaps/PK<"VMETA-INF/manifest.xmln0IyXghԂQ F- ɂ߾2|z:e,L 'wh⃏rq4R#X!IENDB`vokoscreenNG-3.7.0/src/pictures/css/radioButton/000077500000000000000000000000001444746353100216465ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked-disabled.png000066400000000000000000000016361444746353100266110ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=HPOSR*VqP,8jP! :4$).kŪ "%ޗZx>λ}Ш046Ʉͭ=#eIR uO}TwqgyxMA)RP(gM9yskЬR7!0Zuw:oOk~?Xrs#bKGD pHYs.#.#x?vtIME :F7tEXtCommentCreated with GIMPWvIDAT8˵1KA'A Kh4!S5vAmR,x& ץ`-$MjA"h3'k4`X}73f3s@Ur3ce` ~:@UUꩍaPJ58Q{4PN-l&BP.T2J]U^+6֭&ܨJc mJUXRx*^k j3ItUectAUZvOl`> G/9bJ l"Fo㔚سKbA`[EKFe*F-QسoGUѪfs7@U0,ث; {Jn%#碵_Hv_#XZ!AIENDB`vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked-disabled.xcf000066400000000000000000000234311444746353100266020ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit millimeters) (xoffset 0) (yoffset 0) (offset-unit inches) o Hintergrund!? "     %$#{'' 7 O  [";&&&&&<:864 2 1 /.-+*)(&%$#"! ====== = = = ===============<:864 2 1 /.-+*)(&%$#"!     <:864 2 1 /.-+*)(&%$#"!     <:864 2 1 /.-+*)(&%$#"!   !!####$$%&%&&''(((()(%- 59;ՠ=#='=-=3= 7=;==)=#==# =%- 59;ՠ#'-3 7;)## %- 59;դ#'-3 7;)## %- 59;#'-3 7;)## =;86 4 20.,*)'&%#"! !"#$%=$=#=!=!=  =  = = ======== = = = = = = = = = ==;86 4 20.,*)'&%#"! !"#$%$#!!               =;86 4 20.,*)'&%#"! !"#$%$#!!               =;86 4 20.,*)'&%#"! !"#$%$#!!   !!!!##"##$$%%%%&%&====== = = = = = = = = = =  =  = = =  = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =  = = =  =  = = = = = = = = =                                                                                                                    ))*)*)****++*+++++                                    ,,++,++++='=)=-=/ =3 =5=7=8=9=:=;=;=<===== ?=>=====<=;=;=:=9')-/ 3 5789:;;<== ?>==<;;:9')-/ 3 5789:;;<== ?>==<;;:9')-/ 3 5789:;;<== ?>==<;;:9====== =============== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ==============                                                              &&&'&'                               = ===================== = = = ======= !"#$%&()*+-./1 2 4 68:<>@       !"#$%&()*+-./1 2 4 68:<>@       !"#$%&()*+-./1 2 4 68:<>@ *+*+*****)*))))((''&''%%%%$$##"! !"#$%&()*+-./1 2 4 68:<>@=8=7=5 =3 =/=-=)='=#=#=)=S===;=7= 3=-='==#=>;95 -%875 3 /-)'##)S=;7 3-'#>;95 -%875 3 /-)'##)S=;7 3-'#>;95 -%875 3 /-)'##)S=;7 3-'#>;95 -%= ========= = = = = = = = = = ====== = = = = = =!=!=#=$%$#"!  !"#%&')*,.0 2 468;                !!#$%$#"!  !"#%&')*,.0 2 468;                !!#$%$#"!  !"#%&')*,.0 2 468;&%&%&%%%$%$$$$##""!"!    !!#$%$#"!  !"#%&')*,.0 2 468;????dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked-hover-pressed.png000066400000000000000000000017341444746353100276270ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[T :Yq*BZu0 4$).kŪ "%/)=Ff8jN&lnU"1L}NS_.γ9z@ xf>Iл \\5ytɐ)@_(gM9qd pp){ݡ=2QrQbKGD pHYs.#.#x?vtIME J/tEXtCommentCreated with GIMPWIDAT8˭=OAٻʾ"%99BqM e$Ht~=Rpe K|A XrwG`Z+[>|`uste<4.fj h; ] |c`,@d$>TQ_06(ofJL\;۟Q_ǽTw2\ `de 0W2RDVfǪZvX Ե{zM*{ZKFKi, dya;7 bUzAӉc>/jX˹y5=*D3J$Ҫcj:憉f@C;?nS4mdI{8U=R\KH󸗪 3Nߏ 0IENDB`vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked-hover-pressed.xcf000066400000000000000000000303351444746353100276220ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit millimeters) (xoffset 0) (yoffset 0) (offset-unit inches) o Hintergrund!? "     %$#{007 f m&(./v/0h0=<=9=7=5 =3 =1 =0=.=,=+=)=(='=%=$=#="= == =!="=#=$=%=&='='=(=)=*=+=+=+=*=*=(=(=(=&= &= %= %= %= $= $= #= #= #=#="="="=!=!=!=!=<975 3 1 0.,+)('%$#"  !"#$%&''()*+++**(((& & % % % $ $ # # ##"""!!!!<975 3 1 0.,+)('%$#"  !"#$%&''()*+++**(((& & % % % $ $ # # ##"""!!!!'<R9q7!5$31 v 0\ .7, }+H) (='j%$;#Z"s (05 5!0"(#$ %&s'Z';()*j)=' ''H% %}% 7$ $ \$ 1 v# " " $! !! 5 q R '8='=/= 7=:=X=%=~~=^%^=+=1 =5=8=;=<_=1=(="= '/ 7:X%%+1 58;<_1(" '/ 7:X%%+1 59;=_1(" 8VrɷrV8HuȠuH7p'ۧp7 ,n/n,B7@:}"%+15;<<_1(" =<=9=6 =4 =1=/=-=+=)=(=&=$=#=!= =!="=#=$=&='=(=)=*=+=,=-=.=/=/=0=/= .= -= += += *= *= (=(=(=&=&=%=%=%=$=$=#=#=#=#="="="=!= = ==<96 4 1/-+)(&$#! !"#$&'()*+,-.//0/ . - + + * * (((&&%%%$$####"""!  <96 4 1/-+)(&$#! !"#$&'()*+,-.//0/ . - + + * * (((&&%%%$$####"""!  ҋB<ݐ@9}'6R4 q1 !/$-+v )\(7&} $H# != j ;!Z"s$ %&('0(5)5*0+(,- ..s,Z +; * * )j '= '  '%H% %}$7$$\9 #v""!$! !=  q?_===R' = = = == ============^====~=== = === = = = = = =!=!=!=!=!=!= = = = = = = = = = =====~====^========             !!!!!!                       !!!!!!          }@9B,n;;7<p<<H=u=>8>>>:::>>:::>>>> r V 8<>u=H=<<p7<;n;,o!=o%=)=G+=G/=1= 3=5=7=8=9=:=;=G;=<=====>=o=o>=>=====<=G;=;=:=9=8=7=!%)+/1 35789:;;<==>>>==<;;:987!%)-/1 3 5789:;<<==>>>==<<;:987!%T+35=}?7= = =!="="="=#="="="="=!=G =!= =^= =o==~== = = = = = = = = = =!=!=!=!=!=!= = = = = = === = ====~==o= =^= =!=G =!="="="="=  !"""#""""! !            !!!!!!          ! !"""" !!""##"#""! !            !!!!!!          ! !""#"?>?>?"b ^_>_^>>!>>>>>>>]>>>} ="====================================}@B,n7pHu8VrrV8uHp7n,== == = = = =!=!=!=!="="="=#= #= #= #= $= $= %= %= %= &= &=(=(=(=*=*=+=+=+=*=)=(='='=&=%=$=#="=!= == ="=#=$=%='=(=)=+=,=.=0=1 =3 =5 =7=9=     !!!!"""# # # # $ $ % % % & &(((**+++*)(''&%$#"!  "#$%'()+,.01 3 5 79     !!!!"""# # # # $ $ % % % & &(((**+++*)(''&%$#"!  "#$%'()+,.01 3 5 79B9@}'8R q  5!  ! $! " " v# 1 \$ $ 7$ }% %H%' '='j)*);(Z's'& %$(#0"5!5 0( "s#Z$;%'j(=) +H, }.70\ 1 v 35$7!9q5=3= 1=/=G+=G)=%=o!=o="=(=1=>=<=;=8=5 =1=+=^%^=~~%==53 1/+)%!"(1><;85 1+%%5 3 1/-)%!"(1>=;95 1+%%53+T%!"(1??@?5 1+%"#="="="=!= = === = =!="="="=#=#=#=#=$=$=%=%=%=&=&=(=(= (= *= *= += += -= .= /= 0=/=/=.=-=,=+=*=)=(='=&=$=#="=!=== =!=#=$=&=(=)=+=-=/ =1#"""!    !"""####$$%%%&&(( ( * * + + - . / 0//.-,+*)('&$#"! !#$&()+-/ 1##""!!   !"""####$$%%%&&(( ( * * + + - . / 0//.-,+*)('&$#"! !#$&()+-/ 1#=>}=>=}=> q = !!!$""#v9 $\$$7%}% %H ' '  '= )j * * +; ,Z .s.- ,+(*0)5(5'0&(%$ "s!Z ;j=  !H#} $7&\(v )+$- !/ q1===========B@}'R<=>=<><><R>'===:=7= /='== =:7 /' =:7 /' ?}=@:B7,n/n, 7p'ۧp7HuȠuH8VrɷrV8 =4=6=9== 469= 469=R4}'6ݐ@9ҋB=????dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked-hover.png000066400000000000000000000015631444746353100261640ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[R*V鐡QGB*ZUKIC(X:8* NN.RBoTjvfdBVWωb >y?G7gnXӛy8JB|NN u"e{;ۿgZzxr#ArbKGD pHYs.#.#x?vtIME :[tEXtCommentCreated with GIMPWJIDAT8˭JA;[rzQۧHca=4b#HFKu}Zlo矙66" @"OwfqQxhw`Y"yu < Tn \zg޶DCL;3)N;3Hz2S<ޙ連l^*3l^/JI yxgP.bNLr'SadVޙD)L*e +V>Y˃\$1E, > 1i\'>Az0n ʠߙ!cP2VP$kYMK3߇gIENDB`vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked-hover.xcf000066400000000000000000000250731444746353100261620ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit millimeters) (xoffset 0) (yoffset 0) (offset-unit inches) w$ Hintergrund!? "     %$#$$? 1 )"#H#z$:$=<=9=7=5 =3 =1 =0=.=,=+=)=(='=%=$=#="= == =!="=#=$=%=&='='=(=)=*=+=+=,=-=.=.=/=0=0= 1= 1= 2= 3= 3= 4= 4= 5= 5=6=6=7=7=7=8=8=9=<975 3 1 0.,+)('%$#"  !"#$%&''()*++,-../00 1 1 2 3 3 4 4 5 566777889<975 3 1 0.,+)('%$#"  !"#$%&''()*++,-../00 1 1 2 3 3 4 4 5 566777889'<R9q7!5$31 v 0\ .7, }+H) (='j%$;#Z"s (05 5!0"(#$ %&s'Z';()*j)U=' 'M'H%l %J}%/7$$ \$ #v#"" $!!/! J!l q MR ' U='=/= 7=:=='/ 7:'/ 7:8VrɷrV8HuȠuH7p'ۧp7 ,n/n,B7@:}ȤgN8%  %8Ng"R##R}==}e'eo-o@3@#7}9;1Y0VҭV0)OO#\\++ =<=9=6 =4 =1=/=-=+=)=(=&=$=#=!= =!="=#=$=&='=(=)=*=+=,=-=.=/=/=0=1= 2= 3= 3= 4= 5= 6=6=7=8=8=9=9=:=;=;=<=<=====>=>==<96 4 1/-+)(&$#! !"#$&'()*+,-.//01 2 3 3 4 5 6678899:;;<<==>><96 4 1/-+)(&$#! !"#$&'()*+,-.//01 2 3 3 4 5 6678899:;;<<==>>ҋB<ݐ@9}'6R4 q1 !/$-+v )\(7&} $H# != j ;!Z"s$ %&('0(5)5*0+(,- ..s#,Z}+;*1*U)j'=M' 'l%HJ% /%}$7 $$\# #v" "!$/!J !l!  qM U===R'9=9=:=:=:=;=;=;=<=<=<=<=========>=>=>=>=>=?=>=>=>=>=>=>=========<=<=<=<=99:::;;;<<<<====>>>>>?>>>>>>====<<<<99:::;;;<<<<====>>>>>?>>>>>>====<<<<}1@}B#,n@o7peH}u=+R\8#VrOgN08V%    %8VN0grOV8#R\+u=H} ep7on@,=0!0 %  e)e %+% I/I m1m3578m9I:%; ;e< ==0>>0>= =e< ;%;I:m987=1  !}!"!#! @m I o% ee 0}=+\R# O  g 0N V8 %         % V8 0N g O#\R+=0} ee %I om  @!====================================}@B,n7pHu8VrrV8uHp7n,;=;=;=:=:=:=9=9=9=8=8=7=7=7=6=6= 5= 5= 4= 4= 3= 3= 2= 1= 1=0=0=/=.=.=-=,=+=+=*=)=(='='=&=%=$=#="=!= == ="=#=$=%='=(=)=+=,=.=0=1 =3 =5 =7=9=;;;:::9998877766 5 5 4 4 3 3 2 1 100/..-,++*)(''&%$#"!  "#$%'()+,.01 3 5 79;;;:::9998877766 5 5 4 4 3 3 2 1 100/..-,++*)(''&%$#"!  "#$%'()+,.01 3 5 79#B}@1}' UR Mq  !l! J!/$!" "v# #\$$ 7$}%/ %JH%l' 'M='j)U*);(Z's'& %$(#0"5!5 0( "s#Z$;%'j(=) +H, }.70\ 1 v 35$7!9q=53m1m I/I %+% e)e  % 0!0++\\#OO)0VҭV01=;}9#7@3@ o-oe'e}==}R##R"ȤgN8%  %8Ng=>=====<=<=;=;=:=9=9=8=8=7=6=6=5= 4= 3= 3= 2= 1= 0=/=/=.=-=,=+=*=)=(='=&=$=#="=!=== =!=#=$=&=(=)=+=-=/ =1>==<<;;:99887665 4 3 3 2 1 0//.-,+*)('&$#"! !#$&()+-/ 1>==<<;;:99887665 4 3 3 2 1 0//.-,+*)('&$#"! !#$&()+-/ 1!#"!!}  1U M q l!J !/!!$ ""#v# $\ $$7/%}J% l%H'M' '=U)j1** }+; #,Z .s.- ,+(*0)5(5'0&(%$ "s!Z ;j=  !H#} $7&\(v )+$- !/ q1===========B@}'R<=>=<><><R>'===:=7= /='== =:7 /' =:7 /' ?}=@:B7,n/n, 7p'ۧp7HuȠuH8VrɷrV8 =4=6=9== 469= 469=R4}'6ݐ@9ҋB=????dd22 Auswahlmaske!? " & %k%*#*/&'&+&j&n&r'@()s)w){* *****!Lx׽xL) S՗S #NNrr >r>=N=< <S<<;;L;x;;;;;;;;;;;;;x;L;<<<S< ==N>>r>x!xc%c4)4j+j / 212B3BH5B7289:j;4;<c==x>>x>=c=<4;j;:928B7H>B=2<;;j:499c87x76r66N55 4 S4 4 4 3 L3 x3 3 3 3 3 3 3 3 3 3 3 3 3 x3 L3 3 4 4 S4 45N56r66x77c8949j:;;2<B=H5B3B212 / j+j4)4c%cx!xrrNN# S՗S )Lx׽xL H?dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-checked.png000066400000000000000000000016361444746353100250440ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[R*VuP,:jP! :\MGbYWWAqtrRtZxp܏wwTc P5H%B&*t" 0i(&9]gyst+9>xEA7e[ 7!0Ruw{LLrr[bKGD pHYs.#.#x?vtIME /tEXtCommentCreated with GIMPWvIDAT8˵1kTAb q+` u˭cegE,Diz+@H1ha'>0>= =e< ;%;I:m9876=7=7=7=8=8=9=9=9=:=:=:=:=;=;=;=;=<=<=<=<=<=<=====================================================<=<=<=<=<=<=;=;=;=;=:=:=:=:=9=677788999::::;;;;<<<<<<==========================<<<<<<;;;;::::9677788999::::;;;;<<<<<<==========================<<<<<<;;;;::::9&1.&&'}T&'#a@ mSIo% *eef 0}=J+y\R#" D Oc   g 0N V8 %           % V8 0N g   Oc D#"\R+y=J0} eef *%IomS@  1= 1=0=0=/=/=/=.=.=-=-=,=,=+=+=*=*=)=)=(=(='=&=&=%=$=#=#="=!= === =!="=#=$=%=&=(=)=*=+=-=.=/=1 =2 =4 =6=8=:=<=>=@ 1 100///..--,,++**))(('&&%$##"!  !"#$%&()*+-./1 2 4 68:<>@ 1 100///..--,,++**))(('&&%$##"!  !"#$%&()*+-./1 2 4 68:<>@ a#*+*T}+**.1**NU*)`*M)f))^l)J(K/(', 'u&'D'% %<%j/%J$l$:#XM#p"U!1 !""#"$%&(p)X*:+-j.</ 1D 2u 4,6K8^:f<`>N@ =>=;=9=5= -=%== >;95 -% >;95 -%53m1m I/I %+% e)e  % 0!0++\\#OO)0VҭV0S=};#7#@3@o-oe'e}==}R##R"ȤgN8%  %8Ng>.;T8a3 S-ٗS *f%נf*JyЦyJ"DcïcD"9=9=8=8=7=7=7=6=6=5= 5= 4= 4= 3= 3= 2= 2= 1= 1= 0=0=/=.=.=-=,=+=+=*=)=(='='=&=%=$=#="=!= == =!="=#=%=&='=)=*=,=.=0 =2 =4=6=8=;=9988777665 5 4 4 3 3 2 2 1 1 00/..-,++*)(''&%$#"!  !"#%&')*,.0 2 468;9988777665 5 4 4 3 3 2 2 1 1 00/..-,++*)(''&%$#"!  !"#%&')*,.0 2 468;#a&%&}T%&%1.%%UN$%`$M$f$$l^#J#/K"" ,!u"!D  </jJl:MXpU1} !"!" p X!:"#j%<&'D)u*,,K. ^0 f2`4N6އ.8T;a????dd22 Auswahlmaske!? " & %%*v*&z&~&&&'(f)))*^*d*h*l*p*tLx׽xL) S՗S #NNrr >r>=N=< <S<<;;L;x;;;;;;;;;;;;;x;L;<<<S< ==N>>r>x!xc%c4)4j+j / 212B3BH5B7289:j;4;<c==x>>x>=c=<4;j;:928B7H>B=2<;;j:499c87x76r66N55 4 S4 4 4 3 L3 x3 3 3 3 3 3 3 3 3 3 3 3 3 x3 L3 3 4 4 S4 45N56r66x77c8949j:;;2<B=H5B3B212 / j+j4)4c%cx!xrrNN# S՗S )Lx׽xL H?dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-unchecked-disabled.png000066400000000000000000000015531444746353100271520ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[R*FqP,8jP! :\MGbYWWAqtrRtZxp܏ww`4ktL'b6*"0 3˘|=|,s^5o1 2ô77m>JJ|NF]YwcigJo `z[}u[S`ɐMٕB4~FߔoȚ[k@Jh}3~ Mr}K;bKGD pHYs.#.#x?vtIME !tEXtCommentCreated with GIMPWCIDAT8˵1JPbZhXf=,b ov@н\] Z]`) Z8gtCiB|̛Ԙj:qI@8@DU-H5]@l0B`X0$" p{|8,fl+o]w\-]Ľ[J.{׿A*g`xbYc?Z^.E. zh\ M'M,Z!3(ijPd;}37.3q^4f8r)δԭӒj 2q[#t$3}F}؉ZIENDB`vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-unchecked-disabled.xcf000066400000000000000000000203671444746353100271520ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit millimeters) (xoffset 0) (yoffset 0) (offset-unit inches) o Hintergrund!? "     %$#{ 7 /! <:864 2 1 /.-+*)(&%$#"! ====== = = = ===============<:864 2 1 /.-+*)(&%$#"!     <:864 2 1 /.-+*)(&%$#"!     <:864 2 1 /.-+*)(&%$#"!   !!####$$%&%&&''(((()(%- 59;ՠ=#='=-=3= 7=;=~=%- 59;ՠ#'-3 7;~%- 59;դ#'-3 7;~%- 59;#'-3 7;~=;86 4 20.,*)'&%#"! !"#$%=$=#=!=!=  =  = = ======== = = = = = = = = = ==;86 4 20.,*)'&%#"! !"#$%$#!!               =;86 4 20.,*)'&%#"! !"#$%$#!!               =;86 4 20.,*)'&%#"! !"#$%$#!!   !!!!##"##$$%%%%&%&====== = = = = = = = = = =  =  =  =  = != != != != "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= "= != != != !=  =  =  =  = = = = = = = = =               ! ! ! ! " " " " " " " " " " " " " " " " " " " " " " " " ! ! ! !                           ! ! ! ! " " " " " " " " " " " " " " " " " " " " " " " " ! ! ! !            ))*)*)****++*+++++++,,++,,,,,,,,,,,,,,,,,,,,,,,,,,,,++,,++,++++======= = =!=!="="="=#=#=#=$=$=$=$=%=%=%=%=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=&=%=%=%=%=$=$=$=$=#=#=#="="="=!=!=  !!"""###$$$$%%%%&&&&&&&&&&&&&&&&&&&&&&&&%%%%$$$$###"""!!  !!"""###$$$$%%%%&&&&&&&&&&&&&&&&&&&&&&&&%%%%$$$$###"""!!&&&'&'&'''''(''((''((((((((((((((((((((((((((((''(('''''''&''&& = ===================== = = = ======= !"#$%&()*+-./1 2 4 68:<>@       !"#$%&()*+-./1 2 4 68:<>@       !"#$%&()*+-./1 2 4 68:<>@ *+*+*****)*))))((''&''%%%%$$##"! !"#$%&()*+-./1 2 4 68:<>@@===;=7= 3=-='==#=>;95 -%@=;7 3-'#>;95 -%@=;7 3-'#>;95 -%@=;7 3-'#>;95 -% = ========= = = = = = = = = = ====== = = = = = =!=!=#=$%$#"!  !"#%&')*,.0 2 468;                 !!#$%$#"!  !"#%&')*,.0 2 468;                 !!#$%$#"!  !"#%&')*,.0 2 468; &%&%&%%%$%$$$$##""!"!    !!#$%$#"!  !"#%&')*,.0 2 468;????dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-unchecked-hover-pressed.png000066400000000000000000000015561444746353100301740ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[T ꐡ:Yq*BZu0 4$).kŪ "%/)=Ff8jN&lnU"1HD1u_<ܟGɛ ijL7, MKOe%I!>'3ď\]~\t3F&=O%,w0+*qLQ5g]V8oqV+5ֺ'a$,s0XDQCXӪb"M % FTBr[09&E@m]YcngJk `z[u[`I ɑ4~Fߔn[k@Jh=3~qro`pbKGD pHYs.#.#x?vtIME #zP&tEXtCommentCreated with GIMPWFIDAT8˭-oAS!&B IyDmPmsDA8#AnE5#q;d>YEz"`t{Z3`$iZ?N +́4@xj]Me,V<xL2!AKhTUৱ=X= ӝ <]Kz9UWi6y/)=(='=T'=&= &= %= %= %= $= $= #= #= "="=T"="=!= =>!= =!=<975 3 1 0.,+)('%$#"  !"#$%&''()*++**)(''& & % % % $ $ # # """"!!! !<975 3 1 0.,+)('%$#"  !"#$%&''()*++**)(('& & % % % $ $ # # "#""!!! !'<R9q7!5$31 v 0\ .7, }+H) (='j%$;#Z"s (05 5!0"(#$ %&s'Z';()*j)=' ''H% %}% 7$ $ \$ # v# " " $! !! ! q R ' ='=/= 7=:=V=JݻJ"=GݜG=!='=-=B3=V7=W9=G;>'/ 7:Vֿ#!'- 379;>'/ 7:W$!'- 379<>8VrɷrV8HuȠuH7p'ۧp7 ,n/n,B7@:}"!)/3;;<>=<=9=6 =4 =1=/=-=+=)=(=&=$=#=!= =!="=#=$=&='=(=)=*=+=,=-=.=/=/=B/=V.= W-= G,= += *= >)= )= (= T'='=&=&=%=%=%=$=$=#=#="=T"="="=!=> = ===<96 4 1/-+)(&$#! !"#$&'()*+,-.//0. - - + * * ) (''&&%%%$$##""""!! <96 4 1/-+)(&$#! !"#$&'()*+,-.//0/ . - + * * ) ( ('&&%%%$$##"#""!! ҋB<ݐ@9}'6R4 q1 !/$-+v )\(7&} $H# != j ;!Z"s$ %&('0(5)5*0+(,- ..s,Z +; * * )j '= '  ' %H% %}$7$$\# #v""!$! !!  q?>===R' ==G ==W==V==B============G=====J = = = = = = = = = = =!=!= = = = = = = = = = =J =====G===========              !!                  !        !!        !  }@B,n7<p<Hu8>V r       >>>>>      r V 8>uH<p7<n,=G= = W=!=!V="="B=#=#=$=$=$=%=%=%=&=&=&='G='='='='=(J=(=(=(=(=(=(=(=(=(=(=)=)=(=(=(=(=(=(=(=(=(=(=(J='='='='='G=&=&=&=%=%=%=$=$=$=#=#=  !!""##$$$%%%&&&'''''((((((((((())((((((((((('''''&&&%%%$$$##   !!""##$$$%%%&&&'''''(()(((((((())(((((((()(('''''&&&%%%$$$##>>?>?>?>>?>>>>?>>>>>>>>>>?>>>>>>>}>>>=>>}>}>=>====================================}@B,n7pHu8VrrV8uHp7n,=B==V==W ==G =!= =!= =>!="="="=T "= #= #= $= $= %= %= %= &=&='='=T(=)=)=>*=+=+=*=)=(='='=&=%=$=#="=!= == ="=#=$=%='=(=)=+=,=.=0=1 =3 =5 =7=9=   ! !!!""" " # # $ $ % % % &&''()**++*)(''&%$#"!  "#$%'()+,.01 3 5 79     ! !!!""# " # # $ $ % % % &&'(()**++*)(''&%$#"!  "#$%'()+,.01 3 5 79B@}' R q  !!  ! $! " " v# # \$ $ 7$ }% %H%' '='j)*);(Z's'& %$(#0"5!5 0( "s#Z$;%'j(=) +H, }.70\ 1 v 35$7!9q==G;=W9=V7=B3 =-='=!=GݜG"=JݻJ==;973 -'!#ֿ=;973 -'!$>???3 /)!""B="=!V=!= W= =G==== => =!="="=T"="=#=#=$=$=%=%=%=&=&='= T'= (= )=>)= *= += G,= W-= V.= B/=/=/=.=-=,=+=*=)=(='=&=$=#="=!=== =!=#=$=&=(=)=+=-=/ =1""!!   !!""""##$$%%%&&'' ( )* * + - - . 0//.-,+*)('&$#"! !#$&()+-/ 1""!!    !!""#"##$$%%%&&' ( ( )* * + - . / 0//.-,+*)('&$#"! !#$&()+-/ 1#=>=>====>== q ! !!!$""#v# $\$$7%}%  %H ' '  '= )j * * +; ,Z .s.- ,+(*0)5(5'0&(%$ "s!Z ;j=  !H#} $7&\(v )+$- !/ q1===========B@}'R<=>=<><><R>'===:=7= /='== =:7 /' =:7 /' ?}=@:B7,n/n, 7p'ۧp7HuȠuH8VrɷrV8 =4=6=9== 469= 469=R4}'6ݐ@9ҋB=????dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-unchecked-hover.png000066400000000000000000000015311444746353100265220ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[RV␡:Yq*BZu0 4$).kŪ "%/)=Ff8jN&lnUyEA ">(9]gys*y>xEA/k/s`do#դ4<"r,'Щ}_Mt6];vNPdR3KĩzM.jNv\s$'b'*읰芓?Iw K&t@.&3;MT#bP}V~l_P{X?CIENDB`vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-unchecked-hover.xcf000066400000000000000000000254271444746353100265300ustar00rootroot00000000000000gimp xcf v011CC gimp-commentCreated with GIMPgimp-image-grid(style solid) (fgcolor (color-rgba 0 0 0 1)) (bgcolor (color-rgba 1 1 1 1)) (xspacing 10) (yspacing 10) (spacing-unit millimeters) (xoffset 0) (yoffset 0) (offset-unit inches) w"% Hintergrund!? "     %$#" "? |  !"=<=9=7=5 =3 =1 =0=.=,=+=)=(='=%=$=#="= == =!="=#=$=%=&='='=(=)=*=+=+=,=-=.=.=/=0=0= 1= 1= 2= 3= 3= 4= 4= 5= 5=6=6=7=7=7=8=8=9=<975 3 1 0.,+)('%$#"  !"#$%&''()*++,-../00 1 1 2 3 3 4 4 5 566777889<975 3 1 0.,+)('%$#"  !"#$%&''()*++,-../00 1 1 2 3 3 4 4 5 566777889'<R9q7!5$31 v 0\ .7, }+H) (='j%$;#Z"s (05 5!0"(#$ %&s'Z';()*j)U=' 'M'H%l %J}%/7$$ \$ #v#"" $!!/! J!l q MR ' U='=/= 7=:=='/ 7:'/ 7:8VrɷrV8HuȠuH7p'ۧp7 ,n/n,B7@:}ȤgN8%  %8Ng"R##R}==}e'eo-o@3@#7}9;1>=<=9=6 =4 =1=/=-=+=)=(=&=$=#=!= =!="=#=$=&='=(=)=*=+=,=-=.=/=/=0=1= 2= 3= 3= 4= 5= 6=6=7=8=8=9=9=:=;=;=<=<=====>=>==<96 4 1/-+)(&$#! !"#$&'()*+,-.//01 2 3 3 4 5 6678899:;;<<==>><96 4 1/-+)(&$#! !"#$&'()*+,-.//01 2 3 3 4 5 6678899:;;<<==>>ҋB<ݐ@9}'6R4 q1 !/$-+v )\(7&} $H# != j ;!Z"s$ %&('0(5)5*0+(,- ..s#,Z}+;*1*U)j'=M' 'l%HJ% /%}$7 $$\# #v" "!$/!J !l!  qM U===R'9=9=:=:=:=;=;=;=<=<=<=<=========>=>=>=>=>=?=>=>=>=>=>=>=========<=<=<=<=99:::;;;<<<<====>>>>>?>>>>>>====<<<<99:::;;;<<<<====>>>>>?>>>>>>====<<<<}1@}B#,n@o7peH}u= R8#V r   g N 8 %         % 8 N g   r V 8#R   u=H} ep7on@,==1  !}!""###@$$o$%%e%&&}&=&'''R'#(((((g(N(8(%(( ((((( ((%(8(N(g(((('#'R''&&=&}&%%e%$$o$#@#====================================}@B,n7pHu8VrrV8uHp7n,;=;=;=:=:=:=9=9=9=8=8=7=7=7=6=6= 5= 5= 4= 4= 3= 3= 2= 1= 1=0=0=/=.=.=-=,=+=+=*=)=(='='=&=%=$=#="=!= == ="=#=$=%='=(=)=+=,=.=0=1 =3 =5 =7=9=;;;:::9998877766 5 5 4 4 3 3 2 1 100/..-,++*)(''&%$#"!  "#$%'()+,.01 3 5 79;;;:::9998877766 5 5 4 4 3 3 2 1 100/..-,++*)(''&%$#"!  "#$%'()+,.01 3 5 79#B}@1}' UR Mq  !l! J!/$!" "v# #\$$ 7$}%/ %JH%l' 'M='j)U*);(Z's'& %$(#0"5!5 0( "s#Z$;%'j(=) +H, }.70\ 1 v 35$7!9q=1=;}9#7@3@ o-oe'e}==}R##R"ȤgN8%  %8Ng=>=====<=<=;=;=:=9=9=8=8=7=6=6=5= 4= 3= 3= 2= 1= 0=/=/=.=-=,=+=*=)=(='=&=$=#="=!=== =!=#=$=&=(=)=+=-=/ =1>==<<;;:99887665 4 3 3 2 1 0//.-,+*)('&$#"! !#$&()+-/ 1>==<<;;:99887665 4 3 3 2 1 0//.-,+*)('&$#"! !#$&()+-/ 1"#"!!}  1U M q l!J !/!!$ ""#v# $\ $$7/%}J% l%H'M' '=U)j1** }+; #,Z .s.- ,+(*0)5(5'0&(%$ "s!Z ;j=  !H#} $7&\(v )+$- !/ q1===========B@}'R<=>=<><><R>'===:=7= /='== =:7 /' =:7 /' ?}=@:B7,n/n, 7p'ۧp7HuȠuH8VrɷrV8 =4=6=9== 469= 469=R4}'6ݐ@9ҋB=????dd22 Auswahlmaske!? " & "# *+ #$?$%%' '(()s)***** >8;y::9j7685R4f3t 2| 1 0| /t .f-R,8++*j):((y'8'7[{DZ{[7" F{ܭ{F @‚@N'N;-;d3d{79 x;_>>{<:x 8_785y3 :2 j1 /8.R-f,t+|*)|(t'f&R%8$##j":! y 8&_% %x$$##{""d"!;!! N  @ F{ 7 [ {                 { [ 7  {F @   N!!!;""d_  x !!"{"#d#$;$$%N%%&@&&& 'F'{''((7([({((((((((((((((((({([(7('''{'F& &&&@%%%N$$$;##d"#{#$$%x% &_''8(y():*j++,8-R.f/t 0| 1 2| 3t 4f5R6879j::;y=8_= x;9{7d3d ;-;N'N@‚@ F{ܭ{F "7[{DZ{[7""{!!  x _8y  :!j"##8$R%f&t'|()|*t+f,R-8. / j1 :2y385_7x 8:{<?dd22vokoscreenNG-3.7.0/src/pictures/css/radioButton/radio-unchecked.png000066400000000000000000000015611444746353100254040ustar00rootroot00000000000000PNG  IHDRVΎWiCCPICC profile(}=H@_[R*V␡:Yq*BZu0 4$).kŪ "%/)=Ff8jN&lnUyEA A(9]gys*y>xEA!9RPr@-Zs{kPW-Rǻ{K)rڛ'/bKGD pHYs.#.#x?vtIME 4:otEXtCommentCreated with GIMPWIIDAT8˵1kTAχ! h@BRD˭FEIUDHHbM"Xd^xD̾`rʙ{޹gXqxYݭ71Fx#.1s6Ǥ/*Rpܻo ۵ b'vghV ^>\^RݘCնg8wTg_1VpԻ)N~a ᰤpb8>##|O|(vܸ&4\s{XN:GGx2$ ==@ 1 100///..--,,++**))(('&&%$##"!  !"#$%&()*+-./1 2 4 68:<>@ 1 100///..--,,++**))(('&&%$##"!  !"#$%&()*+-./1 2 4 68:<>@ a#*+*T}+**.1**NU*)`*M)f))^l)J(K/(', 'u&'D'% %<%j/%J$l$:#XM#p"U!1 !""#"$%&(p)X*:+-j.</ 1D 2u 4,6K8^:f<`>N@ =>=;=9=5= -=%== >;95 -% >;95 -%@=};#7#@3@o-oe'e}==}R##R"ȤgN8%  %8Ng>.;T8a3 S-ٗS *f%נf*JyЦyJ"DcïcD"9=9=8=8=7=7=7=6=6=5= 5= 4= 4= 3= 3= 2= 2= 1= 1= 0=0=/=.=.=-=,=+=+=*=)=(='='=&=%=$=#="=!= == =!="=#=%=&='=)=*=,=.=0 =2 =4=6=8=;=9988777665 5 4 4 3 3 2 2 1 1 00/..-,++*)(''&%$#"!  !"#%&')*,.0 2 468;9988777665 5 4 4 3 3 2 2 1 1 00/..-,++*)(''&%$#"!  !"#%&')*,.0 2 468; #a&%&}T%&%1.%%UN$%`$M$f$$l^#J#/K"" ,!u"!D  </jJl:MXpU1} !"!" p X!:"#j%<&'D)u*,,K. ^0 f2`4N6އ.8T;a????dd22 Auswahlmaske!? " & "".**+"#l#$$&-&1''()* **** =_;89y8:7j5483R 2f 1t 0| /.|-t,f+R*8))(j':&&y%8%7[{DZ{[7" F{ܭ{F @‚@N'N;-;d3d{7{;x~ ><x :_987y5:4 j3 1 80 R/f.t-|,+|*t)f(R'8&%%j$:#"y"8!!$_# #x""!!{  d ;N@    F!{!!!"7"["{"""""""""""""""""{"["7""!!{!F!   @ N;  d_  x { !d!";""#N##$@$$$ %F%{%%&&7&[&{&&&&&&&&&&&&&&&&&{&[&7&%%%{%F$ $$$@###N""";!!d !{!""#x# $_%%8&y&':(j))*8+R,f-t.|/0| 1t 2f 3R 4857j8:9y;8=_> @x=;{7{d3d;-;N'N@‚@ F{ܭ{F "7[{DZ{[7  {x _ !8!y"":#j$%%8&R'f(t)|*+|,t-f. R/ 80 1 j3:4y587_9x :<??dd22vokoscreenNG-3.7.0/src/pictures/cursor/000077500000000000000000000000001444746353100201015ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/cursor/cursor.odg000066400000000000000000000267601444746353100221240ustar00rootroot00000000000000PKT.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKT MThumbnails/thumbnail.pngPNG  IHDRzAIDATxq8Ead&MlQIRM)jr.)Y%1D1ϟ?hy 5BP }@(>BP }@(>2L?~B7F[W¢#bo>b !0tky#ppz)}T^bzrG`>đCH7~ {+p%[ߎdbf{PxOo[σ ܑJ:}l[ϓ_줃A+RT}ʈc{u+~?ԕ_AˈQm7tܢiZVCy#\[/C{Mo+0M>}?Ys|-}8BV㺏*r-}ZQpʬf>p1FOc %(>BP }@(>BP }@(qA,cMYg >f> c 'Ab#8zAtkO0!NҟP =x}T7?l%2:}XhSGpǑM4 fud׿_Fsw㺏$ M|Ƽo>3bq'u;aHC e͋yGzK̂kIg?i+Wt_{n_AQL9 ##J MZ:eDCT3jY$cyHVޑ'|}@(>BP }@(>BP }@(>nIK#1';XhS`j>:2dh+cV!D[{9a>BWkѺCHB}̵nD"3}}eN_A%ih^x+rT<$QF[}^=b-5vl>tIc}h-gC98ryѯ~OG~!khte+X^<Բ&#I~ۭ,&Y$3I.h>&:W-GW!VuAXq&\b !ǭGC[h8=h>pк}0xn8>BP }@(>BP }@(>BP }@(>BP }@tѺlɽهd`Lqa!;`q]o&#jBg?FfDi[W\.bp?68{uq}n⇲ VN adG=H?yoUqdy kY'/ZEZg02gy}YC´}%EcG>  0d5`9rtɜ%z#29; |z˴&>RLbj-ƜU#Ύ{gBJ/KxGZ7w#%:#뢛cͮKYa[ڟ[Ŭ:ߩn+-kRݵB-Ne7U]>8 7sHxގ{x:䑝m;j=Bx)V+Iu~vI[(UTO٪7U?pkg>}@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(+&[IENDB`PKT!FFmeta.xml 2022-04-01T07:22:312022-04-11T20:15:34PT2H30M17S30OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKT settings.xmlZ[s~_lmeI2'&2s}0 ׯd`ð6>T-ın[mdQ?iH"=v1/_lXt[S\Nxq3 )R/C^Ng#͝Fd riy2/FwS"25%3]R]h`X$xAw\jC@7=eD*pGТnhq2 1r6\N44Ay-9\ y2.w>apVQr#;('tt rƖ ‰$iΟH 2ÓcZӢɲɜY‘ȣvCeq@B. lhV4UJ,Ί =}BFb Kds85mcOP\޲YN s*@RQ[BjP ۖ Ϸda@֑L}ՇU]A[R^ Ě9H+s 9 XHڞ/&tF.$߷/}7)00Э4T'P+Մ `ﶨTKCDu#T{v}8$\$u L2c B*F FizC,d 9+v`}$y[YR*5SQ<;z[RoFtwm2mګݑfOvkFٰ[Cn`MF n?A_3: ?'#kֶ֯k W{4[ngVMsޓWUW~|Y/5m3We]?W+6@SOucܮWx)/cww_5ǯOJd2Z@G__Yb":[Y1_˵ɨn)XePP2u|hA_*ӂa^y-Ytea%xY5A˾hN}Cc1 Kfj_X}/Z4WؚUt`S?{ PK2% t&PKT content.xmlݒ7f!~]UImr35IgrGcaD{o{'ɑi/X:Oww4QIQ4!͘)$ "Ζ7W՛8$ )*5Y hg\E6A,HI99Ihͻsޖ()d:jWd[Uf=a|\(Xe& NGtLԈ<^l8f|F`Kڶa+K-B$5VHCz#*?&RNH15A F5/H "`.vͯͫ"*,|BO)mλkIMW與' [@ G6ۃ9<`ꢺ.GwÇኤN8>/YY3e'GdL GO&;8t 6z Ӣj(@+fU&jeX`p0Qcj[NOLobrԟSBݵ2t&1I"6'E̼$lҫi ;bjnn[늲QUN /m։"G `=AXX_^ڡIk|1uC7li}A"Gs`5ŶmIK։ݐ`.?MIhH Mj=Td;WQovN?$xU#^rKER=8)}IuI`_9nT.YRU+yafZ_NY ~02B)38<_C^w_Cf]J/+b z:9s=-PwX[?G+R'n 6"6gѬ9۝/M"~owg:\wAj'kOfzL$xbj+qXlhV;n٤w[MU+g>n;3\L\99d f|c7[!يДTg?S؋ a\dlO9W.5QsgUy3XwRķNu]Yf/w `[XqMa,ru\2$0ժlfR%ŮY9zAc/fBE)Z$Pf) t@C7O:MN*i-kVaCpZ>TO+:NqZ^$+a֖t h>0Ua u Α`+|la28.JF?.bp14\ YN.'""2q &. `gu!a:0% h}(}azaf/IHHL/m8}~l-Y ZQ`q}VTkB KAD~o-N+X=c%%%WN&?BpBĐĐФ1D xs8loErll\rCڞӷ+Y@k<ȥD.%_J.3=!Bp%$$&si7YPŠV&z6}jkWOl W W ש2# l [xAAg&,Oqȁ@F/V_lYدtR55l;ȷ,@>6Y*ajȓW*"W"ɞÐ a!!cH2*CDrrga22wy#=T 44~xw(>m[)nm<[*Z)(-IVԔ{[LHcMI#QW^2~oH3 ,BeA v;|xyTφla_U'4Ӫd:AAAWFὑ8O*I,IKʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PKTConfigurations2/popupmenu/PKTConfigurations2/statusbar/PKTConfigurations2/menubar/PKTConfigurations2/toolbar/PKTConfigurations2/floater/PKT'Configurations2/accelerator/current.xmlPKPKTConfigurations2/images/Bitmaps/PKTConfigurations2/toolpanel/PKTConfigurations2/progressbar/PKTMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG s url=/src/pictures/cursor/size_all.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/cursor/size_all.png000066400000000000000000000276121444746353100224210ustar00rootroot00000000000000PNG  IHDR00W|iCCPicc(}=H@_ӊvqP8jP :\MGbYWWAqtrRtZxp܏ww^fT2Rɮ}aLb>L&9]gys*9>xEA 7jսqۭqr+헬*z +>BExѨP?4m}_qfXBpເw|(X0"EH!|xO1 ovO)!3TҮ>P淕ymUV'QuhAHRCQ?kܴGB,6v=n{hOci1)"ۋ"hIm^q`)\Kw{ob z5b) tIDAThՙLw?mVuyEswpr&r(jzDADf2+c;bTRJ_yW-###"$$-TZ+>=}  Oĉsq,?~Sl6N9s```ž{i3 vQSS3GM&ri Sl <عs盯Z@ wN|*y?$zVSӕJ R\.êUxCCCfpppRy/Dgg'<V 6jgPJe122ܹsnܸٕ/ zjV5pł lܸq=},@vvLN#xGs=xGQQQF-,, jy XٳGw=xkz<j"((gl6&<c@KKKdZBBcX,w{{233CBBb$ ttm2LSX H^܉l}`*B!Y,r8q# K.]DhӦM^[[9l8wAvv3&0üAQ` |yyd@,/@GG8߻wR~~~ W_}EɁn:߯yF2 ׯ)sHPP==.sO7P(G} ,CR?63oZv. /@qqqbNvx&Lu50NjСCP(p\y0LGmm;3gά{nnw@__.^ƒ,---DR}ϲ,?Z<1 ]N{r\UJJJzl[ZZNL=0jVVV744$.--m\9 vǮ 999*//WJERtnMMtwwMǨ3---RTR]]=eTGa4} "A?ixQÉ'AjƚFilfv^>tjtvv˗_7**bccIןϷMR·˛p`ҥ|BT]]}.\0!@\\˭on޼]$&&FVOPUU[-]؊4ˋ-CoSTT1 #={vt<9w8B1.yd[շNSWrJZnݳ"6l@>쮬MMf={n2Yoy```@p}hD"r9VT*O{TRR",],ˢ=Z>JP(1PRR[RRO_h$7nܠ[ney<XVh4b_i)ڵkB8}uyreËbqpɒ%UdPZZ*L͗oV̮ eXIfII*00nt|(1 2&&GIMP 2.10.122022:04:11 20:16:13 JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( (  .2v39Xk%N>/էuh7FHL;@>:V lk:¨9 >_K,Xcހ;( ( ( ( ( ( ( ( ( ( ( ( ( oΥYxV$z6,JWZG]-dtA O| "!qq#6#|zWΟ񭜱+r/sI55iO [\$nz $`zW55fm0# cܟZ> _ŧxiNھf]^-TY '8}k kW:%ժDȔ0H=Zτnnc]o0#RqfgFlEb4hK32!=[Ws w lqP( ( ( ( ( ( ( ( ( ( ( (9_Ih UeW%6Oi&'Tr_k[#Er5YҀ< ޿iR#Youcd>5xY[{TW jAw'ֱYaK=W6׌ƠlA܏Jj6ݡ"efKNpc@gx[28d & mofQk6LjVY({zW,a*$;WEJdlc{}hh(((((((((((xė>p24AɑI9v[BIed*b+򓞣+ Ķ0ܳ j`zW+gfm?#'=+/ڴ͙#z{EQE_Xj*nUܙ@ש$do?_3|f䑪t_}1ڕ0 )@@i2+'u'֚N4NHnSJ((((((((((7RY۬$_{5,qlA@2j o])@e(!wɮNkLrٮvDT3|g;S)ֿ?F<(ֿ?F<(&aTJ~~RGI~b޼\z.-GDD 9V~+ƕ-Ŧ8 mSϭZYge#n؜t:O-<)j7$9w#C FC UvSOSnr5Ұ@#(? i"{KHnDL`;1]y^{$ieqz((+ Z]xQ\b@bU#܏Jtjz,2D`s?Vv) 6z01;9/^m]Z@!'ְ(/_4i(ԿѦdz&S[[,a2A{kG*I>?BL ?סJ' @MeuD"`~eoz/Rut \|SO%G"5J_uenyvhy6NzWSYvA|;J\B1;">/h[Yh" g>ǪA-EE;sױ>mwhdJF X|m.E[v^) Zς4D e(RiTn85zdM$BB=*4eVVӈyzk$TqQx85Ճbkg[/FI'ϵy5MrH6~`VV?-79]i]4h!Fi]4h!Lw ҽ/ Ҁ +CI颕(B)Gסkᮍ\\\߫DOpz?nuL@ vֺ;׈+v-U_i,Oz~{3EXAҺ_1 vF;ɑ9J<=Xѯ丸dh9=zWm`K NF0|zVN6&+vf)F0Oc^O"uxKdh$R;8j׭|A1d&P v'ECndXc}-mgd1#0H=((?vy+t ݣHI.['{WAEs>+&1Eʰ]:wԥBUUWi^Z>%?O[:0Yg[V[ϙ2;9K.? SI/4e9/,ck}k/~ xaQbYd2U?ޙ7,G$6^F7={/4o^xDH#.VRfb?0WKٴWZP-({zW+ z.GH`D'S@t\3PXKu(td |d3{dIar0A=+7JwjI !ރM\q:+}" 3AѸ_.LNKwv$q[\/̭}ިfo*9Ms['m60"\?}hx25=i ~vZ]")g wϽi: l^I7L dֿ?F<(ֿ?F<(5zlR$I#yw¿;K4c1l;zh֍FFߘq*~oP6iҙ*˷rs׿ҝu;;R9b7|1!XmBVz5vyDo,S@vk⻆h ]؞~aY[UIาUX$S]N;÷wi5e+((((((/56;kia!23֫h> ԴyRࣱzW{EyǏtoyV߇]a{a$r̫?1ePu"<-cϘLJ?/?ƏoKc(Ķ ?/?ƏoKc(Ķ ?/?ƏoKc(Ķ ?/?ƏoKc(Ķ 'l4)2>AHCēx~H$*=f+zwiX u {4—[[Kn G`}i4jZ]=ۋQd0m7L^?/VDH֋ 1F Gztw@Go5[r{@K I{??a?{|'^iEz_,='}ϽUyCiMz{;8DiI@ <½ñM>H&R/W|ŕ[M=#jQrn|) MoT9!2(v'ֻhPƄu+AIݐ nSJ((((((((((((|jn4ekvP{+7љbPv5Lº|w-$(+ ?(?<ʑ _1O|x^DKmA bW^mt 35!A=Ag%BMWCu{n6P0Op}h6]2妙I9=\ύ\0pjC;XXG,@2c+.F$ yxP<ƀ; ( ( ( ( ( ( ( ( ( ( ( (9hW^ "') `+ȮVGOY]r*{BiYb2Op}h░qfW[Ő v־cΑqp\Ll$`zW75hU[x1sӾ}kO:l6~56#|I=&}b5u22`}k/Ӽy @ul1;jdU['pPsp}kGR۳4ɐsGlzPgt[a`,r@#<¶< hYI=J ,HU5=ޫªƤAܟZ(((((((((((((6*v<_Ϭ\[jB$$cZqnє"BAvujV4ŕ `Z_~ѼOsss-#Y4`FĜCJMzpOpP1;W44yMŻ˰#{^3: K{xmYϙ Ҁ>((((((((((((((˩xvYX$ lq{g!mEvg>F J5:NaU_x(@9ǽp>&:vVAd0$v(ı6 0rdcvϭX𕌺~,R3e #TJɪ޼UX˂9}kKh!b 4-Q@Q@Q@Q@Q@Q@Q@χ%tEXtdate:create2022-04-12T02:23:51+02:00\;6b%tEXtdate:modify2022-04-12T02:23:51+02:00-ftEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2022:04:11 20:16:13.bHtEXtexif:ImageLength48qtEXtexif:ImageWidth48HΉtEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/cursor/size_bdiag.license000066400000000000000000000001631444746353100235450ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/cursor/size_bdiag.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/cursor/size_bdiag.png000066400000000000000000000231151444746353100227110ustar00rootroot00000000000000PNG  IHDR00W|iCCPicc(}=H@_JE+"vqP,Jq*BZu0 4$).kŪ "%)=B4+0hmq1]!$3˘$<=||,s>5g1'2ô7cy8̊J|NkXs1_ 9>LP̫xgiP5gYV nD_idUKDh,'_NBƫFu(M|w1dl|ŝ! 3烁*Ql(쉴+?K1#!LKFqbchhvQf^<- eR N.v"8@:/RU!wna/DBL OOIDAThLO*8s-%1SX\%S!0eӸ1!H*+E8$ehu-%FV+ J,wxiBy~y@ֳ$[gd lb!bx +;w(,,n;BD"!Yǎ@ (x;l6(ʰ~u$I+bjBT4MIܤeݸqhl6a~{W\!j]RRwMt:R^^ٳg1L^0>>&9rBpa|>*%!§RjjjNtvv> MFEEl荍`'W@ p\x%^t0666TPP)R4p nǾ}" _R@WWxRB!Vm۶ENyH@$ITX,UMShi9iZ/P(<7̙PpKObp: h{+Q__Oh:##</Bwa~Tz̙3R$Ǐ'333h޽Q-mii[4>2TT7bqJرcL&`@"$5&BT*U`Av 8&f|xyō[ a4A4l6F#+2gn4oGN-S Njv;2ًyUUU!xcY7n>_yf5 "VZ(HI#;5E8K ,ƊrёYWccX֍ @  \.!|"LiicPj\.ńBa\.?8qbݺu+sosss$---B\ȹ6qxx;1PvKN<XX999e[n%.B~̋o >1++kYt:}ve_ j+..2/Ϩ>~O ӧ `ƍ߁@gŢ(oVK6S|,, cœ@n:nYf#B$£pڵOB"$ bO<4444CQԊؕ)w-MӸqPuuuDp8l60 pnRYsfNOOj:lɜ={mmmx<HF)x"OP$^JZ[[pܹ={& 45===e4d2ّ k)TSS6T__RSSq)( 8N@  }U˗D @&jtvv" afbbbeee?J(%]]]ּ^wppEss xXXdk+gb𲶼keXIfII*00nt|(1 2&&GIMP 2.10.122022:04:11 19:54:30 JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( *ot :~A +DV'9#J^5ԼIgyF(0;5PEPEPEPEPEPEPEPEPEPEPEPEPXNJ,Kݣ$zW? <-?_&9y@CymXL'hX. d{vg&|VR4FD >i lZH$_ZXbTLHc^i$؂~VoQ[Knː'i4}Z{T(sI<t۸vm2/Y0k-EE;sӸ>sM~ *tAryeWGmVWWLZF$ |ރڷnb]:14$^Juj:UA6r]X=({WecJzx;FB1;Ծ8cI8o)=4GWΧ]0#Fݏz{@,R,5e9/`cvs^{J'K c#7 <|¹߇^ּ?=̷ tс0p}h;)4ٌ22 '={+-IUr(ƪF7ҽ{wc,AKB:PcH]cX ~ʫg"*$21\U((((((((((<7:2"~ȁ{ uM*Z#H!iTV5:IeH J.]*+nI @[%Xaku~l\y`s~Wv!!#KAV_6|I𵏆Eogg-)32;(\-;$VY?EQE[_oí_TW62D@ܜcG)&Hmρh]v N+x?|%a[YMs$Oj;)9.|8z(v4e oᗆ4\\\K#Z2sp=+oHW$Ӭ4thYٙv{Wr\8㄃l xJAe119,QEQEQEQEQEQEQEQEQEUOe] J|C*w,A>x/ƻbm/Ta+vVՋU1=+ե F:ozͱmޣڶt"*BI9iGI$|՟s\C UH#<5QĹ%փugoSuU0ƴ#Qr߂8Qqia=BKE$F |q׾󮥦E Kv[U[#nF0ÿ^,ńh!}U3ZkEhֶfÖe u޵#=sD%sc{e&0EU]9^Z]*Z#H!iTV:IeH J>Ң7D.8Mv 4 ]I/~bzߍ< G{č.Pau!XwS&ѦH&gRrUGe|6|Kç*).s}}:=NJ($NHmÞ uWK{U@Z>-7MYZbĹvEPEPEPEPEPEPEPEPEb q>g%G)?_j弎Ʉr+FJDv__KkFASZR.TDʮp ݺp0޲袾ҕ(ӏ,OVU4tZ VTr(cQEZQY*.h rv `G< WX 19IX(2xբWRI..5֥ʹ,{]1V6,%+QZQPPW?hw:M arAI=렢 ( ( ( ( ( ( (1|MC:'8'ar slQ["N@}jFOC:@g^zx:HoẒ).V U-8MU +ZLvNb"TPrOf"d'LqĚ%Qjuo0D ƕJҩx6nG;+JPNpOs\d5 _+rJgc ;M O>*QkQv9^hV{KI&xC)2NHp+"J( ( ( ( ( ( ( ( (9oYCgg"4byUNS ݔcaxSG%7 _/Ss0ۤLnL;@.:;f’ e#:(|)}}đIjЁlC܎>S_Gx Ǻ^Oukox-{18¿o irIJÏP$.o % `{v VYds062 /r9ʚ uKuEU] w'֩~Iep0+ c'ހ42mV VYC䁌Z|'oltKec3+;tD؏JH~yH=hQi6qqFpG JZl]Tiȿ8̐Z΍k[tQ0Qb=+Oޱ D0# cܟZh(>+I A@[_Eq$RZ @[%#iA ."%E!Tc"F5ǎKP(,~zxK5E%LLUGe|.xDӣ'07N1YV-[OIeۀ˴*k@sָijQ@S@xkķΣ%P*,EH9 ( ( ( ( ( ( ( ( (<_SO)cLM…]O9a[^ &ѦFpG|GS'Wye3i'=?xşjW[rdP68Oxuj3x|Q8#<9E4...uȀcC@knGX̄>RŷeF0ouhCDIl|q5K(,ʘ|O^_X*[oʣ9y_8t1ʯX~iX#86kn/|5ӯkg|vZɑ `}j]OMxf͙, ;}h(((((((((\oxKYx'!tEXtexif:DateTime2022:04:11 19:54:30WtEXtexif:ImageLength48qtEXtexif:ImageWidth48HΉtEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/cursor/size_fdiag.license000066400000000000000000000001631444746353100235510ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/cursor/size_fdiag.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/cursor/size_fdiag.png000066400000000000000000000232401444746353100227140ustar00rootroot00000000000000PNG  IHDR00W|iCCPicc(}=H@_?D;(dNDE EjVL.& IZpc⬫ ~8:9)HK -b<8ǻ{w^fT2Rɮ "> #$1S$<=||,s%g2'2ݰ77->q%x̠ ?r]vsa?ό9pG ~;nO&H~3A3 oΧAP[vZpv/8ovk&~K&^"B;`=r2nm4Ci;!c[W\ @;|>bf"̞Hx<ē Û]SJD, #RՇ2V`3ϽJLT'ڣ3:z$)r6nZcB,6v=.{#ў<̋@ )݅N'(ZRʹ*D.;a];7ExUq yQGIDAThmLTǟ .NV@"kdխq4T"&aW"FP qS00d FwaiȋKe.0sAg* z1'9Ϝs}%6h.7mԱo>=ϙƍ+---jooW RITlnӉƿ?~|l}ҬNZ[[ju#G~!7KN "qMXV 8C._0Љ'6=n0p: e5 "Z[[yǪUAZ ý;::wkAAtHV'kfpkʕ0_QQ}? ϟwrp^l6ۀF^}ucfy\Z ˅~RgK={6ZtiQ]]1!fN%DD0Ϟ=kݸq#EGGO)2ڵk>>e˖Zsq,hvǼn/=̬2緡f^͵)m(>~lbcd2ٔ\^^+VuŊw3Kݻf{LD:"_/{oݺՓ;sҸ۷oϒs3o_%t:]8mSSpACB?%Q]Zʝ^͚5_,Y$`Νiz\~jqna?̜sg0 ]j6N\.} .:uj$HR1یFU,K#˲EEEw|VV!!! "\zFe]]Qby^=UYee@#1{@b>Zd[pO/959#cB[}kQfXT ?0>ހ8m+×=\\I#!@#bNrp=+i|]aCr?T;5wcnOS:nr=ڰ@#? |Y|yͥv3n QPʸ]r㷭w^&RW'hM-۫ RCZ"j}E)@:99L(((((((((((((|5M2O;FД2IAu[=b*ߟk+ő/ yq0Uls> 4icV @@>ޓxB @b [͸s^bOg4H#JSÖzG--䝝U4&OC/PWX˓$h2g>Ũê)uU;p^:G=mgd1"1$=+~8ݣI o)=4}|1{fE-a of:Ri3΋=GTx'Uc. +ݏt5̲XN:ZqiV<]I ҫZF/"2Gm|m2'R> u4iDw_z_iha镾b]ԜtW'l-:q垻ku$lrGp}k dkrde';PvҀ;̐ט["?$S[=KFXW/nI BA>ow>%İ24E9=(((((((((((mI(a o crG4+[\x$Qms`}jh5@$۰G~b{h+cV`Yby  `{V=9] L{4&139Oe}tʑOv:u_ +DPbNrp=+TbEE-QEQEQEQEQEQEQEQEQEQEs>9ҴHgdek@sr=*?k64Ф9ڧ|DE+0Qt~ex:1YZr';TvǥyƽrHu_'y L{D&139 >a_Nxw,o(V``e ;5G G NJҀ7}IyxZ2FI9=uMvb9 dQؤ$e~`qj5MR{땖T0@(8On-K/|͸1=k"qyhh<&{"bfY݀Pa;M]߆ӤUr {PZon[r zjًJOUBK+u0cx`sʷִΧDF;S> |'ytG-ާڧM+pooz߰{IoEJ2*F{ k6?zK4͸;ž[6>.%8E¨mT'VG<LV]*,aOehJ<dne3\͸p1"H(((((((((ƖOBTnWuY-:3ʬ@=ǽOn~f,s(8IBsswaWo[<*SU,N˚'Aw˔@W-&{R)#x{{֞r_:PdkT=ҒOԏ+2EahΣx̑*eAAEPEPEPEPEPEPEPEPEP闯4 +FP$ڷ袀 X Z(J^QT|Eg%ơP@r}P=,r$` |y}멞;֔+8+%Eh_Ek3[1iԍHDN\ (=;NݤHTqS*zH1UR@*~fCj] F95xUT82 !`33VV64&{ WB)9Gl\wڏf%$G{V6@eaobx:g/ 7D(8M;5|Q{eq%AU= ?Y^XN%prv<|ƻOէ8H7~`~|fK{y`W[rdb<`}kCfs&w}E"H1C]wu .(iD=='I?j֖ڗwIn 10չ<8Xo%9_ѡ{IV=q~#xO'm,Hb"ePrf<|“i1Y[XN%prv<|Ƹ9i3#vIEX1$犩E}i)ue]cc\_t֡ex9'Q7+.#QmH9ރ>kt7$zoz_~$5-#Qb. jA@OuQEQEQEQEQEQEQEQEQEQEֵm4)NZ]O9aW|3M6HL}dWM=NRO$rGڻP28ݞ~9xOΉ 72F+{5oi% 7QƖ*{1xGkL u<|Ƽ\3kD1̱(mSKd,\/G(_:Zo.]@@ ϙ} GOeU0s{g־3е˝cxdJ $z _ை5\:8r}hi)-XUWpr' uk}fhǠ[6--GǚL`8PE{ j0a!X6;}k<jB}jN{V?ڮN׮I#~P}|Gĺ| ,K)mId'8'yW'xJDKk1 1H}ujqfeUmq\@oRSWX|^Z/n-bgk;W|GC4-v!HcA\&× ggJLܜGlqZ]`1FGr9eXl]PFl$ր"]( w̫%|XP6sMs#tz,J!"]9Q\[odA*=D.tךg*NrqL׬举GFP`r}%uq1GƯI/}N|-oS+tE j2]@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@r*Esm-"#"V`r`}k9 xZC幹ѡ119,QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEN%tEXtdate:create2022-04-12T02:23:51+02:00\;6b%tEXtdate:modify2022-04-12T02:23:51+02:00-ftEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2022:04:11 18:29:31PhUtEXtexif:ImageLength48qtEXtexif:ImageWidth48HΉtEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/cursor/size_hor.license000066400000000000000000000001611444746353100232650ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/cursor/size_hor.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/cursor/size_hor.png000066400000000000000000000207771444746353100224460ustar00rootroot00000000000000PNG  IHDR00` |iCCPicc(}=H@_ӊE*vqP,8jP! :\MGbYWWAqtrRtZxp܏wwQa46Ʉͭݯ!eIR y?Ggaӛy8JJ|N]YwcigJo `z[}u[S`ɐMٕ4Bx?o@Ϛ[k@JH}3~'r]C cHRMz&u0`:pQ<PLTE͵555mmmӤGGGhhhԾzzzggg̛۩ޘ}}}nnn⿿mmm~~~䡡؎̂֗өֻzzzݯsssކ॥fff捍хપ\\\岲ْrrrnnn{{{XXXeee{{{殮ߪjjj{{{~~~ő}}}؋ggghhh{{{ffflll___夤///xxxzzzr43DUUUFFF~9֋:hhhRRR6҅s8ꫫ>>>];AAArrr ᡡI-tRNSXɯbuAH$%//@ 9L^Ίj {Q)(6>+T*X9x"[Mi>HN#)blA3qݯ+# IpbKGDH pHYs+tIME 3zTXtRaw profile type icc8S[! 99N4R HXB2 Sߵ_#06kyTɋẼ6Sn/M'yP8 Ƶ΍sU.;f=;?xAj UIIDATHc``¨|E%PE$epf_TdVTRVaT.SS`ŢMSK{` :zK7`iXz1ML͖Yn=H 7m^jiҰe;mlT;8.߹kz jtZg.uvi:|d;3Dגǎ_s~ 8uz/TgΞ[5\|aեp @pȨ7oGsKc4;tA\|wbR򒇏RR?ii\óGgdf=P yK_޿e ޿P%e?}k`\oK@= ֥KkAҎήnl鮧o)$i0O8i2$i,2utI`YQ̝7__z]h(_eXIfII*00nt|(1 2&&GIMP 2.10.122022:04:03 14:09:11 JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( *w%RK 5_\,qlA@2j14_oWGX̄ @`;H}km~Rd$1({+4zvVzdd3Zl:^,49r\sG`=(z(((( xv yy"{h-t2K[R]c!2rUGlzPeEp8Z[{]5wK"GI`D >EPEPEPEPEPEPYm\,3$̛@H}<!崻R4 QHC(!]7x ڪH!|ɠ ?\fxL`qُej֯pB 9'>x3Ni#蒅~g_Qϵj5v'ʉc(Yxzc$@A]+oojə]pP1ӿҸItm.+{kv!F`=+̵%b?J_Re|#FBK=o{7 Y:m4xgd jHG/59CF0Ob=+ψwxIy`EyfҧTOr@OOz/KGqf~go&4[kg.)$c#)H֍np緿wqc]4|3ez$1I#TwWr\G T+pE X.rڟ-JYY9=zV߅|Uc.]CO(Eª݉ +oҢ{㣯[~/.-VFi rQ`=)k#FO]k#FO]j0ߏ*%p??zq^$ 1?^K|I|=dv#""X܌Of+O?_JNWYn6ր-}OOs,2Nzwں 'kY ;kQaP7e89T?+,]e2 "{KHnDLʠ`;1]y^{EQE}Dz?Mf|!FF7=q6:ܦdGU 08Ou غ9RL&mf`IvЖ6Q9|Gis% (>JA5ԓV 9T8L4hb.tmjOxIYX4VըFydcF;\^<מxJHxzE@SĖ1\1"=M|TϭǒA'y?t?QǒA'y?t?T|@^i^@^i@|β2e@ AGzG>)hzF%Ůҗ8Ќ`=+?֯^SGX̄``;9=V ]~n*)Dto_hwsmFc"Ub0H=o4(tR۲HNprּY$֠U4 Hk{!gf dJvS[{k,3 1@ֺ;HHVV uZe#G`hz4NV٧dUW(Cpb}kOiQ홾BԌuҢ7~qeeF&e$؎>Q@17mSȚ [3n N aOJHOh̶#OAu^'ŗo(ۀ#<|ư0 H=WQq[e]\92p1;gָ|85DXdHA'ZI|_X(mV[Ya %+c{jE۬^l@Id'8'{Whw:Zx৆B;UbIhQ7mFcgidI" ҼVb@1OP (>ԿѦdzRe|#FB< V9bbP1rrFgz,.!V;+ dֶAylHGՍ(Hƕ)U,OAЭ^ f*A> AF<}Mly e$7<޹siCqAV{N\F<}ǒA'y?t?QǒA'y?t?T|@^i^@^i@tJ!o#kм5Ft...obG"ր8=z[I:d&F `;]~oZM @s{'{G xwIx/uFvK=zW_k=&#Ny20'=;@ok56,@#w'9J#:T ff r1;Ҳi)41[4Hub1{joeZ[#@"aǥ{]k s$a2<*Ow+$r@3SW hmsm-;!AmPEPEPYSfA\pChWVvBIr)>ں (]1(U@@۾(H~z .xrYтs=ڲ|ؐiPw|Wum"YӕrG{wjLPAy+,ydXvC^y{cvҋ&1ǵ}=J (9~ɼ9g8y'VQ`:ր4/_4i(ԿѦdz Oxr$6VRAr30`yr_PͥjW7*ֿ2 . m9CҽJ5kuu5H Ou>4" gP]?tl#""nF'9Ef^3nZI!9*jvwBjG ԴyRࣱzW{EyǏtoyWU-b[ҥIQsBOdEv֡~vY3I9 q֢((((qp24sr=+ZQ'?*']ƿZ-.#ID@9ɮihNrnE&[r-GYD#>:bO=3H\v#JcclssRPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPEPU D%tEXtdate:create2022-04-12T02:23:51+02:00\;6b%tEXtdate:modify2022-04-12T02:23:51+02:00-ftEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2022:04:03 14:09:11<>tEXtexif:ImageLength48qtEXtexif:ImageWidth48HΉtEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/cursor/size_ver.license000066400000000000000000000001611444746353100232710ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/cursor/size_ver.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/cursor/size_ver.png000066400000000000000000000211271444746353100224400ustar00rootroot00000000000000PNG  IHDR00` |iCCPicc(}=H@_JE+vqP,U(BP+`r4iHR\ׂUg]\AIEJ_Zhq?{ܽFiV`tL'b6*_!.3˘<=||,s5o1'2ô7g6m>qdx¤ ?r]i *uE^xwowoirj cHRMz&u0`:pQ<PLTEkkk"""߼qqqڂҬttt}}}ۃ홙ٕcccdddqqq熆xxxۘooo}}}zzz߃gggqqq܎llllllDŽxxxaaa~~~ggglllsssfffuuuzzzaaa~~~ɿrrrbbb,,,aaaOOOё 麺D39O;iNkXoooppp###؜```ώqqq+++ȝ<<<૫DŽ???Ҫ&3tRNS-F0` Bb%E)uXx/1gi8(5#6;DkBg4($DE#$ b|0-JIff 71Q=5bKGDH pHYs+tIME 3zTXtRaw profile type icc8S[! 99N4R HXB HkMaaxV%mF4!mz 1"!ENK;F7H 8 pUF~hMYHP3$C;/GXZ5y;g^q{7!G"U̼*_UCmq` `=ٽqOp5)IVDBIȘxPMƶW IN A> V1bEfO}|__ɆM)%"|dqSՇ<[ {+0ۙV%ju&2:z$)rs71!~;枏f#<̋E̋2Sn/ NjpksU]w~;?ExUB %aIDATHc`HL$i%IE$\DJ 2K-_!KVW Z⚵V[Dz WڴYEH j[Vmĩg\aN-"O[g*0إG!7`#B} tCPpxaL둀%A V6H֎%;8:9=t^;~bq|ןZν=p-H `;Z-2/ nc@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@b&Ѯ+vA 1#܏JI4* B1{j"_L.I|"`sdgtIW{pUBIZ΅Iuj;&2%b=+韃ֳW[@#RqfgFlEb4hK32!=eppb((((((((((((G8b]gL ma>%F9oeڽ***0A@Ot6 IsPCixZ#]oQɑ@>㵯xW[{TW jAOdP^Ėz?m#A؃էk:mC Dͼڀ>UdQDL'\5ᤣFm繜}Z4d~P gS]W/1Pnpsג|VnkuD6P1u>QEQEQEQEQEQEQEQEQEQEQEZ;i:$g*q+է"$7sc~TW<\/?h'坬Toq݇z>e`3^Iw I$UX"I@IE]~8[ TU߱ߝcտ:/l5o]A7*dLcz}kZu2 ]>b l~~F<)RyYd(p1{h3W~Rs2?ojM'Yx$ܧPEPEPEPEPEPEPEPEPEPEPt.uZڼH騤H;X_ Vy"HD^Z<  Za+ :YYeI=GRR.I.IRR.I.IRR.I.IRR.I.Itx?jSZ Ч.A~xRY[{nÃ(9:kg2);5(((((((((((+W5v1\3 A$zQ}^EcHaFc؏J桉|Z A?1 ݄Zڲ$ IQY" Mva#g$1WԦ",d\iu9 ق<5s=R)d<;5Vڬt3?W^2B>J.;i>,>KMIyD@C ㏔ǂkFTໆݖXUlqָxJt8!T\eA޷xz^y#{ה;*FwtQEQEQEQEQEQEQEQEQEQEQEQE|Z⻫݉uZkfG%~ uղXW}s!"Aq3nQHaIU@p}'&aMB4cʏYՕV捬[o+1P1=}cV<&iR4Ol?lG5y`={Wiw/=+!<}EbxKUI@D~R?R+袊Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@UUzE&q$d>ju WŷPO ػ9#ZTqj>vx̐kG\qQaZXX$I9c(_1\*g,6&5t|' */ȊXdb49]&<2@>UȊyUvGyڽ; }E`xTU9BLP?ܟ9$7˭B毋mݟXT) (((((((((((kh H )31XvW%e: j- ibT6:9>wZm4yQA 1@#>䙑rd`NzvҀ7?-/?ƏKc(Ƿ ?-/?ƏKc(Ƿ ?-/?ƏKc(Ƿ ?-/?ƏKc(Ƿ JY啜 NpOr=*և[x##I dJ9>"F-.neti`FNH'^wA'k<LȄ9cdUk n.^Zރ=̷tс( >e&pLɰ$J|]c.E4,BslQ;+1/ OGMrnK#0"8(((((((((((({Z ׈t-$$IĤH ð<+t@x62?/|s5UEԯgYb 2Oq@{g,H>t[wku#wҾQB UmN>8x8:r7GڀЮ=Kiw$/#e"HU\~UxU[VpQH9܃>tQEQEQEQEQEQEQEQEQEQEQEQEQE^ m&UIAySIYբxHH9ǰ>qnє"BAvujV4ŕ `Z|Ksss,fсr]p=+Nkq4s34!@ϵiAC9il"B^zW|e񆡤!dkrdV'>dJ6((((((((((((((?>6xadV[r\1aY ]kk>F J >-JfuUmwxO jQ٪%&aXv(_)ihȒ$Be$ Glȫ>.4]6Kkݦ2$`;T<7{"(>޺(((((((FZ%%tEXtdate:create2022-04-12T02:23:51+02:00\;6b%tEXtdate:modify2022-04-12T02:23:51+02:00-ftEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2022:04:03 13:52:13.ktEXtexif:ImageLength48qtEXtexif:ImageWidth48HΉtEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/help/000077500000000000000000000000001444746353100175145ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/help/information.license000066400000000000000000000001621444746353100234040ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/picture/help/information.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/help/information.odg000066400000000000000000000231461444746353100225420ustar00rootroot00000000000000PKP.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKPS%Thumbnails/thumbnail.pngPNG  IHDRzAtIDATx7ap)!-҂J )!-l 2d,gH^yDz3Q7>X(>BP }@(>BP }@(>BP }@(>BP }@V??~~_} Yݵ#fv} /撆r>xw*ٿe/١=I>&_43}I>ўB$}87֤3yYJ&8"v/W0L}\.cUOzUkM>aRƓ$~lY<6NqHǣMĽSҕqMĺS#oMIL"}*éAiqQJĴFwӯO:88<֔CqL!v}1?Dpxϵk"^}s`ԇb%#ĥ=7B OĢm%}$:].~#8+x#~~|)&J$AlQ#W}q$VF͖!9m:/1}y !kuq1lsΏ%wt-c^Ї蹻 G?еD,1},A<'QK">Y!vNװX #xɼI'2v\[b057c7|b BPH}q춘rKV'gO~,>|\~m^1>?b~@(A}| }@(>vw}~+>8u0}@(>2#@אQH07}plã͏1#dyn7?0Vsnla4!a9FȗJ,N-cfYne-#D^|~/aM#!ã,qJ"Z??H]{pۦ1ãQ8dlŧ!I0وX%ێWy)f$k(}xx.$A{yi3>eT; 8N}w+2,ڧÌf2 ljym8,eTQ9\eTw?N2fq]URQݴ)t>>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(>BP }@(> xJ#6IENDB`PKPEEmeta.xml 2020-07-26T21:34:362020-07-26T23:05:58PT1H31M22S23OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKP settings.xmlZ[s6~0}hņL6c/;FA\I__@%qۙ@,}9GG:c8.r8EĻ Mn|XvKS\Nxy.2R#^&,2 /+.Gdۑ5Fdy[jiUD GOS"<5%s䝋}R*ZU,iWG\.5ҡ~ eolυQshƑ.+t-.v{Rns3%W>uV:$aի}f2 i?@>DD/[~s ^ЮG8B&=|"o+Q3s/}\"5t*~5AW'Cnq?C@rs9L`#[O@`SŒ!|x E0%zBfHe `r0CkmYTwuIE!obM WPcˣ؝:F>"@.ślOr@.^KZkreExW)gnҕWiECM!YءU[;-'J6M1bȾӒ Ǣ/(3C,/M*n-^A*FCU עw44Au--2|\ȻYtW ㇴ޾ر_F1#;TUC;a>?y[t{LJ] &-oȐtBtdN"i$AYp QR?$=Z<Md3jTgPL)㌘3xxO?Cq~Kl;(fHo pj@$rN/A'NgXe À"YϫЄ2 k$#H&sb!i"> BK H:yx@8 Hz;>BFL ;]kHUJfo<$gE9rqsD^~t"Jz&r]LψCwjF 60[;(UNIRZ \ @6ᕂdW2m;$cdZT״Rtv;W6`7;PT7&_d8Tbw,.>vQ:Eiy QlZ( *#T/&QDǖT4֥Tw*f+3U^VyㄾkA+Q]Kc"ճ٢|ιnaDA7O` N .8/ pOBȉa }io`9gTUF`'L+6 ;::Ba+$hͅ_JlktTe1t"B v?3|scniZg)Oi=}GЮdRStpM שe:wx = |R\L|q~v^h$v^VG^7q+Lw_zh:5\H?]c_#o3,2nװm*r tW֤K& %5mh Xsr]Xq 0˜5]Dg9%,uJԁC 2+^0HV^ st{+Akr,?!GqL /: _oa9*?<$J@CHX/pKoND?F$V;Jk;$Thtw]%)(ma[ztcR'u77at ӝC#W':72ߑb g|-Ul6oOZWaQG?!,|;Q_]4a JzOx0^+plL,0FY՚ ,&~PKʪ/PKP styles.xml[r6}WpIh^$'j9^2ә8s"A1Hp@P}/ )P"e*/Q2[{w7)eS?l g!H6~|o.`qLB%XWKe<+pPљa8Cht0|G%BC(8%B(y}8|N "tuU vucs.^;(l̥Q]!*b}hS-Mk.(YA}{ 9%Z=`)CDY9O뗌e찳hZt"ƣi KyR z*ⱀLMLz1?sF"eQ:CMe4H&Szm{g8Chz\lNi hf(u)qGPEWLu TɶNP,ʝӢz0xE5#ځ҉3SԟQ3 1mz{ڤӮw4ҵo_4uxH8Z Q! /*=ņLlo`xXaݿPZfs;vdˆ9E+\ǒVR|U۰rƢSZY*^A7+9o ?w}'Q=^{:t|>-wpA0 x@.OSw=ԣYO#C#;o͑[ڃ8C\?eV}ܫFwnohf`W{}ppK')UOR{Q'fFC@eB7I~-)FE#_ogwѩ2uI^fDT{tw|M:5ymK_yv̎id݀TS*zQ 8Y,_䈘^UoqG.`bPN+ڪ^)* IpJ~|R{-_;DF@~b3C*)w JĸK|ߺ+]wnPK֞1PKPConfigurations2/toolpanel/PKPConfigurations2/progressbar/PKPConfigurations2/images/Bitmaps/PKP'Configurations2/accelerator/current.xmlPKPKPConfigurations2/floater/PKPConfigurations2/toolbar/PKPConfigurations2/menubar/PKPConfigurations2/statusbar/PKPConfigurations2/popupmenu/PKPMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sF֚7 ):yCz zy}ZNqz B؜UiieOEoeO7۳)}ln-[XoOO;;QYꗤ,IRP"(쯱 )n[67r+IQJǣՖu/J\}y)B*wpPJ.z Df_eZU_K94%\TMZy0󨛦TMQTt!Qas凿 B .Ӌh:4$]Tf)ٚGAM]i(5gqcl)5\bOі0 JG\( ;I$C]b~n8v;Zz" Tl:ucqb 94%( m-h&6ЋPzDƄ>hAi )TQRYY'}t _M3PR=\i+\]`NI-%97YUL!hznqߥPJ=Ծ8mg|6G-194^K64^KT>49Cc<@k uQ6=gPα 姩 ==48=-Ulr&Ҍ'V98vb;,nzJɟj=糝nFWÆ= t-ҋfsGvΈχgF o(2MQWdsiQ fSWQGϫU) FzNXl(6Npk%oo6 쭶D*(UTBj-MQ-Wz1 K51WZP)m͗|e~EoO-88f H.jhz]{ Ϯ^E]:6CB@'66-pk%p\~| =SɌYeM~-@4ұ \yj;D@ ׬-4N z3%=A U)tk慣>Ya(u@1Iiw77]Ar28A#ki1p_I:yӡzP k˟CBPK -xmBꍰ5(]} JUA}0б"TU))$E/oNT`?r^oϞRȤT{S m]^CW=rOnʴ|O8+V+%5!Wi?uB>|)d85ފ B@Ѭ+KX7AYi='Jy 0qGQ >H}v`  c4v LYNPJhX닫o;ȤO|2w^R^Uq6Gu펴gVIMybv& PUd;%HPr'UOڿ4-;g>YNtldcV[ )MC_$bojB-ϟ'7YU =X~U[/s#kLٙ3 h6;S"Ckn|m]/ge<_;v:쯵fo%si>ooj>?Q6=|lEv:؜6"KvUab tnPkz 6FC9N[е$*2?IY+z bԍE[E؝e\ХZ+oGp[%7LIyZ~Rz\ Elǭ"¥52lvᢀd1:~ 5+{f=u~Dp;]{љ06 E!r==UCt߸iԂz]BltAtUYdL Jz3M޵i8^Y349PǠ^+yU?}Q߻NnBBzۀ>zl%rb5N g-?$BO7S< ;'B @صZ\4#!F㌬@G聣ezASK\so;-f<dr_?dB ;5n`\31Meѷ~X|Ǹq5[hAo L&e*,V}SIUJJ.a1 )7{;9"m0í0;T178\fik~E֣zERӸ.{u?IidfT9Y+NZ&' L;amVk6YŚWseU;pœT[cGtgz-cf= B" 8/pC_T?lr&X\ rMJp'*XN\8K3(u u c!O[VW9u%aLMiSMI8Nלxmny8-eeFBeGywo+37r0 ֽP6(eZ5iP&:0 wT>:>Td`g{-Z̨}5in}Wz(h+-W=-Zo_T?ܪ|mUa7w14&dKə*6"KɆg4oI -87Rҋ1oߧSt8_מWKPKțwUGw!mܿlmFs7Q'/mgALקԭYs85@e(َJOnf٘lկAGҼ‡w{n2 @~V[oSl{ aY=[a^_}'}RMU#뎏*M"П4 Q](O"C 555B)#V. hl[m--eV5}1r{ [6/.8%a}ȊWTDz њ;o+jzJ)5mEh4%& n1:-B k6؆+[_lek -7Q8j"{JO'Ig=ua{:A(Tdݲkt&CBc}n Z}z Զ;ҩugŞhqz1C9d-`yěT¦Nb?WFn0U>姩 '^u{/}ljIUCtGy4X ^_d44Co_uh$) <>gwMQ3FF{C5CPba2/"Ќ}t磊ܷ97*S\u= "VWU<憦kzKM*ɘ[Iiec촁1Xz ]z=/}>nd?xڜ{[ z8y#VH+ ;t$ޯ^훛ۅ.0VW7l+7GxW>${\Y=KO!'x>V`'&'ıQ}RHdK6Xm;38| :=T72&JB8qGk嘷ze(ٞ{o'C@ gijۦű1ֵjװL,p׵/4Nha|tw!@=drkb_PZ!ɜvxvj5. /7_4J'hg״Åu6G?̽d@Z\M="ϬO:\QZy&x?Z:в;dz!iZdsBN:_ggϬn>tCFS Ks+ϽwL}WB>2_`Cc֩,;8NV6%./zkiӛvU?TR#"CXYllvIjsB7VE 43س?76= Ϥ)ꖈ(/z]e:+DS%/y+!ז2럨`=C <=rV f(UVP:?>CcՃ~Z?퉸+Ȗ6#),7{~52Vy3ts+{aWB(o~7^K)4qzvόGgy~nϞZb`v'ϼCK+/˾Y)q @' ^.Z89/r>8iwi"XN @/n} d2ً>1j4փuAo̻ U/U[m9 *kLMslC7VOaId31އŗ -?~̾?h ogW BjÌ ^)ZjvG{Z}ur=DaR=|tMkfT}ECsp.1X W BO{{SU׿S*OhK~=|N-; Z?z8Yu[`Ah3B=Eg>wWwU&+'*y)y1_66DsO=6[nu80P6=,xq ;oV\挪O^(bWB:ˢm-+#g%X5Zwi]}C_5whEAT鲅|5E)lf>Zw !j)@[5iU=Lzp5 p=mg#HW.0L}FY @C?md.Yy0smqg7{永q% :Lcx:Zx(Dz𡧯'%p@X՛~6hd]:c>% nFU4-fiY#gRxQ*뛀&bkDTP]s1Wl(2Nux:ixvl >>wU V挐M3:;Ιۀ'lo-Q#%aOer8z697Q=lv_ꊎu|Vޕ?[V Eam׭%|ղg/`e==q#[O#:hý'HU @ {L߉1Ϲ q:<wLcnlc_lNtwR7PDu{MꓠtM&g5+7۳b >YqraĘlN<=-Nf׼WǪDsONӒ&\=AChU=9b>İW/MeZtgڏg?g?Z"2t:UʟQJ8==Fk$rKLx >txvL$@k37WrE0g+;>BOɵoݾJ^$1[I@d$1jvÇ`c1Pkr>zpz7Pl^On *p dުeM <g g' ϫ ZnO^4%hП(\~] C.YeO|ggfPS!uowQ࡭½ #g% +-u%7;Yu5]⦅՘~t{RtJ)oA3i1̸q.z[vm:{fɹ1pw ȈS_- Etl x|2 9qzl Z ws\ac{kl5xNOPd2lDfq˂VzއNbCҔϟ72+_޾?:lMgSmjb >;[W euxB 8ʂϔm4"@mva ԰Z)!0G!zu!ݭ7Z aTm1)zy8BO8y>elh' ҟff/@;QJؙCStl7a7fKԆd߮ <.:Tv~ {8B|{,= ev +zdˌ-e^4hx=z|,Cw7gKߪelx:PFukW#6Bor< >Ұ7.OeZ%w-NV6Нՙ&K#I(ĩPÉVi}]1Vn&ݐ}}]T؞;f.BW0St S0C |Vgp'hŽ݇Am^"g`m+I6|}c;{g]>FhC{ m7~6FL@uLӇ~ m.zxؓs8YI!|B9omig~x_#S+e konngKwy35=CwB~Ta?C6HU"D!ͭ={cV(f'?fvµC%*m {X^Zʞ,.Ǿky.OrqZԄeh}5֡b8V_`ydm,^-꒺&ɮߛ'نn޵0Bf\c3sx; T=~Wh]$Y0sQ쁧yT}t}|(;nkXL]ٗ7vpnYp"{j,>F*Z!T7PUbdlwc(Ѻ?/\f Bti3?j`NG}r793(@S]^C^4=L;tnMP[ =6g(3$]q@!oZv83 t"i??n`Ol<@'ն;/^\vKcJ.aK.OxsuR"7Y}ߑ.t-eΦw&7I!P{amQicKH>%z~1ob<@ ~p)鱊Z|•Iisdt+ٌ|l+];XoV-kI:na]u`R8vhU_V*ʡsPUwj)}U<.:q՟gȥg4Ǩ =ᵇS"PYzMzXqRf?thӁʐk/н|Y̎=z̀#w|Tі vKs:6ߏ-le˿}@eIezό\\%Gj߁;}cAkzD罹Hx/ұGJE+w>N4_O*)y1l2’1 =hsH@e|(=nѽ_fmҊT[o2BGly|\M jgkECV -aG2,a,B6\-,#!fT>$UBn^7ܢ^߾2 MnN%ƚи*)[Wգ@[t/{:$*n:?&n=6,0Ms<1=YrarkD,:6[[l}jG!=ӽ ~TR]{QO})ogyy>nGۄCh7tz ISZ; (d՞i-g`, z?>Tמ9,De9BO/n){V_`sֶuaSYQCX, dvN4^ulXWapBx;޺onxXDzxwg=Іo^%Ycx}h ʤD/Tr vj//*77ۧ|CxzmbĀ\{:BOU:^V_1h{ X| DfrƠ􍗳X^nCuaL_3غb6..' |AzyQ3=㤸oU=ar϶Y\qb=~ũlP*fjmbu߻*Z‹Z*48I+e* t\\8RB=WS+ITRƼ z_dGb/l3/ ωմ9YuK [ED !ͭ|OO'V .K( 60Ih:VSfOtҏ:T4;.4u^$Yqrꥩ Yӈuxx LsA;j7+~:ӞbU"ݪb{QzB`GyԢUw"4z?Y+'. s BJhWl:SW'\nl;eX/GJbcY!QcA;5h]Q@u}_4;M|L*~a0фkn+3=wqB,>QZyЂ'Ζ\iZK=Adr&=y#bsE P3ra޹qJ%,?U52lvEfaf@P@u/Xe8P}񘄥IZyBO哪S@_4 U[XފƊ k8QP!/Q.LD:=B־#7Α6 #8{q(f+]lkz!eV@Oۏ x-eVBY0.'†7f3,I+c*9 |.:MMR$llogKzoX~ jBϣ_<{g[N ʮuv>iv(B ܨNSY*bq%>c+j֞^f+ω7;]m Tny ҆Xn܂xDH}7Tա=<*7)G-4QKPYz4% !L*aCqwPVU{3Ufͤ @Y ܭ=a4k7l* 7@ZSKFd^$0vm[y*}( e;L:zMTGyJWuvaz'졇Vc]lCK7{H@o9I$¢ǡ*XkuT`u R{e'ȅuQl. йMTG29}{䭻8h k(js"UmOr\4Uu7$zjqu3LySxuYu,TgX4P6LUFLY#9 ,Fƀ s\9:'tnx@u].k1S6yYGDi^^p.ZS7hY&GxBukڅeXĂ2_Hw\,z^YpC%~Jd^ xs-Bg.C!W:l3e >IBԡpYY.i\4Wղóѹ8CTQ]AhHl}C;isf7%H'DZ^9d*i|bvό.#+kn)j{ĖGQ5vf0d'ȅ+쯱L1un ij(L@h#ҧOaQwk ZLJƪD:zj 23^ά"iLmi4:h@,'1z@D8m` [0.-Zxz|lĎ<(eCߔkN((nE+DGJj~+h <) l"}K6De u' =ⵍ|G)́CLѭ>Ǟ\-T=YA:dV`CRXB"I0)*P8wF/$l@ e;Ib!܄77f195lHnd.*c$Њ=ϛ Ee fQ/e nB-"Ɏro+"CsYU--<@3z?aPV*9Du33?ֵ)9rU%zhC0.Ko  Uo_}R *OߥD5c7}zh={da@4:}R֠3k-͗Җ׌GD'̟0$߷3ү)59~OU%UzၨEu*)(sZ^f}6P '&iD/i̡JvG `%$+NζM`E=&??زe&{J^
Fu#u '=Fl{h[|kOE+JەJXYHBl7NCzT!1KzomP@#TM2?gj;jJ=)f{M4oyߋ>b:.w8v߬8A^bX}鶖<Ͻ pXlPd'VPDvIZvdRZϢSr. ȶ9;6-' k- @Օc Ɖtz>"XTX :[u[[:df ,~A !4n a3ưb81Њ&fqsmm0)5/$^zN)B /]`/m5l2jp5؅N)eJA*$o)>zB.-'z<8;}=v'?U>).Zwʱzv)zl`ԝ|,ԅ} iSmV`0himZl z  Xd}$skifK՝]|LYdwe! =h=O 'm` K`"@QvF"+nr%Vͥ6V ̈U촁܅)BTw_1qC}hb8i1 [% +Z4ɓ#xdeY`3TBqb =HHB-s f̏U fNfc،N>ՕcaAաT6affO0l,zzOۙ'aZ,1! 78:t.}s3)6Ʃ)/=| 1, ӺT}!mpyfi9 9jNm绋((dn 9+4Nn_u եT4:( ݾb8I=wC.(iQ*Q:V'Ig%(͑QɡZ% Sn}e=߭=SqYy0/U/oZXn5Oo̡\A4[zbRː ~ZfkwY)\1> &Wc iR~:XH/> ) D4#׎A*aAꃩzE=M_crb+'xpڱ3ݚeNɛJ]h˭nud@erL*pvCXoeEde C/ߡwk2:6;*雨9=*:POwG@hPWCOF2(]uP)˚ʚ*Z}})&= 9&[_"8eIM nYOڟ6 i5B]K78zA|H9PktjO~&-;Ǘ8j˰?kR6,C)l4Xkp 1ĩL|DXy!K?f&)X^L;Xgg;+#y?qrk3lG?d,7Y!7K^-P;,'Iܞ{ѯ/_3heާ?I!ȠM2f&z3ݜtmҬA1졯;: JU]am.V`u-lHKeߡgSIU^?)Ccf!OVBRǭL):*Wz8&г4 <ﭱgZSTXUMVp$?Lo8`su5Lg}qon)۟BfJ/JcW٥C[L `X <ΥwWYʴsϡw;=\dIZB0:}uiɡ 3ynϡ1cr.9-q~%|].1n)1;; =;ͣx~CR;{vs?Zyzl5ס쬰9XSa{V:xf63-p>FKCϱ;a^nIHYޯ@xQ~[z =6Gu:~T4s{l,wLBj4r=\Oxޯy=egT_͎NCIə=iDujI]_MBMbh[}tCqg_e(o E'cX7Q]Lur%Sm: TJuqc{ =4ssk 'g*=MV[VHDžt{|0B=LJ{ˌs\ὕ Jâ<Cu' =אַIXnBrBpy=Ƃzk~'Joݼש無uKϠTpU7z:m{K }QzRn6q{|%BQV8\h խL8J[)id F4mٞ= UU[)k`'qup$Gu35z*[\wm%ieL[7Wi?}-T8\XO\ýYiAkk9בqhsғ>CutU#w雀es^GWڏ=' ƶ[ُjڝGGʚ,#VΆe(i1llI @dqzZh1ܺv+ ޴V{nM+ir4J +mvD͊y`6b=Ehmjb^;"a2e(kH*Yec,mzpO٫ Y*\=ol29x>и)*F@O,adw,o`6+ gT].C(F!a )k1=3E=5m d,zb7ܴywC!ʆ:.B{Cu4Qdk `l춏x@eCeD@W@@rht&bL$-߲]H<ݡ2Z}{7 MweyG@VWkGAʊ( WK=wzDKhִ De`\,S:o T[4QƒM̨S0{KOyx56+-?2^v=I弮n1ojq|ZRmC!&GK2m7 OD;j#F/E{il{TEFM90y jՒ;\֢ "ˁ:;{jp/ MW(強Г* TgS1hH:lwLhsx/@_Zj9=V(zā:[nszRX-G1܏g-Czn&Dzx_G)Cup|zuV(((p{jh'=A3VW,"> $qz 8p?{ B `s,@:" Xz$db`s>G)y>@ @ .OZx>@lV%5|h;u\!8x>@@ OYG'q?ي V'czx :==A =zY]zzz5VE9&Jp5pj2ӔuRj6cF+ 㺚g4qK{+.FֆzcdB.6Gbvxy60g Z8BOg տuoQ{@k6{+-V^PW,E/oBONވWzc|GY--=i:QԢ{ k5m|7P~⽥ 뺺:5V^/'8<,FxcY1=>{KHmN]xezj^KV"zڢEu*Q }5(P5L,3^QM_ =}j܆e+ =<pIW9$(* =Խ6:Id-=ىr-=/QYvT{7L[77?YYzT雠`KlxW'x"9IBO^H*anq۔BzQwe!<\b(k9õ8qJ̔q =Z{x=,@ $+K:3 EUa3S' =6:ar)v[m1=TNz y/F7aQFnY-=Խ{S!B@ðN[zT2r{d;\jGՏl9*RknPm o`g WvU>sKUB愡г  P9Dž}dh:ezImKyFsl*Ћu1eA2]wo JS}׎JMRsP`F95!eV0&aGu +H'F!tzlvCO-,{= TlTߘ~lnn7܊Ku0F)P_ezWC"aI-p+:^U-=1Y[nWkg7f{ 0IZyOиCb ;$l> .JB̳q9-'~gL?Ͷe[.M-"Ѻ"l+L[}[p=fBգKvG_ggM&KbQP:^J4!˯C+3ٹ47F+BRjKQJ~2!OУUJY~iVb? ?Q2df2·tzNnZy2)%KHY |䆣vW!@,0V'+mvR <*L2BA*("HPT@uukY (RD^ @H{KI;=}I=s)d,i[ і&u17MzzmN 3ZM7] z5{-Jp^"B!j#9>%IYTLvzKcԚlrgP2鹫jGcRTIְB}S۬fpv.r$'@N%Y_C}D|O+%K"C+ި5hTlTsop#!+d%犌2 itfrη󂞋dڥjL~E)2h@VsԬߓ:jPBǭ~xR\I9R|ܘH'|,WXW[h7XlvIf1\c UB6*!}[lz_kN.1=KYq`O6gvu;8ڔuͫ4Aa2"$jMu`)uy3U/"Bq!:PZ1ZUՉ+|)= $4iJKDc~Vg5qB.Q#Zk)IOVm~bC*|1ox?K)WqJC;ti,a1ZPP'WS%s_.j3N%BIz6ӱbK}(R, C;8-靪ڕ.xԘ³^b]4WIvDϰ/&]!SZ-,!X^#@3laCvTwiC&}7M;Ylv}{CטB hSp-?R s5Bs?WosSPnˤL>_(I-M3'<(^ZrW|o%=)TP!2eod ú=9( r! L(Iu{ȚJ唛&$FuviswgZ V;{Jp4ᣘFM((gR]IM_/I^^(_sJÞDcv3&. ;2!c,{7 B(pڎd rB,e6t@i! .OzRaF9B}v^fY$_<5 8( ~P 複L>MEYRn`[9aBBkL$ W&>B'lq5{ O.aBB9 ZhhζzM0\ݟJGP_HO`ܖ%Gc)B5n{ƓG1bPn -򨤇<{O_-{bKr3hWXT*r1KH$" ny8ZV!s|PnHl}9(Og{1K.sΔjˉ&Oz˃p#| VXZd*Ґ~SO\#F7Wb3Yy}C9[/E{{b9QN.uelSL,a]Qv;2#2t ('複𵷧}Ull_T-=\&v A_̑ځoS؛ɒ$HX̻yJ6v?Ġfhz:+nvYPO73ɒF˸uaaxQLPO7'r7'P/MS#MC[Kti`\_}P7N*!Ȼ:좮V;7|&tsC M!)~*!~}ъ&]殟6F f4lO306kM:-UB%)꤇о,Z8eZT3t_tsyoбh6~x (PqjsqL3o̝{l: Pk^/gkTPw$;6;sɴ f$_n4<d9p@Fl=R^(1(1G6QXߦ|ζ~-OOνY<}P8Hp5s܅:(E>5 m"˥χ2Mң <E94;TTcڙT=pO%8:.4G161Tv9*@Zt(Gۥ>_ObU;@RDJ5N-#C)?+QhX.WD/)|yOtձʑ4 pέEfTʖ F؍b1~1Z/Ԋ+K|o|pVz3qZϞHzb(P,2!h͚UÅZY>Y:+}x%rD^_CkJyZ'b\hzV!LXh-؍>s~ϟ>U?mZF ӡesĵvƤ,slC~Pܳs+^2fi1:-b81r)Ch`8[j/}jQ&}h-gk } lg+՗p&Lm=BֿuB=A'=ٗch3jU%l/o(g ENsg%JȺ3Q/*XM1ztChܿF}w| Uۢdow:S|{W {2F=P] 8ѷG\/tk) $P& _Hû2ս|ϭ-s$q+]cI5l Q<8zmީ]k~PWۢq}huЪSbȇ}P8A2ղ>lP.gO.Rk-JzHr=w_:hTEl(A.V>Φ|?8qeDe -L-BbG|J6gOUxzK橱WOxu>-|%9#¹2pεb6)zʽ񨤇{5><{.k9Shb//fKD24HGPOVb!i2p=<$fk pb'ȤDHI<|5BZ|R6dXw͈f]mUፚJ^lIgfS (RL{䑃FӄŋOpB8wGqؑ\ۑ>XX5 z;Ҋ62nAZ8Cm'J?O|sFؕ]fL|kg BNCAK;q>Yŵ՞ )LM1#?yj#Ml6,6s +b?hH D>CLz7ļk)kwϯ+6&}v2~pm,A1b/_Q8뷌{~-aܘm4h6j'-7|<>q6k?;dQ9JcKҿE{Ӕhu S hJHz.2@ZL796;HCK}?>M>]=SϵKmJOw^i[_^롇m"jb4oa_k{=i/;#yN4@koǞ p=lׅlXPCm^G zC[W%=4oդwq-kn7Ev4 @i!DHz< ֢f]Ka/pfu8ҢA׾z#)z6Hz4}DV]X O-zΆ:>ΰ攆MYYzYZBN|(R,)֊<_'5V)=W0wp {nmMb3S*xO%\l|}BOxjOe\kc܅U-uZiYHOhY}z_:񓋴릦 όzkZ‘X[BvsIwP!$>jyxyӬ_6X ϵ衭Yù+hեlqMωXcXG1ϛ~#>UWx=ZzLpCkߕ}PXIϿ1t}eyJSXT7E5V"v*Ƿa(N#IzВVm=?g+bdgLl"WдtmHzLcZ3%y8 lέ0%xJS {` nnZcpM$r)QlFs]*I/R{==# c:p+}sX]qhS%>4Sb4m$=764eͽbw˻ɾn.kJYF]5h+*؂}nN?+S?2q$=uҷj;-4vq24+蓪ڹ3SH9G#,X]*u66bQ㎶LJ)vQ GS/c|w”=-σx,}?>FHq#e#KXv΁zWo }b8yq@;g ;T1ZP`tM)C&/aSseC,q$= VUXo9[Z^' "| Ϊ:%ħ-(f#iӓ(sm-Emw슑}p B LeZ+{byIqwӥ!Qi2nAw}VnZHi>[<&uJ5 j ТD1 wISI7NOxZX ^Xž쵍h[$> $MHz\".XmVjq>ԢF,0. =m<ܹ7$E)QLGR)_ǙjkQ#F`T\ r &,qY|M|heApED1Vw΅SZԘ _{o0"lv>^[iYE=PUz~dܬ:M O-jTg?Q}i\?}%>4Xb$=MwjکÆ~vqlԄZFJn򸆽e1k( iR㔤þ6(䄧56O*a20\+?S[wZzmCPXZk'FQ2m9u?onj|^2y~\c[M^s͔k6ycP ʰAkE>̶'Kӓz|庩z_Pξ=V@=b~kwSciL>i^hج5eu׮ Jk` Hzx* d8Z\Fߡbʂ|S8YZ4hcxUVZKyYlOE :alp?Thו/s-ZcJiFfm͞iJ# BuPw$;2wLZi65I QQνDm2Fl<=lR&ro}5§Zk!B%)8VZF#|Tes.l\nJ2 l 7йC˝3r/0zu9$.oѢj"IGʼVl5n|aQCoSr=;K0ݻˢu얙cHz< Uj4/klmWo-j>X-lKk?TrwpôA!~ $=*֙wXphIaaS^yxFZʪumYŢ3nLJ_?WEIG-A@d9O,7W@[*W;0@@hcjlUjcݚF֗c5$=^ YYirR!G/* ֳzY DMR\EwRmG-A0{4i#c ! L/׳CHқ+~/5xhm1 kCqŴ#_qo7\s);|ֳ91ݖcs44r3ΚS:s$C$rw#SGj˨-Hz:m+~}ey+EREQ?ec;s}1 WeTf Q"y{آIJcyPcMCո~vuއV##;mEA5԰ĮA,j]U4;!o/b㞝/bj zhҢ^Q{ҵI>;ƠFkUl\`9Jq'FoI4=<^L2󬵞gMQߗwB d֥ 3랤!=NM"B~5I4=D<ͥV%w]ϘN*6WKFJ }wTdZ4ڂN+qHڃ&6Tr7[킝2REʨ@ [rH͆c3HLub9eoNtk`. 7顕~ c诲WTcv)4E=]h:a?԰{[)^Aܪg!d*n+wu8Z8ڄ ۂ*&HZ=[A B.Dٱ:ZrM/!Bìn^M:h+gOdCoc21E e_f'f&r^-w4**@Z܀mϤ{u}m*zfg" v$i.R>ye {W1{k {a3xr{`5+iWKg MA-\w"f{a@{oyU"6!wXv@73+EC-F=?wTr5Pz^s ,ԆP[rR }>wIx8zȟæA^А6sEC%Tv\sK` 뛪dw!l]hL-Sr+ +ʉ(e$=Et=Fc}~ʓr]P7FAnW[%בH˺')$^^?\Գb n)[ڔWt}4vaл=6XyeΏ+G42|,zkbSnK-#dsqYK rl}=|8ܯKL4 3 M1̏#9gIQHz5''=Ճ-ϝ[aJHOۿJ 7AzXzJдCrn12n<4=ڸ#;o䦔5p+#ׅބ] "Ęҫ- !y'L|{(I@Z޶o^236([՜3K s:r.VnV2)sdt̻kᳫ2K 7w&W\U)|,F}sH̫r%Hz衸gv Y6iG/:k)OTFޢYAvZ 6JRYZ%JY3G2c߰Pm#WTA 2339998~m{G#7ZBhO1GM!^y%HzΨ8bZJ`65<I}YPjR1 Ԍiob"HJdYG 4VQ/Υ 3+ոw] lb[gP[]jL޿I*fyeJ@P1O#;zim_-{SWfI(g`N+b1Vs$H!`P?7>q8~y1XʕkY}QLN$eϷ TښQ4a/Y()@Fɂ%N3|fkwnw%mgPEbt|Sw$B):^sLÔRSH}B$FՍ~G4`3ƭs5ٹ,z%D;h>^QuuLhst\5 :&*tI85.oxل)|Dm@]jbuIdf/Az/Wc^4k_Y+J'h!:{RG`çz^@Wc1S $=K8=|ga~w~-zLc C0pC6T/Γÿ(@G3wG~Dg|m^)MצU}'Q7ؽ8gs#?PkP+I5^ʹ"潵{J'{L/Z I-H[xcY{/Y*I j O?sOG/xu3SO F7#*#)#CcHkBePIxjܖNh6Qo%oI~h1?њ&;F*2qIxNyd=$=ϫGI(`)<ڂJa ZSE!fc%/1 O>8O̤~@!_S; u i"> [b_E*֒YE5(!sEVP狍-i#*5Hh -uwSz:;|ިg􋜳`O<}:_V(8Ƞn6U✐k{L.1.FƔVwckFsxzD|>oZx wUg3"f6p㌾s ؆Iܝ %@xbUKf|=7B-t)`& p#jt玎>{H+4_l4 `i^^9/Ƞ"(f@p/b2ս.Dp.oJ gWcqs:W;+lAT.@38Q_l=e.\io1prݱ6]ݡe#& [hzl Hz \%)Y_`u/zX?zc h;T5P_.<1x5B~6 jv1wttJ|hO|\sio1 U8WQW=SLH[L %>(y@!Q4=t 뛃xf9gEH1$=`*i+p㺆~!I1quIxCOw@,$){h/J~֝z첮;VE 3[%z]5]:Jth,F`B+gӊTtfs5: g(+VO] hi`4^%%(L>.ۛ@+0gRQJ J -B$ɀ6 -p>b#[$=nGo+v:/2Pώ껶Wul0.wTRzub($=BiletПˌIrI{K·r]rʌQRvLLyssÝiJH@U(N;w}Wtzxޘ|,l'h 2JI\~T;Z.ȐvBm6rNpmb,T~MZ?nQȠոQBHz(vWڿd(ԘYlL*1p42SRA) QсBڣ-5B"R~EmI$=P3th !ZHRW*M4Js37Z5;>Xz%&HV(-]hr5 I!!ϢFGkU4R%V.Q["wUzkP\ӯgJtR9X) VJ*ĕA*}I mIWIJdy~r5? ,rSGIENDB`vokoscreenNG-3.7.0/src/pictures/linux.license000066400000000000000000000003471444746353100212730ustar00rootroot00000000000000[license] author=lewing@isc.tamu.edu url=https://de.wikipedia.org/wiki/Tux_(Maskottchen) license=Permission to use and/or modify this image is granted provided you acknowledge me lewing@isc.tamu.edu and The GIMP if someone asks. vokoscreenNG-3.7.0/src/pictures/linux.png000066400000000000000000000313171444746353100204360ustar00rootroot00000000000000PNG  IHDR,,N~GFPLTEURҨQ?[:S6޴\xd^߬BȢL^N4Zd^>,tN"֮Xzd~d9& G/ ׬ ϔ x *~ ћ NJtSam ( r yז w ߥ ٳ f1  CФ _Ɏf l j0ڣ ,Ύ ؜xN|[ \Jr jK)tI~ ɣ }Sw T`ÚrXI05x0\RF,x*eC `>~b a’'X^J~DGr.,l$lq?wLy3ƶ U;~/ 8&hlEhT0ϔGm-N~4^VD<:\Ҍn$k1r< ,,,444 $$$DDD<<<,\FB )tV"4ɭ#VEqM r` ֋fuBi 7E '9^k$GW2\UxYC\¢p+8K ߔ$pjpS|0VpaŒD6桥napP5([vB M Kt:Ey#1RM+kp['YZYEQ*ด3dufӘO6,! "P>VZMRiz0` kT6\J4*|e VWbj=sMKgVi)sŇ7PTTUlj{%X9`V6Slvu}+ɔF UEUV 'MɔE3[ , ͭLwb+|"'d<L5] lo#x5t>ʱb&ĸ͋< \[R2`f%&|sa4$1Faii ),^`: Uw(/SXK\sZi)Q0Xz5!D"YHao'^ p+ԏm6*9m`n>X4'Ap b-D٪NM+MB\%9O>xO}1M&`-QXMcL*W\>>zO>xg?'dVtud`PDMSb[,6;N|"]3MیݢG?at)J\[IG-U!d{].=y ?4BtŬm5~wɉvJ{`u:-`?;}p=~$6fSVhp_vXŶ}r ,Ot*o͗_.F^X(,:,_Wg[Ǖb,S/M "-֧V.;Tƌ_.q~sg$ůۭ+;Еyhh… νyܹsW[[G?v6ȯsM+^' <Y;ֹ7^~3qSH07pw:@X6*+NV+z[0^~4,1Ӄ+qM,ݶ^eGPZչW7p\7]c7?l_X`(.D%Da]Ni]~m7 f =sUQX֛oR#DXlPdׯƯo7vea`fhfdNבƛoݾ\Ĺde4ƨǢbB~bF( ~jx⿾tT&o;.#*ĐH1u|{AX)/񝯽x<<73@X,Ȋ יQ;f܆6\ϴ;豨_ybº&C> ?'z:\zo4{g&PWC8\x0 `=x|gy//?E]4轵[o{Ktu|r{2`$a1u4 /sh;s&GPWVf|0 Ff-$hZ:zaj޳6ip>5@ʍik/t5nRDYZ& '77515} aA8z u;Wn݃&XЕh5mN|8GNiy|[o?hŎd…7/H:;߽[$V`] J&N걥2[7.?Kw!sw^{ D]1oay/^jÇ ̚pa"?޸q٣};m}O>|hO;&QM ?K R|zQeV'kI3|f5ӃWo?γOg}Q .bR@T$S,I4C1 Go|k^{^H~*K{ɮF1dY*'PY\-*˃==և;-K[%Hi?i wZAU"YB3I1;URZ߼=88zAŋ-m ࠚatYZ*t" A2u@}s{f1W3Ըh}_|u+Oam+4zH+;aO .3}s`mp9* pXw~z=|>X1 k1N\lKyg/cTeDC룠f3V{NId'$g e4e Af럮 Ow΀pT "EE˕mpBO.Bܖ$&_OOwXw3Robj8 k[:iu`ϯ+YIbqM/,XXhY񗗧o~}YvP[˂wsD x"!EOϿ?xO X)x`tBw2Zb9!J+5PU=/7,&bR>'Ȧ/g %5jdk/^fZ^v-^ 0A@DӳYYbT> L$&'&(4ݭNS-KJ7DfEut bD{.NJx~RD!>I}P8 $JKy#RKieY`adx~əkApTVD욓`O-W'Owo` LԦ*:V|:U O*F2p(yE%à;aצҎ(Cu;QJOIj:<*y$iC)H2x.0*M3Z9*8-Q<1reŠ'DKd;ǝi=N>  b-W^>Xbh=H]#qBn+Ag#UEY0l&;lxZw}.-h$JHq@b-Ztb~ 78{4\8e{W`}WYɴ0#„(gnbP  @[]"Kt(]_cui&$XH8m0߸v(M!{,n{,jˍ~O7轤 H6d5EwHAj<譸`PqjTU)nҟ|cV}S LBTk͎+DƶFz+, QVXahM %*YFk\yp|( B@rZ1|\ZXXz _ 2m)*p bR*E7B K At"m*!Jx;pBH#ڡBޫ8D'Uw56޶ޛiH;Uؗ wU% w2VHa˹_u$Ri  K#QX?,3RY,OZrw3D'Yx8W_MSq;K=̖sQd#{f[SѴ 6 , ړWQaU7DE.sX5_?Se(&+M.,OÄŅ8ٽu+x QIjaٟTh9x"NԖդ jȌU`  iS5McݲYeQ-ڶ(bR%VL&*kò%R K!FOaVl]jzFj,6uOj,Ѷ (ᆄ%w00"$5l%+14R9MB/-厰4*;9l9,>He>r=V 28ՈT43ΚjЈ`a2ܮoJ4fCr6QT T0,唎dj/6Х䠴q]9`SZ;h,7HXlXJIO 8eN0T94LA+ Ȱbq-/DT`U4A]K K.I2ZKERJl)ڸPVF*Lj3+K7(Jlu<7֓RfrNjoUF\T0(MOeL%6f[YDYD.Yt ׀8!' ݲ֭Yh%`qQ^lj֐hl-X숡upt'Lk?+}q*fE WamLZtN"@)9g  o|ƾ΍ɴ+62 *|n~`2Vޏ#[  +ZS 8O7- Gws/VֶĪ ,Bxjå{R=W*iI`] gCd^+3B +YS[:.sIRcxRWde = "`w>/uJQӀỚ (dFrRsx qS_/, K{bR֭2;G(6{a{M14BUa!޿*ܪ5gU]*`0|=Xgm4~30y Q@nXVԈ@E)c|}{:znuVh9??^/37`~6!K*).r}/G~6^`8ilJްn0\_۩ j<NR5b=?|(rsF(_6N=&G]vMq uvޗB0k:I*EY`V63gp(ĻFba^o#x J NIZmK,V32R$-ah cAe=ODYM. }z_gpx槸 GOW8 ;дP8T+!o\9tŗqC3s. %V7͠o_GSJiGӰXVTͪ||gʲKƍnGLϭX ݆;`vWg{o\sRh VIDAT1DcHttJV~y>3yn+5gss'{VwEW-8b 8SSH%ڂXgǕ,x4 H-.ިRT gm6>x !=C}齨PGk9G:z«Ul 5la TrQZF#r8J #l6 jKBS "&:0HRenXźq6zO+xyB0Cғ<J‡*DK:} Iˇ]]/DfLSo[uT o>#SmVRmdheuݧo(~>߀dO./d+~UGuΆb>,-v>,é#sQr5?x!.Z ?&J Mm (R=<&c;,,J?bp\K/qÆRxB(ZH q!06:0 ay!m݄*<TxJjZX`~;\\EE+[ abڱ;G1Cg?[LE3UV#);߻><D .t$v[8zMܡK2t]im dtVBDS㦡Mew˘(:9irCG_ rӌTZ,l2e]5梙7\REnNvhK@zlmݪNmR;L{)-Hsol1d3hWJ%xPiwOV<`%OJmՁo]NP[T fz~.s",U7k!sY(^ =k7z!Kx$%HY#.Ꮴ,L]Y*1*R3UIJ-;'O됣 cd?)eOgO%W)7"ɋ8}ˠ/.ŔudZf&5 Z-6I Q 5KS 4{1I iMSu9$̝m:ېEy0ÇN1B|~w哒v gEClzԐ7V' i) s,\7Q>>;RNM;x3J>8TnM\RqH~= bt54k&J6nLYl+1h58F-9ڐ9j([S'vYg=˥ ;>"ֻSXRyem#I-w. N8ziey$V?8 Vx9N=8{=Ti2yPV/f잣G1FlѡۓNJq,N˘w?kHɔZPc̎#=銱x}cc/lfrOE8C6UH,n3}q*rV*,%},΋YwBry\85)Tt8t#B>~vY΂{?Nc-mqevl%բP$5X&Xn?JMxBThpJR5ok[mK&w$E֓5ġ$ q-{ S 88~Tfuj=3=qf`_N"!Ec҅i,ٮ}6Q1R>:vc pX=J;T#=ar{@+TWւ.)LЀNϸ{ڰj6WcN+$p]8.D-~zk|&c_8 6\Nebvuy{}kke#27kRVy1btDR]ֺ4.,u!~V9Uoe9F[[(l^<3;W8E7YV0'QeS+ ֮ 5rc}gzbAcAmXT'D 2n'΀jQl~1R;ʡ׉Ty:35; ѠSuZ[xu]]92K b)^`zX,ܒoPU٥R7v8 wܗu)v Yzh?mwvnF/ 7Ce* T_k`]&\1"S/Y%{=a0=3CkJ{\t ʣ2I1؟qۣxyRMk &aQ+o{ֽz$:=`+.hpIa".LQQmD&1+sɭ~h.7Xaw˭q8,ġbvb8V3S؄6Bّv`iDep g_OmB_V=;qL]`흝h陱{is2`R=ۥPREf*3 B)FrG~qAWHͅEYFUX [gX*i V(]LªbQ͜Ϟd20Ch|4Q?+Nx` Y{|=`k < نXh P:ǘFdE'HًMjc/TIFhaºA=f=@ZvBKi$8fO=1<= a$WXI!0d$ڶBcYݚWXwV <ZZx6}̀fzznzcvdh4:aMtt)cŎIj-`S gB?\hv9~:@xʞӳ-` {1(LR4Fa}G>|`4x3g]V?3FWD8pWw@(2uZl0Al@ 3hs&{c@D*P  Pht3!OWP8S#VյHgÅp$˒ TŇ- 3UQ[U:PV3jW԰Ell @ 1B@5@D$ۡoAƿ*D JHN@fCADTU"U+ W NA o[mDZXآDUQsr[pe00 *@øۋxQxw-| nm6-B{zd7O TU1B?OD&ۏ*s;6";|#wWXb:A=_(`lbfn1 H;RJPhSw \DGv msf}fn .rȤ@5^$oS c |L_9xy?քpEo;U2l`u%lY(KK̏h<8xy39P|# 6(J cyzrE58bca cq'! xEPhT~wD  aAPUax c {6\ ߂`,@؏xIT9xٓ?j!|~ W`-JL%V'8u_gK+ Q!]ZOQEs2  #C鹜e }@bcs} [hsD$?}d}#O Qp@^Ps 3ayt[w_УZj :DPzh`}>APH<iC tLkNA`b031(,cdj>=E5خ/qu\?4O]81F??U?ˏf|0~6¸ _ҿ{b+ TUJ]rt:ՠD9R&2t}0c\D#6` X7~3ph<1ÄXcyz" B  o*W/E_] 0Ƣk{}9>+EPQAzlvw=m ]|EcusPg0n>%02pYԅA]F110lk<}\=4֏cA= EM@?]_Ѽ+T#Kw*UĆqtt_~Gxʻދaq|\Q*q,^Ŧ'_lvADџ `"e"qV"kuY^6`4#% " AD{ElvV1 QEPb f۰}w;h7^aNOWt ?^APN(~-1LUUDo{ _|5}S)ZEI;邬w]ڶrúu qOJIё<*rS^P9iFꏄ aVϡ!<[U>I`^ 1C(%pP45eY3jJ# LD5@@0$}ߺyu?W|G(G?H߀귊Ȍ+җ_}ʻ/g !A?no^z/rѕǝ7鞒=SmTA R3oT ogSDl;8Ay0Y( EQbq|jqA~M,n.)@"?y w= |'ߡ0qrvwv)Dڇmj.4] % r&eMKב-$b1OY{2?3Hi AD~D(U 0`QYjYp6>n lAd4;;@w3T)IPbY335\jg. Π Kd!ã;f48>D^6m@E0 /#J(X,C]0a0>`mg'[#^_gLJ/_"W|G 7*BbwW՝߻狣l zrDD%)3iC!)R(%yY;,fp 9}C;+!oՐ!Gd1)3˄1 ( a u !|pDqN*T̄Y`gxmO? &hyHH"z~wKww(ZVKs{ܛ .랮wz !XS 3<> 19Ǩ CjhQբEJ.?Lؓb H&(…3 Ƭ4 `)`-qd f"BPEIN0N 8xߥDAB1~'V|G~@G=~o跉ʇDrĝwby+Umz_7͓]Q9{ʯ9ƀd}HD:JXBYƲlY;Ǖ=?̪.* YL[M${{-)a`fBѣ0tᰜ/ BPp^XԴ9g8&0֢Z3vmGd@p 6/'~tv*?D௚Tw";kiZݻ /^|;>;-ċ]랬f{@ŒKiz/4Z0ZF]^Μ s(Ѽy0D?erAg1Liۿ4ǀjndTQҠtkhdBINEY->v" $V mO|k[xU& BYkhzO{ŗwqoh{\'׻^T%⠔Dq' j.)5emڝ/+9S ȟ yn$% iAY0x>C߀vS frve5 q+l[qǰEv@(!GOG>}}jD~G;M_"_ODsq‹/_|=>=EevOֻz;Jʱ! y(4c㍊o Q /jk=YfQ;.,19Xr@jf}hO4bthtUd,=>( G 0)(:xCB@wg7pJϼC[/'p0_{v_CkT!ZP^y׻_͖Z+P`nd۶&qZ3O?%A^ 1%bf0¬|qN[& ˪˙5 *GBCğenRy1 ћoP4$u\&hPƼd8Mq/9:0&~ d, XWCC HO!}^?l+L#?Dm%ꈉ J[MDJ%1Jy'E*ʂi9+xQ\9CD\;x^/Ո/T8z1lI/B Cb4Dpq0@*_cg+gc{1{Uk4 "X _ ɗ|E%o[cU]\UJQ9f9NJƈaJ_Vu_^}YbSm}nz &u:d\c97=ȇQ!ʬ4+1&jǭ5: ?҉LӁ:X=@}4bxN.B!+lJ`Ҟ8E ! DD.0u jl0VB{볇G~oA}"X_>\ rY\Zͻo)g~{ UT>[Z~oy܀*{Uw\񓹲y|op.eY¹EYl>JV+,+],:ϵ*ւ( #Y\ճs^U}nU^793)wU%@|6V{8 A2pi B"?BѺO`-}eGD<0 ^?=NEhʂp)B"Hނ\s&1+FQXX/8"Bxo` OKl~Yd3Ea3_0O_?y 7٬`v!Ⱥiˢ0Pg?1;rYGKFZkfSL B]UV' gp-uvtt׳:TUʪ(ZN:1 0>]lwC/"i׀Xɗ7ט {W":`&vz1/m$3w2_h}&'^n04CL:g$+13 46H}rg_ke\8Y8;-]]G~?7~>;-T[JK{Z,s( {z@. "\|w]Ϳ;>HE=RsG/X0SKde]}wH7?h)DxDX".Y_n?} p jEUAU-9,uVzt|n߹ܽ޽W#o q """nj ^h{η]ݶnׇ6H,t`yKΠ$q͎w1F'f* CX"$ i*6g5A᧑~?qg1a)7fuY `rљ "xaq- xiD띇a`Yf`rYwvm~߁CbT͏RWگ۷9 Bs5B'4 Lj勵D̬_!- )sKG~wW]xчq^Lur)Pೀ~soĬA vLU9 }nK/uwU_R:4:$PC>xQ **"AEzQ"AJ*^DB!R1TD~M? Y2F*Jx8L 2T9z˒x ÇdAt?;0Rx Sj{ (@ =Nؔ !?#wgͪ5sx $Gb,TW⃪x}1z"WDcߞ\|[<=V1Z­;w^_ye f !$ "}w}v}Z^!D7B|8kc;,\??Y$_ ;9 ( vb(]U\f(s~p|ۭ#eF71$EIxPC0 &Ҵ!b3m'-_Z, ;@۝9Ħf=(}_M?V+x߰bZ4cX=l I"|5!"$U~f:K?OF48ˀΓ" ]g{9.Q] b!-"+UL_yŗ^nОu= :$m׭tt}u]EyvΤuΈ|tp1 ~F*N4::*(!Pnq )ăY"- sa1ݗ>CsPffL4CaY 7_b> P04< h0$b1W0Ln"MpZ6pU菎vM<H)qb qm_}웗ꛭ_K*]Y- \N1AׅZDjU#{SVDE`mEt 9ܾ9qzσ/0֚ CPx/qe%lnEõejһw_}ſvfD$Ҷow_nmC/Jo&^SGw:-n"%=ʍ3t0l9b_co)Q f!o:~{gC*πCo2 @ l(oTZӃ~it!NKN.j1K-B @|G~_ןտ9jTnWX.p|(6qB2A&`V2 E{/‡ŧЮo3|1+׷NOWo!79Ljܾ=Y=!mPM%Q nEPױ{4O vhB*=FU9p~>j0P `* xZ X$"Y /^};ƒ^UUj$x}>Hl;hz轴"*-s:A#Y&5iքg>EۆOv*ճ3d3pXtY, c>ATc&q'A@:44x Ώ; 7ݤLhKUA8?*b>,@0.NY1vs<c{P@-@/ ^?@?`o{?_>AS(P,i|QD.7&M,XA$ 6 K:c |xbn.¾3[m>/q oaf"k e9|VARnߙch@& Ajż89q~^auT "I6n-^ =A5;k>+|vvRXCʤN]ۦyz4ݥW J;vF/cgc9uF@W#K/ ǥ nZӍ)lKT#8 8&SXTnrQr˲cSZCe8f6ZrfD•K$ABG˹8"79οjF/ѷϯ{ H/UR/zLrΎ xG 0pt(qr.v퓟o@xx틡oX.U"<q KptTC5$WEN^U‚ap gg `L\/˘lM +vjU`X, #> -a&0+% wK//'g@Jxsxo@" PC:͙ƈ4%Aa ']lw &hHꃀ  Xawr76J5wx//d &!->*ZQGvJ%,jf>Gw} ] "w?fn^|ekDv,NV8urf`SZ|v0r-=Ra[rX(|Y O!*pRo߆Gи{߰$>V0o@s M2ӓd&XJk.`b jQ8-um/޷xx?C+O=| @UU]嗀SXg:dzVfK!lJ -`1FT=(0TJ1';eq`.+As 1 fׂWWm[WXf5nݾwĄ$֗\CbgKܯq5@B1jc”30ʙ^BkKEciVE/2C"R8Xc:Zd.T(-aG7 }!h;Sp+T[D_^ zP78;=n6bQ{xNNNPV%Bhn n{1, '@C4<0Ty eK~(#3ISw33uaW, K\C 6MDUSՁ ghD4^ mע̃2Tda<;"w o$^N v=Ly70)`m@XK8Z84rSa_b밷XK1>3=P]Xj现Xy}EqcS~[@UP'X_E]K﯆[*lgP b]ZF-> >myPfx;^; FpqqW5 `b/(4(`賶+8k"0Q,٪pfVX9õ5TFa,̩#2MxNB ]ׇ A*g'u\ ҇vA6Hv~Mh6LQ9Ώ݄!F#KYzMM 1pB#&{J/ZewLahfѴ!6E^v]0SX-.0 s__P{˿`RĥDt%AUjfs$MWeT-,/bV?s] +{(<=QWXk۟okuO..=sUpvzw,u h-5v8@@@P CixJ$z At:MLWG_C AYZSTKkjk2 !"jܩCh6m :+f(a~냴Dðg-zH̳^~SށR0|j/cBm3PYePH TCuabg(g+r@ V gH3[78=BK|#(2]*(N='~ xjXDUo~Yu]@8S..Z<~m Y[q=,sXk!m`Fw@*JD _0#>bQ6, ʃb>UUK"Tj&Ee Y[C6)(ࣩ#%ԝK"t^mKyi>;3⬮qhu~mZz3!qWLP?̌'4vQ5.y?!!Fs/L'4O/{ٯPT yb^;\m</M11 cfcGؼaG"|X,GY}RQY kqbLwh("I+b f3ֲ")rd d L0U E0b>_/aM@  KbNNNn?|߾u7fwXkωx[EvFE]JUd)ag3,sEwnz E;7Db?f(@~X`hڀ뀫3PUu 9HH;nY'c]ZyS1KA*{mߗUUЂ5kYðT*Bp Bm5`TZ/hH/A@#^JI`]iklԎOitUCۮZ,* 'uN˜. h/db7s djRn`4UЁ9(7';Q4 Y?JЍ%+*g 1ƽfsY$\Jx>0/xWKGGG[,wνH1W* BU0֥3A*;oيA7PAD0ƦAj B!5T"X|uExx`Lzn9GYWY*H@nk7 y΀UT HbjD,KCp*">XcYU&0na~STUim^Rҧ=187Qa5ui g2rU (\%Jcx>фmJd 20\?^#2Ǔ' ?ڦVH[qmElM1Fnk7e&ǫ\ H@ 2__n|>`Qef'}%{e)58~y; W@U h!r|@d/OdwTd1B2y=᳡kAcArBx |<u'8==s*_=|C<{xM]סm }GW8)MQҲg"a"U@@l l]0ٖ[א)bl[aT)fکr}<;N E88U,93U" *#L`%͍4?=e'rх@{@؏gh{{A9^>u/&I=3 &1S% aBUT`+>~o`+,BQ8jW. = :U`oow?X,92>@;PsD!` CaK!vJQ&*?:]I WаC 0>t 's ?ޢ<2rrazi< !MnCwڧ%kQ" ")xCLj7mzfmYWTgBBgĹt BI0@4*+ grꊾu~naqvONGD.T xvSGp %Rv]4 j1l^[HeZ81z׻~SDu,QUl@]!`2i0(&Ohbӵ"o~,(A¤v #j`ټƬ*؝طż:bgvX7l6\o6Q; * CDX1ֺ(ʶr/g/bMYwT;QD2 G@h1AHVŗXJaҬ0p+Hzk{ F.F2N.gh^:VojBs10&Y}#?6;o<kL}wiJ c02QLRpD2ZE5GQo", EAtx7X$pΝCeYxQ5qvvcf3X[iȍ i8~q(Or1L\c7'fbؑFJ{zE:g0_T8>Z*+0Y(y]CnbO~k0{B# `TI{|FQ(:m 9N8&Grj5fbEbÇq=a>GN0ZJp,CԂsOryޏ\]50T[~-VBG>n"nخ7PQ=KEBlN{2b>/0\U˦|uE7/t[ՋDD+5O%8!fs8a(+#aT0L+ͮ r1|C1yQv $3PsT0Im7u<@ecj?t>$7> iZp090m2xoO#5\QL# XN/WUnk+ fǸ>߿lk$1qLǞk{oV޸}+OT#h\'7V'iZ\[ yXc\.\.aGu0(,D](Pɭ3g|ni1eytv:}iQ(J_֘"@g} lRLEC9 UJ?T-:@ "!V&@T@JR<%Kd kxQ״PE|uׇK[hK{d@~ הTMq>|OUx0iUeLdáƤtq(4M#H|.  EY*!H\a\>&RDP%pcZ gLD#ܻDp:ݐCcB4&"؄ͶzVc1_abÂ!|;)ʢ[gkcaR0pt|>+,P8kcR+31*ҏ۸f=BQC:N! T)CH I(z1}㉀,`1]_Rlj۞rh EAW u>D(K1 0)b xgx_!~oRJ >Q`$H}Ky4 D dH!ٹ"H$M)HJc!3\0k @~'vAՉWFS~|@X"pk=vx`N+/e (kh;̂Q0}(^?{k|4l\â *'o8 kjaEUUX,b(ཟ JV.=cP*sƘrl]yћٕݘ2lA5`{+kN]ۣi|-DʲC\2h4"_-"òNEv.7 @$)D#M&$PrP Д!&e:cŒM6w]wְW^4dr?ŝsTM{Yd0 2D?cr)[af% qZg ưqBq}Pk8<`Ć)!1uY —0Xc*1gB; SC ?|~y#c{z{?dR1GZt.|:R1\üǢa̔ Q IY(KG-A@=2b( 0I`|@d M>Uc|,i'ktW@J`$`~BW?JI(n:x b?u=7>d49~4ac`8$XPMQA;7lPe3DDzkS}%]nap9v3?gTu=B"ݗg˅7\Pdx9ޯPs,Ƹ;[D9tct02 y"gKtH4+Ra"M?IPV3Qi8Z, `eё;Yű`B=ʭxЃ! /ݼ=4WT\.4j Mpmɑ&HczO]Kf<x^׾Y̟9|~H_rI?_y*!D_$PFPR:p9]Kjò5C,1B@F\WDLznCaLHwĩ}/[ bҔ"ڊRL $2>r1aReua\YŠ1p!FGzY<hF5ݓu: z9}\3l ߲eQ<὇~@ocR'o͘9Vh4q|Tqח{RZy!0GR [FF'p S(zfNtG@7Q@E5B!Pe0,/$0v tiR b$'/Օcg ~q=*Z;Rf$&_>M>WkW|Ͼrazt8l`y?ӳ4#ͤ;p(orڨjGzm] f\<fl+#RSD@Ih'b;$mkE{ǘy".i踦)p(~0+Pu0s*8vEs(LUGXOD ]<@,Z‰Y :& NK4KɃ 6\`S=q^xOj=gGF '{]*޾kGO_w >F{KY[4lMj{ok9l!h0D@u @!xﯬڥئinѶ-ڶ}nwwM5gŐQU}D$ uӶg$2hw[E7&0ȝ]cɆiΪP iSfky&:D<4$# OZFc؄ z>@h~ bHMU30{&ťyӎ]A"MIAv)).ASn@[jQ&pŢ!fyUd@%8xY깧Vnc=.HOd MG{l*P-hә>7& "uQ٦t4oU߲vm۶-5kr.Ns.iz 2 b".]5M45yK5?##pAUQ΍?D.'3(l`bBM"x?&Y0`;N+@%h.!ևSE{u/řCo|aAl"I2T%iG0$!Γ`^pBID%h/Jh{)i0>E۳أNΌn<20͎χOQo.qx`e-Rf\=f3WWW˲TUUmi7=UUa)A&q-bS< iD'Wy DxP~Kӈfp M?FQdifh8]_{k],VKgX,xc40*b(40#ĝ?hjȠsLCFIU((ĤJu_ 3+G @- ,Lqt|*5LNd>)(IђdO0`Mdƾ|nV-ǏBQY.Z.{D f})=cvm(84-岆.e d$P@GՐ3ٙ ]GPvY=(u" 0v+u(X%^ӝF$Ic}z?£7{v۠-V t\7}/Qtֈ'F0{kA#]R&ݘ$brq'4E:!7,T W@{Y YHQ b*iР8s ZOxf@V nLZ 時yzy#† k8L>֐dh`iA=`GF 9B2h4&]a6h,dbCUA=ffuvȄvX;Lαv-izt|ueoggכn}n XGsK񗉟;̭Pfg\3M5EF&A .@HD>D,r99I&M2!?L}D8b'2zIE넒 hF|DsQs?V!@(!m݂rJwCm2+pKzIo߾]V[\23F۶f{0F#'qJN#xM]t"{f geU~0f~c@}@1JOI+ZTEA`Tn7Ls3i!TF1+g5Eh\A;)wtBjZ^>~|y~mk^fN62yC}Y1YLN)N9wE %f&H-; hh@y\Q",AR*#OU S'½P~'@^2QOz{O}3O2x}`f+5y|8D&2#c'x~| A!Eca!q OڶA6C$>%З<}1[q]eRO)!(ƽ 4A{ܠ @DLt]w]Xcq*Р{/lBmLDl}UPe(B]Q) ak@"!Ď?yݧX XqmT!c"6T֚Ps3L@HDZCJ[)J{ޏGpK㼟Ajd0ax#cV 8 0(!5P Cu*Ч P2xOVf[.,2q6M }J?bm@1p.)QLG.*wrcut g;~ n2.csn6 42? cprzwzMCH LZu?^W^奟b.x}|r>>;+ ``^zoz/'k";?A/;ס*CTeyaѶMf 1+N(Bׇ-ΰq ܛ+%^6/8y91j#c_sLsPvH K;߉e6BW hw f)xOٗ3?3m6#vҌ#0c]g_8/ =K C°CWC\]A,g'g`ef59_?OFUaMV׸NƸ-bɲ5%DZhJʼn^zͺ%>Ul+t"-1$خ딣بFD}诛拶,`fbf(i6۔R4LST h۶'gPVu>h{};آE*-35NxqM0=J|N'hpoVN ?['(q xxH3 LSh5v&&.ڏ[V^|fOԟ|{rEnc#h4܎i)GuG}aDFހ p1V ")$E= e1PUM?\1*<>'{?4r= 7-Ds "x)n4!7zXk &dN[lͱ}l7vVͶU=u)j[AP U_$KL$z K{kwk-u]P3.·VQw[4EvN5&%%'T㙴 mIIAQ\EyW SjR29o3n7?YP6}@ۏ5m]ZJ; Svsfs?M\E?: *E aM7須$'*@ N>r"|X+|U$0AQ ĎqFLb`cZ"ZT(^zjZcvPEPVE("ͮ9kv*afDGq̖U4OJt:Y C\ )EvҢ] ">xDov>27eC~7Ž @h: p&nM:.1L$ /O|TfEQ2 ¨j `%v׍c{BoY:tmyx7Z!s1_]d1] -TW ڠ"nסihU9KXSabQsUulZ늫,(X** =9,Ι(cll5dujT6iCč!BF{ >y$#A+U~׌ƖeXCv:V) :DD["c<}擧3ki W'.K6i& Fs~`캠Jk`<+6MmĹSpi@,竪UU-scPgaQ\CMW(@y\]my\_GϧͽT5a1qT,bڅX=]%aVuόb6,CbƋ6F}[ ڧ>ox ot}B"y"z|mvMQiG]58-e!#sy,Lw|@L}o[!_47PgUDFEz/;נQUSabt;R$}z%3Of,b>3-2ZwfiaLF:#f-(b^X_o("&ޤL=x c<\O*+Ŭ%Oe[0X[Å>baR UsjFjEI8=::}qYO겾xm]AD<9ccaM0LLd2 !1U7il|VA/Zk^xݾhY-sXkX,]]\mtM笙4GFfDv4,9SVbmzC,``s S72 z*2%gRD>P+"Da ҡ qWX__{2R-)|%o&=;=;Xx- ])MrC܈TF Abon3=i$}vz#Ja" x3Z8>>=,j,]@G31RcG 5b#`Ψ۫"JEUlu >< TDXCKcZ(TcBQHˎ@8%+;l $K=1q)I9L#3><0M2seF>"/8OOa zhZ:N*X XN)3$x.p}g?.#>O5^u=v7jD.)zg0c:CZ4[a}mAk[l}42Iq}Hl^i^瀲PXG)g>VG'xǫ!l`"}>rY65>Q'Mϒc>DPT="* }]oUBÐ\%"@IP!"G#" 4FtmI֎닺./`vƘ]\!"TUU,>{^>nm1Iu TxQhTiOvH˳4RGF۰ -?w8b{wG{Yf XpuR3tԵ>%?%=J>}$"o0="*#F4l6J; * Ң ڶj4ub1 k]48C/kU %!Xbk8>zms5sILkv>c%iuŰ0Eᔍ#8[4F EClG0[2kS<3V"*A@f 9#˄‘3y>2`1κS}-OL<3 Ō)>p^7) q]65mĽJ׻>u p2/p(AHfװx$]ŽO!_ [nm3!HBx#:3( 8E Lt@ E{l"xoc9Ǡk{v=DEwMġ"l`k}o{ϩz|[@{0_kʊEzǧ)H bQH¡ڰCѿz`I>!;;w6g H5+(Z4Ջ0sM旙 %igY_*Z-T:e="f 8hLtD1D09.~}hNbR8y.z.`89H!E>G;yTT͑3D!2f]uِhE -U_;梪JQ2~h"xAbC Akx*ybhi -ha 'PF fPM˲gr)ND;z-sUWb+y.K+ {( Jh;FZ)^GĪXO W܃ZPNzO% ZS3(Sj:p݂Er'p.5`IKM̊pQ2eWL6;;ٹ^/]V><'S::ݠW f8ס|j~3",Kx1[Kcp:!R3]T4 tUEZ DbQ;Ȳ.}8mV1 sVE\5T@zNu$3ĆTŠ˨MmDׁ@r+27`y-/0c]a54 $ApqyjF0$t:Ͽ?P ( 1)F Np||Ux+'sBR2$Ye~L̪\A0EdUSHTIe+)[-{f3-7/ IDATvjl7<4_,a6X^Z}䥷d9b>)l^hR;/~SZ,XcP^1?*5EU *qJl?TIx$k@s5NU90~RG\'9v4^D0ZlFL(`;09C>ۏEP_ {bQNҽl 1089 6:-( (Aco61ͰX0DȲ$2 W* /,0>d+pp81IY%{oo!=ѝ,kYf$ ؁l t:$i ,%g;Ľ{O&PX*60akYhcOWtu0[Xc 5Pd 0X,),5 U2/PMw&4fw|M:cc=Qu3GgfYuLʁ^?ʢUUh\% QVQs=iQ`/ 痋;.{ۻ^tM|ڛf<i|reqTR%I; ,o"/D!1d9D\C_m  0TګC@uCZT{kRU=sѢ=^Lr̖%EP">ޣ}l:e!Lgx-ܾuڡqy/=c7x[{DngYrlUU,]!MME`6[GG`KE2 U)89`IwY&P 㼫<5@J"5וpƈfI4ۂ{zqKDdȚh/BPŔJ8Lc d@xnlip)9ee,gqt3]KT/AHhUwEAZZDXJ<8UL @DRK %ePY QY_$L4$8řQ'݈"w';)<2xG88<\__>NdSkDtZ2nU̻yt%f|.\nI"E>By{a%y^bq U.Pr&}3`f^Nswo_~>^m 3w&ȘD|4\/8IgYw$yH# &\u=Km0ՏjKp4hiܪY&]EZFㄌfa7@JD3"8F{DG2_aj0? 5@D*YmnUˬD`cUuWx̏>el bxOG'D|׆CVUrAe,NN'༈NK'>/]Z:wХW)jE#yO_!k%QE ƶbQd]%y(zzob9}>1{ۅwswsc/akAQz/#*K 'f7#@IcJԆJ4z2F\t4GU4҈ ǫQp"+;Mo%5"v9g82{|r9zaf  E<#1oc3kRT QP*¦PL(CET jS(: @۹bQHWupjIg4\R^DkPΨ_O~S<(8+ C941HhjHaCaE@?qUjx/P^z^RgQԣIѰ+t8"@'1taO7v$&44w71C%Ȧ k~So'eY_>$1[̴MD)D4f"bs^KX*\3"ȃP[t@g)@칪?OM37Uf i{OwnI'ܾu??X^pE;R-=y?Յ U-I JZ8/sWs$Rab"W D 06@(U}U!2 juy~_&0 '6iKУc)%1 zLa6t^Tצ)/ L&\. :99h8^Nik1 AվR2ODu.%%TKU-Z@vEN$/,}AI꣟\ubUNPy32X3 ͯU+ #p_t`%”4SU '7 c Kk5b0g UC."Ep* /EC鄼*گVhcC5H*J^2;taOۣ.Rd:{{ؽ{]0Nnx\`V$֟o?[gcKZ.Qj7_&1f|GRXIhӍu={,_|I|!w96 ˃:(T  aM2&_"2)D煻;Y7ey8j01Jq8r劺[!cP;pX4PuEY/_ZAMg"f]!|d&Uǚ)1üDp^i/ƬYU+_VUr^tB[Ms̐:) 1&kwWq3 ~O~'wtFܸq L_9'@A^sA*)t]+r]PU@aa< :ܻz]z}F#lomaccNY!KS$ErXav0 r7wKzi^"L2u&:@Jƽ:֢0VNRjWa;j' t(˲.0-A?: Fv:$4I`ZdA&v2JRYC3 ty 8:!]a-hJxq(PTeTU:5"&-54OTTr"~+cEJFƵhJp,܈x(bZD"; Yҕ3C٧~ǂƓ9nܼ7a|x>!_!韻V\xMy?} #U2]OÏ2CD*Dv8*v nz0 T1DW(Lz%b [$!7Tį cEX%B_αFDv"7kչՉL=V5lȸ9(P+T1D$GRjTC.E, YBlʙ!]Ұ0Y V3(G))UeB%z9SUt0mU:EQ$U֚PefNiuۧtJ'4ON#$iÉ4+F cwҊHj REAVvYk]|fK =[,q{g_ݻ71;>@b  _e*䭺&v=Uavpt|B{lnpƂeSAW– F(W9nMIO`2<3QF BL]NJj{*_Ӆ*>HduOTuJW]IUiV-Dhyf؇΍&( ]!_z?0c<3~ULa!Q<= EY1ŷEށͿ7VMґ!˲>:>eRF#U}PIz8fyqtSQՊϏz)QO}ZuU?o4Q!~hW~@5w(*.rc\=>H3tdӸ5X$|vg<726O)M,('z_}K ~= <+'~gSg2r[[x٧+~CanQ%D=< eM,%tD(wµv8"xզSׅ w;j #/D1oߘW8<̿:P?5O}ӗD䨗##z  yB)DhLgSO>^7xᙧ+>(Zt]D:EQt:zҴk$ (^T0u+#TWDV,> LYCQt5P$+#4B}Ъ'z"v>|nd.ni(Id=v^~܂/@U"R": +~Og~񓻕h _~ tNђW kNc* MY[X3HBJ҉/R\9U}UhT,X ^JP&ZZN i>ʑB| Qp7O~]r.9pag }}7G.A:ĆiœO<&G(LQ i~QO<ވ Wd-9' FUE ;ȲIX"dfe >+[M'~(:t{ͪ^ۃbO5d #*%SGxnZZĊ7P)JH5D:5̜[+Cй5sfNj ,K wvvqx߆89?Om@޵x-{ L A L&Ҫ&Iھe2t"/ jOxD+L @Ă2za:zP 6;!!BӬ7 UBN(<5_\\7߱d5+ \~ < D~1o)O~-#] =(`]DzeYt:%u]iGMCMnh*USUJ?ǓW>HAFk~r`)p*X9S]AopJ{ HnHM̉1߱9 }C{y{},3 ̖wk7nW_W_=j+ha;߹N1~uz<Gʄ{D>O8>e^bssK:Z XY~/4,w\t"U@ün_4|9uz: n'yUlԡf5ܬ_+Ow^B0S0 kZ %0 a2/xW O"6"Np~|~A???86lH7/ LpeINtZC N2waD0LUp}7t^@a >* PJܳM\az/L,&p7왵O.o 항95NB8'x5~5ܿsQCi@D3<3g?N3~u3G>s"%]!`("X,ۣtHFÁCqc8wA7֦ТnYx/qͼ> ĩsRR0bRDbѱnA`Tw%TOP_p^Z65H=za=|f`G]f 'a-/޸sO=,s{*&GQƛA 7ySO>Z=/?>?2%m%ݢ(x2`\M2Ue")d҄Ę.l&MM,̡2/$Bvڈj:4,?WP%UcL/fMz/5gzf?O/oYIRgK\}^y%{&#b b3{":$9ϝShRJ0]&",HۥCdYAN[i/Mzz?vR1LyAD '}MZ9𸉸q׻ONW7A^]{U+a"ص^fo G.nd_O$îe 'a x }-<՗gL!|7%go|ǿ? ]0-@6):tɘf{9>5H2YI'14]k٦mjMIl͒,&6hI%J^%*"!2A^nDxw13qbdi84YevkMέuf?O.ľz;!bB'7p5ڹy@|L C"k'/b̳'~o[MJśK6}JQ⅍1v+W.Q˖ 99yu^{Q)ŢplYg+Kfˢ\ΫWU%2|\P$MrUUC`&άԘnfmQ7Nbp$aJ,`8 =;qvn^],9e2_BVspONǿ{ohoY%w/g#2?^r `0@,M(DՐp*yy^—,{u^+O}J;J@ ZL侍Y6Yc;֘NfMkͨA'a'PUs"wNbtܾuvot q1= s?wl:LTo@f)zGCؤK.C}tF4IH0,P'ETGTHE ' G" NAZ6LA ˜$̙1XLDd&S[ݹZ(q)عv޽;trte#s+(*<0|7wͩDZ_O) V5}ǹX C=>\0ze$Y4I$!2Qly)U /R:]TTš̏@a30[CXCd:S΅[YXw<:w0Q cs;P<7'~}hAZ3!UKg$M sڹ{O_x,up?{l9#t3c-p)иCDl8&^@hZ$Jǻ  sRcpov9/KEEC#Ips8D9@o@qH^Uo򉿾E _pI۪&"=TLh .\Οs[gucmtR$)Ēc 6ʢaǺ@XA|<$^yx߼9Ee^`:_xǓ1NhvrL @%lX8tD?9u^[zF-.qj*ޣ}ڤڢq9<$IԆ:Yȏ6?JEE',:4I`%&j8U""QUNzQxQg9fͧ3̦N&4i>c\LJeaX.RB>  (WmONE!]+"=^T~Hk?J0v=dY4MfCNbbJ?T"=S9ecX`6c> `6l6t M0UT]QNDsUQ7sxW?w7F-)d*zS+:G<£D(3? a Ti6Yc ذ60)B/|z)$j=BDBt=yy` 9 q mW  RzL3cNZ|Oae}?xE# 0j&")VU( ~ZW$PW(uDT ' pP~Q_yCw??i4ŷ .@,x?4L}n<#K@g$B74n @濫~`Lj}n3p@ncOx%(@pPC10BKv $ =y=ۊ/B*U Rt(k*xWWShk-V ̧r&5EB PU?w}E-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢE-ZhѢEQBeXIfII*nt|(1 2##GIMP 2.10.122021:06:19 08:47:55 sJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((((((((((((((((((((((((((((((((((((((((((((((((((((w:Ȃޑڜ8L𭅈 pVqƩFh,v*˂:+[}O{m׫Xx^x,"@p01[0:$71ZFd:Nӂ({||Y@'`>=kׇsJokUddxeǁ>fb,Q?~{6?u8Oֲ+y&T]cn&ȴM |;vBֻ-E<SRlZ#!1&:t6r\>_ds;8:L7WOoB2%Q,`~.[>*YR凡Ƨ/PKZ?yXCml3%qS3YJ/<> 6٪VZIN Q7NVS%;ʸE:qӓǽyiJz)+=Hm@t 6ʇI\,y|NRDdqX`|5jq ZpsIG-ҋHِ(=qOjt \sn;pyޓW4nt砛 |EZ-_%½rDtH@5yqsV ]*2sH/W$ a]PZbFrH1UFBNO&-}15+dlCokz܊6tVUwcH[hI7*{i1RbQpT 2+d ^*'t&8ؤL1I曯Vk5Fx+4. }kJ0mOC]wUa~J*#HAr3Ҽ^;DZOi~U,g8ʦ}̫VvWG'EVEQ@Io \\$*p\4[I&@B=7w((ry'ep; i"QG Gz:pr 6{6$PI漷GN͗{[x:+"dܜu~BV8»VxnSXCŒ<+sm胛"^=)뎢. $Hp7ny 'LpzQV*m\tjڌdgR7F])hNexz\dnÌ?z7ZFk-d`IщTetxhR^$kK{Rk&*[h8#p**|% }+= ii<Z5dK;ɹٶ+Mqipyڣ@!yEO/|'"c"Eח|*C9&4JCӺ(m3y{T̟v\bjH u'X?;]RLi-^eQܹT]x][&Gu Pn7-a@nR2+|,S#Y<<3p,|m*ǘ]72=TO_ 6&`5hwIЌW^yb[)č{6f3xlS7ckO t&?j.X;L Q@QnJL#cV/Ka*- #_)J>*1ZEgvAߚr;ղ4iM0Ӎ4LiZ ݶ#716kw~]2lR١ q& qm![z%gEks{0i]ODW[nH;k:[(C%Q,.QtZ;y[ysݢ]NAՀ_}Vu'twZfO^Aj6W+<+ `Uzכ5fh5긐5n{mzV,Sچg\%Sɓ%t{JҜ@!u V'Wn36'kxZ#v$:W['۹'"5o |1OqZRb\pi܁0hc)RA99E\{@NUUѡ[) -,P2vHrhjVљ*5'?'%N<-͵ղl\)Np WyY=bi8/s5d;XWL&`Ii4yZ yaV]ֹZ-#+=iN7dNVE [nK۟zWz/uH9e+nd@û:qxγ5Ƣy%7mX>NҔl;4?6ܡ@?5EtQ@Q@:&6&?c -2aŽhNkͩ4$uII 3)JuH:)Y,А8WEO]kiY]3JʹsVΧhzCןCh:wqi1YnT{d{^񭦧nlm L{W/o49-8m+p\| `v'"լKGՑX x9֊QkĴO^Y"Te&59]\ncP&OshU5=swĻ+;_+q9Xcn-X2M2\J&zc9Q։VaQ3SY&jlVjXdw/@PUZƺj0;M?7GϳT.t{4ѝ#ģ,kDüV1?@V"]FOyMtHfzV4q?:g֪:LHkhzu{0;Z*MErӃg5p_}1>4<۔_'>p~q]/5thxvXmk`>޻R9PF3:k+My>˶{ӯ=86u+NP(BA\ТuL\2B(S.rF{4QYQEQEQEQEQEQEQEQEQEl"XE2ٙw#d\^ل6p<9 %Gh]ʲ}ERcm7Fh1v̿6߽|a}R\ .;r?ϵ]SU\V>8|o8?U''gB=ek5ӵsڇ}VJڏ׉xkx9<%R4O4[9;-9O:Iu:J8P&WƂ[que\*U=J䥚[LHH]ؒLrliig4$՝'4(QEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEQEA%tEXtdate:create2021-08-07T22:15:04+02:00?n8%tEXtdate:modify2021-08-07T22:15:04+02:00fbքtEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2021:06:19 08:47:55ȊtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.123-IENDB`vokoscreenNG-3.7.0/src/pictures/log/log.license000066400000000000000000000001371444746353100214730ustar00rootroot00000000000000[license] author=tango.freedesktop.org url=http://tango.freedesktop.org license=Public Domain vokoscreenNG-3.7.0/src/pictures/log/log.png000066400000000000000000001501111444746353100206330ustar00rootroot00000000000000PNG  IHDR\rf}iCCPicc(}=H@ߦjE*qP,8jP! :\#4iHR\ׂ?Ug]\AIEJ.)ޗVb6 hmq1]C@}2f%) ub<˿ѭ,Df6:Ԧmp'tAG+q.,̈NGB +-̊F bO> jٽqۭqr-훬*z>BIȸѨƐg$W|' CгFY'>`'dC&`ה> 2C刔va2V& Lvm:Ug茎 |d\z0ǼVMfͽ͑hOmbRf ۋh' q`)\"q߮"H*ϙD_IDATxidu~{sޔsք#HE EYh[KKk-N,-WP-S5rI2Eݽղ-5Pʪ眽9/H̉z6^Fܸq#^} ۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹۹a_}D{DZ(P!e@J LPFWJ< ;R8Ur>zn_ gJ&`bOAvm@{t3Vxs8G ,{=/GoHR@I@P#.={`hD PiI uJ!|(C%b@K(%x4FJ=qpE.?iOb/馃[@ 6227A~W?u.|۹2zߏT*0@NǠx ǕqD8T-4h,?>z6p )xJ U#5+b^[a9efx *Rj@-P( n4޺>o("J")]pWKP75O?s<xHk `DW)FViWE X0[03 )NqL7rT Tn*!xH E09 >p'{YliC!7x*WjD&0%.PI;>[PQF;( j(ku,a C f1'3(qK |h7-AӬnh+lK' "3@ pt3Vn~L_@!y%?[73dFЙC |#VeLݵK--a cm\ETU@5BY Z)4t}, T49`F^`L :y?#/G_BT'5] Wp1D UB(Q.cs.Fƣ1FDY0f3&SLOIcyH F ,tZAdUhHi@mڴXX.WX瘟b~tˣn N@Mn+1:g[~pn_;Y3%о?LcK[Pw0ٽEg{Lf'%ҠK"1R Ft`Љ cn\0`qr;޵pk[BTEN7>-~gyzEl|XEN4/@_!@T@FQbs ;{{ldP-`l0)T2' 1J)WHc@!S0D]`` %01 _  TS\ګ!{ Gsܻwwow %,DoC  sn?Y`@Sկ^ ؖESVF;\t2f{@ bUH)xA!"@T s6À50t @`a8:a.`NUÓ%ý;zqm7P0-@(?amϚG_ S? jO(@@UEbrӃk8x M&j)`EaQ,6и ش8/AϴkJ3t+d$h ` PXFi5,.-ƕŤ`*1P`T11fV7h۷Wnk78؄_\6@/O =kv|~/[ߖ=»WU* 'a ;ױ*vf, Hv w>: X| )P=8P;Jkҍ1* FTʠ a`-0cepMy"f Zo)`x oC caς;C)?[ }? V?_h!"alrz 8/b:kزBa-,9ꭋ|Xn{װ{q\$vv0* $AڸeB K{}Oha/2;tJ+t&¨W؛؟JLҠ2  Fx铟ī7?`1?B^!x*]%LoCi˟ GcCS߂-D~{( %\6\XƳe @Eu0_;i ~qFP52py漓#TC)2":ǒٙp:8ZnXuH/ K\کqaoL谂*^`8z*n9/O{8H|,i_@:(5.Q<{/39OA@KDQMQO0.>6\ٸFU !. XnK;>+b<)]U}7(U!8X3F5KO7cz` TjW+y>JG^(kuaP `Pؾd]C=7"WUxQ4^uq1=Y6FC 0@M9}F]ZM*\vjUk~i7o=IKXy YS%1(g_n|= =]'J Lzzv;'qv`&\|~ #& +x  ݆ p :!^օmui#PjQy Ah]@z(ÌQmw\* JkQ"h(ZI8*f DTW*tJ 6_#9_3sY},Z hA9'qpp eU bqh1_p|DSBFcZLFŴ6 Fa{T]Oh*PHPm3cHGyCQt|x]5 "h6[GBG5ݸWO\1bwZk._+ҧ^ħ?,&%`z -"Xxn;jIcd 4o\Dxp1( <(Z'X51ǿ7olS]{?lt:{;q퉯.¤=zk-4PX5(}LqESO\AIqmbWiO/wz~ “A4#v5-tW9h |˔&bq8Znqui.c` 0+\D5xbiLiױsοKdGYD~|a1{pp͸W`rڥ#0: 8Z:.4%+¬w+\)1Ywuf҂TNHQvsz{l_0aӫ4^Ѭ]m"nbi}E д{5 toͳo)I<~RwG|lk{>§t0R<:. f3آf&# ""0?wկ{܏G~[wX7(c{ߜwYS,mZIC;uwb< ;$eNܽ3@݂[z?c)B7< qk+icP*`Խn<>t @Ui0ai]JrA=)Tiqj2GӨT}ز½Cȁkv7 jyy0ٹH/QSطҷx;5&;W͸W`o Dfߺ/],=6j36W+\P¬66o>hCF\Sy~~C.;=҆"b5 "4 j7?(tH  Qf0bnRqp.9NP'?e_~v|w}P"%\{;q副t2tAFpt3>?U5^7] $2M?chDJp=u8zxSjmt.wO/S|UqJ/s[/m8+F}:!XCd bEQ=e;w0?9N#`ܶ|7n>7HaDĶޯԪ K=\xWXr"ǿX>}0;|Zs^g׏o}e.rn2G|A0}&Fx=RPahg\EjO"ÄDCҀNd,a6P<~omЬ@ETi|1Wo{#?+ NDEa h}-.=ۻ*bOM<;"KK؛\ٯJE4<}S!e<|P-{~0T0?tۇóR`(7h\T%-eBnqUqۉcu¢4ˋ1GY 5J(}oSG|H;Ko۠`cL_Kc4*aL\OWG ڡqv N 엸_Nqeso -~}2 j\hsT7=WX0N!%RErd}TDJHMzQ/bz*ËD0.-E1(GX7<Sr7l*H;{׷\PCU&*c>lc8R,7[]ױ'( …"ط?&xwn>s'1vNzva1gq8\DrRB:Ղ6e U@l>.zC<ȑƩ٨qiDTq]hb,uPe l=.>,{1}?8s7(v/=KOb4 b(9% 앸WbwlP|JkݸD}'箾Ý2~s;y]uk&U^hTZlZ.Uʣ:dATkG򽊬!suo.o~sc-Ȑ 3n\Dn9ؐZ*Jv*l vw&`(^}E.!O]tM͇G.x4#Pz"*B%e.<F5T LMbeJLFE"X!y@];{'o7޽ -#[ ŒөѾwP:VU+PIeiSY4TG4cep0Jki:4*-F ]ǞxGwn]/ƀ|p z#٣.' B.\{.\+r ҡqu~E]1"g ]Qc\{ma4 BnF& 8ݧ&Wf / _;r9RWDqmqס (gfC DXxc+3 0N_ 0~CG<9BAc̞ߦ DŽtT ~G2 xl5\ykw‚e>Az՝"\-qĥB# _\^swʋu$ If6U2ۀ!Qf-bQ,ҁISLHDtqHmJR,jiEҲ0b4@TpmZ,9Coo-\_2{"Ha\U\Q.czIg;z7.`—>y;Wb4U[H: 兼<`um/6ܒu@ Q<`ˎ[;En" 賃->HUkbO DcPD5H"b>QMR9ySкu8Zn­ׅiEt>?f]lZ: Dd*ds'wKe CAV?Ob(Wh]0&?jh"z#S{ E⬃¢q^(HI"YA$P̀ 7-a ޘ'PWhVKx#'QOߢLG+DF"ૠ& `sx'p^j֣uQX`R3.؛Y"OOoOxOE }d@9a?\t p/r0:RUID8L@h80(6[l|cUIQet0Ku2;xh(z_-?1gp̦&_c0Fvaz8jdcOqwU{(vPOSOim%= Vgx_:Qwl\\c+;Q.d!zD_^ ӱAd( YI $TlHX>|"XfzFeIl6kOEz | +x @*H8";|@!` ]Sv}ow SUrä$ UbR@`~0Z'tЕc\ 0SOa^6-= }UzU}☱sp,IC}]M5-Zc+\e["Ht.Hwy6_)P%Ss}ڟSd!/3(Vѫap@( B~e/Է9nD;459:uFi H3 4R)pϐ*{$F}pht6ju7?~ 1>*%4 n*!<G PآD9xrHAi$N9 ` jbRx<90oG-{v}[}Dt5t0rOpKQ۹} ۩3R?1ְ L ЙA$A[/Xpwٸ٨d\ܯqvq *Nz;O}7]DWf[bs KQC@Pdpv!tѻ8cgdP;t A.+y6'Qs&D$~_I:H#RǾE̝zu|q&xn3ut J9f+3!Hqaw_зs5 tb!?@ #|"H B|0ˆĒD+ PHAE9źŦզ֪4TYK/^{w/k$5R++S} jx+T E9h<èY| X7Q; qv+?ٶ+X4\ni<;q]8 5Yw;? H:p=QހM%M5A#5 :Ҏ5H9~H s0JJX:w.6awR 42Nf:MYc"zot_L;xZxUYZҀV_/3GQIhneÆB׭w=Y kVwN?xfAX_ضF f '"t-D( @8zD.6ag\QSf* 0iw@&{hs U ukW:آa>/u7p4.H?w,_.NGM`9z[ϧ' %.v3IrB@8 Po1( '&4.( EKppEUf#33Vd P"IU^hj<[RSE y5fBU" G;{7a9eND "[<@v;}?S\Zr*ޣ '4掽Tveǩk?e]!.̎+qbUt8EF R!%_ `LKeU^7 ZBa-vkƐ.D?I8IO(splPfS0(@4q4QQ6[r hC#E[;cTur6NNzP0(3vw8堶C1,[y{Пnt gԬJ<| YH!HҸPN %/0UR0$@HTuAVutD k1ȐCQ5ԇ6DGև9N^L{Ω|5-={*H%kErV{bri!x^4V}@YU"a gwF֥!S0O#Z-)M}v&u XbkJeQD/T4>$j(̠iz~-,m-AL.$b:%9=A?NRJCpFj+Kz>?!H"WJ-'d) cs BPYn\X}c}&( Lg;:̰@DKgr7@`_}ZfFQQT#w#Q>Rm{kGLߤPJURnj \ʵ )i?ԡhί@?cPR}2Nz3 GuNB?tO]C e 7G95K0D >@ bk\+gMk`6( r b6P':NzTx=Y5ոo!;eBV{7xdJS8CbB~ϳEf_7M*QR9Hix"$E3PHRm{:36LrC*iCD4;nc0t2莍@bnN9;@u I LYV#0nD)oA`HOuZ_{Ve,m[bm ꇊ$@ -h]7ur)Sd} 1@:4KŅCC߁ !9*BNccpP9 $^BhS0'p8So@(zu ET~9<5 ;-jIiPS uRpLN)9RbfG4 dv*4΋@c &N&cc^0s/ L9bPvAnT1(OAZ [kB_b`} Of%ut jp8ݢIz;HOv ;菍g? /2Q^ԃM:|`"J!Pi[qM-P7X6@Αܿ>T@z-V"V" hl4`d ;}L1f @cc 1 cam׉znUSjܜrzawE\HXpxοJzyO ^A ak>`?zBJ>sA]3Od5 z?&LyS s` 9Z6dQW%3@A4&1/ӗ3ag(3T-@,6=ڧ*%)w/͉kc+-M_zŖSn $u2/9 f?Qt+^/k+1 B}Up߮"P %ݙ)1픠 SRN0 LjDrOiVFdcUGAEL(8w3JEO=v @KD8#3MFPt@%JEATH9Bur{*`o׿h&~AOaJ.\rmԆR4Fvg=UHS;MMZQ 9)e!;t`enKPT PXkrS (I"3bgDY*Z13 >N;}LA[ꂨwA(K "a݄񭨨>%E %/!aqA#bQ)c I4O y&Պ#|l-~J@ 0" ;&!KPW0Y [ߏ߿<p{:uxѓ:[G&^T W6H|h@ڱHw4NrQs9+ J| Rz edِ͋-(|ٚ (0ܥ(} Hn}:wJ>h- NH/3 68gW8N޽?n)W u6·VD1 xfI!+t $>@V ~JdpN3ƳH@Z2,gp#op;SbSvȘNG}n n@7;ZÜz1V CVShs*e&]w6wK=8ʏ7t*+ 2@S^W8 Aܢ e6AUP)4H" "< y0EQ2HۍAId<3)wor md%'Q!r L"n\& fXBt`;,O{@dp:*o#UO!l}ϩك2CHu9~<-#1 U6kl6K)H CΞ?ftuZVodQ,38m<m 9L9_xO}a%R~^[N2X6A굧٨)=CA,]ȱ}U: z}tц}m>(uۏ~o=e5]nb ZHp ''B/i Ҁ.$`%"P S=һr߮‘v2   q(DC7#=ؓ눡.Ve+lk{0s.{5N/Z͏a9;{W'H-$K"P }_,0dRTWB|냯@֤tf:g{~':DDlqax RN? (HHuy:]XeΡ|+Nvt~lrԹ`s7 H4L^) eb q_%Y`fg# pGqlDѬ6xvcCJwSs~ {~6Y<](֗U3h⸰0$*:m#s~<9d4vwAhčA| *DL*PQe՘n (rka1al .GG>:T}xB,nE36Y?cwz 2. " !a~ WM$VM7kƿYlϜdBs$N &Ҳ) 33 Alm6 >o. mgH)j%of !z` D+ʚv4"X{oy6*.{bhG^7li ,ukfi" 9|agl8$nM"}yOp>#mfqu6mhD$N$dE?^fp<Xeɓ?}UPfk zz t*d_ ;pNhr] `a5U8UM OaQI1!$KS.*șDN ( AGVW"Q Ez݄eS[!,iO\ $ql@)ſT$v|tBd~P@!٘f%kl (ϏRR1L:dcP"lV*S?QSˆ)_z(jVE@0MeKkѾN?d$+%<-|74~ j$`LQhZiDU ޤQ@̃a]PI)/iK+aPR㧜 q4+Na'VV(EJeN¤OS ]!"JcR ^]zz yVL:- `W$ffb cPZGMLV.7>XC2,aҌ(+lj>M }Ѡ$Á1MGa ~v>u\}zX.K ɺuQg$D~êK{-I;xT!('z$#yV8q]ڑGP0cҘ!xZ\)"r%rٙ3X@H46%o3iU AD5 ^sJ,Fx*fg\Dzb!u 頛W#A! H'N!teF vIc*=`/? Yy" 5T\b ra<ՍځH H8 M>&9101I](2 !/{*!gΤ Mm=|ׂ 0. @|j~^\@=6 Ad3k]Xt_i 5)s\i!D$D?⁃Չ b/katWnTնu޸h\h5"ԑK"*b]х#ba#/0w!ؓw% PGXHQO qm4q89ℂ`Vx HU3fg^m2$!YѬרF5*Z$=#w3$CnU cԅD^l 3.*'a;|'ۮO 9N; ϩA @œs=ر#^.iWUA8$e좨7`5# ]bQ!c7b $}7eD%13I)6d d0G$"PPhR٢.liR(q. Z-WY!+xlz^bH@Y/`Z0yV9| snT7mkhM\J8.ЭN9t~`&c0STmEU19`5(TAI5yYl$;iĪG:D0 "|Цua4.H.'AΟXTĸv]on ٷ%v{iA dDUC"34G1-JIv4]/*2IUdiRո%3qP@diul-n@qbTyL:~wW C74/c < TP#E @j̤.imʌ,S^ 'jO̓yCa Gk]ʀ/Y)HTi4K#"mq*DPR?#Sgfa]&耥yr\[Uyq2[u'upiT ;FKd4!(F, ͪFDD`t\ ,k&uQ&eӆjA$?TĒHn<xc? 諉:9rKWTQFU*]+{ѰLGz3?@Z%W ֠0qŠ\ Ɛf4Ӻ0,_a P2m4 !w݄:,2)G7rT8HUBTB*I}A4;W  V%mVJrOjٸ~b:Umbo}8t[HUk…@kBW$81ܬsxcFckqtM+CKa5JCuiKl  - 0N[bfhoTąдίV_4.,%RANz5oH@fvuhJE|#AW()ݲ ƒ0%Ƅfu<߻M{{;{{d2Aa-9i #6t"Q)"";%msIcʥ[ Sh];ow#rŒ[?5=?ٗegsSHu^aݬ cڒ $EW .-;E%֫'X yp噭!C:EܵixaBa*  ^U .TH4"J7PhT۠~>`P1!ʂڦqPMkq]?;-wvf`1!D3|?"=Ծ4Mr370H%bĀ5dF.,[ñn¯z]RhnY]YwLK> AUDڦ\Tma1Ak BNy/k7'=f6 b?TWb3 W k4:i_., VJ p"p! B^! (!$}?R8gӚxS~Mh7fu7A7 h.gJĝa͍3g%nr SYgPQq*B %= .gua9ΤNEkc!FF`Hk˨Q] XƋ4U'6VU]tUc6-5pTx!\ Ղ-7Y:T1fɅbggąfrjq* hi;A ڍF:zpHiٛٸf#\pttck+cPig9/KD fxMTUAl T%{AhGUؾDcM1dz0G* 水FLĴ0֘RDt/qm7'޹yۺy±XxalkA,ZNryDEӬ ߮fR0Fe7M&;hRuawbHWdGsD^Gz 1$FpGHLENvƈ%5V썫.g:n;>c48k(~> Y;``|Do"Xb4`^5FlTr$zJ72{ؑa'~}R]"Ή7oNuQ]ƒߊ q^eBk Ḧ́ 3Ɔud KSB6 iAӦ+)M(}Ρ[ 2%k|!hl:M3ǹ/@SO?wmN!U\ ^kd/Y%KӪAhśeRNtCD)C] "۴~ӴtN`搋hqaia9xt(̈HR켃1lA"H+4pި+L:ӆq"cPD5ETghZJƚkjE94M\p΅rmDG#N'm=.=UkeΤL؁IU}-+F JCuaڳJU@tXƍ|땛h̼!'|T> prj1Sl.*lط nzve2ioR1Ѫ &s`ФyNQ8 Zz3BJA/7n^\J;8R43߅ uQMqgM#x{|>gf15f< KDlO9"z̐y2_̏Q5i:QQZZK;@)4Sk;nB90WE=Aݎ?XlGDbuiҚX(QZ;xќԅfٙ2{uQLLL jc%%&""40ǷeFm QQokWd~on\YbZU{{dT ݬ[j*5& Sɗ$oTU$#b\8j_.ǵOqigeA X,[|U}饗0?S%p$g 3)v %?+CpXO\U].IĢb׮AU" I|w`ѺAtmĦD|Uq[ĭ@eajk%ou˕ 7QS0Ҡ. MKЮaڱ򨰦6vNspB@۶ll64ͦiۍKn)>sa|awV*ڴ^lEÆ3Ÿ&@q(ktkKPʪlj$J^T&\ۛ\=Z%sr|#Z-DTq~ZdU?m Uzx7*fCw_EYi=qUZFU; ߸N+>e(І AٺށAs{'ELAbV>F 0˜QU0lIRנ(xT^ah<-Y+#kBmK&6d" 2i Ƭ{߶5M4fӬ֛fzDo^v_;xiwV9$:3xrԸp"J׳^d# zd V:4(tx|-bf3*W;{¤*BXUܹ/ߺu0l"§~ؙ?)?wW+Xx6q׶;˻{h4RBa,NjLꂺ m -MGaSUrK#LA\eKU]r"F\)2ʃnmlIm!A*0f5J U5iRN*HQhz#jTi(:Ѹ G[4"z,|B  ͓b{*Id9UUNK'UcDU+>0]U^QpeX޾s'|/4M+ 8|/=R~wG^D4Pȵjû|j k.gTX4TVmz} K`l~.DʼnK۶r gM=bLiyT^!ǑL@$"@*gc& i$h{'eƓdC$PI:|Ԫ"7ۊʋz@ ~pQ@4@$o)Qerr0/Kz\//"sEr!ii{c1 lk'z4xҗtT/ { ij}]GAMAzj񷬐~ӆy]*xB@LZv4eV_e6i) V12a"%AֈSss-*OR ▌ ,T(Wl K3cx\@؄;=QF] yt.Od)g5娆^[kQa6dBӏ~^0MӀE~˟G|!(~a ˻Vg{V"1/\JCR-hRY`zUUrAxQZJ;^m7.H7oXK{D2DI,w8YY%Ӡ](8/KQR|Tl-ӌ1'Xo\;"& %%Qk?w?:I$?I HQA|S$!;`R_U6#Vn O7o(ƚנ5{0tQxE@ߩ'4's>nCp[u)`#ui̅Ѩò)I]o8.I%ɚY. /F&)J$hQeyI!J 5grpV)rg %AI 1 9en(BCBHTa [8q!k|8T0w[vMG<]#TDU$ATa4IulQi2%E8>g|#d@Q` +ijot{6_ާ@k.b$u UEQZ+EYM״sUŘkENt8DUCY.TD6El\8Y'`a&{n>" q~' "7Źןcr7C.Rz8ui wBT"tEhP~_{x]߼JDW\+!TʢT[XXk, $ּ>KnEuj_Z6hD$Aq!,EЊj ωQ ( Q_#7Hʼy&8[qu-a"hl#κ$,KWX` B\(^κ u9zޫ]TԔ?*!LlU7)'Udi6yգ‹s'_z M@ DIkw쳿O` "s9UdHXjkLaZ)fF\2QB kL]23DZm}е(8M3-z&%C!;&N!sbʑGL=8*wk3YTUG勅 Ly;wmuw]k JTFqU .LQ6炸$ }"9ba15uaƖDB1Th7N& Ct> lX8Jf *+R R\XYY,cySU ܸps;pA+J&:t 4Afui;걽Ixƀ rx83z{yq&VJ/zfY{ӏ@g}?B=Ao~P~=a_ ޓs-We[XR10:1<إ9'iQ eąc\((hjqp.b:ݺ eÝV ⵱`y2"!w32) [Xs')=PΛ6h\8\n'?!LCvg6[F}54& _?Oa\6*~/js;d=g}xz'Xbz k.`d*u=fV&FY& Μԁ0H8Eb+ ,(( ݉EPm";}~qLaii\ʼx)hr,Y HDXnkD#@Q6Q)GǑ$dt$$?|M,t*v_ ?s:3y t \ޛ=yߒRYV0U[3Sg1N}F;EPX6&jU>FU@;DNSthj/uadSmLD1a;ؚ*^ﺠ,JE?M`*4f2듪|,VX rNx/ %ȕ\.a. k-S"0/Y QBFGtD2RZ$X3m7ԘfKL1_P}@'*R 8l,BcND 1}gtlLN?8EULxqifRWs=7nb"@z?_s:=Qzg>~'Z{ =yTRUJa,,  rm%. 0cA Y`&f66誈U/J 5osgR$U9D Eq߇j  t#;^lT8"Yg:BsjȻu4vgROL ,=O|Rcѿu\>ϯÙs:3A:q53]Vղi0eCHӔN 2e#0u;>wyuv, Re(3dHr/DQ@'^t`NCSO) an3#- ,溊Alb]yՠt OLI+ D2!zqJ`$hilZWo[ c[KuY |饗^|H5"@on7/?bg >O!mj湤*{+"A!dc@AT(qAǰУiQ H%J)B@ވepG?(c}&0]"~Ia~عCAugo 9%&Dtfb3h2֢,64.HFGA Rx PJ!@H%  %|^ق&"D*sꐶl%"lӬ'm] ޏ$ѱaYJUg?R qTU' Sڀ'>ߥW_}53&'w Oyxހ;ɀ7DDW͝^.a"0U]),/ 7QWzN) #U*R|~plM"ץ*D% zS{C&$,@,Q 6qL۶e罺{.p<-\!YG *Z[Xc<3L%3h4+/17maBDRZ8_=݀5@Dm.k[ګv2;;d2ְ) l(Jcu"QHIF*\*2"ج̠'.謭ǜzM b*R{rr*qfV6FnͤmA(ѹ@D;GGf5U ̆Լn8Hǭz޺<;+GD֪j)J%0f+ST ~>ȁF! k jKƨy^MZN(0U&Q-sb3'fDKfT0[cC4<"wܡ‡k푪~@T//gii!'X>"MbPYm) &. hfHew;nI#nӢk*5""2⠣s c^kcՌXG6J8$F5ҦmjUP ,qrgڗ^ H Q@AVV5Bp?H*|v|O~ǖ? yw kɹ筊3<.D#(s#& >N¹AJ'c^Jbd 42W;?|]jiƵVӪ(5*.BIbx}iBl"˰. im U"EJ?_;k*A}{6F9"ɀ"m҆^sچvSvSyߖ eu\I, X5 %?uȉ,ib>yֵۨʊiLa=8RMS+$4 e%A%(VUoibwl b:'C@!"911D']?l:f '&{qцiըiQ٨0K8eYZ iGa),׶|tx8]3׶ƵEΫlL]*5ub~_Sz'DT gA὇izDH+|v|\TdC(U:lf(QE"yju8JX&V·qpވx٬c6fRN/*kig 0?M;630&mhX,޻8G3IUعL&ik,{@( M"$Z+J]9ڹ˜RʇRJ"4Z2qO c<(lV2P;XED< Np7ݖY<ҵR] m|>. l@ld4*qlrM LԆa"*qQ8:T(Ц 9ڹ"AQ={y[T0قl[ Э3*1PTݬJw jڦxgc[fP_ȝ9JQC'^f@HVY,r11(l/jwa^eP fvs ):ELAtlhDE {Mۢu-J*q#w;UU|l6l6C@ĥ岲X2DzL?Ȉ؈ZU^TUEJfS6U֤wnXSjé<+51$XV{wjY5MicU'"mYVu`':JM:( FL4&4Mf@B--btrn;/ ͉( X.WX.'f(*Wc̫Aj³-ZZQ!x)@h19GiSdtqeiB fbШe=:O~n6:Q07hYUSG ebh,j>1Ld1Sf`%l6S?*nQav08&"Bjb$׶ k QY0l1;h۷VU$@}i2lB.sAdb@Ȑ@LT2ь f br@,5F_9ڹBXNv 5aCpQ\V"pQ:kh*vp!G!"PO\Be&WV#*UI=8S5 PU& @` +rƕãKm b<^ۢX X5d 1qp <? sakfL 8Kxbv޷h H>@lwd45;U&4@ 8P" e˸H0ذ1wޙܻw|;w_cQŧe"jC8֫30qYNEжf弊&=|''hNRU"PEƸ=ڶeUQ)tbQJPt\S% !hED"ެ׶:lV߶nU,")Q4!QE)A6ȓ [g?i`AʼnAHPm$E""{6vw\k}nˤXU sn^5so|_ !1LtQՆ;pR)"@|?,8/%fd!M!G>͆^댉#0S!i HyI q^Yã#Z !с0z"O>ߛW20Ơ\,drӉJ4e`%O{/A0;Vw|bN$ viMB`=y砪,4op4-Q;~DGp?n:RX@ 1`|d !JA'i'd΃V)+:A $R^SR^p늧)E'U ~F#5{xLFR:͇#*CIL*DgsskDpf8[o>OZy8c!H&J' ^"ul2 R1֠(S)dߊy1̖ cm0eiJ$H 1<Ø B $$ !ibAD)4ؼpɲ%=Iʔ(g{ԍ3ٌr1PJAQh4~G#?-#XkQ k7R"-RaIM;=uM3B:eEzdJCܶ~Fr{/z& *v$ un)8{[Tem \ #%Y&"7B "G2^$@$RR*Mi|ؤY.JmK!M!@UesYV!B8Ӌ=^!Ė6;:<@^r>jxT=c81央fFz:W^Sۂ 6'؜)$tªiyA,J !|#E)FU 2J"ֆj޴"$pp`j%s)5cVSdHTĠ /[MńJ,ͷ/εqճĆ ΝTU5I)k"D#u}.SV&rd4=TR'R6R.3&8tIWo;$vO+$QЉx"/0IDAT,JkFD)Hxo oGBl%+amAZ~R@Kd9o9e͌LIPtyB|+Yi|]+,˒ݻ/߿OMSCJYuo0P^ ! sQe #ʪ;oH|0AACۣ!::99a%@f̰%W ZW+ F)$5D y$ Ρ0K v$BDU~PJT;Ko1uDTASm@,n`ͮ |BF59 BBB!H(%!D|͢(0A4p41pfn0”JfQ3ȥPnG ʻp[trrJ$IĠ@ |p@4$:&tH?|p?Mč#h "[A.tvS%R$!!HƑ["IIJAh2 H!B5$ie'!oȘ50 He w:60):8`"/ރI఍7t:ؕlmo!%NEChD !@.h}J IdY(GXX(" ]o%JSw `zZteF!H`0(hX`aCU k |{'}aIdzw*mo^c%(nݒߗZR"q~;!E0?"GR+}fbb``(R<%6 0_L1[]Kջqn&.H Yj8!4j;NAL3LNg0bz%A0| :I4Mmд"8k$޼|gbP ) ,63}__x AA pH:$,@Eb]TkH!!X08.,K1YW580,p4`C)c5Q66Fȟ*$[H$ 3(D#R(H&I (5xtY6̀1.;>$bE_';_x0l*M&4u-F! RZA(&D Jv->#KQB R$o\å+(R -vz/X `8@1̱go\ŵk9 KQ^X>'A:#MQQ;: Z9>9=to|#|;/7nReY !b' ?o{>3^Ο?5(L]vž30*?AJ )Ht"T\J,VhdY,ϰ9¥#();ͿvN@">G"27x<ҺS," ̠dGzI4@dR 0,+[o^~T!|@;w>S^g>qd_ny_) 3SLg3H%),NtCI4PCJ*Bq7B+01gYv_˺cRHJ+gR~BhhŞl#$;Pj!a$!u޺{EܹsO5!JzO='5_UWvJTcDJ)XD s[[[thI>x0|8VI" ;})C= (-[3#[.B$( PRAJjPr!{" iprG7o޽b1(I4ȡ&p7㋾d)~l BcUj|HڒB&$k ~ػ7c(vwwEA1D Ik`] 6 Xxo#ph-vzԊm/.;Ų!Hd )3(A Jf"i K*BDa^~Uܺu<Sx(Iⱂ30}|?9Oz 3癛!aRBH4 ZF]>~Y0 ,%F{< a}k[ù.X8gED[iD&"|h ごBhH@RjHBZg2=foPUUUbݻxWqCL r.t3ٗ@_鯂[~3p,17[>Ɍ1(jM# D/-fžp9Gce*Eh}x yUnj N'ܚ` H)c2<|xA͍66Fb4a0 ($ZC()$ւ#ph _cИ-NVd2|Q wpΡ1 L:D8""1*PU3LyFm@SBػ} }8_ĕpB֌ G y.ģ1yԵbQc dY#7FIz  rofC{xa1 FUWX+L&3tbZ.blB@ @)Ry0(9h11cp=s͘ihits@:F0F#(3 1<7/qrRi_xAżFS[OdLb'auPJ$4cVB{8`uk5 @PYꡕ8<|E߽pZ"y@U%-sHsTatB24Ma&cc#FөAU98l14EY66_gݝEpJ`}G(IHw| K! )ORbxyEY2p2A fwoxPK獋4@)BBR*nLkl`Q6(K+~t3dk%ֲ]@%%!0)@1NF],JŢwkZgZS@~__ݿїK"|C" pra44tI(8i)8Csufˆb ss!IN9N.LXy.ZaTdN5:V89V^|Mo@dEUk1]X%|keXf.5[7gOw9t;TaPhFȥ: BjDT) g7qAxdDÕK62f Z҅@|t>=pm;|Oe^~{ Ac"z^ %vw PA=c19 $`ͱ $ӒM8L cE-t"Cs10 Щc kaWi7lH0kHq kx.uŻ7Ԧ|/m11iP7  YŢ\$$DZ`6]x_h_D>#zA Ama%Y^wEfLyg[Og&[3Pk=f*PE$v)x80LC\cP$8P'su |({o4}?9Bk) 0Ě"\v,qK.`z.`nZ 瞧BK*֢ bQb6 McCi%DA+y `MfJ@Vsh1~t 63s$$HD5V-V;){И Ɯ I"}W`P9dTμ`_n} pޣ*c/>_`>/QQ<ָGwU{Ls0{Nqnx $9"xf,m gGU$+E5{cR!I!eS0Aw9B[QMcPU5 UYj%;}jh-U|(#ADr',قR<à0PJw@Rq9Uk,wxBtN:q۳f[pa<4قyK1\9 H"߮J3ceŢ|-&N!" R" qw4#=ChYZ h JE'kͧC>g|+߳ܗ,6 tzZB)@RQF7Sp cNV*(]@0ױt8+8 -QnZ^Jy^\첝 lnǷ;m5G ,#Cp,|r$?zSϙ2@ AqY.@sgv-E;v; J#DTj}$t{ߒohA\]RJFE,i{qo'C޿k{+g܇Ue`mlӊK3\><L|c3McEA R TCQ,V`2ABHH@Bg-ᝇ޻v `!iT4&!"k 1xNcƢʲ;O}x 08}-I  CtZFuAx1)B X =D,uYۉ=-SN,k݃9ZǚDwB>`˯pjJXa҅Ơ(J ![̸~?0{D#r^F5)!E4$ARAZPj%s(4\f f;Om vݕ^+ BPjo |gF )Yk2-&RF{zO}x -o ;;c|xvvVJ+ $zs5p>A˾?ƟkZ)vyX Kvܻ"XV $StZ1 ό|lvas/~R>f@*lm p]ҥyA*@HE(E]g#xB9M[AV#߯{x[^XZ-'vߚ F8U@1PЉs;Qˌe&!J}!!x?>n<3p(@T`RZQϢȟi΂!e p;;j,ӊr tَ~]#9 a:fjT#mUr!0ux_ S_E̛̿BE ;)66dv)2(5Fl@@]zsO//zx% :e1s6B E Ci [[#RH/ٞ p3so&?όO"%ػ4@Y0T Fjj{@ DqãYrVz]Pآ ԵlVa2Y,#eXJ Gi$J@P-PJbs\ xn"GZ 9Ꮙ-k$Ӣ!@ f~R llfL#ֳm[\BzENVdc=]~O4h0Ei`002hQyCFas3v*$> 8G9_ kh ! y'ex[Ç>4β[[Wg} c60αWq'Z+ =fXr@Pp|~ ϐgW[2abɣyu=@"@fQ޻Bh8)RH7yD+P+~i1;<8Ƽlpr9?8 93&k8ux8-H!Xo1HU pn"RC$<)wU7R_X4A] uѲ7Hؒzᒭ&N,6ƄH"8Jf8SqQY@䣒PmAq5%zV/w/(N*j'htaYxK.oUca2diN7}\}0O7>ʕgzp.h)GrawܒJ4$@ *ZQȵg않rwF#+QF6VQV{mZ@[o zD,Tdp{FU[%\5f9NN&X,x\pλhz93^+M~k}> S+<|5ϟTJ|])fUy*AYz-%sSE4͑,CHRitz"N g5dēq\&mSaֺ,,s1TAY"F]7/JL'suJ:1~ώݼy_-kݸ(|/Q_,lZ+(-TY"+Rlo3Wh,#FK\RuD=Qܓh!;a1ژ7u]icaLYj uQ.v#Eư\>gN,>JD!b̭.!$,F61( dy#%ZMe-@H $c!0xmkauSg8[4hjas/F}Q\އԵ;GK}o>l`s3WW ~{;h'Z)gpۙU֩Uխ㮆$bһlh}5(4::r'ݹ;J!˝{8;by0k{|\[}_>bw7߻qcs%)Q"%e2S+˭6_ k??{93O?->={` aa53oY^;9oV.>| Nqi4Js5Ky?z^)tCND+.;gǙu#л3xBYZݛumOΦ櫧u/}_2,s\gׄ.FD4d.mv ~ϓ~OXc Fg'@?aCBxGŢy7.q}KKej*S2PkQ(>u9!P0;Z s4B#F@huBkѱBCH$@@q"x4ղ\rrrl6g&}M^g?kcTK\ f!Ȳ J ?⏈>!vm{[-mKoz07޼9^}>0zQ$B L\|UbggW\x)63/MX,>l?Huf_aY 뺵Fw1nYw??9O=6J􆔲 VUU{iBku3eP%f)Y7L&۷E.=~r}1`0x>kR]"]'W](Z)UFUUa>c:b6*8$`upp^z鿾Ϥ_ }xET)J)K9rβ I@k}&81$ a(r۠a1oL&|O/vww_ ײ,K։RB{ou]7݋~=zѣG=zѣG=zѣG=zѣG=zѣG=zѣG=VZHu.ɘeXIfII*nt|(1 2##GIMP 2.10.122021:06:04 00:09:22 JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?((((((wn7yh[\Vx_YFȜȢO\Ok|a6x9 gODeOEv_K U߂. 5\qFsڎV9J+]/;Y(ĊOMPZOFT+ EPEPEPEPEPEPEPEPEPEPEY"x "~WbA@{ڀ3!n #<jARr(-erɨ("(OZ9)QXwKkvmq]It* F14nDWyx N(?/CBzTN68$򾕬+ĘTqv溾M!}rACy\E ѦKOBs ʌ?^?t $rF###]J0.?xgtGfI60t'>&Z[?Zq zގ*( ( ( ( ( (;ok׼86!s^CM_ z/p uަ5*mI0,k.D]]\5TUerR2C[gGO|OF.ŴnZQ6DS;Iq'OCQEfPQEQEQEQEQEwH# 0G K*-0m^a$s0]Um6 vX3g;T<x K跱ZP` M`4-oE}g(# $,݇")jbma;Uhْ:̰S_Rq}OZvvjǒsٝ*OBj6ӏ9^w*+XIðԻ?'ao}BroʀZ_2q "1E(-^G6V-ҫ_vZ\ކS@WUwRNS[bl*Z7xsAc:j{kX`kTU% *EG;֦rFڳY>],nܑjIS$bI!@$N:kwĺI#N›$g9sW=XIQR0((((((EU1hH3 1;aN^kiCun<.&rQGWQfteIvhF}d-Bv+ulFr*\j9z/%`pkXk=.H J'k]q5fEX ǝ$ONH#گɊi`mJ`}ְKGEEyėpyȯD&P3^!ljb02mq$x!B5JUܷv]r7N=Z,(((((((((֩=QZEiKN,[ 3>~M[p^ M<=aNc|S$=jN-sgVn$#9Y mt !Z AhUnwt}n!)i SJKc-$X9:WWOMG ݓBu<:Қ4+jQH<ӥ0.dW?=6Y/$ZKj:K{T{9maɓJTvynzߕ57]\G?q\O~!4AҞ)г˞54:eU9^+Kd`CA `5O6y*` =@++.of-SΑvY9? ; [A$S*QEQEQEQEQEQEQEQEQEOd+$o^Es=+~9*sJ!idH.Knp3xHQK" /֑v_1:c[79^3' wYXՆ tr}}g]7dkT'Yt]ְnnX"(W9/ /V RBiEfz3ߑY:p#*޹Y W5k%IusR6;\F{לLIqјֵ}l X{iAjCaEV ( ( ( ( ( ( ( ( ( (%kv- tԥk{ 2-S]IgrFp1I=VMtGF|5Gwk :?νRd$*}{+}Ms:҅TM[ufsОkvy袎H ωu `X-dmjIW/#cԗW2]ܼҡI-(`QEQEQEQEQEQEQEQEQEQEQEQEKֲoFFn@ HGrq\M˩B$3]IO#;z(((((((b][%tEXtdate:create2021-06-13T06:45:18+02:00_%tEXtdate:modify2021-06-13T06:45:18+02:00/EtEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2021:06:04 00:09:22;] tEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/logo/000077500000000000000000000000001444746353100175245ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/logo/logo.license000066400000000000000000000001461444746353100220310ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/logo.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/logo/logo.png000066400000000000000000002043051444746353100211760ustar00rootroot00000000000000PNG  IHDR\rfbKGD pHYs B(xtIME9; IDATxdu'[kW=~_|i"EI8qAA&ȇI$IsN:unznUuOU:o[6p88pq88pq88pq88pq8[??&In{^D8KK0-"QNDι(_^q8>y#X*ukZkʃ; " VU-BUZ"38+W2cMDD4$@ `EQO44#zQXDh2h灵v5I U%U%"ғ" odR"T51sZ}V8ɕ+WF.c'Dꤼ1~8  XX]U' (Aυӧ ^ .\ WEmR{"Q(^~zR+AȉHQg\|0ǿpf- ڔFI͛7'OZ-^SזE R^y~s (Zdvʕ;g.]r8]+ܐrDQnJF9jh1b4sczC($g%Dp Z;N[;x2Ie3;};w$:8 nUQ@o]kE}kڼ_;Z[ҫ0U *dDT5#@^ uVzʕHזdFD4R˗Gp|W|9a7nT1_džuF$HcHoMɵҼ2\ hgd+W JŠOfe% %g!D$*i-Ixd %˲mHv|øt)(fzc9в%g34jTݯ}.5΁ʬ.ةPe; "ʯ\j^FAD^R""@YAp,IUTD9sQ0 A$Q(BTᄶH:QX?W{Bt7vQThX2&%WU޶K.+8f.]Spp&iq4Mwn߿{7^q$1.%$ $.0$f(3 Lj((9%Q%U6R`7mGh Aj%@h[T*Ձ&F:.5cc"'ZW^xwh64^Ej$qŋi0Azg[ߺubc$1. Yˆ%K! Ha 4XÐ%YĸNl$'vX * D9-I2_usTScGXDgWiҊ8$8+a*Ϝs E[WD' Edt>%W'K@0Der֭ct2ɫ^9yrE8A 0 YMʆ4`Vc< pE,n{CJVFc*z/J%@"(*ʥgQ>&Rhٗq:S#џrB,Pj,*%LJ'̋ڿE>e۪`ʕ+;%0T@Qf u iEP)/ֺ`PSUDpNa 9k{!qPN6 D2 өNH[@! R%ǁ J?WWBڵЮtEƅ!ihX. XCbJ@@ R 4s$Lw'OԠDX$gCXq~MғDL>${!M@򒣸[#6n{:)=rkm+YY8ˇ.n)n@_D4,Ö_{s=O,p@9X0$t!$u VVZ[JDQ7:-yXQ8SNTX j)V)~yՂm)34|8 &4!k vQ"(d8dIbvqXޏNĒ%0PäL*!ary U _seu^f4ccXEfih2<_o|z u71sfc;mxbݽr˗/$\)jx,s;3su@f^0S7fRvnURƱ5!R͏{-Q 1f˗+*P!a83Pw14* F*?k-yFy+@8 DXDt7S[8QqUfҀa=8 IBoD!\Ć4\/b׍Hzߋؕ]0A OtVIV3'k{.iLi& O6xJb$"[_ycmmc=h%Dyǥ@d"St9}j;L&N&Q@R\Z4u`gfZ9mZVTqC[ UtCKeC8{6 JƒV@RZzN=@PQݷ4DOzu)N)V2RUℚR;1{A[pq@(V. 5 0b59e ɔ)pR@c܃a%IHOm~݃@M_ADdJpk4= Dݝ?.=qBU:Z+wYkuvwt?US ˝NӍ 6⧦$S5tbK7m2Ke] ZZ<ϹhՇL |R|c]H"`"y![*inr̓g3@Rg3K[hU O|jT s9ɋW "|@Eeju $Ih{{;FUqM81"{©Q;"uEqU{J(Ԙ m$_O WKbom!-ļ)"BEO̭A̓ЩXIEJ v-\Esy0'SE! X޴}qs}fΟ6BCGX!ef{-g)\1'9UJ6MQ8${w+GLӚMyXw[&)e5FR$I @ԕv% A#զsN-n.ܲɻ&3_oU@VQQpofv#ʿ%RN֖*u~|tyDP>@uj7yOhЅT+r. 믩?^x<掭X}0!Q#vC9b/c  6bؐZ 4ڝ4YcxNfK'!Xc@ӡ7oGfcI$Ɓ)kk Lqp "Eܭ}K.o2m^`Y^19Uq<]RGW9^C\0Y P }ik!?[Ot0`,+HXW_5ӨvD'A-.'jVhKk+ߨ'Zlk;Ծ0rO潓B / V,G jg8x Po)`K m; v(ga>-2U(X@%^55~yںj!j .2n^LgbR!eb Z p WRa 8;  c dx&MVb՘SP@epnmI[6}%b ]y8@0MM.4s\P-y XRϦ,~ ȶ"/r©*}k {y74mJ U4M]綬 !KbゐՉb8ε$ gKnO\|V̬a`f>SEKfD9a_ PGF 55L+IBqP^F9v7aEDspB'e ,w}'W浍ryוlh&&/d2>DuE8(cFljKQpZH:pk7WN @=hdut`4Aav"$2 L&.2뜛6i{FѸТEYшdUȭֲȐBxВ VKG{-,k,+!.gW܄rNZ70 t04C;&lbg{ >&D"* Aj'H:a!wx4ؑpGk~LV֏)QQU)8tòFu""D WvuzO|x0uk7xԒКJ`VѨ\RZ k3USL2CYVy gPm:U8 IjjżM["{i< h6'}$ I0b)R1I,^ɵ3W Aj.Ԉ5I'Fd! H0잉90pȄe|tK?qȓ?++G Tmذ[5v iюaaRH5,62XhĥssHcZWSP? <j ђ4q$F\ySX%`ii*(sf:Z'Sё˿~A,Ziar@Qn58v{@ѸX[J.y!*ewISfI5bKw:]D1wxֻA6'q}p:޻v݇Sw&_a4Q"@"1pGXY]Cjk+v;:-w -P7ޒ?.>m84EP ,L8-읨=M9ii& jfL."۸_Rti.gQa2 &RܦU {E|Nڌ4s,mh 0 F sՀaҝ;wқ7oz͇t|B]B1AΎ~zZ#DuNvG܉1aif#ԛ'9'eV8A*ѢlOY2H1=z RGzMܹ}zݣX<b9s}{ \gC$ PQEepj_x]aoRI`8qU2qC`mdUl&$SPr>qH($Gn^Dju_[H_,smA1 xb55K6c.9s݈ / Z~pZLDHT&NE+vx=0v3V}^[?jVSB(&B`".~ [U\A[w着.cee[{3#u+  y8~Sxg3O8vd 嬏Q` 4iaTTk= 8d2x4MpNI]GMW&.:߮,\&}2(Z}V acDIh;U0WRJ?~3݇FHҢ13OıM s8tl- 1\y nߺdd[XXkO'Q…xg zd󘦓 yhxDJe憊h*Sﯴ*UmEI2=W'^BӸ6BR`"BsYi/` 7oTu* f4I0 ZS7|r1f^wgS|;o!TnS奤L(pq\+x:s;N!uE1&S ž:U[c@!ܩG|8~2]%Z҃ԅB5-i=j'j{sdB-iP(Di}EW̄4f"BWƣ\R".xMhLAqWኪU%/+hU{uh7bZŸzqPKiPGAߦe3 6*`uQ1Xe`CFDTІy!IԾp `,~``[$h"̬9K-g~{$6rd-* P*j`CjX)B,w "BfiZC$JH‚VIgb >/_WAAX4c:xgq _<.): bFa-Nf<ˠe샡PY>Wv$IդnI|R0TiZĉkgsgaƽRdCeU ?Td~=Tm WA` -1UL%Z'Fw7{7_y +H#`(͓'O3O _iDaQ3Yx_SXu //o ߸abX$I__ç9U FU7a Dȳ1]&(CU%U+\sQc^5T3n6 !],?{ = Cז^KהF\z[v/n\Hq?v9&QdbgMs:i<05=sIMxpvfͭ @v1̃qa&`9j2|_2p(?'/)؈8|F!zWCB޹zSH#;~"6pҋ O= rm?s_:nLCARy56LcC/~y<'>>0 P8n7on1h[)uTa |sxWBb_64 ll_W_ڋ'߻8E6\39vvvi1Wh0Ffg4M|cVVqI9sME`Z#~dtj7uYyCAC:H??|:no޸n4rd~=q?,}Sp4:I UE' Ooo6^( K[wa<"dF`~/wnӅ  epls= 0 G7߿_(W/O//GN, wu㷾W׎DIV -x _c"loj|t r+6j?ڎ7eF]lB-^C}Ws3k;>yiҞG/¬Pf&7'8}ʕc/_Ոe_繛L&FQԩW<e'JY0i@I5WN:``*Ls:ѡ޿~oѻAG6/sHAǞ8_;/#Ϣ?^{tkt{q1  uv{^Ŀ{wx)I:ӧ 67bo0č[  xK&@!9nG'N$P16{tҽ$=P3(mןtķ7f}\}d@}zַ3:gJ FqR'`m{ {4#E=#QZ`Vs- Ah(Stk'cõ(>xpPg:(YIUm+DB#QA~4Vtw?#k TBټ܀Vq3M0NSpo:HzGM Ξi|ԱcXv`bXkogtV9hn`0B}~%py<øq}E1@ =Ckk/?_A߁- ͻ[4'TB+*~L&XY÷ѣGim}C8ΞʟÄgSzg`&%Feo-> <SB-+cip3D|Dw@#,X05Y4PViVt4:J-,|,K0) :TgD9<`@%"Z YQZ:F8/=%* ѽAkI)Tm3.lи 7 '|DQH\7lc^7yEz'!!_s⋟Ƒu}|Uk}q@ ܓy`g+p3}~ko0ꔒ`7\H+_Eu;vAvnoN})Y6:lݽ?֏@D8q$N?tnN;[[]~3y㯾A?~ Ǿ?W& {7 ((Ald1A?LM (E-d`ޱGMRX-@g+y~R8N湀gNNMu!9K3z v0x͛#~ @_H+1PI)[i ($<ư:r#U`ZCKEbW ntj#1GxtpXGEug#!}hOE"ҋ@llg ݯ# lmawi" #Wܸx Q ` b#\=~Cu;;?zü􇿋\^3Uz Ss}{%VG$e\ěVל)#F?V94T#j/-EB=uȵBP@bwTH^88خڣԓ퍲eԒZZKMDwx0vF[V.ŲhOn޼9L&|zk 6"cj`<),ׅ-`\ 9/ w^yc\{?} Qw QF_2{q sv53ɟ1t]a@P".taIs8Dl"JE'ŗ%<}4/j|8h4| 8';IY+! vvpmjlj:'0A@g:h@,Am߉=B(Q0+-v{lG{T\0p.P)';\` S3;W1n"Vhh5XPH<ebVtobeR8r*0в̲mDVe*5LXDX_nle"2@U5Q/<(˚:̬p2dqN dtc=*:ISdr{ņ'L4wn<=+}\8q&̔{`mnWpSW-Z~:ݛLIr(~i<F 9!<ȣbek-v0ɳYï"{Wy$ɚ<@Eal>F&'ΜţO=K&1$GN(~waȮc&o}7?x+o^e)&) ./wCʡQP#wDpraVS@cPK'sF~`B!4ܕfۣ6?ځ4v(Fy+YrN\#R/L*/@ l IDATPc 曣hV&*y$?q$ٕ݉5Ϥ,6<0f0Eq8ܠV R}GITRh"7D3 I޻eVfVVrQFwUuVfsIҁ&RVQN#vSYr"NZ!6 MLA.٠ 6HA Ltq_/aY5"k;/x7h"R@"JY(A8wƃLy^'o/>?z/}iʯ~:yuJ_Zklnn{~?x;Hk-D"H@|5FAۻȳ V%q\|+&AA\_ _-]zO#vTG:߸|A!/VKxx;4YDj:w*|zJ#OS F <(@Hc+/aQo"˱~\ rc6&Kw'MQ?wvxޫzCǒgBdHW@ ; GF]{1#,4"Mo=T$EO= #s,ݡcylZ夏ª4Ɲdά'޺,"il( шFdu|{"] ;U( o"ai8=?(YlZ&FzC`8Uw;W=:k 5IcRe i{nf 2kW3Bg- Ɵakk@-J`MdLlJÛx7Ͽ0/ =qE^`i/3t,YQՈT>"2?G:=,\#ЇZM~ KWj/K{y !FlΊ?{_Pw߄]@AV ^ W~I}1M9A2k9@< P`١B%F9ɰ2=G4 yfҌz tsHGc13T5VhhM;ֽuQ~Q)Ib:(d>988ȎzZmQ&MD(0hu)k7>gE@WjO| ޼0 wlsXZo@!U< H?_p}hc)D ȖM,<az؄ZDi_B5ΜYk z"k& |`E)8m)Rw.6?ݹ(x؃CV8, Aw7FF-AཧV{vNA0q&bY L {!eHf~Ugt BŌQ?+ҙ'[iS@:,t|PX '2̃G5ϳk9c]7S,V*1"cKFLU 0FA+BUfug?+pDN jww7M#6,@E=5>Y0̃If?tbBYY-4 ~A7+Z[0j5WWqwI͛g 4jVr/TPP* "6ZGR6Rc*J~8+8XjqX^^F;s{jcpxp_[4 pEZՠTRlSVe~wg9F Q 5hPØ֤T wݞr}>\ރ/><B//y{jik@I|fܛD&u6Cw2'U OD%&=bV8ң%&2ZQ`0HZuhiL‚1[Mfd% D3 '&&zD 佣0aG;`&DQcw._ZDtXkQ~#t:0ZC]? `al! !`t c&8{:]Z TuwK,cL@*,+fȊORh^Çᅬ?c`p!WxKj_ʼQw8Ԓ4ApE.IIQ5 \fOE'W (9CqIÛoiq%y㞓$1"0ZO j^0hp_㐹,0W8gxqj;&+&DVCXNYc2~@8[U+qQiϐd^H_tXT8+h!C |'th* Bf`dH3296ƽ?|ݮG(hֶu߅m`W@CQ!Dh5j̔4RĒ ˴xE0H+8ܿ%1(0h 'מ^9&m:ٶ̤)t+8 Lt#S! q>'ˉ0xNȋiɬ$y"XtJcCՎIZIʓ+Qy :3Y)dW_Ekrm">6M骘 C°z,sP$qT`=w @(ϔe&DLCsx ?8"%H\EVIm6C,I `ġL hV-Y2][ūFO 2) ]~34X E,6,])R`T'j%Gɒ_ G>yUV͗_~9:8EЈeyCA)g?*|F{8ϠObBAD{a380wm aX,/Ր&/TE++1ji D0 },Wv!ysCh_ŗp~#Z xã&Y EVq:<|o˟|!dz4TU2(U(;aFYBi42^\RHa"& !d}[TtF*:$ӯMP 'g:Lp23#w̹cqKFC2Xy^cΪq!ibXnDnDUƚQ-Ui=J "W]>IpT5.oq',p^RHGU"ty_h>i7) @Y_8$iNxi$60Z#F"k1ft*~ 5$I4IPKI "9F 2$]} g-#,7}enݹW:`fZ QdGׅ&q<~cAHH (Cޗ T k $FeZ(rB$'fcΒ a؃tI SoiKiؿu<_zߓӣ WA@HX ($ҕc4rwy]g6V"VL4ZT1j!kHzw;>:@DW8g5ef!}c,),FINA w)#{0P~tb;Aj=7r$IWpE@TSYUf]J~fʀҝQwvs =jizV^K14AH֨ΕWl#'kd!!le=^) Bƨ1h@=eS$ϕNR!:mi2fafeVJtr\ƆA/g\@eJA)ELffaN96'ddh`y@h7,ꉁ"TųLk%c4g+ņ jvy?%O^J^)i J) ՈK~"T4aqQ^x~r `\} U[~@HF(2@ il",(FG! Ͻ<7@h #Eɴ1QQ&QAJL#U":(V(㴛OkI T9HfMJ)࠷vbS Z^bEE2Ďy6QgB%|U []!I"f "c0r8 ,*q+ J∌s;IZxͷpkfF6qEAaiy ?S◿ZZvz 4yᰶ/Wqd2z\+cb z8<bo[w]]@Ξ?v{877)99ZC'5!33j4scܦXUA)rc2BǴQO#SZ)).C}yccVbFhtHib`A־IW$"g ܐ :+NƍRV{X]nEGB'ZDrzXP9?~=3$q:ȂCyC[csAXvKtOZo!nݹ4QKqÝΛ{x|@ygE-8F@ZaemKKa#EHi8<`k{`{{sK#Rwl,4뗏c^)EV((cёh73 sW2 (9fj/Ul9>SF)㥝 F-"uw|$(W[.*P=bF\?̆t:ncc8b³Zp+7pSs׼ّzo h6bhUGNEᎽd[IPX$Q`wyj(}|[;0Q$I A7?kWpY$I$Ь`c@ؤ$R9F?0Z!.^+W e9>z qs[ fH =du $RȄE\ᗽ4bJ \rY&TXLv+c %$A 0pȍC$VBBlƎ"FB&GWHkbnA+˜@d1 , @~*Pf Awww38IγJS_HK$ӏY(pYTUV8 @cKj.,ȸv,=SC1#sDAh4x7 mJpT="k!Ahq(2hk eˮTHZF̌<tyXPCGB42`ҕ^n,Ϫ >4A `ʽWFgADh4^4~qi13ܓչ`y8;"fIY]{Ibv2B6hn}bABUDG,wIVMcϢVnNYQs{1& AlIZukJr(\(g'JL-  EZ+lLy>. m(URa>x`6z9''q8`lEasΗTN ݫb4LMq=1S32b^,44C5zd@ FQ#5G u3 H1I+%*"(+Xc4:W+aНϢpU04 {zn0 kZC)d ZxiY.{mɥϜ=R&g=>BX/@_9^BZzf+AkaIbQl5hj5&)LRڸ CQhI\ /xrFf z*d᪘xg ƔJlKQb Brq|y떄!!M4[@!?LfA`HA[ȳH<ѫ @9iE(N;m?E{d18Л>;ET܌ '售P TAkdd=*E\iTF`f1X#b0d#BqdY(UX]{[yV?!3Z"h)"3籽Ar8_\:>‡qwhC:(FZ#Clڋ8s<Ο[˗VFْ[_JK!qFn>D ϯ\h4 /:(F㑤d,(ߏEG|%TfONY8K BB>T\^k% )EE=W =.[*F#/cÄih$x5\t@#^!8"^<#[.`T0.^? Ν;wL t}8Y>6 !~nboɕ' A8RA2@ `a XoF*EnɄQ3Uv`8B/n3LmfOܮqj/'<žIn )!1g15떘ӹ`,HtSh1FS XGkIH?WH1&A *u!_2^G@i^] . ˝4jV}C9WX>:BBLi.,#N"ᰜx.Lud<o}g# ]Bsbmdwx vxHK7x2VTEZ1hdyZ&F<B_]e =Џsgy(ag*|zZ Ȁy"hrS0?=FE"f M NfvCP=oF$ IDATkvr{ Op8 \2 E4^+EDYXGK0%h)#L0JQ,Ím G8< w5q*m '1xSR+ZRAA^̂,/P8t%+Xl55h4xŋ|kkkxO#/Q6wamG7yGHCāT4E%A*8EF&206*s Cq-pyFR+g-i@[z1Fj_d]Lw23!#6s?I9ት o&#/bk;Ѻ%DÑ!%FEmIg8]PՏ,J 7gzVD$C܉lVM;"AzN.G/|RdL :70bsk W9 0֔vU2y9 EZhm`W*sB5sv/rqMŕe\zEX__CuAqpƽw^?@&QE> QWd^~ZA@ (]AfSzLyHi!AZE+k'u9 2IƜcZi͉n`wO?yˋMV_@c=kE;\o@:I:"ʳSpI;'zbRBJU+It&#;:24* UJ-}߷E0Zܜ`V?0'h0(\!`4)B Dت@D +EJ9x:_fKWE%A.ի94Z KXX\wi{{׮]EspDpHƕ;sS0{ YAO?s_x\r z(1txA s :8Ko;֖ŋ Y0;x?6580P*)c ^Kpn@PˆwA=@%PB%uzk'ovnytOJNy2VKJġ0hz KͨDMj)1+FaAaleqj(@MDEb~lO8wX@( WSE@l" ,T ̟t "0(I}!IC ⊜|ξ>­80C.Ǡ߁61 ûmTkL8T*OxO'~*bKRpT0Q[;씷JT~=)UQ[ !]T)uBCJ^l'Dž.()rTwp<&t$DZ2f?vζѳ62͟'N)59ܳ`/-NsO$>Hn]v?#9V" EDIl(:.'F8ꌓ*.L}1 3p8,ˊ`tQҬo41 /C/#GiޫW"Z^gQ^{PF@WA!? /@8+cx8s %l(׿peH(_=Fc&.( sԅ+eGIX{{$I g]"dM;D\S((M J`! |?*t❏!sQd!BIUk[(Q:3󾚼'9i\,hB`87K|4N y =g>_@RUn_~qgK5F%1JC{G>IP3&qC ,^/+"j)HDE$V+nִӆD rCW9b7l5# $Ddҳux1p\z? U#D"9}*~u 5J'[NT|M:=SiM焓MԈTd=RN{63bBBЦY~.@*R9A7ŗG-M!wȇH{݁ڑ@J(7E7ڢmQ(Ntr<9=bNjӜz>y1S'|7kUO iOiGZVY zx6&,d>v#*)…8 R171dQ'wHK|'Be;!b8c/Zsۀrů/ȆbgA6>ٜx7sC,..Z R6=ʐXWvEQ;KW(^B|bh"~)1ux)|+/3zQLoD.'Yn@oŗv2XdBYMІ(&Mk]dς}H<!8ƅ.bm,gdy_o~E1u{PJU`b!(%[_pV#N[(] {!6Mh$L/CQ̌22waUN}uB ]wnޣF ᣛKP}"zaYŠzaQs>&M[Za[:}/W`$+\dP=|_-ZTSJT,0iy0x<+a bW:C='}93יL*$edH k\˿`|ZtlI6Ȃ:H%82ɉI{ @0Vc?CdIӔz^;w\sL9(_l~)\VZ'/wh.e2?Ǝj/Ik-EVkDs~}| 7w tCm&&<}|#VU]pT‏n[osnqTLjؕ'pΗkW7W{[wwLt9ۛX?/Q}]" Z%^v6DT_xwlX[{=֥dyc_uruukejIE#1aI/Ź _nWۀINKh/XT .?ǿXy0޾y="7I]u4W֐.C'*ɢtP]=/ 2#;xe4V7@TvmX\J~l}μ zJ#R)S*)0KK8sAꇛ)<K~?L!̂VVj* /Hc~^?*Qcc5f~lu}b8,Zz=%F +έ|g0Ԍmg΋@Ffh4rg%$A^Çw~i==y7C#3,<c30zJ~KEq' x'aΕk @5Eh/rYx㷿x啟έƷ_޺#.`qe {p\>ô&*^cS_]o V㍿c4kJ3L}5)Hݠ?WX_jPb (8M'))Q@ 9seM\k`EEE$5;ka gqeуѭ7+^7EO?_& 4v\X/ Nd%'b'Sj+ɲ{H4 pAݰ*뭃nъ!fu 6N,ؠFADqHrws%(lXa&"x3!ǁ"NwnqpCt#,9u<ˈ+_z gADfܤoߕ"h4q9yZ\YpaUT&:isW5Y'v8(i':/ nOc,BsU-z- i8`h n^A~Y &(E0 b$I$I5uk)j:W0 z=4-afMr]I眻Ś{b VXSiӲ1g,=IO2dH=dp d""3z8FE Ȉ~? S{{&ٸ#1)3ЧIȓa[w3+ݻ"@E|U!$i8δFJ9xJ&N 'IfYvZ4'95tD@SOq|8Gȵ.5BLt1 o*<ς~6dp͘T|{/>\/iU_hVpg?C[B;~xGO9ǩ6ӄ [\D\2䬱Pa1v!8'Q/K:P;y$/;@i y7u0Q>N8=c!$Egs0R(!&5`eevpl} w;b@DOth v6ni֭,ק1v,\F' Ax"g }@f3J03O1Ɣ" r`F)2ۏ9I5K/ViU:QXIr:sx~D|zT3bGHO->Ek!&'I +41i=O|ݗXKPZk&akk C|cQHiq“'f׸[|n0 }FcE# c HذaT?V>{: ׅ(~xȻ;x],ipJl@{q Fo -9`8FcemaG!Z\_]hnlq7 kQ,kTp?@,$mXbyw͞k7 fhg401 0@D}Z ffAq˺$*`4,CEFH"j}t:;^45GyAŵkhm9ZČh XuK0yd?@>C d?/o|_:.j:wwwigg89^~06q[ f9T]$p'Vy$I!>{{{88GF^p8vwvpE|2:ĺAZ; d*',PEW-UbLD882b]Y X10@!-"'> 3s: è^7Eɣ,ziKUq?<2S|*K>/,_Ӓ,As҅RW^#׫xi@)4-  7jXW/ XB{1 H҄G! x^X(D}u[\DP2pyW6^gj}f{V!X*qݷ{ֹUjolnO$ nݺM?/^DX4EȲ yYx H!(ۭ6.]7o>::&˗/c}}6:Lv {\:uC磂L:P8J #|* P$I`mlltIԪ|$heS^kd2+7r4INDȳr\\z00u?9x8BHS Rs;l6uܹu ;І) R0YV2Yk e -~ 6; j7XjU(G ]TeTd0VM4dQҹЄ,,Cc|cVk5 S>|ݣcz]q )%.\8k׮͛Ciq8&}/8֦^hjauU\nÃS #qhn^7nbkk ^/J}wHXI+)gp-Šѥ,"JL3Ch㟩HjX"^o\S҆pͶIJQ`Ugv20wNji>r%c3[yfrrîL~FpBѢ йu}C纨uJs]x sq|҅TyA4FwaA$G#6pJܯɌ \^ij+\B}uݠ6Lڀub*QVΔ<}TY~y @'Wvʚ~ &H:.=z=~x= }!VVVݻ}iw#;Ue I(`P:ZST!m훸|Z6޽w}Gpp_l戢Nnݺ7os=",7\1^_jQ $p4(\$+PZc)˨: #B* &9 DiG:vx<t0_ZX4M8 A@9.IحVP_@cu/rF%\Z|Hqw 6A_wpn)$Ow= NN:h6x睻xpEao;qwN>J,d Hi5 Gh|ymKq ~wp |WoNuFZ@֭[jPo4 M,.́}H.PB(a]t3 l,J?3x֘y룏>z;J\TzYHUـ9== f :W֡|DK|+6T%bәyA晓Čf+UuDIoO_OSDQݻ} O_9hd>ZkKb-XN Ag5k\c8"RvW_}/];#mq||l=FvQkue88 5oI1iJ|Owܹ~!Ḧ"$h)$N/ή,3'''qeyu!zq.ʵAk3ƀ#ExE͈dxM#{n ` Ncx)3dYH۴#,O C6l 5ح5XuAZ׌!韒9[q٫7Pk^ C. `b_%.68pg+.g@]2j6QĻ;_ iի/;wn#ܿ vABqɇu6%Lˍb3A\fHe1f M2D)N:_gp]ݻw'''lsl6FaDoheEMNsHRxd)q7u5\a:3c`U,#?m5,km#k+Z']1yiHY4)cu7 eY$Bv]? Fuq+F3 :K14.c\N~mV ~s)' 0a}`-[H4 NYo};~ᣇu7oo~ܺu GGG⋯poqr҃xp]gA~ޟfy\xʙGJY0= ?I]+}6 ܾ}<*to,N| tVgWn`&!|W•G3׵5\| ge/, gYf։Ru0g`Xd [TqNsY3],b9  `<驎85h)<J nTޮ|Linxe{V`uj>y5(Z,509L.3cBKnk΃mi_Ȋ(K` Tg+k{r  ]]0ęNId{ajؔdi*Qh_}o-$ t}/W/N#tcܽ{կ]?~NcݕIDŕ梬pQT2UIiJ{8[!D0>Agx/~~O?''R]Ԃۨ5g88Lmx) Bhy%e4$}G@)2~66VMyV#0~ <,ac `0gY* E`kڔ6f(ʱE~UȑGe>&O2 UL&L)`&WWyz :~FM]%5hBRRt/`ǯA***.`I< .*c !ETVdchxBwhN߿]""lnnݻx"vw}C NGmb2>r`7DaBzP&K@dxPV:\eaħ>+\x(`"`}}ApOB9e!8 ;j 7V#>#Iuf7o73B bKN'8jj4VTO3Q3rZ)ӒDC 3xPDՄťd-@RBrv=i-̍RJ$145gQ0Lz[uĕw.P{m6tptCshv/]ã#|WxpV4Gir( Qpl* L Pa^T3DP-0q9ܺy{o<#Qtrw8~nX%?s)8R`0NC ~/ `J X)(㬬Da\qR%a\8J(*[K~Y\j8,ak͞T' ]gTLEpNCV$0 J5%5g(AjT g<dZ ՝&*{o z.\/w..@}(ř\T.M-@ISb6.+g9YL0%Ȧ\'QԛƀA\?RxE \pzގL)~+%6^|[!G8'ƾ:`fZOJf)6S<Ǟɓ'0 "U.@n!lTIb@L(G@I NBwcApX pa{-NL4*If6獵D,Îq=HJ~az_101>CgI\E~6oy:;ʡp;;c0b0W^kDqC.ʽ($JAI$PrUyPҁ JpScW؛) ?KY`#v{x?ǟ# C!z0@ـvD3=ON*ZȑqfDo,3T(7/c~T?7 h4XHD4K4 J 抛Vy~a4cN11晓fq3̜ rM (+#ib&T] T|]YΌb{u>zFӧOC^~kkr &;y( RăHBHHLuRJHlP+coVî+eoÁPok61tNCpt ˲g؃ )}G;h4xw+@pGCӡ,k f+Έ*LPNEe,zjV %$S,2 '0Yicۦ'r4]@ QYnsDx~W SDb~FHX^b }qӊix&Qu$1 Dڀerjg*",$Y=RmGjrf)a"Ib/q5 |= bN_-N|[K)&}߄7Q<x MڀYĴ "h@8>XHi"OHdtAs:ۈ,!66q{g<V AUdHyxBN}Y2iHJij&Z4Eb8~ @E'TbQpd$N4/xSa!pYy0)8 qi3i(< SDb~@KA%SL3kAQAIL"OEގL3a*f* r@`P#0[*.:z4Eo5|q7Pʼn^ᓨE+ )(Z@}rzh+Űey4W:wu {YG}wlE6:I0Y9HH=|K/୷‡~n0 1 &LsJ{WrfhZ-U bQjdoF 4]?FP,DQgYˡTӍ.JEj'lhX""2[WG_iS+eDE^JLz"GVڇ*Kk7EcLw~[0  a^{_wdG? ?xK "(%)NN8==Ņ p <}qj$IEr@tj +_hNAI`% T^\pGLTgؓ> "e%m6l/ױ`BBkLajLsU_ixA{™g^NfXq& se37EE7%-aD቎S78[ Mnic цDSdHpGtpp~4Myܹvws6C9!I)`:.\ׅzp q<[< p||PF#?p ;C^z#?cJ#81>Kj>|M;wQ!Ic1cnyQh%麶I()(Jsi(p>h1*\8j 0AEѸjX@9W.9 tG 2ͨ b|6GE+=nJ ,A?Z4;\CU,U l-,sbgc0`i*ډUdhH Bp! hu{|zzB̌f / Ct:+#?Q(Zh_VRIH@E <(NKZka`T^9t!4!la:B kp6$~@)@% I8 ՍY0 ^uS0\qw 3JB? ݳ*p)8h GA|2@f  3afxfH\x0Ғ !/\Aft:Jr677l5jR IDATS('LJzgGv̌O)RH`7-y !B .{' /6 " ٠q;՟Ν;BH&߅h_:F5`Օ{j"ߕ|2Jē4SP/'_t z""C4RJt:`0dl{FW +7J9 _Z8Wgz6u`q/LBLϛbFtX"]^N4x\3r 0WC'c@3=aɖcLP@*i9$jA W\Oc0L9l.&~ Q;n ;q\8Oo`LcJI6yܼ W[A ;a4 C 'A5X}~]z}ܺu oBqDI@xсQ0 + ˙ .Lf4:~a@881ƸK㓓aT9/ VWZv*.\)1ȳ [/߄O0ş B=@vr< DzFF>lBFE Q 6`Q+bf&G FaOZrs}Gk-!@_yE ,pDQ THO3CkM6T5SdaXI] EAĞ3rSz_!~"9~30Ţ =rHJ2=9@iHX"IiQH ou#3F#燳? 4[wO# _)^c {Poҥ+ Ca( sy$A>Z+hv?Nԁw5/AЌ]h zTH9B"K3 4u,(HέdhHA i?sEl<+U6^D((~T oSm']o;1 mq9@*muQpϖճ+zU3n9 X]簈h4!%Tr0fhc<VSip`0"3:AHqOL:WVV^YAi !iMм{ǐАN#$ x5|_Gp`ō7`&]|q!"c<G:I*KdpׇkM[u@dCi!i|?@V+/]Τ t3"Agl8D IVVV&( 8Fy`{Jy0sFV\{U>"LB&}ESqlA\$3胈z[NZRmȡ-xՌn|9̯fug|όJ"2|Aȅc@֚Al_tǖrפsPF 3 ~Ȳ > E`cԮ c -u܂g:1vס{ c4" E(B&Z%] B:< |l4p<g+)$V7ڭpp)NTh4OB3Qb.?K3"WG%9*Dž3I-Д  > f@"B$,057oaQY%G3(´ {3 Å9Ͳ9̬G*A* 7hfש9sK '$DaU:RC5hl"y =Bzb_|I<t 9,1q<<o|1!z<ʯc}}~Gtku 4slw02|ŧ>طp S|*wh0-K<ngPڅQbDq5DǨ4*,h4Juar0D"\a DR H^L9qy<.p!y1 Y`oģg< 22v,lxfXyd:?O(i5K Ԙj[9 rQbT>w;Hw?$!-@-$^ESȃ/w ~a"f?*LNb{+_1 ([h>CHj\ׇ㸨hl]D^[@k4-+:8 Ešg;b-YCeqehAT1Vo裏=1=>T-HPW`\Pg0%]2B!khAq#s2o(-fAaNhv4S cQByAuOagX_Rp]J*l^uO{-}(RraX8i00y6ݎ] bG O{gs,.̺HZx T4Mp8*`5g(Kp #Jr)",:xpT]֩ߘvhɋ4_v/l }fk "9˙0TѝTTS ;`X;uΒYf}& UbxpW/ B$HL&X)r\  `umͣ&^MtMJ 5,$,̼FKou]z:w}A0u E.o?<Hx !DxiX#bRaͩJaj*`!;$qQ9B BYʄ Pij)@0s)K9OM>D>x%[}|`\!,Y@+EI`H< kF)"-^(ٍKs03o/`0 >`6nwye(ar/MNPOl\S0o<}$I&k&,qA˗oau} ^`Zm `v*ӧ x5=]V8Ic0!T-"T q)OA 4;[sY<:U r^TYY0f6Zk$8af#PUJYF`hIq[ӓj h gNg3*KÞH帠2! GK+%dX(j$Fe)K-6"Pzv)3r6V:0LR!&`*^{"%DFk48u'E-FP̞k뛸yoC! #Mh#,*xdk X)ʅa ϳmwE VP mEIX)wq}v3P Bw9^(mmʮͿ4ELM,K@Z@խ¬6 3I4FQKaE'ܟ?'-!243B1o5x^ܲs!Er!IΜMJLYuu1`s^l WVpty׾~4`:/o )B&*lB:`Z4q!%8Yn?q42 )h_d3WK,-82=S⿢¬TV(DiFg\ar9C]leJ sFs"+1KZfܼ}Ao@$EdybBiN3m Sb<xFop $`[1iI9B_'!=z-q9'hz uWpCdOQ3zؾtVK cuVV6C! GȲJ9hV}^[__kXHH.ma }1$BPԀ<(!hcy^$Q2brgEKQ31v'S""A@=pdf$qV[N[sG@,:pu@JynjK!0kM)"c" $Y-^t\¦_ڟ/,KgV C܂ů- ҂}tces_B= 0 ,X*?! ػ)a/lC 2 hW¥70""hs=cs66#2$iZL aX#Cım]+ c}">^owwB oe ,5&ӳr𢝐ʈhF撒\k%M. UOom^TH$0%>41Y ` u *[mB3-ZJP 8IsksY~rY9MYpsaJ}spHAɄ$ZǞqz=|7w/q<~c$.\2gם[نYG y5p]zu80u$URJPad0En} 'Y110m=z MHRlt4{I\;f[ltUuUw5\ "afa0|G Ao W i(ȦT-!NWUUYbvl Dc uZ/)@ Q9X@ֵM<%n! CbyxڵkHEQRuF88xڙ%GwF: iLH]72kPbQADW v\d\83kj*fFf O_=H(G`t(Jݺ|g& %e@9hzj0vP_p2 4B Q5/e| BUðR @_9hK5U&=f,%MSʲ w><]ݗAgx'/;co8񅃧;~j ABeVh:?@Knta‚Z*"h+XX @Hk/Rc AXEx7Zʲ4mYJP遤e&LR5Ijl֬Uc&^=N qёl69WEhù\Y} iDZt"'F8w[cEQRcY dP`]Xmi/#c63{,ä`0O 9xlTAY裏0 7 )t%zHH)Q@ >\Et[0ӄk0y Z+L k^y|ᇘN'-1/m%t8Rb>kl<<~iJ!qNd٘b5S_&shCp>NN> QJmBڱL*0͝ZEȀXvYs<J{ ctߣmuo:`%Ȟ D4~3ٺfT;E$@PXg\Mj%CL&y<ϰٔ{o{җxDtvwÏ6.|ڳH/D͐I̭ 44{]ǿe "8geP[UQKn4 ‚*OBK4% Ν;x7\.1ΐ9&2z=t IDATHUdʧN'jwQbFdUrmE"8n݀su9H0F;(߿_VҥKֆuP̠W˙Nd#De@o6R[;TYDfd70s }OrYZN ԑ@Wp8jyns򶛮TdNy1|2,+?/[nO_𓟾d_N1f^+W1t alP׮G/6=0Ǚ>(@tW͠]n <9 L)_&i$BuG?ܹ (ZFo ^O( v" Szv "z:Z١M/3ZQAy^o~'''fL&L&-8 IW@H<pCLP(*+V+[8Mz饗*@2X YΝ;rRHH8-$zZ^F9ÓvkOC)ƹot0Ӏ3rPvTb=xd0<#F$m P:q{l4DP(/?N/'$Rf@xͷ×_Ɲ;wO?hAK'I 5HCX4y< ltRa4鬦W^$֞̋jmƴиs6qvT9O1gN@DfO~)hFP<]zyL#O ՕS|)j+d4Z[gQ2e0R v];vԙ&Vc<<.YX0 x@ <ZG5l\h@vɶZwb?2mBMI3v}s*U4M10No _>ӘE ,Z?"Ѹ o[!M{Q`NkzbZe"R OuCkdhPm֨kd~-n~Ɇ u%1U zeQ7Dŏb"y:x+W P< uxKLs岄vu%uaZF ~,ŗ ᚲ&p)ÐR;dҸojDzt2] Q H@ n T-Jr1c2bX`2:_~O޸/}y<^z}@ WƮzm 2i"{ܖL]1a-0`{c~⣏b6a6c6Ih6=+ם5FϱqэhEy!zմTst ;&`;BIH]Zs!PJ4%֊Ķe<\VfJk_E3]ƍ'n`Ivǀ1`e>- nH6bA qhonc $ph&S_DPl4 puܺukY<c:mwTz-ɟ >6>gk_=qɏBCдM7E61>BSg%k6^&lYm$J@*r )aVHjğW_E&NX,zӶ83\q||ײG]DAR$ew{=8vDx2l;XhP5eic 4QIAMŜ@.2}caDr}<h]?+22=.<&Pq,p& <>;gl&[cm,¤2ϩε~ۿx,xx  AMǬ7`wtvsd相Da͌ جV0޽wOpppl1P]ײ^ŲFN}i }pO΁Q%Fs\_7UN`Xhק{N`^7ͦ<88X~N6J3drubHRV˜w?m_7>PX!Q)#42 ̀sL" 8,^ţ<(5X'`WncR*@o9}ku&馕"T Ԃy 6 ΅mˤv!haa YVGp;#M`6 ygldxrvqg҉Pa?_Զsԣ `<5$~UܾIzrR[@%"Sy; dl?+duҥ j' tjZ'AF4Nu5E,?Dad1qZH1V014 P+f,Qdq1CTeٶ@)ow*^Fb6@c038::֭ |x^p>kp Nj~Sv?HjQI`gMy2b|LYlֲY<ןFT-uʈ0Ha""7hw7*1UD4C+yd JBPTNXԘA|mӰ`h]$4i"K6}%7~fW%[{$Ӊc^F_A=*-&^[Z[c]@gsK/ye. ΀k\Nz}VDk-7v2q|/*V`+4tB14 S$Utgf$ jrT7Os6`˥K0[{./_g?LS=RcC2Qb9 AemDZUBe=%AAlMi?aHMAH)hHK\.o}6y|իW1XkTk#- 7$|D"5 [mJTΕni.;7ī?Oqttl;9Ҵ(Kklxvm-K!ZΏm'o? U(FiETUNo6VF$xF*~Y fV4@k^.뚈LO&@"Sh;Irn`;7ʀ^DPHl(t4Nh>MERojrȺryau"#Sɗ]ИdC5,}#}6`]+#e>VB<95jj%i[QΩ\)k, T4,KpzRneY_=iegfB^.l &_`l:BbjU2˲Tk%Zb:{eޭ %ժz]aA;j:4N== otuh@Gah,DQ(RqP@NBXN༌7E$;XM{(r 5׾ܬv?;~ո|:Gfr eY!eA IFo7__g?t,C1 MJlVI`^c޻g|(˲\,kM6RMIK\eutj}_FL[z@@J4 xm.-*vy)vDHZ]Gx CH HhY"LĢi8g^zWկ6b7&><<9XùۛBtUj݈ ]~xbK)0 ]rǕ `T8}1tv"o߿VkY6ҫB8;KM7t4.6HukP$]Ԏ:&6 iJF׍TSϢy9 4 ` ?|nH m5,UjS"NF;\:B3Dy®d;̽=[\wG9XcJ?H|rQ,X2UC\Eߗ=5mr kI`~nf7] ݴ^cR:4a{Yu6h 0;O- F$]3"fC65FUײXNk. RF%t& uv6ӂl[@Ee4œOL,Q˜m+BՏG{61mit ?ͯ͜r3yի4dN*#%Iɤ9tv:8H oz;q΂%k4u_+RYHF, A2LD'h3 Qf" ])HH =E߾ˎ cU:5KU9^jM,fMNH"֍8[0$ZcjAꒄW !K_= a7쥐i+#$i9K[따֛Fp)oCPC' #lG}wC`1!mgyG8'R7Nk4G M&ljsG)bGeD>m(}֧oiUպI5 )TSF줝 s,Zjl\,XIU!*IgҩdF|Qe"Ǿ"B$hlbP[0Js,l|)xP M&ԵSouR|M*q-) Q`y f8ʀ#8縪*Av6$Kڮ6PMXjϔM- ߐiE=)0cS3S\^2ѥ7(PPXc{Dw2: Nm) #3,>ᚃl5K?MOZ=V # #sv*`m9m*ҁi(S@'SdI:J&MSGBΡD(D-pR`i'IU^NNJ9ԭ9Mv=~FY-zZGJ'K!K$L=9'UUq468@mV~T] 'uX.){ƝXO`L3p'C몱w0X x,8RDDLyoQa.xe,5ARtm|gl9"xs_IuBR/I솤)IlM -9fqhY $Mu.I2)}t2ҲPkmuK }oUHZ+yx4'.O`kE*9uLソ*+dK$,5~) IDATx<@(dh=^6M!#O "Yd:1@@dU% (= xh,kh.`$dذޣ_3XHڕ6p3Ux2Ȉe)OF ½H23vH; qNOuNbEd" ! (:IP:Cs<(|:"Eo[3DGWݥ:ݰqrӐkl5/f]`?hbaicʍSxO88)@\k4XkyZZeY癧z&@XXkij`R..rO} {4h@5gftFpזjX< xT:cݾ2ҳxDBv;6s$7p!fCҔ}¤:k;:eS(syRȴc3?KEPFt9(<V}p+{]v2gt knY*)˚ʡ ijDJHZby:cDh`:´i4RjAA~%ZV"v,U`-#K@] H]}qcQxgGgЏ#qGx {Bn&XFU;`8J36m  );*8Ph?!&/$nJ[75ॶ":("j>D5|S( 5xBntpx_]=/m\`FMbFdaa'-Z (3[Ƀ\:驛D"jVFYd ??|+<@!s h ۷˺W [DɭkE u9V#D1fICo.WWplp&.}D_ 'jG|" 8a-&ΰM@M$c?lWʙmDȀTҞ""7ZCW,l[DowB>8 HxUcy'E[PXvJƋ1Bs:YswDt<L`ZdYF'''r2dhcQֲh QJՀS\hE܊BTkЊD|X1;pXF''դN$8>)i%ض."/D3^  >2eK{>oDgqnt'8q`tSCkKEΝM $"zC#oZsW Q5ET{o!e팜]7hSgFQ4s*,ee2`-qXc8+h8k։X'höuseXVw"*I hn3H فB6B^iP4`T$#^ODͨDoIh@2?خ4 NDQv9k5󦶴6B=+I4qfSC,!jS'M\Վ>_]|2[?s-VDHNDN$nAېş )$Oe;2Րwg+l7BMo (h"L㸕B8m6Q,ݟtjst.Cv!&!6j"D ;V1iS.&I@&6fF'JI#'qb F+N4$kT S Sxh#rEJL!MC~B~^ v$KęY7Ʃay#k@'2]{8Ο抠?F|YDOuTAc<@UU;dD0)(XZT2":::N>62̭%Z+I ъ!립&I I(8iLþ>ĚVָ|*C'!]٥έW=O2 ғ[6%fKG^;Jצ^:C"a-V:.FCaTkhcU B uZTjy^e?u-Y_5u_(DSv@,K[UlA46ɗ?wxXQIXk5\T{Zhjk3hʊjR]VP&ZքD+ 躱:RЪĉRmcGz?4o#Tqo?4v&LK#GӨJw/I9з>N,~1p։J 7ʴnԥfrR" 38kYk]$f7vcOMkDwu^4A+pې .*k3V$$AM`iSthm+-YzqEDygڵ`f/ frP< O8FUtΝU眎c:aZׯ_?>q_PV~^G/Fa% %Bz."b1N\}_1=_fKwXk]Zu]O1/ K07ӁfieYt9$q5xTq]ϓG%vFt֟#YHatbe&6Foe8lg^mHιp?fį袈x_|KKAr$ڞVs O^c ;i["ij3L_P̱ACgDVy¶^1d煋r2h$sQJ4eFt[^*l4dk4MM4u]۪Y\qUU\׵8d,_stڦ G|l 9|BD5Tι^{z-wG1D>6[.]=PJ';5PTBRl_biDJqZ?c_c# Glt?pli:0ظ96*:`l!ֆ({4mYki~ 3Kuװֆ ZJۜ^)RJu}q1*IJju#H#tN8Fx|__4 q3Pk-UUZzRyf&{ODJ)QJIND\EE>ܙqI_*J|_B8<ѡ(֧t1RڐF 57J hAeY6b˲t͆reYrYF5i{iX=1q#=7hh;,/2R8?DpD伓le%"No4t/5(eYڏGs!N&SOݏӣ8E==QJNw=<':юY,37ȚA7\#ƊٖkRՎ! Q3V1G(‡'<ֺ( ]E-f|zAeQ~`6uOz,I)~6'"lj0썷+o|.77M> Ð,Qsjc#8*y}n}TC`vؕy b ufgHnq/SO"|̣.q}L;;ed\^Vxc Q3(q|=fō#xsT9)Ro~S~Fyd 1k7o~o٤`Ãhx\46u]ۺmhuu]s4nl6v^f6[n^s]ֺS_'[ 2"MQ x2%(fVQK(_1~v` QCCu{05YDDѺ2ӆb $I(&t2L(il2O<}cu΅M0j8i 5vB3)8F5e;ة7cc[z1 M~ƿc?1RwL9ťd_AD2n)p"Q7'"sXTDY]pqKA! pQD:>>kcdYsq=#/|դG3+kriQ9rΑuSEQܽ~{ CD &aEۆjTjXJ<κ{o|>1fRhp5@&T6! "'RD[| c![87Z'y+xnc4f! GEcbU`ߗ\Å8Öei}n>,nUezƼ';}F?g;F?RlE. pq]fs<χ/19y{v; K}S1kY_|s|7UUMsd2ɽr1="-Ɲ`O?w˂dzӋiz~R)o\{Ykg"E1xa}hY>Cs(a|*v8u] c!"m>0V<89zAz [\{2[Zy{j# ^Ahލg*r{\8 pqd8(o\{4Mb4NMTcQ7{g-d adCgOk=D<lp/ pq e7>1LYZv8:3FLg59>]Dž8PJ=}''$2x$ cFHg*ď{1?64M!8.c~|4Z"cT#Lce1`9}ù pquY}ƍ|>P7 گL JLg8.űcl>?{d6RHi#ǭᇆ}į1m$F4}7nܸ@^8#>?׾V^|sNcb@gwPC-حA#pIDAT*ᡁࠉ)'AGs7s_8g4 )f3x XYW`qS`h=F| y< 9׊@qP44{ܿ/Yk+kmfuGQ!GQ{`c#sxv-{WWrEo-ooRZ 0A6`VHgk 2`ș#ΔQS6o[^,6)P(vzaܥ?uYu 3D9VJUUիb? }ů޽cD<*gnmww,]眴x\xNٰS"7'5'M0YksZkR{_7Mk]ٽn9981,* I(mj+nKkY )SVxu"o޼ӧ_qv/5vȜ椩6uʀ \oS/oZ9ұ(ڄ!#C=9;%pTBsFq{yc{ #&oGc̬w"0YD"Evm_޺uޏO;QB/"V-AD8}4pn1ʠuƘZ1Usbc%zpi<]+W?%·nUwkgsD993rrTM1g4DO?u]v$Aɲ$b% 3%1RByzqq,G !Ci1Ɵ6Mc꺮۶^Yk{cLMD=Tp~3NZw{^I5FW UDPЧD \ίddžADBpEDBb,˷DgXor>Y4hZ}}_V+vˀ@{1F;sl4M&_ E!KDKD!%!H@"xYAly+5$)ېmJuTv1Ɗc-ef:[$ޙkF )ޒ|1޽{wɓ?Ykb==ć1+k]m[m׶m4M]54M#UUAUUpH'''q^zD1FDij?xbekVWE ;%5e6eM }TBM"bيg抙k*"@DFW" 3J)#!3Rgʞ " |ł"? ޾};}뺮3_'Csm{4 íjucZpuauG]]nUUUfgq;ii88M.4͛fqY1Q1"yX0nAYu1xs8fv"R3F&0efTD.2$jFfy!gfdYD Aо@.+%!*-%/_a0 0VU}@̝"$Q,KlS3ML;D1ގ1~DDGDtc"1"<WRj鬐N "'D=3`53133GfHDTɟ&`fD͛_PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP ;(IENDB`vokoscreenNG-3.7.0/src/pictures/player/000077500000000000000000000000001444746353100200605ustar00rootroot00000000000000vokoscreenNG-3.7.0/src/pictures/player/audio-volume-high.license000066400000000000000000000001361444746353100247470ustar00rootroot00000000000000[license] author=tango.freedesktop.org url=http://tango.freedesktop.org license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/audio-volume-high.png000066400000000000000000000024641444746353100241170ustar00rootroot00000000000000PNG  IHDRj gAMA a cHRMz&u0`:pQ<1PLTE`b^__]\^Z5g3f``\Y[X4e5e[]Yegb.h4d2dVXTWYUUWS\^Zjli3d4d4e4f+Urtp3f4e} bKGDHtIME õ9KIDATc` 021ceama399[۸ n$Q^v0?XDXDDTL,,! %-+0(*10(ttO 1k0hj10hwuM5i: z  F`iӺO>S؄Ԍ,@@ A]!l r#"OHܶ= MNIQiY9;v恅 @daQ|qvIiIY LήɮG.LkϨhljFB&bOV%tEXtdate:create2020-08-10T22:21:29+02:00ɳ%tEXtdate:modify2020-08-10T22:21:29+02:00!tEXtSoftwarewww.inkscape.org<IENDB`vokoscreenNG-3.7.0/src/pictures/player/audio-volume-muted.license000066400000000000000000000001361444746353100251460ustar00rootroot00000000000000[license] author=tango.freedesktop.org url=http://tango.freedesktop.org license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/audio-volume-muted.png000066400000000000000000000022311444746353100243060ustar00rootroot00000000000000PNG  IHDRj gAMA a cHRMz&u0`:pQ<PLTE`b^__]\^Z``\Y[X[]YegbVXTWYUUWS\^ZjlirtpUWSUWSUWSY[WUWSturYZWXZVY[VZ[WqspXZW@@@333---)))UWSlmiXZVXZTWYU222XZV\^ZY[Wӊ֎UWS]_[ȍY[WŒ¿ƿNjˤ++졡%%JJ33 YY$$11(LtRNSk n{cg    { bKGDHtIME õ9'IDATc` 021ceaa"ǁ)&&$*,(*,+*&⟊&&_PXT\" *& RAeAU2 5u r w+)*55(3wtvuUT54zZ'L4yT& 3fNP3Hxʂ`aS =;=W7wEX: G+xyW\%tEXtdate:create2020-08-10T22:21:29+02:00ɳ%tEXtdate:modify2020-08-10T22:21:29+02:00!tEXtSoftwarewww.inkscape.org<IENDB`vokoscreenNG-3.7.0/src/pictures/player/document-open.license000066400000000000000000000001361444746353100242010ustar00rootroot00000000000000[license] author=tango.freedesktop.org url=http://tango.freedesktop.org license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/document-open.png000066400000000000000000000425011444746353100233450ustar00rootroot00000000000000PNG  IHDR>a}iCCPicc(}=H@_ST E0Cu *U(BP+`rФ!Iqq\ ~,V\uup'G'E)IExwqeY]cf:1 B2YIJwqܟW[ 30muMOa%Y%>'5ď\W<~\tY3#6VژLx8j: YU[r5_K\9$ "T2liIDKRȵFyTAv[01%@| ]QscigJo+u`ZK}uKS`ɐMٕ4Bx?o@h뭹 C]nC`Hkl3~4~r cHRMz&u0`:pQ<bKGD pHYs.#.#x?vtIME  zzTXtRaw profile type icc8SmD! `|>a!b)%c{lYJ覆a-JZi@Z46dcDCd}@lrШddQ@ W*a2_ޯ*F: E\0Cx:t9H|BtL<=| kXsq:-?;|r'bI# 7Cjui;gX-87n5}~EEOܞG|9 ծ49tIL U gQffO_n_κI)%"d3Rٺ8[ [M0Kc2g񊁶m&)rjQ;k\˄l{<]66{=yT!H4eY.F;d#Px KSJyUw~zvQ P قIDATx]i%G}Uy37`lcd#B))$D7EK($"lⒹD $l[wwfvw}UCuիߨ5:Ν{/$Z=E\# D# EZ[I7Q7OP.ʠ|w}4t1>?U1,&a|҇jqB֛6+D{"QAIc/\GOs@&m]>'>\.a1 qtᴢw:|ӟʹy|;w)ow]R bq|*jZ=@&e:Cx;!(R* E^3 Z ~`ԺK%~!N6# B5`Շ!MR ,`]T:=oґ$ U"Xi3pܹ{c$@4R qv~VLp=0TUi3Ν;w 8iA#$@Z栤g !Q7>gDH XY^njf'!ЬY*uWW]č0. CرcpI0Mb@M~ >,x;߉zx]>?r]  p@Q!):ng [[[ I `F*5[1VbR /U~;^׌{FӴTowcWF) p s?N#[Sp3L@QdF)d!J)3(a8y$J`h? B},MBȂJu65%쥗^w}2tb…e&8JM7݄ /G[4i7MOE b}&\\%1#E3Le|21vR%o<wZ@V^׾w]WzaIzz=4 a1SHy z$|۝J+x"nZ P8Dl&exl6vD9v.`fYՒ`M"ʹQ] gϞF Ȑ{ƍVṠ`uܶ@<`Rt:i]ol1Ll}dl@c;dqq˲8N}ǥ.\ R2{ 81???r;nvhjZeYS@^XZZ8u}!|G~O@j<8זa`Cfuq#સPhA^Ne+sa7ā&a.( a'Æ]|Y{bmY5.;}4vvv9[u,..\a1mpE0 X@0@|B. &nl >mmm8J=,iຮ3N @c=s"c( ce,ܓpʟmۑ8T g|LLb !D*~ce495k~_%6t)åKp/W^Kl HJ/,7_(q٢Q(Rx׻%=>QFV0(hZK=8 wi6+!W!`0RFbGyښE)vmR_[[Kl:hJ4Ҧïkq#LHK m WUwn+B{]-֖/00 *%2ƤBS^* cc#R;wV3&y2u;n*߿{loP"^zlNв,ox/F7۶ZAiμ m[ulB=iUv- *[wgZJP_D8g-\|YJRc=Ħ. hBI \1o0lrĵY.u@UiYe9hH8Ndx6\^'Soy[p…X珮ke,T*,B~% @0<z^HjZ N4+}Ob>$ Ͻ x`PþAҥK>E~lr' K}ey$M ??ىO]k:B^,V%XXXmہaW+ep)R|H>4w}^~O@(mꚴ7-L?x[ `gr_{Ebrc1t{ɰXY3Dk íۧN>Ù0je|^CU cz2{Y,,,\.bFgNOw\w-|rafSþ"| Q\O pͥ/^V>fMK۶eO$BG2@;c8H#LWa\-D{KKKVjg/ͮa&TUebބ0,#tr1NGzl!$v$5zŭgIl̛I$7Oqq)~UPt* x9)i_׽20\ Ylw*\od6hu讟v+Y( ^˲cӧOqg3x> 91oOw-a8WA)CpC)'y_AP.vBmò,yT*imoVe߰<ۙ`,xlH{R䛣g{` X(``B}cа "j_wvvb}ހЋ@t/m{‡;s}ǃGyBc\X+$3@677qĉ N2Y,7TT:}/Tz'zԫ F@)Cє@h۸'xAer",2WR Nmľz%S WB#tXQ:UiΔuTmx~1 DX>^ i3g@4jPNsP|>+%@O = J@C f)ڶ-k|q-*(cg2  igC=U9ԗ OITnmnnbeen /s0u>2X'kZ33$3u)W$f ---ayyN'qZSQ{Xc;}x>v2U.N7d.힋ZC aRG16mL&#y ۶;L&E~y!/?NQNp?bBށ=Lrt0cLn8 B`w I @^Ua"DώGp`%8r >ǔj1(zi|y;a@Hۥ" cC',b;~R1DQaa'OqTYZ(rRXauDLJVE%@.c,&!;uiٶV%''Rn;t(zKMPg@X`?(*\&}.Ykޒ/]RvCǏG>2kYhtxDw:.M5-(v_<@] yt]߀i<9BXaP з<- ( яM.B ca =?0IJ,Ei+e_;NfDž1! W!%x#?kht wRh% "Fb ^(ڽ²P̅$@BM~k&-7$HWys#p8"۶f{`yyYne14!ώM) dr U=̳oW F(P-WVj>}eK5Ja8!MB.K U 8"c h4r9H$2w/Ιd {Jk<GcF:il4G88øUp pb\.'#JT 2?e[%!*yiZnpLƕ##}̐3uiJZڠwg20Tz<`|ҙH܌jՔ iOÄ)#4zJ\N>3HٝRt:; |b>grPO)kbg&1t`ee%0Kh2@m NA bT4$(큂}14}Pa'1@]Vjˠ<X*- ^Uώ+ ՠ ѿ/ѿ)84nJ/{ɡe%2\a+yq1L*Ե2j~Q M۶;BDQJ1??/2P7-㫋>х*9,9U.6c>zvf 3J}igrdRo[Z5X3/Ϙe!#VUZg z2V;t0O?tRD_a.cJEf&c*):phHb3;r!r]ͩUnN>Д%#PJNZutn%o?r7{Sh4-8.osuYf0V%M2`~+ˋf3AI>tl̨ ]Xg^#)joX |6pM7MOF*|jdmz| /~#av$&n˝n]@ WwзYڞ¯OTR9 Ƙl~mvL޻XX,w\`a{s;=ſgٕt|U1h?,J"`_r)rq]x_o $ U\2qSӆ #/>xMA]9W5nteZ bN1>1ZZ;>u5|?#$tnF׿[\2KePb`Tcc@FSy0#뀁FQٝw"aЕaSsUǎhjˏc)#.M @_0{c$&R*aB(RՀC؃<. ~1A4H GTKe Vɐ|j'I I`-Rq-_m"# FƧq ; ƃ 0 ^^n>+/&"U.FM|>1N8gGrhɠ7?<U8xĿ U4/<Uٮn|o1N2qS^_+ad|u"CZAg((|)@ϨH$l=+C|+uaյ{;7ge'O?@Ώ>ƏFtȯ5??K C?T__hgG?^ B?Th_*<>A-.xmvȹk~N?d xVtC ֋.@"}C3ܬP@ѺWTںW(w 7 ]S{ں(7Q^woq]W{虥ȯ:8G= \3^uoq]W{Wkj_[Uz-_گ(տ8@Ey= ?o'PQPE!1z;Ï ]]mJCk_6Eo(($%6DugZl9zN-iH W/wXkP-Mnnۻ=?Ht(Mq±?6!g7~ ?!ooF?/#g~^6?!o7~ lCנ H(Mq±?4!g-7~ _H+?Kנ HmECooFO?zLWḿJ?7s4[}.}VF~"\m`zn Wϟ?mJ߈<3 _>xym0\r<<;EPi7q>N6Q^C1 s_9k 7Q6zz9xTkw4}/rz*<=?`D!A>M{d'c݁Zx-g(>r;?goԖ$g =?}BP7h'jz(ڼ ECKo~2:?OZ{4}ߡ nz_~Z{4{=? ?:Zhi~kWW(ܽjߡ6 en^OuV->kWW(ܽk}ߡ dn^_uVm9 ;9րJ|SWU!F|muk,~W_76Ͼ۵Fp`n59J(? Ƚk} e|sξM(Q$Y0x1`6`}(RPmfj_JQKkW?Wֹʰ[Gnsl4M7Z֣ [lȧT󯜃UK(͝6=GCT|'yfgR\p[E͓tf:?_Z֠6O~z_=O'wQ'_/l^=A4OGْzh̓GiI@d?$'_rwP'?Ɨ.__'i@ /?ƏNOj?֠._~jlwc4HWwGXZ\fՀ.i}+a-s1Yfyv>;k(?lj/#V ^~5{~f 3fOP8R1UOGҀ+W+űXd:b*VsHU,χ<lssOOtjm>OEjr͟n/\+dG@+Q)Xm.ʶwSDԫpDs7م )J{#IEǩ?%OK#5/y? ҿl`۹c}z㢫NWeOtQۏJ9P]~q=?IۏE>TeOQۏFhAvXmEm٢TeOtR}z㢫G* ۮ?:(uEW4r,}z㢏OtUj(]>q=?UI9W`,z㢑d ̮~Ps3vNréǽxΡ}]6\n8' u/A n?Ҁ=TXiVKLVƿ'vL~V^(ck{io[k񤛯aOnB]L N "(撊+c 4PњJ(f(RQ@ Fi)3@ E%PEIQXBHTroONsZzJ|9~KH:/;m?vc?m?Zyڧ:GUGW_kCۿ9Zz{ خ##=Gz? Ƚkyg{o elp1W9>3-߬n+oĚ4N9B|!P5+{A@nBILPkxXJo$zqVm ֮}kj15?2S Z3IIZ)(PEIE.i)3EJ3@h'>xXw*:(Vŀ==i-4oQy75e?᧝8Hn.-dk`ek̫-c ?/Z3^y]nF2ß1px1睇α?z MiN$Ws*¶Ů=~ހ;lT7Ry6'?Ycxxz|֪撉2vg(_I'1&=+ql_ V&6yE\Rf-f I(h%fBSLIE)$`QEKnQU.6i1Zd37s*.c9BJ'ry{ӟv6*zw?_}Q[O/oٳONW5W߇-4'_\u gW1\|,!GM ښ7xnQLSLv+gW!ˡmߡS\Qo MG6}7syWNoJpos .]@$MKk=o7z~{j_̎?cS_?GOW[OѿKt7RԿ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o(Կ/ _Bz+-G%o)j_̃wjvȹ`\֩$IypTc'!tEXtexif:DateTime2020:08:10 08:32:15GtEXtexif:ImageLength128AtõtEXtexif:ImageWidth1288tEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/player/fullscreen.license000066400000000000000000000001641444746353100235670ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/player/fullscreen.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/fullscreen.odg000066400000000000000000000221231444746353100227150ustar00rootroot00000000000000PKiu7N.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKiu7NٌThumbnails/thumbnail.pngPNG  IHDRzAIDATxj"AEr& ⶣX]S&its* n `j胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(턟5>v>T>(p9>?Ʉ胢nǸ >(Y.>1{cs E}|p_Ev(胢>(胢>(k_=x^eke>fd>UƵ+YqmC}wS!Xk8C_vNeqyhy|p|mُ]X^_¡C1$Y c83["}\nNbXaP/b>Νd1, SAE}PAE}PAE[7啻A'3VM4}| Yx<6}A1k.>hٞ Y~<6}qSOcM}[GIM4}}B3>h#T˦>vLcM{p<6}AE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PxT.IENDB`PKiu7NjnAAmeta.xml 2019-01-23T15:36:072019-01-23T15:43:19PT7M12S2OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKiu7N settings.xmlZ[s6~0}hņ$f6阋$\/;,JvX,kp)đtst?B| GZ zm]':!' K.y[n߸ Wf2l6727bS=Oa?Ù^>B o@{SC]#7rJHdSEۑ{P~r yM){9dw/}"* ;-|D!3I3"  <}l̜CS1  ʋ*~_>kF!"@dڞe0ݾIմּb 2nR['>ާґ{5ԝCR?jSS0b۴B1}/|gFj~x7TG'sӇXhSnZ`*>zr +sshJ{tun,,pKfGd|Lszd'8 Q\ M,g7?`$;<ɤMD0B aw( ?=i !oOvucUC̒3u+3r!.HHCm ʯRk<_Nӱ D U VUmIy|2S[#Rr}? kbC)Im~"dNL\M+ۨx9 gq8ZE[ Grul*s| .ΝqYUm6[x^8ߓ[N}XP:vm`̨;ӂ!Mƽ2d[ԲCm 5{d;jHn,5fMN^i݊~qJʺg%Onx 4u8v]fiv5=Yjo2ڶֳ*~6[a05 ^pgRgZ.gw}Ԑxy2 [h0GR;P'7:zPKrle$PKiu7N content.xmlX[s6~`8$6;3}S93MjQIwW"_ɌM~viTW΁ xuE:Iyƚbo}4xi7 ݋&D242Qi[F'ڗ\ͦkV{%=k9%#js>|szŮ8UܺRmqq\~l|mN\FeO+Τ.BT!TN Q䦪 \漉l΅lu4%uRR2[UNwQ\_HU*X;{m9CH0] o-KQ0EOJ^%?l"L ,}c2iIk2cH3fF֬]N4l{ua2/h˅ ?rQj"B!ȇv;0z^N_ ss%LQ4> $a2Zav) "ޫ%6om13|lPd8V9tǕyc~ nֆn7P浤?M- -YD5Bxψ~ގ⵰l*ҁ ޑeE֮mHyO*#նLYsVU,x%?H ?{X~p)v(W~Jʊ^N* ֜'5kCxdxyouv+W [=[Es}]έ6@}2q(;eE)E'5>xv^:^tQ&&V|*تԻ(;QByɒv&)-\HGoM{eTݕ7 zGN[iZ=g|^cv/])ɼr&`48)xQrqnaI8o2;::(~7OQB' 0IūMfVqWwpjok'˫h3x|Dll=nQeƢ66L7{u;rv~B!ax:c_ q #xX0蚡==O\Bq:^%3/*; ܓ=4 '彇9L9ɼ:4x u{ݦ1jcCZHPKJ+FPKiu7N styles.xml[r6}WpIh^$'j9^2ә8s"A1Hp@P}/ )P"e*/Q2[{w7)eS?l g!H6~|o.`qLB%XWKe<+pPљa8Cht0|G%BC(8%B(y}8|N "tuU vucs.^;(l̥Q]!*b}hS-Mk.(YA}{ 9%Z=`)CDY9O뗌e찳hZt"ƣi KyR z*ⱀLMLz1?sF"eQ:CMe4H&Szm{g8Chz\lNi hf(u)qGPEWLu TɶNP,ʝӢz0xE5#ځ҉3SԟQ3 1mz{ڤӮw4ҵo_4uxH8Z Q! /*=ņLlo`xXaݿPZfs;vdˆ9E+\ǒVR|U۰rƢSZY*^A7+9o ?w}'Q=^{:t|>-wpA0 x@.OSw=ԣYO#C#;o͑[ڃ8C\?eV}ܫFwnohf`W{}ppK')UOR{Q'fFC@eB7I~-)FE#_ogwѩ2uI^fDT{tw|M:5ymK_yv̎id݀TS*zQ 8Y,_䈘^UoqG.`bPN+ڪ^)* IpJ~|R{-_;DF@~b3C*)w JĸK|ߺ+]wnPK֞1PKiu7NConfigurations2/popupmenu/PKiu7NConfigurations2/statusbar/PKiu7NConfigurations2/menubar/PKiu7NConfigurations2/toolbar/PKiu7NConfigurations2/floater/PKiu7N'Configurations2/accelerator/current.xmlPKPKiu7NConfigurations2/toolpanel/PKiu7NConfigurations2/progressbar/PKiu7NConfigurations2/images/Bitmaps/PKiu7NMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sConfigurations2/toolbar/PKiu7NtConfigurations2/floater/PKiu7N'Configurations2/accelerator/current.xmlPKiu7NConfigurations2/toolpanel/PKiu7N9Configurations2/progressbar/PKiu7NsConfigurations2/images/Bitmaps/PKiu7NӷMETA-INF/manifest.xmlPK6 vokoscreenNG-3.7.0/src/pictures/player/fullscreen.png000066400000000000000000000155251444746353100227400ustar00rootroot00000000000000PNG  IHDR~~/ӹwgAMA a cHRMz&u0`:pQ<bKGD̿ pHYs+tIME õ9HIDATxy\u #Jb+!zgV^ȡ]V۶niWegyx"**&8Zgu-bR ܴM̤DTD.6ۮ5b&Wδ񯠮GDDN>cWH]I8y5_ElO]Ilkˉ՟"!$θ۶;帥%mP%t~mw.-*+d. A!UԵ_q}JE]h~; 7L{k_]?ˊx>+lQr?CW: PN]8_w_1B+ȡ -2ȼD) ѻGR[;ɏuj,0dU I~,%+h)3lzt~W3Vn ub@WHcY}n\^_{{?eB]~EH=JGA!UR^Wi54H]CWҢX)U{?t~u!6WEjԵ{7t~}5Jz+2ro՝W Dd紆;ia{3t~8I{7t~YUV,FJ1x/t~Y-zbXx3t~9519,CݨGe{gp8Qx/_F<VGp =B:w[eQ;&-3VxH:L|CKx,d>&x:L֏}̦#G~<3%L{diQc>{FS/t~W\b@_A=.o/e>cSsDj{K :?w>c;C=2os'87L{83Bߪ␠Ryt~%}ƪ|3G]hۊCtv1zt~>}J3f5zJwb=8>:z#%2z??ܔ̕~rſL&WYgdz t~NvNUbM91ɦD]G~NN/cW/{z.lZ{xA~~Cwtg |`-f[8bW Q9~:Z%Aݐ269Fסh)"blt uBw'OGOA]Dv u 1s?>5.3SנN< #W´%A%7PWQïl ,B}]9ggkP#t~u&3W# \렮Bm]~gEMékP*vzôG'k֑^@]K=֡MMAm%`𧮢6gURW&g<`_ɟ.B]KcFAM~Irhq~wGaT;8&-Y?sMkJeώbΚU_o4K<7Xv]WQScB5ӧpbQr?u-P ENSjiF:!Ҡ3m{ow6g҃JkY\zi%cG]yp+S:W?ijI;MEΚo&/:сpljɋ Y"+DžϗOj{q3%͞WNYYo)2w.5@R^GD)$Ysظyհ38^0w΅ʯ]6eE)}SHkGK4Y8#&{/~gSu_n34qin?'zBm悜h ȉ@o̹'S+JO7pg[/hSo;mi>+.tǭ1_O`ӿِF|{odjZ"njlmpHqb%-t=&Pj!kHj _U5+'f"fX}`m7J#Es-_O Cݦ,5Z̽ ͕fS\I -;!K͎ȧ ܪ?ov4N& =DS ՇB{葉E5ߌѵ PsM?*OWvKqo_%u I]Z\( k>&)?GJ2y .<Ʈk+q呒L^)?7q2g͡&Weg nPUȣ'?9 ;&yQ+vb[]w Q SP 䎷$x>{ϞcKS nYC߬4 \_C1jdSSR:8Ys նQzܺD}v)5)#||FR\N,ƕ2P̕-Ʒ^_%޺?p)KqF x)KwO^\8{ˑ%Ss XX9VÒ]H}48{^~Ħ7iԃQi7m1{^.ޝU#͞fѴ0{ީv>2l۞;b\2azxTq[+v*,=-3nJ)R5>qefܡn|p\,Ʒ^ .8གKzb\1~^K|_}0QkJoV_* {|P:nTssmsHhzr  6ݥ'"mĺO+mJYoQjBzV}Ǯa Ec7+6!U֢Gg #7-!=!ݕؒJ>E=9`2u'B_S+~kpw <پa_5d\)ⷥIn5,SE,i5LW:$d cv ^gX?x }cf,gS [sN!-1#lk*Ni+]w7Xo:@Y%3ecU}rG;=nou-j'X u% vjHOtj~ (ჼ-Cׇy㱯 ͋|ჀrZ*nqٺadaXF] Xm9dqR+V=PWq`dWB+1^b=Yu- Uk,;cI+<>?~jx"JB}j+;?c0gnA7݂aϦu ͣs?ci#6n.Qiv"7Q--J5^KVCF|5i|h2kph:͈{).)T~Kt^gio))1ǯ#].OA-TjP3eqRHMAM~KsiEA[(e s~ mϋV.DAە&j/Vk/*9*_ok'?CdB ]gGɟ.B]Kq&/nS+Pt~.75X+M@6~U :DM/? u ї_'k֑^@]K ކKwzqS:L{\`י̥AUТp AwΞF]í!ҡ4(F*jUMeU:KJ_=) En*vv]i:Ȏ1zόA])֓ Rt~U-UYQWN.󯘸Ʀ.A]ܨtVn}{ FlD]z;-v]XD]=!n3"sӹVFK/Ś_ʩǯfnjuOi<~5t~eGޣ;-.Q#B98I}`Avkl}$طzjρ_唥ʮ1>w:?y~B=fC"`66rω;NvNUbM91ω֡}ܒ!|`;rSh2Wɽ3m\w@&l:2i :?Gu?(:NΡ@ۡ]C]>??Wr_VOME[UTJ=>oϙ7,/}~z;aÝSwv<K=2oϝ)O}eP`^ms : ǯ}e"gnTD>:,bz巴A}9 2ṃTX|Mx#t~VM]gII ,J@WHIHGί{壳Ե_1Y|+WP}.IAN`ڣ 6l3"~z+HW+ZQeuԿb (Q ,_+ _aq؎ǩ :2'}@+nڿJôGq~&sY *-i BW_3ň n㖶9C]h ==lyKD_y?wnq L{H8y5_ElO]Ihi~UO:?kcɕ3m48aUkk,CiɎ|V/Έ%tEXtdate:create2020-08-10T22:21:29+02:00ɳ%tEXtdate:modify2020-08-10T22:21:29+02:00!IENDB`vokoscreenNG-3.7.0/src/pictures/player/go-next.license000066400000000000000000000001361444746353100230050ustar00rootroot00000000000000[license] author=tango.freedesktop.org url=http://tango.freedesktop.org license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/go-next.png000066400000000000000000000455671444746353100221700ustar00rootroot00000000000000PNG  IHDR>a|iCCPicc(}=H@_SRZ ␡:YQ'B*ZUKIC(X:8* NN.RB LFMT".fbAc329IJs|׻>9>xMA9pG ~;nO&H2A3 oAP{i;gX-87n5N7}MEOܞGb'!F:&C2u>ΐJ` aE(0{"Ƈ %l(R"gAfhk̳&~y}Uf,>1+:㊄??C.W07m1!~;枏fͽ͑hOmj1)3BfP0ډR!0nm^,U!_Ҿ۳s_^ 訩0zTXtRaw profile type xmpXY[r0 )z 8%u=~wAْiTƶBX<$_^*A:[otE˩dK\2(2ͧiz-+4Qc-&l_jH Ŭ6)oT:A`}bts9ɔ{&8thWqG1iQg& AL2 jEM$E%Tp=B%\Q_2dr_&vZy.ŬϱJgc0-`eh$L@ D"[L#`ߝO~`3qVK^yy儥d2sd0&0#b@z.c99 >33f!`xYZ nr)n +}K`WWӛzb(+g3f5+ՄqS ?Uto 2 ]a3e);L9! #ʡY21#-j\㈸`*Ȋ䶢 c,ڦ'W– hMe ?A%Dž-> Ju1`r[2!5p>L[U>.TfmLmAtfJr<&H*<T8xd 31mS։Yfmx*}gx 39xz>ӷEҫFb7ֺvD׶N` t>;vBj)nvQϔkefv*uYU|!O2=WhxT0MɫOږe*oʳ4n&Ka\A3lMςt`K l\2%d~j߻,W G+i_t>~@u[p߹>jEhGy>7 -sBc,BoD; }VeoZ!a>1CBJ>C̑Bvz BnMrߒ?~-p$zorNTϢw&IDATx}yř/[VA%XBH!`ssZ6`sP7ξ~;Ƴ^[,+@>, q$!tG[}wuוdfY*i{2#"##⋨l'7cKc%wjjӇLE&n뱐QEߎ.FN~,mi].Xr[qݜia攺#)rsw/-Ayy{n z8cĕnH"Q9cvt P;n-WϤWx#O\_揄*تB,m:/fHz~ kxR?CetKr-ŽhJH8y7_{nK/B,QL]ھ`q`. n o*?)KF\]Uspp<܅í=pmc ^sjZKXi=)l݊L6'S&O/~z&U%9R?q>U~w6`:{ظlNN=e;PKow㸮$BBsK46hE*Zdb?Sv_XR? 98S:? _'&M:އm:EA1Ճ M#4=,i (8y@[{'ԫ~cմr~1ƵwXPp.AW"\EkbI@r [pPYn! ^=Gjg8;m^9pLa\[aə *bnoA_]4n䇷3N 8fKTC*=a|N sK/$K9S[w .=GiIp ?b2 n\52 0aϘ| u`ƍ":]T ki'v^]{KK]n+/FGBP8*P2(4pg> L}In2YۏO¸J@UU9&Dњmn`8y`RiଳNƕ3OGa\eG9[4CK)6Z\BMzZ"u*#7TL h~.DZnG+:sr ߻z\3GI=b7PB)CF`NeUmc$ds'b.wݭeshŌqr!,/E4opoS `i,y`(]?'9x: S'-$3K֩yQkMwGr16jy9 ƀF#醫F5-)OռrGaRH np2W[z2ܪQ4zftwzEBopg J<&.qQ8-Zk[b,%K ZgiK.ǪD@h<97`꬀x)cqrZyQ=%ꏄBꊹ濢ڪ 3xG'&)!ҩD2wWa $ LGɵs4A)Ϊyevyp,+f?≟+ѷC``0N:i2ht39b`rcPgR߽4Ha$f2b dQha\+l?؉lSb sfD43픆k,d!sM/gËQd0 `Yz!G&zL %gL|:bFdz>DQGh .˩ZH{$ok 3OOfӇxqo~0 2玫Q5!;z}C3fY':`@>[SG?liF&kOͦ?`DYކ B: TU˭j9.,W^Zo,exDŽ҉,}%jPP #Ԧ}6_t;{ݾGo[{G{P66IMB( fXb/6mkHh}}]X<'0Ok"y/Y>1=X'q`drfj$t&]ԍI$SY+3z%vF< ؄/F_LP\[KyU X&Pwtԫ` -pqy$c]xɉA oͫ[Y` EU#NyH|V@cx$Rۦ@kig_fxqO=7/P/?~N~1;19S)B5 o_(tĻrH@g4vQYYx0kzΝS4֯+o|"f7rg|Bk`P wЋʇtNNWMhCn:0 2_D`20qT dWaL  [ @RbPL70Npe+|Ftn {Ov,\AI .?7if9ذn=6>ŭky+$:q~adQ)2w i|Uẹk`䜢b W̘) kVo~6[ٻ~rU+C*b*JC z%ؔ0hJO4`sNKDƌ@W? :gYV}|ʦhYԇ>+OW(HPjZVx&qv,ȸcLiSR˨щ@65! 11j+çWoieײv0)X컇ǿ)T;gxJuzj!kf65"TfѽЖKں, H7ïxEѯ/zi*Jx+f3r^FNfwA%CY$g6a\C0 ཷ?Mi;=}W>8T1i/J ]̴P<},y60O jL&@O?=7 R 㚙W[)eiB0dN %@QFt1 4O/򘁠 BpH`MP+Ipdk55PT K6 {9ߝm} , W fS H]4 uO>t3r@MF(j#jf#j~`K MwnY8}= '0~*iMWՎ6A|Vyiog]y2dja\9TTUFE,)ۇ^]7&}{3GH`@g;SP Dɘ7ȠjQϵ>gWqa#*ˢ"݃_3v7u5};~]' (> {J#7 kDF}|uJ'CP}Qϔq2Ldx2\~A#*>Gh햭g=7(yೞAnR&SZat@OZ$I)dP0N9ӧ? y0y'eOBY4,GhjrwXhZ G|. JU Ml:MRk4PM!s 3Z|>SM¤J9o""({.ZVpnut改Fz凲'_[jp%d2I7:Ȕc- i@)I@űSgQ[*>'fs&-xzbtI}6۵+-np0iy%_ZkLSЈu5[wVM~4%5dd&7T㒳&  ` ȷ\/ߜDP_C8qدB u]vBǵDAHﯽ/mx4/Gw-˨ ᴓ1 `H%V.Tg:j?x$JEyj<4 BԲddijnqgIt-u_9ԗz1=VNBrw]-C:+wh[Z׿%fL&B,IR&q]M䈦􉨣މx&ܩvl݆/,ٹkee'\?i&uWS]_rxLj-'~ﮡmO';m'Z;u`y@痦E|#_\ܵmYgp?Ȁ2|B+د<&z`> EWhL*r}}ZuAwC1JDr, mޣ+4LP@49dPVhyslz%O"@c^?i#?R]ܿ7۟3TOkckg07b <n rIvC|ILϮ]3]@ì1Bd2XM|zvnY^}L]ĺ"10pr&DvR׳w]` g4\t_[O$-G;=е]"/_P@rϷ胄ȱku1i/A PS"!>c"Vk:ռ-pSڱ$"CFJL~!A!Jy {+p4@}u3OHXH mn+MmЀ R* `Cv]{xgt &@X4DqzC!qi&٥Gxsg =_1ˊ%Qn,Qo .QplɵeqZ=!gs%t *4SI#$CN`:=O/~?gejqJq֬ÓRvZفoYKMzPȨ2p|+w&~0}[Y4^ ^zZ[.x1h|!Q,i1oϱQ5)O>?EҹLZ>D{FRaXR_qy/x7}_9W,GLֵϼb[@qÉ eF V.Z/Nߺ w>Zt^4)C~17Ms,/{Kʥߺٕ0K>3@>=.:h6~s1-#ÁL:K7Ӭt[ G& ǯ2/chƇNɦzoi[p^ ~ #.NJSF`F_^yfS/ܡ-Ř39pE:!:=nbހK(9TJE*@yͿܒMŢ+(m8fฐTLdMT6dS7_2r^(+9@EMϙ?wf~AYN쌔QE%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@]' A5J?& ='9XO>%կYWI+Ǽ #m^=ۨgZ-?Sm_HoZ6ps=jZY`;s_Rk|}#Ҽ7Zn;mt=G<؟Zh[ǜ[*/j0GDI:NTݤuBjJ(̠(((((((((((O&U'BpWO^gxGiڽV?WxG iڽW?W}OYFP6cVu6 AxzV15nPkV{~~ԥ#.wA/'kϴfh{tΫYywFH #ҼG?̍$n'RqYwWCiЏw;0+ 7fuBjj(̰(((((n?{f?9}'d&We*+k^yz;Ţ?!ף;sף^Z+k^yz>S{hw1j!8_ 5[ݷ_?7OD?縮94sHMY+|uC~uiz`wt #te~oQ(_Uqgxw>o'whYEtqMvgT&( ( ( ( ( ?kxZDg[gm6!E_q]?*)Oc~CukݷlWt&$¬.??UAO]v'}/$'}/qK.USS%]$'}/$}ª.??TAO]vԿ^{ o S7?\u@Ro^Ý~I5;z>'UkT[}gRM║G45sIi4g|rn^T__ޚ+Mb*Q:øTK9w' 5[[CGg.7/lu'ke(L{l͏> R^9eO}TSeQYQ@Q@Q@mh[Zm"33~OBzM!U~OBzB_ +N5AG\L8P14KHQIE4PiHM)II[-%އ=k[}RЫ ~zW MImu%H DͱQSŞEۍgGv$/lk|><~5d6rOEl҃Q5(j\@H)˜)NJ\E: E%-JCM4iis:[uN+R<vCs\ҒГOS3 'qsQ^}J:dQEfXQEVց/XuZDg[g @?s?A_oMTu ^~RZE1jE`=EJ1jP)*@)T) p)KpR)T"!"ELEFE1QS0SkN%cylU;KL#[twwVz&dp?k:9t[BՌKM.?kC)@u88gS5\k;!_oG7vvB *(̠((5l,NSm"33 }>Y Yc?^/ŲMj_{/Wtr]4?2xk?8G(p=i?NmǏ׊l_q/Q.x4O :yko8Ge/Ɲk<4Z/xxWm_8G$O_CdL/o>Ql^~FWև=%u$\i)+ "aSQ0XU7J{D:ڧtmq+_Um4+6cG^NyYΥ[BՉ_vYȗ#Zw^X'o@Lˍj\(zWjF1Du{+sx jhPw?{+2+Ϝ * ( ( ( ( ( ( ( ( (=;?3YgG=xDŽf ^ӬǑ=zGYQj9ZQ"YF"кnnaרjƿ{C#gZu:D]kZlzs#<׍k:Ưtnn08zS5}^}N'Î?PZN#}=IRW{F.nauHܓ|E՝EnnTUQE%Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Wk'__3Yf֏=zGYΓZzvbYz?M7izE~rr>FpWzTT/27{.QWן«QEy򓓻:IYQHaEPEPEPEPEPEPEPEPEPEPEPEPuiu5\@eL7ܾOl~[+%(UVq”//]Uܝ֒J(C ( ( ( ( ( (?*%tEXtdate:create2022-10-02T14:01:04+00:000u%tEXtdate:modify2022-10-02T13:58:43+00:00F|tEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:10:02 15:58:43(tEXtexif:ExifOffset190LtEXtexif:ImageLength128AtõtEXtexif:ImageWidth1288tEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth256(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength6082g*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/player/go-previous.license000066400000000000000000000001361444746353100237030ustar00rootroot00000000000000[license] author=tango.freedesktop.org url=http://tango.freedesktop.org license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/go-previous.png000066400000000000000000000450741444746353100230570ustar00rootroot00000000000000PNG  IHDR"y|iCCPicc(}=H@_SRZ ␡:YQ'B*ZUKIC(X:8* NN.RB LFMT".fbAc29IJs|׻>9>xMA5 l9xv ߄o&bU<34j=m,\gmfﷴo)"/'!F:&u1dkƙ! 3@`(6PaDz+?IAwCT^ٴgԹ45ˇ'oxv1oppL }pLĤ q=L0ED&1RbbtaEs|WpL\HӾa촿uqw{L݄ƒjL'iF?Kd> &sԶ󁩽e$sϒ=7="#S{>$H洩v_#4sF Onż9PP r\#KbAJ[1ZE8_vw!`8!oT>@A<_lε np0C~$ SheV3&Nt&-}#Qj?x-VW]_ 1mE3F8O4~dɃ#@Khk+񋟮l7L;ډށ4@-`ohFXW&@A)A0H},)s?Li~}4VKu.ck@dXP dv@*keu<&#Ok룱:jmˆ2cܸ:k: 6p8dK0?}Dc(6 m cjNfu N-a'D[?X`7}<vUcK쵁"6vfv/&&:TN{1O)#VC8Esw[  rX`_c7`Bx:&`RG{ʺN- -xʀV@9EKpQHs77SpnL`];RO)C idzH)~$!X{;o^pS'µ@TN3믜 JMy Qi#ҲnJacn4~}p>Gl}K[c8 k9V҉z2UFGn?vtv8URpWK]4j_g =Kې~T`6AHYZ׊{azcثw,EG^g3R( ,نC_hW 6D`?Z?GLJphLZL ?$J&kc5P TS-p`0!|3tSB8P;pX]kEʝ5~EqeEw$YE$[NQi ³c̨J2tR_1)fe!w83yg bv4wZS 8A( ܱc=DW6[{P1) x AO0y} @)-3ZUyf9C5L|UZ\^Ugsňd5tN~>*2ZMe29c*G 5}+{ yљ@ sR4c(@;94 n.Нot7%\K%6v:+;dN*+Gڕk>d鄁_紺j1yލt:4g-L So-.q`yY"c/rDixm/tSDcBF;gx,_~F"Kqq2)*J@v};Q8xAYuK+Th,kO\F3v=FVs zp:E#]NO2ǜ6a^DGP?Zpk+uDA@>?uNJ }|j=mɸP3/ 5" _r贀H(o9/h`TB}/'Ff D畭8zM$\u+)U* H4v,Su} #*9އM{Z`T:% yw&Aԡ8y#H:@keU#r֧Bl::$*GIRǧ0ѮX|({/ڋM{[f$uOyPt.6T=Rp&dZCkTgpUaܲb\ז` -@HdxpD 3E{O$C5#b>ksrywq ʧ=%JG導OvbHg lk8Ma-J{EH# `TUjQzw8H=[5$j*TsJH4v7``+0gy HHgLl} w%-E -8'c})tQYĨrT @7-1$/'r޵mWO*>{6&ŖcqHATF4Ү.jh"m N ؝DMe#+Pz}EK=ʜ~ LN zɑz EKNoǖ};gB*8pj)xgPhc"ȌaRVLzLJ՟FwP5#P5"p_g՘wB 恈B3D-;|Nċ7|)ìic-G1)}xlxAB>3E/#mhlCgo aO-`rT"NɔrAvໍo f&{K͝x~:tIa"cdMY$SYLSp8t@kKv=̊kܼ&7oXeF.-Vv'x7pmKh in?-}ެ)JN @Q,̪@pDa4@&>r>K[5L&hpt|oJ)iN)i3Me_^;Qp×qMLb my##;na@M9ω й4n,YBR8@',L/NT>NԸF!Nx/=Gw~l[, |O~tpyѸbDk XYZޡ\{K4\h@vj# r1d[\ү÷^>FhLV1ڟ76>t^aNɑZ\9o"nB,7@V̓Kg*n^/?RO|3B5epfky peh$GU}TQU5j_( ;t vB0:^q*UVR>DP|;^ڟm6l |Lg0Wϟp0 .L<.2kײ ! ! gLϹU^jm|d[AaF۸HSj\`COGSK*T+L)JaT P TEKI3|IO.<=~>Z]5&:J `ko"JBcFUQ59}$z!kjI7e~R5@UF4~8~!u{rJM߾^]:\W3W-e6jYGj\Ҭ\C_*+0˚vb*IgdYN˚ bzRTw[}RKFq8^~aIjdT$GJUUT!j r$O}̩j( \$>ߒ]M;hnŚ_Co/4WΟ!wMDu/_-[ye (I;sO &4q G9꣌wY3M۶>7v/5^1 wXLWxjMkiDߞWV(\ TxBC;0·m3Oģϼ!;c fLs˝ȟN3Uub"B h2m3eS}}<0)x-| bwFfWK{I'N4BDs1`x|I|_>۞]M 0R|/0GbZIS)T& kX:@H'募;h/kom{߇i:/2O?A7aq сK/\cX RnIZ`@;vy^vfwa&3FYMBasxKlL/x֫\ 0ҮbUsm֕uoۇCĂʝAQNt eg೎ P*  JMs׫;=wRvȷ?ځuL&GannO ҷ9ΞUR]؛n>(mb ~wn: Jpf( @W7I@3 ' _KTg.)3@q(="L[7m1qR쥄>2> B uvr\ @{82rP XZ$ .գ˱:¿?WA~ŒP e|T)ڗ>=>6?ix0?=2,:s ʂl~>?A1Zw*fg1j݋S|rPl˞Fm0P~g߂Rw RHz>+{׺ox:˯'GoO"y3F W>oGۧB5A.)8 f_I7y?}>k}槬 cϣw=>$lZ՗ | |ܞŨZzzvEk8V=WGQ#\Ղ%R/2@)}3_膾VRj5PsY<[ )X?T;ԗSl~AO6}>Pj5h[/hmnL"I}_O" Ʊ4>m΃>@kdsg?~j475{AHI]`OץyVϋsG rm;S1&?ޓYƣcUuh- N?X:AϷMwfLu1ZB  1}n̚Q/wG_^0Os}r_ >K@e\p4w+'UAYXOo=He`XoW5O/เ?i(F(FjE}4orlB.@?>rZb>ߴz $ |!Qle&[-/毡$S=C #O^ӽS&jO ȯd5[6=;Pv^8 g2M+Ej_l塹>wm4o?@fXպu+0~.W>S/!keXIfII* (1 2iGIMP 2.10.302022:10:02 15:59:19 BHKJFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((((((+4ϳi{9:n"sPWd6:;-׸5Zw ml0~>^ 3ҩ_[}H7nێq^8FN9R՜Q^IQEQEQEQEQEQEQEQEQEQEQEQEQ]}L?}wyȭ)u 3L>&~Q]g;w+$#9;ÞGZ^gol"Orz{]ƔybrHvhv+khQy'>[WPL'dtֿ/?A㩲<(4 ( ( ( ( ( ( ( ( ( ( ( (L>ω?vڂͬ4C bD\)dk(=*+ǻst=*iՊR&isQKL?/f+7Aa|_5Zf"'<ף^SŢ?!ף;sף^Z+k^yz>S{hw1hyz??!NŢ-ûvsvCY4ӳ-;QHaEPEPEPO'Gv3!Iƻ {+(*sn?ڍQԨ;(7Lvm;OY]] c}xv`FOj (?w6 rzC@6=yzKw=*.!a˩2sK\ՒI\y!^]pW yƣv>_ `umn;J|Ͽ?֬4ݍ/8U3S%G*)|Ͽ?֤Ͽ?֧z/Lq o Ϸ?֤Ͽ?֢8USS%G*)>Z>ZpUAO]&K.HOjC>Zqlb.?M4>Iێ׸iv_+f}}~%5X1Qi k5o ER"WS~l>QEAAEPEPOQk۠(Qk۠+K(zƶE~Fu*(/0"w9=q]߄|ګ Šxv`F'|ڃ-W?0@GN9y\9w>6?^yn.d!5\d叵0CJӁ8UH 8Tb)J % uR44f&i&M&i `6tk!H?_ Wek!H?_ V_|jWuo ER6N|((( /<8sAR \L'l,*s3~5.3QAyYDUNo3~5q+{~7oyڙ7һ}GSOj!迗wm@/.~;HdǩC,Aydy7җ^XB߮ddyxAt:ֹZ{zt_݁{{-:l{̧޸&BncJIY %sΣ3\[$IJ+B  R#24 x oSKe)3uH##:#wҮG~GfR/QquJ) -4aaM0ӍFiBi 4wÇ##BpÇ)#Bp Wy!9?UwVU**|o‚((+K؋(:¹Z|R#m:fU~Fu)׼/ȴl c} +-'nxgJ-N+FEJ1ZڞsEwr4׻"ݤsa=?wPjs<ǥqRb`gR"E.T>fh6ߡzȣ|Ʃ4YF9\ƣMeFi1nT>#0mJ?IZ?ɫ<ժWuo ER*N|((( 3SF!Sq\:"pSVgg;Oᷩ 9&VOn}yJ 3S Ê5i4yD2֧MO=Mz1Ӌ呩{a-\x珯D!#\}.7' tөͣ9uEp*@)*E)RRH`< HS #1HEDE0aa1 3 PXTL*v `nS>'&_?oK[~?ɫ-O'տ'7AJ^MO>QEAAEPEP[n=`ZS黢'%fzK.61׾ k1kY|O:ҾvuM؊sf{ 9IKݾp;sz#%5#ӥ=;gޫ7l!~bM]sӶ}뢝NmEE *P)P< @R.) f)1HEBE0a@EF§aQ0,*63 1QJSs¿?5aAZ|OMXC"U[BsTɩSЇ‚(((((+cM6)ө+u2=?#Cܿ< Ӂ9=MzյŦ#>d/GCjuO#Lww滏B"ow^d.hrJ. 6K pyUW[eygiX БV/z/p St:u;ǖ95d?F ؿk/5Aǧ/ҹlvgJHӧZ/x4ֿ?^?W/Sp=֟?L:mǏ׉l8G(pOk:mǏi<5_b{e/Ng<4æYxx(׾Gi&$O^I?/kq«s-5{6rz"UTJGN?uߩQPPQEQEQEQEVb"SfQU ;e%fzNw~t4mӁ$ucu=wOBwFGp=+]7R6E)c޾i:%ظ9S$uF2UU(;=N4׳}gG֚ ܧ/#J4ƴmG[B{NTSZk'+};A~?zOWl'H=+;Q6˓_jmfI[G;kЌUu(;=^4jd|{ kgA|AeEÏsU-4$_=:{ְ}$c8[Tl%~?7~OWzal_5ߓ1ݚtGEWwQ@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@_m˯P2qwBT:m]Ɇ#5^,˧*;y8ҾdѶc=G]vMcpRmq6{{!8W[r8h0??^[Е'_''JkPܖqQEygxQEQEQEQEQEQEQEQEQEQEQEQEQEUU5R ՙ麔{e.s}j)X5_Ie.WCzƶ-&1gzJFrN9(Ӱ((((((U%tEXtdate:create2022-10-02T14:00:38+00:00 s3%tEXtdate:modify2022-10-02T13:59:19+00:00EFtEXtexif:BitsPerSample8, 8, 8>'tEXtexif:ColorSpace1I!tEXtexif:DateTime2022:10:02 15:59:19tEXtexif:ExifOffset190LtEXtexif:ImageLength128AtõtEXtexif:ImageWidth127ΩtEXtexif:SoftwareGIMP 2.10.30 $tEXtexif:thumbnail:BitsPerSample8, 8, 8 StEXtexif:thumbnail:Compression6epWtEXtexif:thumbnail:ImageLength256Pp0tEXtexif:thumbnail:ImageWidth254f8(tEXtexif:thumbnail:JPEGInterchangeFormat328/tEXtexif:thumbnail:JPEGInterchangeFormatLength5963*tEXtexif:thumbnail:PhotometricInterpretation6 tEXtexif:thumbnail:SamplesPerPixel3ZtEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`IC tEXtunknown1!U|IENDB`vokoscreenNG-3.7.0/src/pictures/player/move.license000066400000000000000000000001471444746353100223740ustar00rootroot00000000000000[license] author= url=https://openclipart.org/detail/310138/cursor-cross-arrows license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/move.png000066400000000000000000000064561444746353100215470ustar00rootroot00000000000000PNG  IHDR,,N~GsBITO pHYsI>I>;tEXtSoftwarewww.inkscape.org<PLTEֵtRNS  !"#$%&'()*+,-./0123456789:;<=>?@ABDEFGHIJKMNPQRSTUVWXYZ\]^_`acdefnoqrsxy|}~ -IDATx[TU+HȪ JTbKVGfYb)6b"h5 n)[@zfc.3O?z2rf|?'cY"۠e,+](@H0d;gEcHvDC3˯`vAK+V,Z?(*Y0@90,ed>͊Rs(8ԦG9D=Ǡ%.q Zuԏ?yzV&of4L;HmrZVeb4M8~OT2ƱU9b.rͅ9|\Z7+iCb-mvRjgqf5b=w*κ;8J%~ V'J*ˉU{k֖xej=VoUMzauX2{" ˓({YD8 $I|U ˛"rn\m%}o6p?V'vml .fjбTco5Y/X ,X,X,X,X,X,X,X,X,X,X,X,XzY ?e~5,c:(|,c5֜ne+f"߆v'lcm|b{ 6K޺w:LW=m;}5W Be`j$XZ!U?L;b!!)>XF*kYq,.uUw3 y>3X LyRɌ`qvh|PT\\;U25]%WR\MW5YYZ\vXHUO5UZ08R$'O&-$%L|f_җ/37M4MQ0e>nU* y*1Mp X>{R\@\%/ɇ|`}\y]V(eҏ%;@|XvMPk־/^ūX #%З_3j^d]^ޣ E+gz[RGm?4%'joasʹWIT~[5AT;ZbDkL*[xhgg@+r+4򵿴zn$دF{Vn-Uyuhas("'] :y^q{W7xrY~0 s߳cҷzz!hhgXUxhڣ⿤k9y٢q[="/W&0T"op@&^>ST~z?yR1\BkV bzte|`=@]y"];IYzOV9Q<`l9'\= :Y$h4k90XY/>˚!>q8uib,bY`!0eşocN4M:D)klcy #4ƚ矯(;6k&6L68Glc]LV?>􁒼)&enD+='6ckó)+Bֱ=SJG,c$7Z+QbE ćs=bbߢ/fi` ,` ,` ,` ,` ,` ,` ,` ,` ,` ,` ,`ϓ_,7X_j VlMٌky Z+Ąi_fH\*3wp972e+)ʎC\f$0VBqyU[ZB[e5e({YSR|eEޚ%T7s9t^ ley_NoPʥUKBduu75wqtRIӲU,5X %ђrd Vf˥2)gM[/L2Ι:%fSV3 S}ٰU$:iVCVAΌ6V &Sx03[OV".Mc@$ʜn e$VG#KQUMpO:JiZfԲTfTk\3 yp(`VzY1췪 ݔG@VVUa(\d+͑/.@9IENDB`vokoscreenNG-3.7.0/src/pictures/player/pause.license000066400000000000000000000001561444746353100225430ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/player/pause.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/pause.odg000066400000000000000000000216241444746353100216750ustar00rootroot00000000000000PKzT.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKzTb|$Thumbnails/thumbnail.pngPNG  IHDRzAlIDATxnZ@Q{&Msru֏"]˧u>O^>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢ﭛ>??myz>}}}Ygn>(胢>(胢>(胢>(胢>(c翑o[޿>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢q> 7o>q\Yʟ5˦.npt[,kԸG <[yZ>vLdjyY\5:=l <՗Ci+:=w^vNam/+~ҭt b^c=p_/ #,Kc~fz> ej$>cf=cyuwNpfYzwwnWx֭{`3Z[NJq,Ku}z/<&}>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(Znl IENDB`PKzTŞWBBmeta.xml 2022-04-27T18:06:242022-04-27T18:43:52PT37M28S7OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKzT settings.xmlZs6_} B: .B&ŨI`d 82t|]W"o;sCJx DmYƨ/X3]$׸V`+:wcdDmC@u ]f\{UR{ J']|"ƍBm'XHE+ {}QFU:0{p_3&{|<)(ձ7`:oO <+<_*i,cmԝO"4 AoAxOn[NO3a9l 7,֊1DiCI@t ՞Ok\Ҹp?G+h?raiRS o6bx_G.|Lf{dS'"9CDȢh8&U]6 8 V92 7`A/` 1|eG3nON $X$9#snճqK9}Jtj|ix`/הi>8c% = LeR[̳#%ra[rœLiډ.%jKdY[b}(^ JJ8枊V6A|aP0px/e#GǚIt+g+9 CJ>>*k0L)r4oFwܷ'H' >r*T@d,Ҽig$3}!l,'cA$òkIDŽQ"@Td?xeEW6bsB:e1M1&S yoy,N %2-ŕ{ *MaDO&QD4K"FK>R Xqu}zuFG!9a1: *Q:>TczNp+Kc{R%i]yKU;n膓v]]W*":"<,ik.@A|{r!Dtp_ L{ 'edN]@₎=;:Bà3$HɅj7h;YVp ӽ 4i*D$@INs"0MŀwE`4=&#Z2r,Z-t{˸m᡻n.l{@%j x3Wm5]Xia!žd0qѰk&\3Ms~FgtXn3n╰l"%`>?C PߘưqN oGh %:|/=Ơ)0aF3ڜB/YJ.E8\& xG@B-%AI4&DysQY+Л!p#ʱεM~fgOÕ T4Wğۈf%m5Kʶ 8M}XcTɮ]wφj! YyHF|wJ`A'HPFC/ewBK{=l/9Fb I jMhvBXr[,kV@@4D+"D ~q׎em![ %x0*be108KQ֒ȉ Nt֋P4D1B-2/]Eߣ?LчdZXņ4ЦW]Y_SQ3~ze,~;nCDKHS 7!n5_Y8lof.*Qj 0JB]U4 B: gkѣQRu@VNŖuR 4FPRqr(%C\}* AʜbCmx4`@t xGB9$N ހ$BB(W- ¾mf;[tyn~CC fJ:t2K,[:sJ'%M8^2]C_KFCJӳ*yz࠺p5hy:O:?IΎ?$B/$yy<|NN ::G*9}x6vb鰾ETWX T}KiӚ JEVck}u+BAtn"+|`sO3XpVƉ]}cV򚓔wVWMSD7xW2maz @q=O{U[WE<pc ӚhpL pxQqsr0zҧ2e鿁~dI7Ciw(&-H!)rֶHJF)-L/]%> YX +,\?OitsޑkOvS*ۧ1"!<%1|5jsxrsdr7_^ `6{Z{0$Soc>0:+u{'5P^}ctXb=Jz<3z(d4<*+OixHKM1*J5u~{vz=/q{[t(eFDuIG~W p^>ʗ䛎]3jcln]ʵ:d^O"u6W緈֟iGe' d|A#bcxWaS$m@I % cN\mՒPv{/NvUBz$8%IrlAOo"G Eh1#QYXrVbڥ[z ߺl*]gNPKt1PKzTConfigurations2/toolpanel/PKzTConfigurations2/progressbar/PKzTConfigurations2/images/Bitmaps/PKzT'Configurations2/accelerator/current.xmlPKPKzTConfigurations2/floater/PKzTConfigurations2/toolbar/PKzTConfigurations2/menubar/PKzTConfigurations2/statusbar/PKzTConfigurations2/popupmenu/PKzTMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG s1'*7Me&U*?y` `p޸88\LKDvr{!p$ZoTww_CBk\ @; V1FE=!|; Q HWF(li0l5^W%e$*m3:LH-S&v8ۄl{<]66{=yT!H4eY'M2(<ƥ)*M'a<;?CxY }IDATh1 @I#B 1c3m z o >N;Ϳ۽lI](RwYsa|U(ݞ# ":{_H>Vo\g'VgYƷ N]&eXIfII*@@nt|(1 2&&GIMP 2.10.122022:04:27 18:46:22  JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( ( (P(P+(\_\_¾Q>)g~ͳZݻwk!1wڕQEW\|Z6ēv?J-{./aG./a_(@WNNw./aG./a_(@WNx_g-wݻc5@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJ %yQEQEQE}C7c+׫~{zQE񟏿m?Z23@eQ@Q@Q@}cc?jW@EPEPEPEPEPmJgڶnˮsUCQ+T?OΏT?O΀>NCQCQ+T?OΏT?O΀3{zs~"lMO6-v9ߥtQEW~>k󋏅>~m۟u@#_X¡Jt¡Jtu*gG*g@'Q_X¡Jt¡Jtu}cc?jQ )] 7ϴ}gٷns@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@Q@B/%tEXtdate:create2022-04-27T18:47:28+02:00S%tEXtdate:modify2022-04-27T18:46:22+02:00DtEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2022:04:27 18:46:224tEXtexif:ImageLength64GtEXtexif:ImageWidth64s tEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/player/player-sidebar.png000066400000000000000000001135411444746353100234760ustar00rootroot00000000000000PNG  IHDR\rfgAMA a cHRMz&u0`:pQ<bKGD pHYs  tIME0%~FuIDATxY\Y~g/=*3HV5d&r06F3IzИ06&F22Ff3F43bɪ"][fW+H=X=|9pι~#Ͽ~?P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ |A(M{g;I)=.!J)RʍwyG>/@Lj>ijI)9[JiI)mBE8<e5Uu S3n[B(.^H0)%R2J)r)%B0)Eq !"4mW!%PBȏ(FOb P_׌( JoE>`z|}w|(A/K)qJ xZ: !;>(#mBRz67wJ W2 %=^pw S؁_+FAƏ5}@.!Ęބ0H&裶O+û-J)2@J)!0B%!nq,,'~$IIQRVWF}mVg%J`)&<'v z|P b9~/)!HiBB-woq\ǽ ;>SDZ+0.G?60 07z@Uv"<7ZGHPF8sϙ%=@uc B6H}? !c$I!Y>Uax$.]Dxs)M)!҂:su C=~U;/9_$gW]{w&]y9`lJ)!q#"))~kqn D>Ar LP>c[q L#|fe%$)j5ΙRP#cOihh3}df[&>PPrhAwq 3f(ӄ3P=Z:*٬Ԙ1 4ɭЙ[صBOr^mKa I/S)G*wr3'{_u]B)%RJ[a1,LPOʲFml;P&{vb)aG fa}tN P.CSJ)]R.H)}آ= PLPBԔfZM~~YyDž^WwF8'㩭|oP]m6oq!'dhiL)ӁLeYtHD\Ϫt P>uܜCmXzK=ۯczl6A%H׏[]a޳sD˗x q{" `kki4M45={VSe [+=6B^"*̛W=׼;GsUMz{bFdM4л^ W+XoZ'!?$AÍ7~oAFc=XMh#7pf#温Wk)!5\sBW=8_RNdzPo&gΜrkk? ?/9!RBY&FH5BH\gFNFyBH褛Y5&mc'|^(B*[tQB3EMwZ⿋h%q #Fc#Q=2G[jy!έFY^)Ԕ>* =F({ZuR?sR~cb} I)SB z=qB `qv]8V{G:yμ+8]u0'-P/p:xvRucHq#c4eYp=ؔ14}IJb>v?X__'ںWv}dZzE0,}ژ0(pPvlv}cMT$$ lF<,x*Ktg}F^uHI$S`8meem"9 +R19NWbu.p@'#I 9xxH) 4'&Z )4 MXHLmRO)zVa6aI!;9/7qQ QJa6R m3J׉{oI9g~5{FߡI@Y m^<}F@gq0 ڷuXavnsssp]W֭[u@qC! !$!0J.2\cI_+V0 >4 =nFȓ8V$IA4M+#uv'2ٷ$MǶ뾾ć9GRNǾvZUk5ZQ(=W4 a.4~~-fԱCE_PHuՅ!"ObݫN:{o>{WH\\cm1DQN/r˺ݻ/9BV뺅@1):ILLuGfW 3?SJƸC6z)@ z]z} 0DFHIb$IE!0TVI#IbKE !$$>$q P%'\z|$ide\.1V'*@ jͬhx2'<LD3_<'Tye|2P2?!P!"MjEH ̾ Ana0 D1$BJ (ej%v RHZ-\v JrY#ì"%! 'Q #i:|ֲ=VY5;J e 5bqJT{pK.,ۅ VQZ)FA)۶csBث$!0Z(cRdc 'frh%Ô 8 céذmcXݸnԲ@-TQ6nݺ׾D*r?2BC߇VgϞvҥNN8H=^v>a^˯4tH>^rqy4"qL+^RxC3# AffzZl6&1YoXXJ@ 0az'(a)M:\UV5<J)4 :,(=J#\<h&(Jp}|8z:eCRH2D` §Arl\0g!CE> u Yb}c&2?*T |>/iteqQ^I$ 0`G nw؃ZS&"!կ b#5 kq߷wt@H kR]'a#Cz=m#I%VW)L5И^ZZZZT.s nbK$ l XR@P%gFO[xyi+K7_o2औDe%8GIPJ$9$+=^`Χr$zJ3+HHY=s~)쵿GMmJh7a 0~G8:~j/N:BZմ &&~ؓFhYkM%(XYkQ(J j:jjԪU*T+ԵP{sQ E;1A'RHR$}G$@I S` P)J4bDB"@ m XR""6^zx M|E,.-B5}BHuݧ,"qgME"wQ#t:s F.lJGzKx惶2_ƥ2`)Nb].ua=Km:DsK WjW>je}SBJS|d,*30H5p%8qmnJ9ސ[ GJ-HjCr)m Z@$hEHF$p' &6<r$pdaVz_'X\Z9~18);je]JM$ ڈt'V>m77}hH SB:g g)q=J=, ڮR2d6 h 9h,|üo< fcFh FQ/}ǣ L#Saq{:- v`\t,DWj 0ˆel(RhH_EWZEI0sD\[ #ύ\i6-N,12,,,`yeR`KUz!;O#)JOz޴uGZӥa W]ʷ]IE%xdW}6Ŕ0&hBGucϬOlׁ*EswwA 9T ~Us(gc[R с4FP1n1Xs8l˂k|v=0\0=0w0S'$tP3cEKm3:;ö꜏j4SbJ !j"Bf9"t$@) ,u`\TT*U+ R n T˰][H򓻱v9H Sv?E)Ћa HEQ"A"Tu B Dy7JFj &^k~㦮MǶ17?kWB6^d|G\edh1s>2# h$G^7nvށG4Wf!+I"Uh 1-MO [p]#&m{Bd>aV2sR34j^g9kcmDfI),J0W"U0AR\XbS2,G&-wrJ B "lmoaqlR(I)]=t+0 tjc{k <@0żBADg#\nl}u}RJʕ+:4T>obffF\.Ds,GF^SS`C)|x$iFǙ^Eo{/Ӌa; N&d`,}I-̭|}rΟ8uԝ>oMsf%zi$ ƍ?@@)rB}j )j5ԪUv] {|߇m ( oa>+n\4I/bzF%~ W.#(QKGwo@*@`sJLH>YJ9]ꮾ=]R&c }K$ looƍ|2>< {@v )fj(ka<TVg{ TG|mR`Xs+ӸLp (SIFQYNXJ,(K*+6ӭ3e=}ut"߫( ^ݍ$ VWW_"cjϞ>} TF`a Oƙ3g0;3aL!5S.UҀ= *3j`T.k%|GTR$(j!J#Ǡ8!6?'B2}E>f ,-0VX__&0??ٹ9LORvؖ8*  T RlCr 8 1Rj08.LHX9 ]8 )OXee& c }}yI)|߇N1< YLMVJ;2#uHA0T0 L))0 r|& (MVRIh׿#GiY 9HW 1 @HdS8!圩J #Ǩ.\?7y=CeݲR ۶1;;=H[p²E?uܹ}ss8{ VNV!o0LRc%8ed&`+a8I [z\B !=BȳE?!mi|BAR0eq44(|8Jw|?r0p ^ׅ@WO+ι"eG |ڠ"e!#|¹sxW7L٨clMIBFP0Q2.Q<BqJs^L=75sJjf9V`aB @)YAc f=/1DBߺu 3p hLu\pKg 8d-RE*#ռB`XjfT+ @XLͯ#rt։@J2#z,D0@'`L W#S=H)LX3g|?g 0RVȔRLOOcgg=.E0Heq#\0$*340P I -:9 1$w_Jee 1Fwb0pBR4aJ)* e1= uA (k9ȈO527LFz $i,,EUne-`濐YJPmNǮ,˲H=Rm`0i==و&=FY,..baq)ZnY)j(ʔ dNz>zz>:UdvbJ@UTV/P' KOqqKD ()z?*]p΅7Tm6 V 0$IyK/ԩShqgHz)av:D y|xYanvv{V ^7KOq8Raq˂JMHA0@z[30eJ!-BHXTN,k+IB^$V$٠NLU`z̊wRzH+_O+`g7bR]HO8ί%(˲PQV17lb{{ [[[Q#vB K0 | ,2z~^JU$4wMqθ,cm1;vP*By;n|~yFjLpq]3%0DEhW^ヒ .^"7bMyhLMmA^AsyqaS:)<|[ؕV1:$4dDWx4;FT ȩa"PtŠmY-rPJcJi@xg´KuY@GMlu]g!v3wxΝ\V͘DݍoGQ4MQ)kr(3?Hvј@!K%0B^c}}fQ2 (b (D*纘Lu !1UPAs.x==t1twa_믿W_}gϞ4(jk sZ/SSSV vLZdzi̶8.\݁^7bF`DDǫ() -(Tk@qk NpȚd̂W?y%UIp?o`~~W>& [^2<ۖf& .3QSLoq#Rfy[o!c^IdtN z4\uɸ(ysJd*=5:WF`LpŶo}};wJEktbnU?r&5֐\sT qUoo8XVN{~*Pe` (z|TUzRl2i |qk'c1?i*r$l;4i3Cy^Vg1e^8{J#Nٶ ڤ4ߤkq$M(mYpl;S&0nM7Ǖ^qjl6!R>l AHE  Ft "UtQ1JP*D*uwՕ1\BUUxg!z^rQ+d>;pF8^z%? @(s' ~ReT*WVn(J q|{NB8m"ԁͣմ"ZPRTQeC @HX )]!z h$zj nvG$fɆت8 (=JixOTxϻK TUSRAVB1==~l1)%6z-h4*kϟ~߰inYq=9'hX+jjv0hsӎfwLAd!3"- 9,%!kYVxuXYY\6A6S<6 Nyt=$ fgg+_LzOr(`0 did 2qlphq`R`0Z m=DVGgeÏr-Aa@<jJ8'Oͧd ,] UuÖSR -#-( !1h!A77%ͮ D^x2`(EZ.`눢([7i .ٳh4{Âf:{Ξ=UI#)Im):gG?18F^̌"3(Kg΄2BT բ݀`hh0"3@)T8Nțᘙmڞ'cܰ4CZuãVBëiXH"}c v3ٳg077iLOOTu6 d5E3 0 Ax$D`Ws:6ٶXӀx&4"F{9 qPVƺOM̙3(܃b+Wޯ~h7֧6]t90ӄ D\T4I0{}W_{ {xwPXbN0 Qq?1֭۸u68XZZӧpS Ұ&!6 Mo]`2LfF!z.J$pKY QLϏ}nB 3. d ժmۨh6m$I۶qiLOO{pRl6K_|vjg/jH@tfk<ʥKa A^w1؎ po{=;oNi}Y!iMwݻwW7%ʬC (\}tPҩDa~uaL4ː)/z8s̍>cf"JIµZ V+ RArΡZ:Qc cܼgg0Jt):IfXґ۶frZͦ"UG?ԩSYqA0I)_ZZ ˫W3j|1*&>|%T-.!Nb=d BEh2B(BN8mu=PJS@v)ϏR!D Y+@:0BQ *i+$2\EV;<{cCVjZBEGJٍыRŌ=K0@)8NSH)<Нϗj5%2kՀ|}"8}4ߤ6I4ʼM)VװMf'Q"`fffฮ`"}t p,,,dC~nR:_k581b!DF/įt! L{(l"IM =ܹs AIWU:}\sZ-|1JUkV^ڄHkk[>;i*p S@SA)adcd2pz)*PA@")nwWXzL@)4p3":W*[a;q*i5?N^})z.n޼BͲUߜl>.;~!MS,ϣR@k[{pmuj6<5Ee a.9wH2WWu*b8v*E8eSܜoȓXʴwv^ un.6,v!ϗ`YV !u!Kc9i ;j PF(r">ru`H+`Wvb'Eef&( Ug6<=T>5S8wHv*Eۆe}E dP:U8SIm E `+Nq?JQ RR, jCa8A%wrAL+~qjf :/qc,ss뷛CQJD.`~&`Ase߇IBmŠo* בznSҘ(;ǣ q\=ܻc`\`vvN{a0q~_KRmiYX#0d4 'm#gb,FypAE|'ǝ=sbp, FTTklJ $In`(a' <8 H0H4std U`VÖK)2ϸtO^3@3E1?B_W7nV¬mna R 333cABE*CG*R!Pm! m}lKK5d1x\3RK*mR+T) z^JlΆrq$<`s{qYg<qFV*"Iq@(E I=`{{ Qp&ßZ-*0 mx~!@իUY\V~Qgۜ):;;ذŅn"<|Ϙa"M!(lrZYk+8 UĨ B %ےVRIXĺqu-:7=۶8));lD6Ƕ!g{|W.f #ЕJSSS{ ae̬o)j NjEf]inާݽW^{ Z uu(զ9NA")Wck^l]`qLuX`krL*83m&(nYJQ][AlۖSJE"qM\ It&O@Xk}tNhWpP.AJQ%='2>L ce HHDqv333ʽ1|p9l$MA:F6G:.h560JæS8[!R~H#)7Aa:.`QS?@7N@cta7&Q.@IBO8NBJDUZ\LЄ[u$`H'&@ل8(> vlzQF2"&H9'e5-[ R2mNQ/.BoPHPͽ0 q`03?#D/)E#a3%D56 U*t-% 3NQu8J6ŌCj<qN::#E@,q$+lK)Oh4b?]F)!%bݲRPdBvt^A4M $ 8m'Ҫ\BNU^]?KËey4`GJT =+v&(t݄9):jq7Ap I"$) 8=8C6a2g Sǔ҈J>-Ȧ @Vi2 Jk놠c D*.\ T*#677AVI8Objj \VWW31i4MakGᩅk`,U $"sO`BBq,c x~%s^nWuEHaQ:`Rf)TPTlkP8 (< YD"!A ?MRڧ-zyq/("u]gA9۶QV8Ρ!a1 C00 IiV a<8"n~uS^%IOd|]L(0=3qGC'f[2r@!@Sp!`DtPBDtbs-89)@[NA!CX=Ĕgs\׽a"WՑ^T cRj5y!0vh`^[[[u\>{wEӕ&XFNȂrdx4C`(iT* ^[[[KORޥv3Vy=ct:+&2|F \*;PրST BTMA0  ֔RƘ|+rV+u?357䧗`ccXMնmJx@@zhۮg჋VcWs :ǃ"9w(G!FRAEqgx X-fnfیBMv>DggP2bDa*lNqPcuv?D%THb%u]XDMqҮ3`bT~)1'ڀ.JϷ(Jŋ&qCKRֹ8M>$DRAÇ?uGz !z{ĊcX!j:\Cʢ̙X\^V?I2L(IL{Shj?w%#)@}Tuc/]b5fA+X[[;Թ "eRáHr܍ 1 J[,Xth=kp X'@JeIEQ8lV}O)mUVz|,8RI9ܲhM!\& bggkkk 33CͪW=)%VVV07; ,Iuj2 Csه9Z&g?6xd9124ASwL>qkun KV淿7-E o^9X__͛7PEWQ" Cf .~,i?'%OnVf3\V*@%A-FYV&%`;2&c]!ı<P*8uJGCn.hyVxPJ1lbnaWi롥d8Fb uѲm?o}:ӻƑ/<\FÿR"A{qۛ?>|iogsuMܼu 0}&0V3Z]=I0N (*}ZZ9,$ˎ)!r(Y"1]皦693<y*m)D#8\\8Pc8߿ӧNeU>x0@dD taj7~%0m#[>яw 1K$XN: Cʟw ˝mF۷qU4dYG(75hE)STE2 QP& n:D,w|8V ծT2s޳mXXX۷o)mV]ӎ>vvvjRq5,D:H7okR@8t7MtJ)Μ=0 ln㓏?V`:&>V|TG;?;8⋠]iU>\^QmWݻ;L v?4`U[/gO9݊ ;Le ʶBpǫ$TEL͈z>V)RBrc/HÕDB]tBkSq G`uQ1uUIgϞ4IqU }pF8/I5uS ^T9@ñB8ˠ16'p8S Gk}2Sh)v%Zk@&8.]FXDaBR"IqZ"%$)ժ](c3Q@)cjH6-f0QØ&X\\DRy䐪ʸ!Y}neY8}4G?˟@SӣQ !'|(Upk6wλba~aW~-Bʕ#NgAMrw!Г A 7"-p HTS ( $!( BzR|@\f&T\W>(|?y I/_W_{ )T=1Ih}f"1^~ׯ]k_͛(U(WT1R7Da^0c~qq9/,d#c\v ~)첌V%p?O o T ĩ \F0mP 9yZ* h5&` v[5yEѐiJJq8B[>V<3HTz=$&I#3TN(cJ33MqYp++˘EZE]+Ɏܽ{| ._vw%TZln8==J?H” dp9ˉHwy a ,X1j,M860vD't61}'_J)'I;[rL55( ^㗿f177M :a&33 66654Tir0`8㪡4gf07;E}m|i?1}z-0 E2TLu=PS')"!*Pq ztdUAvE+OSpH =|uDQ΅!Qv֭?B|B)]2843C6nF/>j~{Ћ0ϙq\ppt:lomja`mR)Z^B\VYKmK Gomm?zޑW2aQՈèjv9AAf2RXHB)^BsQGj,P 8HRu\~ |ts,:ZYp>HHM뺊JصZ|kkk|2fggqXM&>՗ɍ53aME4NIv _$6OjɃ1vW'zGJMBiOHvKT;(uHB %A N"ART-Z&XP=pMRp~e˶i6?BB`)\JiZ~իWmTIZ@3V*R2>>#SNq]q8Fp*B-yc)N{= _ 7oo~|ȱ~I({F`13 "l $zQ|>P pE=%T- " U8(˟?9߽6`B`Y6lq!h4x @f:n u]4UJ}o,..fs]ykʐgYucz)u8GU~<{=5qM\oo~c[  p]Ug1O v~o(jݮk*3\`Ruk` hZG 8"\xQ+++CFCVRN`0Ç>W£H/@FvR(dΐ\S5c@ ,:(1/aP\pBt`Aj8Vcְt;]4Mܻkkkvpl s1eW_rZ*Wml\!L:$o{&I8!"eH͈To~T$q啕vbx\H)vq޽?^v}2[[[/{ŋpɿqR(WJq)U$*)= AK,:S AJ8T*uGTr?$HVIUOCڭ:.>nhnoncggfa0,<=QCa0x{éSPV/JٳgN} (4=1*\ץPQ.Eё+0&>CDaNǢh&;R SFVp`sk [[0ØRJ<|_|~gת~1 ΐS(3~ dB(%Ը2b4C\*1e 7(!wTqB(jj*> @w}{spˁ#eݽ^eK/~aTJ/'D!J)o4=旬 H_J,`0O~z=;8}L6~S\.cei ݮ2eɃf.]OSܸ~=[iIN|N\ѐX^Wq!͉3:liT M%<DK$jHS~+UY*->@s'I$Iq]|Wv>cܼqjX]}9TjΟ^{ gΜ٩j?-vOiU˲{I#JRFmaPXW—_~wbzz:KEvjo0 2Egg׾? J)' &)PE2`87;CMݢe Y*81 5 B { `@M#O" a(Y,!嗸z*>j Dͨ^4M!;;fh6joڵktvtihh^g X+uݰR)GR)m'`9wcwBro[,8qdozv&677je{lnn)_*pycffR n<3j* y7n+W'd#{>| zΎ moΝ;Ǻ= TSJjSSS}5mIO7)cemX9ѵkIz ؠRčF#=K{bS;wzxiz}N}zzt6>|gj x4Rk/lz 8aR$ܸ3Y w?RIMD{z$8ӂij9qy^l´˲:e8ӵm{.c추nin߭T*JXTBiy896DIc۰- }-L/(,Ǎ|1M8+8/G{$R̀c]J!7Ѻ"p_*R)1N$4]7+Jgzzn({D)BH( q]ʂJhbRB~RJGƉu:b8h4EbvvSSSYSOR$u .oroPJK)o%gYVVu:FGy"vNRFR;I,EQd[z&RlHBD1@1,PV+`yyKKKdM>?, c*kBw !˲y RqǎZ&Ϝ9#8iڜt(ooB$t.qhf˲PT O"i_T2ល4zTɷK8JJ]B*tRiYVuݦmoqη}o.//@JA @/IӚ LWksN&58e4 LMMeӡ㘢YVRڶ0BHWGc-˲Zuݦy]׽9g^xaX'N0ƄKk"M4g, ˲PW`EUQ8z&S;5MVZ&\וeIXSJ-jYն,kDz8kmQݳ,kgyy9Ob"N.SJiz>M#SS03w7F'M60j Y}ff&[.<gumٶ=mkY֖y_YuRz(A9VմR$z=<~myO\Rm!D(90N=fCbͳ(\vڔcmۑ뺱8ίs*c!FEz^Ӳ,8N8Ndvy^IT8ov|[6gHMJu~," |sjIBQ498aXɺ,USh4Mx7B !V|="\)&>ZF\OӬ22JR}ԻnHK(5u<Rq5]w%+++$"I)k}pbH) ]H N)8cHoJҳ}1>FL!Ô4[T|ͼ8N֩o0ƶcۜmqvٰm{նVz$miTJㅅRZDUA8 CB0:c~t:yۺ?D߃ Ptc3gp鑶USg:یn71s雖em1ƶ !mJisA)}`-MM!DZ =g/|#qW8< lΝyg ϥ'IcnnΝV g)1yB yjv˶eYX1gc)c[gffKKK]fĉVovpH)Osbee$ UzMiZ1TRjjhhA۶31&cmۉ뺉뺉m²вe]p-MB z/..E`QqF /bVh4l6-8IsN52*)fg5޶m yҶm9O9MuJ闄R[eu<Jm˲n7ztqT*AA7&rEh`yyGZ=_ i )NBanƴϭ䩮_g&םmҖ]u]bfqhzz:=s("$NxË/^J).T*jP4cϭ7E5e\ǁnÖ́LNMC}BBCXs޳,8tKiR,//' O'Vg\x"'In۸w8fW^_|V5ǬJΤ֌ bJQDfm3ƚcivquqqBK)K)r9~饗!H8Q8\t89h4!kR;w!_cjHc42ﻗe3楔2BDqX7moyw\s~^Vwύ/^!!?Gi`0ȂtjAJ񽛩/ԷeY}˲Z{mo{s~fAĮ릾 \ ENs7PJ333/{FmXM_ղ!3Ƥ&2:|G3p_6c;j~T*fgg^!EBBa$8aA`EQ4Mc!4c]~ \%l)J-q333Z{m,Pys~>C/M2^!0a8;inw]ݪjkZyELϙ cmԝz@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ (P@ 0xoM+1I>!n x4RXP"YFAAaڑn~Т =<¹ۧ_W 9aӅ>\Qo?]i|UͲK,us ӱee=);F'md|:Bw%>,-Žj?7Z$dpi/3*d{w9J:"TTtP? >GO@veEiqδG:zxkJ( =2+T3(".NNrIjS݀)EߥZ>ʃTԔ]?S4ݣW' 56Mm#jHAe W[Q̹WM73یyIg3s4 +$ldb3K4NĊ˓rױ|KrI(<#,1Ӓ{X݈_Z4RM[UEacxzF*Z(8D_ʌ u%4R3ΣZ>C5E>>(~w& Xe ZJoُUi+6=UwEV?Zi1\)=J}W%)SxJk_nfcET[gdz]=:5xVjx Xw $t*<[ߍx'IKMN:~ofUjԉC`sWdϲcٮ<],⁞,oiye8Z%c|U/ /^SUA^;Ofl@ƨQ>.56B1RA=2;69qy5zo+R5yrS^O_ڿqo*k8<@PQ@kb?ǰKI??xkyKŌsNsX,e`J jLK+?yz*(tqIH|͏~u׶ -gITQ- rGzjNNuZņnpG@jB3tZ"jfZ"jiNjjm]as/'7V{u jΠ_Yh}VFʳڍ+leYFj9gg=R6Uln@ds!߇`zK$db?>EnâξgZO,y#$#PY]H,'pNa>#7"[(6<d${cJ(ZTX5\yqq+9;|uc}\Bvqw mR&#S+I40H8jP}T !U) zP[Kcg{pNy%\cžV {tg 7K- +hF0 Úb_jv$"Qυnn]BpNzVQ4HIP#ϥdiv29:Hhj5_CrK`#ӱ:'VE*yڴ<6|Kb#5oBm!?#@{u[M[]GjSTWB^>:}A>6U\R lQ)6T(EÔe!N*6Qp><̀"1o*3WCIiT?5츟𯚨6ϰiy#|l<{%1܏ՅROWq78q11]ZǛH \#K"F.{`fmhg \jUZx{IPl"p:vށKsUI8Ñ-,e(kj X-`bGj 5hM>Df 뛃RH:j W2[Ȝ]yu-z'vc 8Ί$,"ͭ'N?QZG&rQԜ@=8{+)^U%=V6Q|}l(EÔڍce(r{RSgzAݜDvZ->>^QnwW<(dHT~3IVc0I   oώq}Z*(Q@}qPQ?dXŊ[7%[ r{cJO.l/?{+bX+4B070W$3@!avs Ҽv"V\q<9_z ir?n6zƽ]!f^ \}Zt`\Wi8ppz^UWRy]<7#7 08(ټZ>\ϸ'hqњRGD̖҉"l0kfǨcT乵`IAͳֶ+_B2]JDَ:~ʘ\GO\6 [:( ( O!%kYmnǖ@n9Wq=||1~tiwo"uߊ2@r~Rx8Qgk?|5ީٵK!unbm,sDIeu<pA񅿑U ?.h$A^}`j-7Pf5o?͖*Pɩ^L ;2K_iOes0[żHd0508G>.4creWmT*+"C]\/Jsa !訿ץz.$zZCde}ڦcCWű'*鳹ab2 ^+HOj0ʐjtЮ~b=7KrzjK =gJ;*֟Xlpk2:oRdW3:&c,Z5\L\ZGeOHn9VH5?ƨZgv#JW%y'Uߍډ\hY,LI*0͞AzGEQEQEoëoXEeVac e+ͼiKKcn3XO|'l{1)G8-zwX>袊KLLd'灏^F$eJV77.޻ V 'TGߐ5su\^F;IRO8sb|W֩[kOl=KZw;U]+6!i&ʅpxڪQrL1@Gx\L}@|gw=w,>r޾-{Zs,$U2A 0 ~56m7S'3FTylP-@&<1\ '~7$oh?€8 Xݵ;Kk^.\FUyiLjW2D$rцj輚][N3x֑q6_P3Kki'C3z(k(ZV$}'xYCc@E$zlxX2뻱E/7J[qypFt?g(4Ԫʰ9d$ur2:~%x-n#Dp۪@ zg=s5ķ4y$39$$󚎊(((((((+W{5Y%ݤ4Q^Ihi;"hڼN~f>۞7m9jȓ 1ؼv>6I-יg(I#^zW@y_ecmncw_;cx>źO>z}θ<{A<#==stP[y^YbI#gbrI'IL((((((((((((((((((((((((((((((((((((((((((@Yx%tEXtdate:create2021-06-21T00:40:56+02:00܈ %tEXtdate:modify2021-06-21T00:40:56+02:000tEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2021:06:19 08:48:37vtEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.123-IENDB`vokoscreenNG-3.7.0/src/pictures/player/player.license000066400000000000000000000001451444746353100227200ustar00rootroot00000000000000[license] author= url=https://openclipart.org/detail/185065/mp3-player-vector license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/player.png000066400000000000000000001207211444746353100220650ustar00rootroot00000000000000PNG  IHDR\rf|iCCPicc(}=H@_[8dNDE EjVL.4$).kŪ "%/)=ZiV鶙JLvE !,cV_.Ƴ9zԜŀH< &^'ڴ +*9I$~A)@,ZXiaV45I⨪xr⬕*qOHN_^:!$EH `#FN}_"B 0ṛ Zq/)_c|;N=Wz_ӟWZ.\Olʮ3,w tz5q pp({ݝ{r|6F cHRMz&u0`:pQ<bKGD pHYs  tIME!zTXtRaw profile type icc8S[! 99N4R HXB2 HkMaaxV%mF4!mz 1"!ENKۗ_cIgֽ`7۝-~SV1(q  5xf{x;~V`MpG ~;nO&4'T1~T ř.gm?s2)IVDvr{o!p$dLm2E.=cN㦕?&bo첹?s$ڝGuyhH!380ډ6C`\XJ9WHܥ~췱s_^r !57YdzIDATxIdG&}6{/+l $2dfR[{]=-#&EN6Hx"eF(Cٺ'{Ȟʬ̬DWb@=| lϞGx{03g{SL1SL1SL1SL1SL1SL1SL1SL1SL1SL1SL1SLq@7?'gϞ|wH) !|)eBiY*"qT2ƄRz'k !c)SO )%۶_&|s~sȲ) )4,+z::.CBm۶2˲2BHJR8NBq_N0,q}g( !@K3B$(:!MsB@-!!!$ R'>4ҔRBzM)QJҾmq\NJRfYr۶y1&C8N1xIERjSJ널 ^R^! eBHhZtHR$zBHR,RJ)<)RFңji3$X0"Ji(K){@@雇"&grYBmےR*-˒jUbLL$|ᇄLJI)煔s%B~^ғTO~U<|i¶m@v݃HB, 1ض ˲׊,F ؑR6 !MBȎyC)m2v,Zi;E,LR14&R*Ǒ7H)%!Ҳ,x)iLߕ(c RKuC RzRSJ)!fQ'aDƹ­[՗_by\6J),frlWBQ133zrmCJ =ц201ضT1&cҲRI)0ZZ6-˲Zeu -ˊ5IRʈPJc۶j&}=x裏?RF)!W)!g)c3:UJ!`9޹DQF)?oEDG%<P-P[q.<σ8BBBJ5F8Q.؎Z $,ۆmpu]XB$;dRB J2}BH1ֳ,8N8NhvhYV@)pvv63 É'>`~*#BJYX5!P1"\~V `1 >BFmf`Vv_ !$8Ȳ I#",S 1Xq8CP}۲ % 4cPB́RXp^rGömE<0,-aعڡ%\E $F&XoD=]M]m#&c,t]7s'226m۱q\upP BK1ؖ ?jB C$I)D9>Qzk? @ezRm&y$Ȳ gQ-a0X ˲a\ׁ*)#%(%,8D\Z/`6!xRP;D2!M"'.J94,+$3"X-ˊ$$#lC"mm(i>j !X*8r j|vv6;np" /G.SB`;,GMX@[9G %)Dc[ BTcc&6Y"Ibt]p!8?5ae1s=J%2lG2WXApT*\.\.J̲,REGU BHݜ-?3jY)})eOJفrv !]fOZ㤎$W^O'{= !W?RV%u]Rߤ܄8,KB;\$q,M!!H B (yΤ$=>@R r@R{R"Y,BHEnoc| /Ѥ~H U6JJl;CB6^*åj$h!p]&0 yo/_c&}RJxÂ|±m۽vI@Vps3(Em{L]׃ kdܹzFQP" H!& ,EYp[RJ fhi,؎ vz.岶MXZPdA6d{KRò,c'8BV b۶w?[+W=qBps?=J0= RJJ.:!cإRYak!x UkpdY8I),CȲ i!BDQ(Tq!BA#a0n! s`{.l G )/4h:#Essl))sY .D@{Ad h+aQ\%e@,˂c;p\/RV}XKI83ΝYxƍwIĉ!x Zg+~tqz: &!#sL[s?7,`H!Tx )$J a)CQ#q8 $AeHSM*i4MTlgl4m!h;h!_Gkϔ!ӐIѶ1BWBE!20 k<ضY\|:x[J)_/.\0 <N Bol3a|Xz-2v R]qk/_O ^v:,RJP]ߓ5A".8\@HBoB@hI q# Da0 5qB%9E" #Q$) i!xι~d\(co!HF% [ھx4a! !m8 ȊiLAg>?w /ٳgofRޞ>'*RYF_x"@h)WUlو#K\n[7^8a~&I1a#OIu+)D/ *o(˾&BB0DsBBK0qR 2Da~~Gutnwlnakc;W ^ Y`OɯXC-HzI>ZKH2%*;`YXM2E%dgIx6o,J4HXU" EJ= JIDm(DC u{uzt{=;ZMl<[j>|χ8F) D&X Zb)EE<Fcv:Z={pb@{?|abٶ0 z!H gUzG7{քDPFp٢$j  ZsU^MF, aE.(ұ^/AaT3In$dH]m\"K' 4E$HY)f6xg8UcԌq#"$I^G$ʶq$I8}Xr-2<}ܺu R׿[*~5= 81@ -yy~;b`:'@6jDž|2R*qW8HXQ28,!,x ܆|f˜܋/ԟ+d+a@fPEP 0g%&@@ #2WC(gkuc-Džxc{ $FQ>db <ːqEn;;;&z2aYv~zo[߫&I^w SN q:3$!rZa<1ʝfF@bB^@RH`bx4Iy\'^qVxHG]|@ $)L '6!S`"j(3OJTc&F< `Ģ"f 9y ~0BP=K, ORĭΡ)16p}} V,+C:eʕ)q߯''~$|A*d ~v1Ȅm i!bq z@`qr+P2b`06Raj&RUĠ'7%}6%p(C%<&PM L6QK$lV$Đ2,\`H],..׿7&._WQr5xo,CLT䦜袠 *І)` I<&L9lDQ FpQbaD '2t@ &'$ DG>51h;#QE D&MeNF0aM$"aS4*A@`}g,0;; ׯulPrWf\ynnnIJ9G~:Wdrp0Hm;WF1ti pP-)Xvj~qd FjD*"@ Ȑhp(QFʂ`Q*ؚP:XƘIGf K eao$IV9B666/V8`JI#@^&z:3*pbj?QQ,M@cYcdS]U0Q` e ApI|C~Qr(QYƱd3x,h4}7!:VWPTneYs~l^ٳ*' 'bPH=@X֮,=Bοg;) 4#p<($J(LKD!57BBPJĀD@@b=cJ 1(^"*42??7|v !:.(efy$֭CJ*m8me2!le򣔂.$A`#52I!aA"+A )9lƅ p^ a R8~s}''Q)Cץels\G3ulU'`+xЧm"C[H$:2KӴ~{p@צBy p艧~J)<ׅZ*YJ+GBPR()bA!)JZDss;;;g8~B'MJIV (`+y*`fC9UKkAraĜ"T5 oo6(rQ-mooO 8Q^BH5;(W0a2Wa\(8=%8q $0ڐb]ShK)˽Dȧq(A a;:}Hl+ cV*p®ϷZ-mKJ(K)O}LpFJPw'w6F"r)C*_GȲ )Lŀ#qsU?B]zgϞZ-"ቲu=K8nc:7Q>D( v3 z`D#%$!I%210 2Ξ򿳳^g8eÇv=p@7@ 8$ 0 R+q VeA Np\rL|p!sP(Z cQc~nwDTJ$I}gggJ{`  }Z9p\w^tpԄi,a \"y$)"aT߆j뻭V aOLә8q (@^|ZAZ )f2fu%/c@ig T|,R"{^Qw?~Jp CQmn1p!R]n \R %߇\W!9Y!iQf LgAH'\KU_+ZU!e1\nGDq\./ NNB8@%Y'm[˨V*<i !jPe [SpDU2?H @Bb j{뭡}t:Z-H)/XuFJ9U$@Q0 L񦌁i @ʁ%d/R!%v-RISАR!eԘD(RH)@)Lm׮]>ReRv4GPBh0wQ@(Ԥ'DVs36PF)TD1-ʠʊ%.4wo㥗^ڵ^~O8痒$Y\^^vܞG8xw8Bq#Ut[)BHmD|fR"1\YĹ"\xq׾ @;iN%8q!ਊÞGl r p` )u Bt{Lq&g2,6JI\ ǶQwgO~Ԃ <HR*@a[ƓU @Ů8&| ta}?˲ʃ#\x] @ R!((`'%t˲lSEt:vHt1vn ؍J* D{rhb m.Fb`aq :8K1%(U\A"q93 pB~ y^h!\u*pR CI*)Ha&e۹[ф3˂*Cr2Z.,)DO$\R,`  mW^AP&`{{nB% *#80'`L,]pql!\n2K0gOU'a&O QġX}\{eB#c!i^ޞGp t 8tL>/yYpS׶tA dFO@/c8R1tgΜU"L#Mj۝#8Ѓ"e8*Pً ?!GY.l?D@7Nn C.3gb,&8Xu~gg,FjiHRV8aSJ8N^-XR'(nY\t q 3  $t4QFZx !CMKfeٔ4N$G?2F4$Rm#D*anK. b7Lf(_kF.oGuq١"BܺuKvr޽y? jKp.Q~?O(=eqs)$SQ^*b!@3g0[(4YȲAqΧqb jPG2$JN \ IdYc%@oZlOH(w^;8FJp&6`J W#PsiZ |N@0`DC$z=cy&!6i7W(b;.8DNANn..0E'  B>Hr15(BỴ̄^N!N2H(;@6r8XqEc C8ib831)HA)E$ mtt= ! '0?"8nJC wl$q4PĪN@LP*3X&.J٥4MZ-! d &&Ò@n,Z+c I V^``&z"Zqn0@޹=&kPJT*4]5766tDZ/eٔ4N2H!dƵGe&Ԩ_݌)WP򼡺a# CPJ_ `LR_i!v9"@Q4M`Sq(@U!S&Xg*0og@+!Xw5 ihZp_Id`?ElHӴ!$S'ZЈP6iDaA0'J!%A&INwY Bto"N8Rܿ~NBPE}!ԕo߾}1 `JSQ, p<>]$ȒuƠ#UN!˅D'˸s bI 1ƦqfiTsI?a:nxе†x e`C FiG!.CS).Q&Љ3sr H(H.CZ zD߇\e{'!}(Oy}d@1PƆ mۆcZPM K4BUd\[qr4!0@/U!,Po InHBQ d=\ljOP*@@b6ei0\ׅy*ȴ4M.CE{N0p]? A˲h4pU}[[[X[[Baؘ9p`L @!6Þ\0FPSF/Mb$QMQH A&%qfđHDYR 9,B^ŋQ  ! ȲEQceeT T`{9yBR$I0aSr(`ղGYAE'AVӺ@Jȵ+1r3g縳)%8ȲO-N<l~}t))x!\g\U%T? X.lzlw7؉2{wr@hlz<10$iǹ᩵xW "TEI) u %ȸ@$Y &K BUEi&tsQIMu/J]vץ[֔N*,c6Q0 CN%} IS$QגNQ8c'Lq JR%U*]BA19v'!"@8ox 6`8<4n ^еNU808C'RIP݂8(h4C^ٕDQ!D#INg*pCN? D2RPBeaЇo\tGщ"&Ajcfgg1??K. >+%nܸ, qp‘afY7t(@(Ҍ#PEC\QʱO=?,o 0$9jH)nM +MӲy8)H2@EL'DIY`!Xp &?VŒa"B<6D RJ.*ؼ$I$iq˧[$@߼8FyVIFmq]0kwg}-L c;*YR]P0n4BS80@ A;0(pG- RȲ AM0SaD;f`O7bՈKt2e 00333F6:KӴ.x1ISL DP`8`R)%\ET,zJ9GE*5&ZHXR8& L 0??nA^!f4N0)#0R) y|߇X\n)N&J$KpƎg$9X)%& ~?%.&"=3? 1Uϼ.(xty p(%GH)ю8anq,_&*Ĺsv Uql<saNv/L QCzр0@x!̍!DFYS*M7 ``;/ dbuRm]vDIR.OeI! k2b5/!%B "H%kp` LSQvӶ<#KE$IRr粔M&( F8| -ޅB=p='? 0S4cUVl2RՀGtni$e)啇֏5&lö 7FDl &pA @$xrR BX<+!D׉{,d2@ #oL$2z6dj?{,V vp+knDdA>0$0PcQ< :9X_]-FZHAӛR vO/9POuQ@'PiĔ@%7*."D{S"a1F '`b!`D1Q6pMz0(ǀ2Adkfn )+v HC@r`&XF20QîF3 w+ܘEӉgMEMT1r|R*cѢD*S FaߔHzR'9P"XnHETaF@CNgEQbp b,R8џu¢M lJ`1aBlM-~_;;;@8SI"#P")*&& HѥeE&#Uuia;T%2X?cj6QEYucq\sA.3"؊Ķ)@BTo㠒O2MpHA<ː,Ci6_Y4vZ-|7/~"W:!,Cǎ8RJJ9 F("4ح77a}Xw|MB_73tStEԊnG Y]DWX?3e.m@&8#f'AZQ`f;$y @BHj$ U%ٸP38'8A'I#I818zl$QBpe);;;XYY^{!z=kj0 <~Bs/g93Tl*[T @ 5AD& M/2HTMS<` )mB@L2ɹAMEds4Kdzzjs^ ,jRfrIaGf+4xvjBnmmNlC.A0e\X861m#_N\YǙP["b\ 8L?s5y_3 #So;= C$[{o:K{ⱟt:K\!ąV}201 H !;q*kz ddA !d.,X% oqw"BBBB .@5%pbcq(S!en{FLC u~k:;N~tcsv%&! &FbM}2ȃ!0I{926v' !t!Z]4dɓ D0DE'}666B0 OUN2#*QU)v*|j_梻29F^R{R1Ue,ԥlH`L B""t  aq')'u~Yauu}HGuDQ4MKeͭ~[$94R;yԟqâcwcsse)Z&vj^{Ri>y!q׳;#? @`TTbmqԓ*~p=1)0A]X\\,I)8KdlF#F@SF@ PJb%Mܿ`$x?lll MS `BLI>F*-x8y0= e۶BMBЉfcc{{rs`)e)įc@eqDU7?u+p20 a{{Y|Dq|^ ÇHB7I??[O2&$-ay꽐POL*]E|rGL`&O"c)Ȳߵ'/!865;sٞ >HYyYu/M4&B|?a x^y > [[[{~a333K%J%<8L^$Q:|v:xaG1hlP\[[[q<;!DRgkL"l'xE:˪sjdX Q}Cη[\믿saffrR u!B MQ0vwAC9\kggn433s>(fN &ܖR%Ä:+0'ZF^'YK|j W\spYu]cZ&HvowGa<V j@D~R''E#8|yp RP@ؾoHqv4MO+Wb~~>/Rbbє mp]F x7q//s"p]:$&m~¤H&8oK9iPق/ŋXZZB^y5s?:Ƣ`w)Mri18˲PTPqy[o?DZnNu9ι\^ic@ 8GU(P]Hjŗd* j33m4Po4(U; yEuTK*Np۶PQ<$AE, z8{k5cii >(PBt eRDa@J))*PrP ֓d9gq9jqHGZ~q!D>YϜV C%'iaY.Ξ;_z W7aDI0)$(~ {ュ"piI^onʢ]^]׮ava%]d\Ɲĕr/]!+KKKU.buc5/k/7nקaN^U*%|b>(|0d:ks T}&?!p"Ϝyc<$s]:v8*K̢l6ZwwXw]mz= $I.1%&p#`n(lW1*^oX:{N1̹@daL,KeRZI)%\E\, !6`bnno2 в,lnn C `1Is0tR $2\7J1htqizrJ)1So⥋X<jbFu=FHz=t`=6Rk(ywg r8,lFzB/NS:41 Bz*zCtlByn^y T*e\"Μ9Duu τsԪU>4}D CʼnnHiHqKg!c|# 5.$<8 !&0@B _*t2K%IԄ<WO~Xǭۊ 54N;m?X$b"8q?'Fo? OYͺ;EB'jt͋SF bH,٥?! Be\pP[Ous1q-aDď *̾Qm۸zㇿFV;T( 뺳y)NO&c }PPXHaF|,ých@A0o@bb0F'^%3 !PV/# C,//֭[(%{tP,aXƄt1݄>o@3,.\.8"0T3iMF߮6HA&Hq=JچfggꫯOOpM$IRp6^vN!Ăbiuusb0`T[v:&2 o_+̙3cll)&2F?#yDJM@P^o˲wyΝ*,˂8O<&TzRV,[ڪ|Zx F@ V-Pm.|3;79]ڏz Lt.,.<{}(d2H/^|Ea}>8N>T0XI ;cV¤Î[埧wj΢\>(߼~Aanq#BA^-yׅzT+(., 6^~?O1VWh4zb$^~ߌ |DҨHt sJVhy\ `fgjquu e6ݿtt-@MlXVYs8wΞJ`QMxqc j~O4f7Lvκ4&ҁ%CL*) 20qg\/=[)fߙ34:~>20DƳ!1_ 1J%+/{o&|<%x]Kp|@.|vh4sҳA(vL*Zn)PH@.DZ*Pa >||'orgu5 1ӷGs7翽?/s.ZPF4fT^e H6775ܽ{wn#\x eA8|`nn/_ƛo_;Cn^Ni !ί_}Uku1@0PLA*am݀ }\}82(Rtv~N^ .C\/_B'_%0@V/@GEiX:{/__WH >K0PH 9 *NJ>1E,J!FaGFӂMI]/T]q2Hyᅬo 666P(c<.]jFu8t_c}$Z 7X\H,)=\zRp|gh5 . ~TtRT*=wr9<' PJT*/QP+'I/@GjA>q;c; XڞA? %{߻/J ,/ba`ckoBmghBJ bBm՗*HTB9~۲q]B?ŧ|G,c A "a4Mi0H@ #i0!:RdWԟ;(Zݍao7u+|<P,..P1nܹ} A?Pf(|7瞦i';t::=Nʲ +W/ӅJk1g\IT\Kd⊃L,@y4`.Z#E%+ ~ &ݻwqu>գ1tFc4۷ vuc*Pe>,BZL~a@D,MӋaݻ7QsfNf'U4` LQJ|燵Grͣ鴱O?%GTBV=ZÇH u(d CEhA6)%ޝ;u&>|8u11O AY(}_5ϻ7aYZ8FeHMӴ=Q݂&]vؔ`2ȬQ.QL}TeQwyE߿5\8N>(*(%]߬0xHõܻwkkBMq0?7EX!"<KKK8+We*d<~&kmmL~$IB8v>JLQ01F(P J A1~[7ob}}/x WB#cl_ j"@"PĠv`Z Clacs^fgga[;;ȒD]ܟF) Jxe !ɏ(ˍF 0Alc{YHu`)%(!,BG,7 @ ?Dmu&C5vH~ʐRx_J+UDq-ZMԪUԪUa~~t:*RQTr#`+T*x3@EȒR^ץ+ƽ|1C'; 5\(cl,O=J`D=QYwqcgkznޜO$Wj{ ?'u)vvi^}8\}/8WJt%S0IKrEsTى$P@@Qlh>w!u3;u1vvvzpl]GK6~^C!5y M})R²,$Ivn8NeT*qmh6t:y۶ Ƕa;J|Djfn ι9Eʊ)fff`[,7ՓT64 @Lvz'+d[ ]*f&{RPcPr$I$I!V(sn=T1@(r$a`\~e.M@?~8\Rc(>fggh4y,yZ>+=, ɳSAuQ1h7Ƅ`yGeD o~$ 6\Jy^11U'VBȐ RE:&*4׬` ;B@pZFT-f3gq]$I !$ UO&CH(l#e̠;0!e߇X4C^;;;X\\8^RZ 8  #J"dPJ\uZP !Ю5@@plj5CK0bqqZQAJ(5j?[',H@oӟs9}tO}\Ge47>5i4hZF:ioy  T!vCJ ~&nW%\Jloo}jq^ͨJ>%E},CE@JWŋ1;7 @m9NaD#V>#3rݐ1r9uFhQ,CK+~^y9ٹ"_HX,5`v0Tqg!3P'N4&&PJw%`Pҫ*婃rloekR"ܷoݷZ-Wh8wΝ;EE\QQ!vOq&`ănzgΠZjף=EI*11O~D9`_ݧcBJ)#h@+FN Ȳ nƍ7'BZ-lnm嫽ϲzH{҇)knM8/ý|tP 2t\É' 1q%$tC7* _}U򻼼]q""Ybnn^~?ښvzy"kI`xBdi.^z  %0ѣ@nN'<J)M@dYֈc` P+ ܅v8pplXӞ׶(l6q@Jaee;;C=^dg'?^tx!8&{1㜣ŋQ.Ȳth%]Ejc645'}]I1*pP#p&.+j"PeB)p۶:u\y9s PJ╗f0@ޅYM1c ƿ_# n~l\_,4n߾}'zxRBȎr@K``o H9(}H ;ۊlEMlnnbD^$S}`(xw$xoHCwO^Bv`ťm(aL@(ˤkOE,gYv-CO& U`( #t'_NGdibcc[hyl @qR@c0k|`6=.]'Ek(/"%BP ?{B8v|sVWWJ&9imm z.OE888%ƽ>l͛7l "< ʁWdRx˗1^I[[[ +x17(9 ;8j2#6!$RtWa&VE֮Bbss<6sb0ދl9 !>[8w<~7u%Hxe1}gϟOS\r5]h4.4j~J^s] Rʙ0 BNt'J *7Q6fc2G)ÇD\R V | 2rפ~=9H>qwywW_~7omR/X:{._/.cV^B}$q]vv=|[Xȥ9I^8FL<I)3FLdPd4Zf DJxQy#../2wGzI̩VJ%xUK(6z> Uu"uQ><׃(yPRuh~wDp ?~lAA)͓cR 0o&uSRfCqDa”@`Vkkkl.$7ku] =D= EZZ)Uٰs"cp\{ `/=I~BVWq=8s(80Qل777fN<: !y O# ,ac2tD^OV[~T8(ߜdٰ+**a߿75L D2RÇsܿCAQ dRʗ8p-+ @ 7Yfc"M7e{vvv`OD 2JsJj *n+ .t@S8IbPtmCƅ$I2?x(?mf!Neׂ  /h:u|}6~w{LiXgYEpln+3f$T.cgg_\FFҬr=`^mmn3`mjjGׯceyZ_Te: ԉBHHrPB( f<<)4GGƃjrq7/<'1 >.f/Qy6^T;ԪUixg'7>7?#ܿ(kE $I!|<8M`$GSt,K3X:8u<2nmo/,ZmWQ~y\^τ%zJ 뺰BJ.sc~_#MS8ڥ4` `$IR,~)@Q0#J1@!!h6nB)JĿanV--8ܽs1ի(jʆ=i8`\mcffF*wv BA_}R8Ĝ4aN"q{Ϸ̉3%8˩H(B J~hQ}gg*Tzض !޹^|%?]g(4m sΩߒʒnY* GJe|Go~#{ÁI%緶8SAz펔2|TQkLqz2[9~b{{[U=*纪o8 ի``9:&@YϣT*! U,El[W6&mܹs <騍~:(p>+O^*?ak77J&R$q =y_|ry_6+taUluћ$_~ u9k~LTy(oeB!Ӷ,WQk<\ׅG~/~Pcr1t]7oVV˜ ~q*=BȐ0qEX:03"DaVxUN qBzRbcsAHIH\婾B7b6 @ƹs9LqjJ? ͋V.~D0J)2αVKK`W(KG͛7akVvOgϞ[ 1:k$Y~s% (݈ۼ2}XYY'o!㺻1=mX(vMr-I pjc4ؐH"WLXڊNB0(ȲLeeܹ??Ï~#˘tqRbDeHfHbbQy$ ܾO>~̬g {E: (K)RJFy?W85 0y`W0:rB^U7HQPJf&ܿsUz)&sp}m /z ׮]WH8r ln[^Ms\v})_Rgds݂ @O1*!c9!$R t &-v!0Dy>(L$!c Qbss7oTFQqo"וq^|E~sƪj±G tuf__}S y1# CAJRp6 3s@akZ Í&e q!.~b}}{C)v:k|{˗177r;: } (cm7_~Ǎ]hp/%= N pSJ!G s3:Z2Αf*VEYynf}cmmocuulK:N?2?իW^j<]à"qcU|$[[u\~~ 0lsIeqד4@0<$0E-md$I,BE*&MAa`sc(=cF lnlhҥK⋘GVC\FT݇!bơ.Gn6;w`mui\~(2t]dj%/1N `XW+e`@ ͼ\uEȴ!cT)%6CaZL]Nn~-fffgb~~zɃȃ+Oeu<|;;;:$>H<\Xt~e'.!Ji*c#R¶mX=$MH!Dv>G#`w=<P$$It {JT>\ǁ8C]$$I?:.ڭVoрG]Y[l^9/N |[8h@[٥JkG W17Rz@)8OF)`n0p <:l" C!H;o-崡eYn<rRX9;;63 UՀ-XO~О)N#t}AsСE)|a^gin1-ehX[]){MIwl6\ER fffP133؄<|Yz΢\.òo|:P$u &Zv,-.u]loo;=6Ru0RYZ'yQ,%s,Μ9R?cIqJ){fM.#6 008,W*aks͝HNX__߳J<Yh&Fl& 63^ط8NNJ_H)>y<8UwҨ=Bݬ~`қ O Ȳ `scyT20#ثHކL$ !>h4PQPT8D7Džrc<^G r]e~_I)O2Bd.!Sp`±m4"ߟ1sX__Ǎ7ՕAoSEo#]Pnn3bhu6ʾ_>04RTJٖRvywos8i8e9Om6*n ( - m~T4=S[Qw&^ ru|%}rr9׹)! E&$(9KJRP>NQrR'nhh1;'b*\θm&U"*$ќKM/Z}EiI6(c㺊8>\M tX!M9oGJ 6!SJRuntQz~q FV6`#*@1Jdø9yhC梾y62J$yPzUJO ml-PuY,Mh?ݜ$BPCJ闄/܅;=$ `^! p/ 6'f[F?g7Yd/邝E{Mq5B ]@KOdu:o\p&4EHD2i*ȠȿEYp7wM{5N#p&?@EQ߬mgE4M$ ,-&Z;0bVya8$_eY9Q xK Ӯ9Fi<:Nqe"]lr1v jߑRޗR~#d )|w p @@yh)i7F@q$b/N8EF_ߋ"(*ѦTezsMIbܽBQ) zR)u)D!*TIq @b00{z&YJ{Y]m835ąMQQ}hDs"t]zBWq×`i},KSpCTZb9.\BܑR5oJ)۶#RƧQN#oiUd`I`Gc7v 6Јf]of->wSazuQnVv&r._L5CA?BSJ !_'Iuϧ>q % ) 8wi:aT*hȲP>DžɚQ|9LSTr[joRyO)U.Oۆ_*(iKq0W=JY4t ʉK)S!ĦmۢT*y 7zP@ B\])(>z}a<Ξ=uloob4͓afgg177\7}~nmgV[ - c R Z j3**hQ %=pi*R<(GKT w/_MN#4M%!O)5qJ!ÔҫdRf>Q)</_FɛJv18yXXX077J\.cDyS׎RVShv} ) ] 0Mea_noo{)eB)e1av+j;'~ފ$IYH Y q]ͩޅh4kq|7y{颭L$۶~nDxӊk4vu0BPS]M0n=cvSe"ϹkC`V48j =3}#LJn !mnTZ]ZZ˗/?q֭[9^*a6::6779e̙3, j[[[zc9&~]kL4ShE>*mۆ336vO#ee\EQwmP ˲RNZZ+hI17%(˲!DHu)N1&F>!w${SBpGՔVZ(E )B0PV)v4R-۶m˲mrٳg)vTJ@ 3J)(RJb*z=)W* e;q$107F_" L*,s!D@)RjYVdYֲ8 _Nqrpj Jo9?s]B$G:@׶U6[!hht?.޾uY .8}.!̲eY̶۶W^o{즘 ZÇdqqQ>x?I_5ͶAgeۨh?mY8D%.6.2-2HHcRS˲FoXM18⢙ֶ:bYgBIvQ8zׅ""&.XBL;1"9h:m!e/Aг,P\*)&V{^x!_?km?h aV5yy]Ʉ*P`51v_ߤiM˲l˲8ۥR :=S>j7nIiͲ)a0ޟy!9O̲,f9Nb[rT/?sb )_|;ݮq\'3ѭB)%m۶?VٳӼ){L `O祔!d1v'/SL1SL1SL1SL1SL1SL1SL1SL1SL1SL1SL1SL1'Ӂ.!jeXIfII*nt|(1 2GIMP 2.10.122021:06:04 00:17:02 W JFIFC    $.' ",#(7),01444'9=82<.342C  2!!22222222222222222222222222222222222222222222222222" }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr $4%&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ?(((|?}3I"f8rs5?Av"Qmbn2ʘ>UNp?<Ί7.WټRe'ej`1!80m'[g|at(Y>fS8V]&C v1Vo~$jZ>%}RI?6؎g9"<Š9㕸8tapVX# }@پ(Ɛqm9DoR֡k-Xm̈́LS Y-g e1o(|&=ow}jAm8dNຳsגzAK²aڸoFNAQo99cbO wȣB+: WZ/2.3Lſ0h)?>{F(r@-ޕVΩbmR[ۋg8<|$>mo4B?.VdRC =(Q@Q@Q@Q@Q@Q@}3ų?zK2ILEelsx"=yAb1->hގ1KnWjG^0\@Ր~uV>kVOikUc_YAQGˈe)UAMta*Ҳf, OVQGTNa+)$tA]t: XJ{&lҏPҹ>3.Jp.w0nN2+J*7Hu&y?YfkD UDd;R% s^om;[rq(s];e=x~5YǢ鄢{Dde bs'88OH( ( ( ( ( ( %^E\uoVӼ}g7}1vW\ېe?-CkgS#hxmj?~?&tq/(C4OH?Jd}2'QXJVJnhJ*tK ֬%WNa+)İa*UIRǠi3+]#[Ҵ4'|hޓ:0h=+?_5XmΉ ͞9b Ōix3$jWm0һ[ ϲ}a l"ngw8ڃ9xʊ((((((# !prUUusC Umڭ#;[MDӟʼ{Ŋ>l@uߦܯmSV_LH.WBԧxnJGjWn\6ߺE)Ud)Wc<J*tK ֬%WNa+)İa85])yV~+;]W#2ӳvji&hV-jն8 ƊKZ\ǝ~~'RC?3]? ᜖1wyf@ZFUY'nQq)RvZ k'xc޻sװ53铹U[MGo泸F #ҩ0(((((V2X7۳Ix kQ%3H% S®[N~Λ}T/6!`<^Utgp1ˊQ[Kls*_t}*׃[nc=$ӊP<8?{yT/33ڤ%Ne: e: İ:T SdXNa*u YH%SW.֮x \iNQosΩT$e)Tq\c߳^ c.¥Ne?jz>zX|2{>̉:ՄE_ʦm#R&shX .;xҩ9Z̹XmTai$0rwJ^C,kgVU`VRީGo?u;?Ƭ{Nkz_̎XjίdupU xrk.W 1oj"]־&x24zOzn:mh/2\s*^q׍WО4.|M<.vo~Y "{Š((((((`;cXP"0ee<W2΍-u|8UA>Pʹ_Mzi}厥}m.0G,a%unlxKx^n~Y[h@ Mm~Du*6m/*Bd?;]dΖ<*Mp7^+fVI704̝oV=u;U__7f?ֽ?Z\ni5R&m<2C>ѐ8)'_15_4*s ~T@Rmm}Ameb /ȯa:g#k.S˞ ) e8#q^B9ˋ)ٕb2#5>3ex\@<֠ :( ( ( ( ( (>CwÛsI,RǿxL9Z%^E\ug0} O\vEtΜנḠ\KOLVod- mjmmvyXR ~= kqs"A{ N彼aQeA aBp*;ʠE]*h V4s:T:Tڄ0㍥jv:oy ~Yo}oѰ9ļko />[}}J<2Oq@+mƾ 뎑 uzz+@E;x".e4/.>]q=r$k=r>d#Jt }Mh0[{[9])۵br9zEQEQEQEQEQEJO{ׄ HTݤ!B#|tON`yq@k'ĉFj'E<vիѷm{h6h@鶿j"9owJ37I]|bX|y[[A܋bysWjwCNѯ/O6cgmN 'eayk9$uht$v[w)늩s#r :IO0zz$5Sgw 'lO3_Gkz$Z (< k7͋I Z@;P𒣾q_+_ۋmR0#րIkVW/q^B$Ծ<4sE;7+32 O %Wܬz}R9U%K &uihf"@3 6EQEQEQEQEQEA>5ӟ48Q_/$X$*̒*fJz}(J] >)wF{@-՛V\62mѲ6|*I+%GiT{ xƅ= nw#zLır}[$b!KgqWENOWdnUV/kR-m'f恘^CHdt׿x^k_[* \ѥ׵-I0yX +Q$H0GP&Hnfw ұ8׷|jDt󿠯Cz"Nu>JP= MGZBγ權.s}`w}|$qhIczᐓ},Q43h5|#r}^'&jQu QV}6vqp"AbhX_%6Q{kwĺV>XPcd[kouogwo OoY7@ﰟc Z,j0kc,{rH<wS>W^M]7T༱ypƫT2[w'sfAl`5QEQEQEQEQE5^[>ˋyXe9_cÃ_W֞O<1aYq`n}~r@;1ʃKIH}:/cۭJ;2+kZ-_fo&J7* _1ɔg@;) ,j[k/应cð+pCy?^}@!-xkwJ%{Apr?H,58]G =? zTw:2PM$2MBշIO'z uK`5buK3@_)_r[^CmR>uj؜گXG+׉jF^-eJ2+|\^_Yf^ɫjʧGR(sPi8m%p{ V^8Cݛ'kxѮ( AzRA[9>Һk4@m#&z_Agۃ9+ҍ影 䪮 0UQjki}Bo%ےp '@寂;1+V r8 *fF ʒNqX!I<(Ksrk<-Bw4lɴt [4?"yo%=袀 ( ( ( ( ?/xGѧF|V4a>Vrr8sF 8o9dc16=ӴhkMI ΍#9ݴrOpU; $@q͹V]dZj*c@:Łt>^ Z/W4y~5JbYO0 K"͗-KՉҽ^$G oan{s%Dl>^ѳrGqc$8X1i#f{_dbnrG|SCdG mJ3{좏 QGønRUGPYTU pzgPla&1>^FIǡ>kͥ& %e*1(U^w+'׀SD%L֋*ʶЉqqКY]Jz$(>#WHf 5b?.o  1UtPAN?+Cׇ@ WʇkЯ^!E{41c*hcBT?]x_hBT?]x}?'_hBT?Uxm?*CSGʿQU4PH?ک#eOj(>"|\i_a_#1yPEPEPT 9%tEXtdate:create2021-06-13T06:45:18+02:00_%tEXtdate:modify2021-06-13T06:45:18+02:00/EtEXtexif:BitsPerSample8, 8, 8>'!tEXtexif:DateTime2021:06:04 00:17:02< tEXtexif:ImageLength256,tEXtexif:ImageWidth2568֡tEXtexif:SoftwareGIMP 2.10.123-tEXticc:copyrightPublic Domain1["tEXticc:descriptionGIMP built-in sRGBLgAtEXticc:manufacturerGIMPLtEXticc:modelsRGB[`ICIENDB`vokoscreenNG-3.7.0/src/pictures/player/restore.license000066400000000000000000000001611444746353100231050ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/player/restore.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/restore.odg000066400000000000000000000224021444746353100222360ustar00rootroot00000000000000PK!7N.++mimetypeapplication/vnd.oasis.opendocument.graphicsPK!7N2`Thumbnails/thumbnail.pngPNG  IHDRzAIDATxjJE^04r"滬; &E??~lM}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAeLooo_.ߕZ"|ǘ>x|ߤ>Lzx8Ű>Lb8xe^&dy}8>L2#`}|6!n.k  f(3exX_2إ5(㸽xej>\bWǥWA{Jڥ[nc* CTW7[T}\3)e(x8rB8T>}6g& 0 #r}5r}eFLȉa>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(씷^IENDB`PK!7N>AAmeta.xml 2019-01-23T20:45:552019-01-23T21:17:02PT29M4S3OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PK!7N settings.xmlZ[s6~0}h&nl1^v%,C}%C2,1,5qۙ2 }\WxFZBxwg`]~3}!uqɑr /o."Fp / LCD^wg dyWX8?W(aԐ!.H>pw.KNE]O)}Z-(^Ҵ<\jKP< ?8F}F{C+t.R17@ >_5C+  /:}" ooŷ@ E*V) ?Xן·o"[~<2O Z!υJHeS$Fq PWgDŷ؃Q 9o1Jm-' PŒ#|x ~ELty=!WXLҥ.G.x7q 9]ƀח>=='@.lr@.`o4-6oآ~<})['nҕgiDǢ ա`vhbVTWzHk~N>#] x/2yf<8T ǵ)-^qzFr wuL%ΡI @ ݈":c R5%Fw *]QrmM"|zg 勌qD!JbW.g¡;yMQvȯ9u3'Yi)6A6Ⱦ5hq_=}s [et4Li~yXKK=sdmY/ݰI\Uɫ~FߪiF tƤSsV&Tۋ Z(DZiUp!~\5#9ԜBG}*'Cm8jFצI\u؎_gV%ij`V}pL2{q3S_Y# 4۪zpXi|MR'ISG@x1O2;!L B|$:,o&)z>/PK!p$PK!7N content.xmlYێ6}W vhs黦%XWKe<+pPљa8Cht0|G%BC(8%B(y}8|N "tuU vucs.^;(l̥Q]!*b}hS-Mk.(YA}{ 9%Z=`)CDY9O뗌e찳hZt"ƣi KyR z*ⱀLMLz1?sF"eQ:CMe4H&Szm{g8Chz\lNi hf(u)qGPEWLu TɶNP,ʝӢz0xE5#ځ҉3SԟQ3 1mz{ڤӮw4ҵo_4uxH8Z Q! /*=ņLlo`xXaݿPZfs;vdˆ9E+\ǒVR|U۰rƢSZY*^A7+9o ?w}'Q=^{:t|>-wpA0 x@.OSw=ԣYO#C#;o͑[ڃ8C\?eV}ܫFwnohf`W{}ppK')UOR{Q'fFC@eB7I~-)FE#_ogwѩ2uI^fDT{tw|M:5ymK_yv̎id݀TS*zQ 8Y,_䈘^UoqG.`bPN+ڪ^)* IpJ~|R{-_;DF@~b3C*)w JĸK|ߺ+]wnPK֞1PK!7NConfigurations2/toolpanel/PK!7NConfigurations2/progressbar/PK!7NConfigurations2/images/Bitmaps/PK!7N'Configurations2/accelerator/current.xmlPKPK!7NConfigurations2/floater/PK!7NConfigurations2/menubar/PK!7NConfigurations2/toolbar/PK!7NConfigurations2/statusbar/PK!7NConfigurations2/popupmenu/PK!7NMETA-INF/manifest.xmln }{`iBI{''AT/&2ir0lqǚVjjq|/~BB"y =Y(J&IT$-}lzy%ݳ-m /Sƨ.jBF+ ~dEz_i֖AQ_3C>SݲܱI-cc3&!HqwMD0ՅGgutet9^G,m, B;ϱMG sAAameta.xmlPK!7N!p$ settings.xmlPK!7N5 G content.xmlPK!7N֞1 styles.xmlPK!7NGConfigurations2/toolpanel/PK!7NConfigurations2/progressbar/PK!7NConfigurations2/images/Bitmaps/PK!7N'Configurations2/accelerator/current.xmlPK!7NMConfigurations2/floater/PK!7NConfigurations2/menubar/PK!7NConfigurations2/toolbar/PK!7NConfigurations2/statusbar/PK!7N'Configurations2/popupmenu/PK!7Nӷ_META-INF/manifest.xmlPK6 vokoscreenNG-3.7.0/src/pictures/player/restore.png000066400000000000000000000126041444746353100222540ustar00rootroot00000000000000PNG  IHDR  !l pHYs+6IDATxt׹,& d(* 4ۘb'{/$DK*DG$$!ӱMj,/Z5v;3wNNp`w{άٳgٴiӰÇ3ţSNGҼʗ/k m LXF*2#B}Q$(tGݺu $5h VŐ!CSxyy=~25(Ulٲ F5k׮WŎ;SM<|jvN0ԫWAvnݺuF\F#99 5(9,XΝ;Q&ڶmk5(,aaaBjը DTŀ"v?Æ /IMQ@U9@U*5Ѿ}\  BjBM赦PjCǸW^yGeNM (% ._U!5q@@U&ݻ@M * DDUh* D~Gk>4hr SgX٫سgO?-U_ 5(UѧOh;RjB&,x7nB;efP~jQYh>j.]$SWsUHMqDTYj3\{CXj ٛ&rI&ߨ*&޽[@PUѫW}rDVEӦMVCUPl>%_eo@Bٛ&h*dn45kּ" XUDU" ^KT7AM (rE'_* DG^+? 0ҥKǔ*&]V@[&Q@UѲeܒTիWQt$UAM)rUV9ũ jNȣIIIEՄ\z"{EUR8::^9|p+Wh! 1W]PUk&7#(@=] @PhUn:˴*&\HMKSRRիwD@(U!_t| RpE'{9h5nK.5-5jZ?=tQX\mڴL/cjA71wܿhِc.l,EIMMm۶m3ݻd.eN(yyy5Kh6'm忇 @Veȑzoذa$#( yr̘1K QD @ @(Q@P(FJӧOhL_>}zAzڵ aaa;@SL)NxI .4߿c…z굏П f,XǏWf͚y?ۣPѯ_=@_>ARf04iП 0Ο?0'SΛ7O X(HM6ZѳgX@]ƤDqQ"Q ܹs.}+XhXB[@((JE/كxQ>/t2T͚5 wIvaQ ٳP6)-!œ0dIҭ[L1mڴ/ϖUD0V*P *|^$@=(Q ̙3n" s"]&0-20N>\k0/^A@@>aQAؕ(LqѥKd.@DR"%KQF```,IhMêU%yeI0@ *AJm)D0A KV00|}}S!ߋgjQ Qhذ%ER֭{w} (~ڃ@CD{ҤIg͚5Y&CǢP6)=r0d)RCh߾f͚]@PaHaȒDQzW\qD< $4j" eSoaГ (xQ.*ذaH=À J' yqZ^ CT6=ÇWVքQky[CԚ0 ZF)شi0-CLwqq9 ^!oJ%"""M5 àVAIJns!oJ ERj4Iؿ7ĉ'ɽm.EP0VPP$7oZjՇW^(,8~x{YR- "._RB[lyÞawh۶mYzƊ+~4C!!K{!څ @¸vZ]DAA( eS$UTydka!JQ!um) oa\=Y70l$1BrALV<]m۶ʲ0.6mdAYV°(Znռy,1,JAal߾}5a `]իU0v10XZrZqرr\(a|W;shhԝ;w\ׯ.D!="GvDƚ5kQk׮//* Ю0Ν;"K)YJ#e!~+EgϞuM.I @&ER$)0G) a7T0M7nX@ƙ3gdÜ0 " )IC݌ @nݺErcݯ֨Q_D֬Y3`* v0 &aX00P @(QD(QD (WBZ\*UzbV+Q)6l)/obQy]`@@mҪUڵkߒ9e4EM7nBOOt-[n\֩Sfzz)W6(NNN333SΥ=2\و*?4a„˯ܹ+Y$fyݻS&&&22(?52MkFnnnˤ$&*MЕDAM&L"''Urrr#ɌjVAO٫*QP}Hvv}6ˆ! !\M(<}T|=#(@5W#Es"T` Ӫ; rrC"9NU aaa&_`&ds?yCOMMKDDKQyYU!cڌ( R;PdDh&Jr"y;U(@5!KK^}bdP"9qDCy9# &Vȇ@@MYiii^FiD*f…,]WELLLoFQk"88x~S"BDGGaPfѣ>aFQXhXkׄd@ QV>*9fQ5a{ePr_KQPTŋ?EM(={c&qML2eRrB+eF!K,yߖ5!/_UP"رccfYM=Y*{Tj@@M/ҏW՟B@Mȭ[j DDU!*v*3(5aS% y[qf Q Xta?WAU QMބk9! (C-[G{"22r3( kbɳɷS"Bڵk 3(0[]{K3PS٫*PVEJJ_FFF[#(j@;v fFX&pn8UOU ˗/͛7hHUL۾}fQkB{UEbbb`fff#0 bŊk&UP,T&M%U5++,fQ5Qg0KUl۶5fQ5a*ߍ@\=քiU[Ό# (EML8oZTjXЩ[lyGPDAU=;;H6Wbč7~ `ȗؼyPDD2+..U(Zjj´*O&WBjBw: ؞999pE &VUPBb߾}rss[@`ի{M(TTTŦM1Ljb„ g$fLLLoQ5Q(+VAg45AMUDGG9yd #'Dk֬Y5a*d@a$ SN9ň j 7`4.&W{KU ]"g䇠VZw˗/1ý3f_-F6/`IȒ=IENDB`vokoscreenNG-3.7.0/src/pictures/player/start.license000066400000000000000000000001561444746353100225630ustar00rootroot00000000000000[license] author=Volker Kohaupt url=/src/pictures/player/start.png license=Public Domain vokoscreenNG-3.7.0/src/pictures/player/start.odg000066400000000000000000000232701444746353100217140ustar00rootroot00000000000000PKlT.++mimetypeapplication/vnd.oasis.opendocument.graphicsPKlTiTThumbnails/thumbnail.pngPNG  IHDRzAIDATxR@@8V_}h胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(쿏>8IJp>^^^e|!PDžJ>p}\FB%W }UxG%}PD+.} }>Rƪ1 5}¸PՇ2>(}(>-eg}(3>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢>(胢!xzz:6|yoR_\W˻mWO`5éN0_y({}ov v^nϰr.N[j~~ķ+V͞oz u$G1}>{MVzǡ~u;rܰ}Lz>f죷([ N'9Ĵu}{󏭅[f:;ƧoOBPz~~̱:a뭭'˧èb ̇5'6inN9o|=37<>n0k[Crwb+r4.԰ 1|y9ؚ8Ƽq&;Ynu$&P eu}^}FrZKӓճ[l['~Ƨ8}p7}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PAE}PA77$IENDB`PKlTtXAAmeta.xml 2022-04-27T18:06:242022-04-27T19:11:24PT47M4S9OpenOffice/4.1.4$Unix OpenOffice.org_project/414m5$Build-9788PKlT settings.xmlZ[s6~0}hCILs lc/;FA\I__m<}G:9:pu78>_j H"ݧ:v%}.uBP9_<<>yizZ~st>"[1"D f%e^F7 # r D$49%c䝊9RC4,մh#|*vH#nA0jKUǵ[]fGgZFI]6wån?i$|bլlOIޖ7.jLMԺS,ىH=䮯.Oa?ñ:\1rs*Dd|={OO H#9tlfEs)nIOH=(8Y{G_R I= d{?6U, 7yC,ggD`/W ֒ICtЖh8U@\ g`*וJ xm$vI"Zg LE\iZ\kvآ~< |ÛɯxZ࿢:S~,%1TB$6A];b> 8Q$vP&MbyAW*pGPnKQ$K4[Xșp..:ϡ@"d@Ps8J(ϒ?` ;j<ʤMD0BO aR꿐=i)4nVup(N/W-B쟩[AY 4VбT~-~_d*~_r:*SdɊW5XU%&Q2'i IlN7&' IS =-S&/o'BNO#@!qDx4>nJ&S $(gudhYly%SҊ+HČ+'T(v%r8z#jf`# ]'%_č}ĥ p)CC;dְ1# e>{!Yhʰ1Lڡ'uF Fb{)DdJO1,vkkot š2,=O} &9ݝ}_< EMy?2ڤ a/nh91Zzg]rڰ_3WK:Nha0vq{ZîL]]̞izgMsҖʮ|k+ڠm΋}FR١z lƠQ̇UW#ba cy>ѫ]}f:*~ݨ1#:sej&g4\Ν E fNv]'ݬԴnN*ʆIyз&Du9ծfK|mYơdon)Ⱦ\+=wF)4ԢyV[n.w}MoZΓYғ{bM1Kh7]1I0bA+Ldr4prFPKҼ5YQ$PKlT content.xmlYK4+,H, pAI$'G.%8j!z\]UMYႲj^ R%,U>w~[w\vŲ&ddYJ $"@WbfZΒW3 Dd2c5,j՞鱌DmhI6/Xacrr V@j(܌e%}bŦջzֱx׭IW/y'Q ?BD)ݮIղ|$75X⃨֜PwUb먋˯U;VL+JO8bK,G;Q?nwy˾c)=Nn.1֚fks 滣>TQON'HZYiᒕJv)"@VYG!Y.ՎQҢw@HN{0uJ}Nje"D-G YKj9OgU؇r]Q~Ns$1u kI@J" edSN[PI&gSsml3A R2W\_ʫȼ+#NZN#0dDf sk?4^Ċk6B?