├── .ci-scripts ├── .gitignore ├── build-docs.sh ├── build-qtox-linux-static.sh ├── build-qtox-linux.sh ├── create-identity.sh ├── deploy-docs.sh ├── import-developer-keys.sh ├── lcov.sh ├── package-qtox-linux.sh ├── smoke-test.sh └── verify-commit-format.sh ├── .circleci └── config.yml ├── .cirrus.yml ├── .clang-format ├── .clang-tidy ├── .clog.toml ├── .dockerignore ├── .gitattributes ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug.yml │ ├── feature.yml │ └── release.yml ├── keys │ └── iphydf.asc ├── release-drafter.yml ├── scripts │ └── install_apple_cert └── workflows │ ├── build-package.yml │ ├── build-test-deploy.yml │ ├── ci.yml │ ├── coverity-scan.yml │ ├── draft.yml │ └── release.yml ├── .gitignore ├── .imgbotconfig ├── .netlify └── state.json ├── .restyled.yaml ├── .reviewable ├── completion.js └── settings.yaml ├── .weblate ├── BUILD.bazel ├── CHANGELOG.md ├── CMakeLists.txt ├── CMakePresets.json ├── CONTRIBUTING.md ├── INSTALL.md ├── LICENSE ├── LICENSES ├── GPL-3.0-or-later.txt └── MIT.txt ├── MAINTAINING.md ├── README.md ├── SECURITY.md ├── audio ├── BUILD.bazel ├── CMakeLists.txt ├── README.md ├── include │ └── audio │ │ ├── audio.h │ │ ├── iaudiocontrol.h │ │ ├── iaudiosettings.h │ │ ├── iaudiosink.h │ │ └── iaudiosource.h ├── original │ ├── call_end.wav │ ├── call_incoming.wav │ ├── call_outgoing.wav │ └── notification.wav ├── resources │ ├── audio_res.qrc │ ├── call_end.s16le.pcm │ ├── call_incoming.s16le.pcm │ ├── call_outgoing.s16le.pcm │ └── notification.s16le.pcm └── src │ ├── audio.cpp │ ├── backend │ ├── alsink.cpp │ ├── alsink.h │ ├── alsource.cpp │ ├── alsource.h │ ├── openal.cpp │ └── openal.h │ ├── iaudiosettings.cpp │ └── iaudiosink.cpp ├── cmake ├── Dependencies.cmake ├── Installation.cmake ├── Package.cmake ├── Testing.cmake └── warnings │ └── CMakeLists.txt ├── cspell.config.yaml ├── doc ├── TCS_state.md ├── coding_standards.md └── user_manual_en.md ├── docker-compose.yml ├── doxygen.conf ├── img ├── add.svg ├── avatar_mask.svg ├── caps_lock.svg ├── conference.svg ├── conference_dark.svg ├── contact.svg ├── contact_dark.svg ├── debug.svg ├── icons │ ├── 128x128 │ │ └── qtox.png │ ├── 14x14 │ │ └── qtox.png │ ├── 16x16 │ │ └── qtox.png │ ├── 192x192 │ │ └── qtox.png │ ├── 22x22 │ │ └── qtox.png │ ├── 24x24 │ │ └── qtox.png │ ├── 256x256 │ │ └── qtox.png │ ├── 32x32 │ │ └── qtox.png │ ├── 36x36 │ │ └── qtox.png │ ├── 48x48 │ │ └── qtox.png │ ├── 512x512 │ │ └── qtox.png │ ├── 64x64 │ │ └── qtox.png │ ├── 72x72 │ │ └── qtox.png │ ├── 96x96 │ │ └── qtox.png │ └── qtox.svg ├── login_logo.svg ├── others │ └── logout-icon.svg ├── settings.svg ├── settings │ ├── av.png │ ├── general.png │ ├── identity.png │ └── privacy.png ├── status │ ├── away.svg │ ├── away_notification.svg │ ├── blocked.svg │ ├── busy.svg │ ├── busy_notification.svg │ ├── invisible.svg │ ├── offline.svg │ ├── offline_notification.svg │ ├── online.svg │ └── online_notification.svg ├── taskbar │ ├── dark │ │ ├── taskbar_away.svg │ │ ├── taskbar_away_event.svg │ │ ├── taskbar_busy.svg │ │ ├── taskbar_busy_event.svg │ │ ├── taskbar_invisible.svg │ │ ├── taskbar_invisible_event.svg │ │ ├── taskbar_offline.svg │ │ ├── taskbar_offline_event.svg │ │ ├── taskbar_online.svg │ │ └── taskbar_online_event.svg │ └── light │ │ ├── taskbar_away.svg │ │ ├── taskbar_away_event.svg │ │ ├── taskbar_busy.svg │ │ ├── taskbar_busy_event.svg │ │ ├── taskbar_invisible.svg │ │ ├── taskbar_invisible_event.svg │ │ ├── taskbar_offline.svg │ │ ├── taskbar_offline_event.svg │ │ ├── taskbar_online.svg │ │ └── taskbar_online_event.svg └── transfer.svg ├── netlify.toml ├── platform ├── android │ ├── qt-6.2.4 │ │ └── AndroidManifest.xml │ └── qt-6.8.1 │ │ └── AndroidManifest.xml ├── deps.depfile ├── flatpak │ ├── io.github.qtox.qTox.json │ └── localize_flathub_descriptor.py ├── linux │ ├── io.github.qtox.qTox.appdata.xml │ └── io.github.qtox.qTox.desktop ├── macos │ ├── BUILD.bazel │ ├── Brewfile │ ├── Brewfile-static │ ├── Info.plist │ ├── asan.supp │ ├── backgroundImage.tiff │ ├── qtox.icns.xcassets │ │ └── qtox.icns.appiconset │ │ │ ├── Contents.json │ │ │ ├── qtox.icns-128.png │ │ │ ├── qtox.icns-128@2x.png │ │ │ ├── qtox.icns-16.png │ │ │ ├── qtox.icns-16@2x.png │ │ │ ├── qtox.icns-256.png │ │ │ ├── qtox.icns-256@2x.png │ │ │ ├── qtox.icns-32.png │ │ │ ├── qtox.icns-32@2x.png │ │ │ ├── qtox.icns-512.png │ │ │ └── qtox.icns-512@2x.png │ ├── run-debug │ └── update-plist-version.sh ├── wasm │ ├── Dockerfile │ ├── _headers │ ├── build.sh │ └── run.sh └── windows │ ├── BUILD.bazel │ ├── cross-compile │ └── dll-deps │ ├── qtox-nsi-version.sh │ ├── qtox.ico │ ├── qtox.rc │ └── qtox64.nsi ├── res.qrc ├── res ├── font │ ├── DejaVuSans.ttf │ └── LICENSE └── nodes.json ├── resources └── images │ └── icons │ ├── qtox.icns │ └── qtox_profile.icns ├── security └── apparmor │ ├── 2.12.1 │ ├── install.sh │ ├── tunables │ │ └── usr.bin.qtox │ └── usr.bin.qtox │ ├── 2.13.2 │ ├── install.sh │ ├── tunables │ │ └── usr.bin.qtox │ └── usr.bin.qtox │ ├── 2.13.3 │ ├── install.sh │ ├── tunables │ │ └── usr.bin.qtox │ └── usr.bin.qtox │ └── README.md ├── shell.nix ├── smileys ├── Classic │ ├── angry.png │ ├── cool.png │ ├── crying.png │ ├── emoticons.qrc │ ├── emoticons.xml │ ├── happy.png │ ├── laugh.png │ ├── laugh_closed_eyes.png │ ├── plain.png │ ├── sad.png │ ├── scared.png │ ├── smile.png │ ├── stunned.png │ ├── tongue.png │ ├── uncertain.png │ └── wink.png ├── EmojiOne │ ├── 0023-20e3.svg │ ├── 0023.svg │ ├── 002a-20e3.svg │ ├── 002a.svg │ ├── 0030-20e3.svg │ ├── 0030.svg │ ├── 0031-20e3.svg │ ├── 0031.svg │ ├── 0032-20e3.svg │ ├── 0032.svg │ ├── 0033-20e3.svg │ ├── 0033.svg │ ├── 0034-20e3.svg │ ├── 0034.svg │ ├── 0035-20e3.svg │ ├── 0035.svg │ ├── 0036-20e3.svg │ ├── 0036.svg │ ├── 0037-20e3.svg │ ├── 0037.svg │ ├── 0038-20e3.svg │ ├── 0038.svg │ ├── 0039-20e3.svg │ ├── 0039.svg │ ├── 00a9.svg │ ├── 00ae.svg │ ├── 1f004.svg │ ├── 1f0cf.svg │ ├── 1f170.svg │ ├── 1f171.svg │ ├── 1f17e.svg │ ├── 1f17f.svg │ ├── 1f18e.svg │ ├── 1f191.svg │ ├── 1f192.svg │ ├── 1f193.svg │ ├── 1f194.svg │ ├── 1f195.svg │ ├── 1f196.svg │ ├── 1f197.svg │ ├── 1f198.svg │ ├── 1f199.svg │ ├── 1f19a.svg │ ├── 1f1e6-1f1e8.svg │ ├── 1f1e6-1f1e9.svg │ ├── 1f1e6-1f1ea.svg │ ├── 1f1e6-1f1eb.svg │ ├── 1f1e6-1f1ec.svg │ ├── 1f1e6-1f1ee.svg │ ├── 1f1e6-1f1f1.svg │ ├── 1f1e6-1f1f2.svg │ ├── 1f1e6-1f1f4.svg │ ├── 1f1e6-1f1f6.svg │ ├── 1f1e6-1f1f7.svg │ ├── 1f1e6-1f1f8.svg │ ├── 1f1e6-1f1f9.svg │ ├── 1f1e6-1f1fa.svg │ ├── 1f1e6-1f1fc.svg │ ├── 1f1e6-1f1fd.svg │ ├── 1f1e6-1f1ff.svg │ ├── 1f1e6.svg │ ├── 1f1e7-1f1e6.svg │ ├── 1f1e7-1f1e7.svg │ ├── 1f1e7-1f1e9.svg │ ├── 1f1e7-1f1ea.svg │ ├── 1f1e7-1f1eb.svg │ ├── 1f1e7-1f1ec.svg │ ├── 1f1e7-1f1ed.svg │ ├── 1f1e7-1f1ee.svg │ ├── 1f1e7-1f1ef.svg │ ├── 1f1e7-1f1f1.svg │ ├── 1f1e7-1f1f2.svg │ ├── 1f1e7-1f1f3.svg │ ├── 1f1e7-1f1f4.svg │ ├── 1f1e7-1f1f6.svg │ ├── 1f1e7-1f1f7.svg │ ├── 1f1e7-1f1f8.svg │ ├── 1f1e7-1f1f9.svg │ ├── 1f1e7-1f1fb.svg │ ├── 1f1e7-1f1fc.svg │ ├── 1f1e7-1f1fe.svg │ ├── 1f1e7-1f1ff.svg │ ├── 1f1e7.svg │ ├── 1f1e8-1f1e6.svg │ ├── 1f1e8-1f1e8.svg │ ├── 1f1e8-1f1e9.svg │ ├── 1f1e8-1f1eb.svg │ ├── 1f1e8-1f1ec.svg │ ├── 1f1e8-1f1ed.svg │ ├── 1f1e8-1f1ee.svg │ ├── 1f1e8-1f1f0.svg │ ├── 1f1e8-1f1f1.svg │ ├── 1f1e8-1f1f2.svg │ ├── 1f1e8-1f1f3.svg │ ├── 1f1e8-1f1f4.svg │ ├── 1f1e8-1f1f5.svg │ ├── 1f1e8-1f1f7.svg │ ├── 1f1e8-1f1fa.svg │ ├── 1f1e8-1f1fb.svg │ ├── 1f1e8-1f1fc.svg │ ├── 1f1e8-1f1fd.svg │ ├── 1f1e8-1f1fe.svg │ ├── 1f1e8-1f1ff.svg │ ├── 1f1e8.svg │ ├── 1f1e9-1f1ea.svg │ ├── 1f1e9-1f1ec.svg │ ├── 1f1e9-1f1ef.svg │ ├── 1f1e9-1f1f0.svg │ ├── 1f1e9-1f1f2.svg │ ├── 1f1e9-1f1f4.svg │ ├── 1f1e9-1f1ff.svg │ ├── 1f1e9.svg │ ├── 1f1ea-1f1e6.svg │ ├── 1f1ea-1f1e8.svg │ ├── 1f1ea-1f1ea.svg │ ├── 1f1ea-1f1ec.svg │ ├── 1f1ea-1f1ed.svg │ ├── 1f1ea-1f1f7.svg │ ├── 1f1ea-1f1f8.svg │ ├── 1f1ea-1f1f9.svg │ ├── 1f1ea-1f1fa.svg │ ├── 1f1ea.svg │ ├── 1f1eb-1f1ee.svg │ ├── 1f1eb-1f1ef.svg │ ├── 1f1eb-1f1f0.svg │ ├── 1f1eb-1f1f2.svg │ ├── 1f1eb-1f1f4.svg │ ├── 1f1eb-1f1f7.svg │ ├── 1f1eb.svg │ ├── 1f1ec-1f1e6.svg │ ├── 1f1ec-1f1e7.svg │ ├── 1f1ec-1f1e9.svg │ ├── 1f1ec-1f1ea.svg │ ├── 1f1ec-1f1eb.svg │ ├── 1f1ec-1f1ec.svg │ ├── 1f1ec-1f1ed.svg │ ├── 1f1ec-1f1ee.svg │ ├── 1f1ec-1f1f1.svg │ ├── 1f1ec-1f1f2.svg │ ├── 1f1ec-1f1f3.svg │ ├── 1f1ec-1f1f5.svg │ ├── 1f1ec-1f1f6.svg │ ├── 1f1ec-1f1f7.svg │ ├── 1f1ec-1f1f8.svg │ ├── 1f1ec-1f1f9.svg │ ├── 1f1ec-1f1fa.svg │ ├── 1f1ec-1f1fc.svg │ ├── 1f1ec-1f1fe.svg │ ├── 1f1ec.svg │ ├── 1f1ed-1f1f0.svg │ ├── 1f1ed-1f1f2.svg │ ├── 1f1ed-1f1f3.svg │ ├── 1f1ed-1f1f7.svg │ ├── 1f1ed-1f1f9.svg │ ├── 1f1ed-1f1fa.svg │ ├── 1f1ed.svg │ ├── 1f1ee-1f1e8.svg │ ├── 1f1ee-1f1e9.svg │ ├── 1f1ee-1f1ea.svg │ ├── 1f1ee-1f1f1.svg │ ├── 1f1ee-1f1f2.svg │ ├── 1f1ee-1f1f3.svg │ ├── 1f1ee-1f1f4.svg │ ├── 1f1ee-1f1f6.svg │ ├── 1f1ee-1f1f7.svg │ ├── 1f1ee-1f1f8.svg │ ├── 1f1ee-1f1f9.svg │ ├── 1f1ee.svg │ ├── 1f1ef-1f1ea.svg │ ├── 1f1ef-1f1f2.svg │ ├── 1f1ef-1f1f4.svg │ ├── 1f1ef-1f1f5.svg │ ├── 1f1ef.svg │ ├── 1f1f0-1f1ea.svg │ ├── 1f1f0-1f1ec.svg │ ├── 1f1f0-1f1ed.svg │ ├── 1f1f0-1f1ee.svg │ ├── 1f1f0-1f1f2.svg │ ├── 1f1f0-1f1f3.svg │ ├── 1f1f0-1f1f5.svg │ ├── 1f1f0-1f1f7.svg │ ├── 1f1f0-1f1fc.svg │ ├── 1f1f0-1f1fe.svg │ ├── 1f1f0-1f1ff.svg │ ├── 1f1f0.svg │ ├── 1f1f1-1f1e6.svg │ ├── 1f1f1-1f1e7.svg │ ├── 1f1f1-1f1e8.svg │ ├── 1f1f1-1f1ee.svg │ ├── 1f1f1-1f1f0.svg │ ├── 1f1f1-1f1f7.svg │ ├── 1f1f1-1f1f8.svg │ ├── 1f1f1-1f1f9.svg │ ├── 1f1f1-1f1fa.svg │ ├── 1f1f1-1f1fb.svg │ ├── 1f1f1-1f1fe.svg │ ├── 1f1f1.svg │ ├── 1f1f2-1f1e6.svg │ ├── 1f1f2-1f1e8.svg │ ├── 1f1f2-1f1e9.svg │ ├── 1f1f2-1f1ea.svg │ ├── 1f1f2-1f1eb.svg │ ├── 1f1f2-1f1ec.svg │ ├── 1f1f2-1f1ed.svg │ ├── 1f1f2-1f1f0.svg │ ├── 1f1f2-1f1f1.svg │ ├── 1f1f2-1f1f2.svg │ ├── 1f1f2-1f1f3.svg │ ├── 1f1f2-1f1f4.svg │ ├── 1f1f2-1f1f5.svg │ ├── 1f1f2-1f1f6.svg │ ├── 1f1f2-1f1f7.svg │ ├── 1f1f2-1f1f8.svg │ ├── 1f1f2-1f1f9.svg │ ├── 1f1f2-1f1fa.svg │ ├── 1f1f2-1f1fb.svg │ ├── 1f1f2-1f1fc.svg │ ├── 1f1f2-1f1fd.svg │ ├── 1f1f2-1f1fe.svg │ ├── 1f1f2-1f1ff.svg │ ├── 1f1f2.svg │ ├── 1f1f3-1f1e6.svg │ ├── 1f1f3-1f1e8.svg │ ├── 1f1f3-1f1ea.svg │ ├── 1f1f3-1f1eb.svg │ ├── 1f1f3-1f1ec.svg │ ├── 1f1f3-1f1ee.svg │ ├── 1f1f3-1f1f1.svg │ ├── 1f1f3-1f1f4.svg │ ├── 1f1f3-1f1f5.svg │ ├── 1f1f3-1f1f7.svg │ ├── 1f1f3-1f1fa.svg │ ├── 1f1f3-1f1ff.svg │ ├── 1f1f3.svg │ ├── 1f1f4-1f1f2.svg │ ├── 1f1f4.svg │ ├── 1f1f5-1f1e6.svg │ ├── 1f1f5-1f1ea.svg │ ├── 1f1f5-1f1eb.svg │ ├── 1f1f5-1f1ec.svg │ ├── 1f1f5-1f1ed.svg │ ├── 1f1f5-1f1f0.svg │ ├── 1f1f5-1f1f1.svg │ ├── 1f1f5-1f1f2.svg │ ├── 1f1f5-1f1f3.svg │ ├── 1f1f5-1f1f7.svg │ ├── 1f1f5-1f1f8.svg │ ├── 1f1f5-1f1f9.svg │ ├── 1f1f5-1f1fc.svg │ ├── 1f1f5-1f1fe.svg │ ├── 1f1f5.svg │ ├── 1f1f6-1f1e6.svg │ ├── 1f1f6.svg │ ├── 1f1f7-1f1ea.svg │ ├── 1f1f7-1f1f4.svg │ ├── 1f1f7-1f1f8.svg │ ├── 1f1f7-1f1fa.svg │ ├── 1f1f7-1f1fc.svg │ ├── 1f1f7.svg │ ├── 1f1f8-1f1e6.svg │ ├── 1f1f8-1f1e7.svg │ ├── 1f1f8-1f1e8.svg │ ├── 1f1f8-1f1e9.svg │ ├── 1f1f8-1f1ea.svg │ ├── 1f1f8-1f1ec.svg │ ├── 1f1f8-1f1ed.svg │ ├── 1f1f8-1f1ee.svg │ ├── 1f1f8-1f1ef.svg │ ├── 1f1f8-1f1f0.svg │ ├── 1f1f8-1f1f1.svg │ ├── 1f1f8-1f1f2.svg │ ├── 1f1f8-1f1f3.svg │ ├── 1f1f8-1f1f4.svg │ ├── 1f1f8-1f1f7.svg │ ├── 1f1f8-1f1f8.svg │ ├── 1f1f8-1f1f9.svg │ ├── 1f1f8-1f1fb.svg │ ├── 1f1f8-1f1fd.svg │ ├── 1f1f8-1f1fe.svg │ ├── 1f1f8-1f1ff.svg │ ├── 1f1f8.svg │ ├── 1f1f9-1f1e6.svg │ ├── 1f1f9-1f1e8.svg │ ├── 1f1f9-1f1e9.svg │ ├── 1f1f9-1f1eb.svg │ ├── 1f1f9-1f1ec.svg │ ├── 1f1f9-1f1ed.svg │ ├── 1f1f9-1f1ef.svg │ ├── 1f1f9-1f1f0.svg │ ├── 1f1f9-1f1f1.svg │ ├── 1f1f9-1f1f2.svg │ ├── 1f1f9-1f1f3.svg │ ├── 1f1f9-1f1f4.svg │ ├── 1f1f9-1f1f7.svg │ ├── 1f1f9-1f1f9.svg │ ├── 1f1f9-1f1fb.svg │ ├── 1f1f9-1f1fc.svg │ ├── 1f1f9-1f1ff.svg │ ├── 1f1f9.svg │ ├── 1f1fa-1f1e6.svg │ ├── 1f1fa-1f1ec.svg │ ├── 1f1fa-1f1f2.svg │ ├── 1f1fa-1f1f8.svg │ ├── 1f1fa-1f1fe.svg │ ├── 1f1fa-1f1ff.svg │ ├── 1f1fa.svg │ ├── 1f1fb-1f1e6.svg │ ├── 1f1fb-1f1e8.svg │ ├── 1f1fb-1f1ea.svg │ ├── 1f1fb-1f1ec.svg │ ├── 1f1fb-1f1ee.svg │ ├── 1f1fb-1f1f3.svg │ ├── 1f1fb-1f1fa.svg │ ├── 1f1fb.svg │ ├── 1f1fc-1f1eb.svg │ ├── 1f1fc-1f1f8.svg │ ├── 1f1fc.svg │ ├── 1f1fd-1f1f0.svg │ ├── 1f1fd.svg │ ├── 1f1fe-1f1ea.svg │ ├── 1f1fe-1f1f9.svg │ ├── 1f1fe.svg │ ├── 1f1ff-1f1e6.svg │ ├── 1f1ff-1f1f2.svg │ ├── 1f1ff-1f1fc.svg │ ├── 1f1ff.svg │ ├── 1f201.svg │ ├── 1f202.svg │ ├── 1f21a.svg │ ├── 1f22f.svg │ ├── 1f232.svg │ ├── 1f233.svg │ ├── 1f234.svg │ ├── 1f235.svg │ ├── 1f236.svg │ ├── 1f237.svg │ ├── 1f238.svg │ ├── 1f239.svg │ ├── 1f23a.svg │ ├── 1f250.svg │ ├── 1f251.svg │ ├── 1f300.svg │ ├── 1f301.svg │ ├── 1f302.svg │ ├── 1f303.svg │ ├── 1f304.svg │ ├── 1f305.svg │ ├── 1f306.svg │ ├── 1f307.svg │ ├── 1f308.svg │ ├── 1f309.svg │ ├── 1f30a.svg │ ├── 1f30b.svg │ ├── 1f30c.svg │ ├── 1f30d.svg │ ├── 1f30e.svg │ ├── 1f30f.svg │ ├── 1f310.svg │ ├── 1f311.svg │ ├── 1f312.svg │ ├── 1f313.svg │ ├── 1f314.svg │ ├── 1f315.svg │ ├── 1f316.svg │ ├── 1f317.svg │ ├── 1f318.svg │ ├── 1f319.svg │ ├── 1f31a.svg │ ├── 1f31b.svg │ ├── 1f31c.svg │ ├── 1f31d.svg │ ├── 1f31e.svg │ ├── 1f31f.svg │ ├── 1f320.svg │ ├── 1f321.svg │ ├── 1f324.svg │ ├── 1f325.svg │ ├── 1f326.svg │ ├── 1f327.svg │ ├── 1f328.svg │ ├── 1f329.svg │ ├── 1f32a.svg │ ├── 1f32b.svg │ ├── 1f32c.svg │ ├── 1f32d.svg │ ├── 1f32e.svg │ ├── 1f32f.svg │ ├── 1f330.svg │ ├── 1f331.svg │ ├── 1f332.svg │ ├── 1f333.svg │ ├── 1f334.svg │ ├── 1f335.svg │ ├── 1f336.svg │ ├── 1f337.svg │ ├── 1f338.svg │ ├── 1f339.svg │ ├── 1f33a.svg │ ├── 1f33b.svg │ ├── 1f33c.svg │ ├── 1f33d.svg │ ├── 1f33e.svg │ ├── 1f33f.svg │ ├── 1f340.svg │ ├── 1f341.svg │ ├── 1f342.svg │ ├── 1f343.svg │ ├── 1f344.svg │ ├── 1f345.svg │ ├── 1f346.svg │ ├── 1f347.svg │ ├── 1f348.svg │ ├── 1f349.svg │ ├── 1f34a.svg │ ├── 1f34b.svg │ ├── 1f34c.svg │ ├── 1f34d.svg │ ├── 1f34e.svg │ ├── 1f34f.svg │ ├── 1f350.svg │ ├── 1f351.svg │ ├── 1f352.svg │ ├── 1f353.svg │ ├── 1f354.svg │ ├── 1f355.svg │ ├── 1f356.svg │ ├── 1f357.svg │ ├── 1f358.svg │ ├── 1f359.svg │ ├── 1f35a.svg │ ├── 1f35b.svg │ ├── 1f35c.svg │ ├── 1f35d.svg │ ├── 1f35e.svg │ ├── 1f35f.svg │ ├── 1f360.svg │ ├── 1f361.svg │ ├── 1f362.svg │ ├── 1f363.svg │ ├── 1f364.svg │ ├── 1f365.svg │ ├── 1f366.svg │ ├── 1f367.svg │ ├── 1f368.svg │ ├── 1f369.svg │ ├── 1f36a.svg │ ├── 1f36b.svg │ ├── 1f36c.svg │ ├── 1f36d.svg │ ├── 1f36e.svg │ ├── 1f36f.svg │ ├── 1f370.svg │ ├── 1f371.svg │ ├── 1f372.svg │ ├── 1f373.svg │ ├── 1f374.svg │ ├── 1f375.svg │ ├── 1f376.svg │ ├── 1f377.svg │ ├── 1f378.svg │ ├── 1f379.svg │ ├── 1f37a.svg │ ├── 1f37b.svg │ ├── 1f37c.svg │ ├── 1f37d.svg │ ├── 1f37e.svg │ ├── 1f37f.svg │ ├── 1f380.svg │ ├── 1f381.svg │ ├── 1f382.svg │ ├── 1f383.svg │ ├── 1f384.svg │ ├── 1f385-1f3fb.svg │ ├── 1f385-1f3fc.svg │ ├── 1f385-1f3fd.svg │ ├── 1f385-1f3fe.svg │ ├── 1f385-1f3ff.svg │ ├── 1f385.svg │ ├── 1f386.svg │ ├── 1f387.svg │ ├── 1f388.svg │ ├── 1f389.svg │ ├── 1f38a.svg │ ├── 1f38b.svg │ ├── 1f38c.svg │ ├── 1f38d.svg │ ├── 1f38e.svg │ ├── 1f38f.svg │ ├── 1f390.svg │ ├── 1f391.svg │ ├── 1f392.svg │ ├── 1f393.svg │ ├── 1f396.svg │ ├── 1f397.svg │ ├── 1f399.svg │ ├── 1f39a.svg │ ├── 1f39b.svg │ ├── 1f39e.svg │ ├── 1f39f.svg │ ├── 1f3a0.svg │ ├── 1f3a1.svg │ ├── 1f3a2.svg │ ├── 1f3a3.svg │ ├── 1f3a4.svg │ ├── 1f3a5.svg │ ├── 1f3a6.svg │ ├── 1f3a7.svg │ ├── 1f3a8.svg │ ├── 1f3a9.svg │ ├── 1f3aa.svg │ ├── 1f3ab.svg │ ├── 1f3ac.svg │ ├── 1f3ad.svg │ ├── 1f3ae.svg │ ├── 1f3af.svg │ ├── 1f3b0.svg │ ├── 1f3b1.svg │ ├── 1f3b2.svg │ ├── 1f3b3.svg │ ├── 1f3b4.svg │ ├── 1f3b5.svg │ ├── 1f3b6.svg │ ├── 1f3b7.svg │ ├── 1f3b8.svg │ ├── 1f3b9.svg │ ├── 1f3ba.svg │ ├── 1f3bb.svg │ ├── 1f3bc.svg │ ├── 1f3bd.svg │ ├── 1f3be.svg │ ├── 1f3bf.svg │ ├── 1f3c0.svg │ ├── 1f3c1.svg │ ├── 1f3c2.svg │ ├── 1f3c3-1f3fb.svg │ ├── 1f3c3-1f3fc.svg │ ├── 1f3c3-1f3fd.svg │ ├── 1f3c3-1f3fe.svg │ ├── 1f3c3-1f3ff.svg │ ├── 1f3c3.svg │ ├── 1f3c4-1f3fb.svg │ ├── 1f3c4-1f3fc.svg │ ├── 1f3c4-1f3fd.svg │ ├── 1f3c4-1f3fe.svg │ ├── 1f3c4-1f3ff.svg │ ├── 1f3c4.svg │ ├── 1f3c5.svg │ ├── 1f3c6.svg │ ├── 1f3c7-1f3fb.svg │ ├── 1f3c7-1f3fc.svg │ ├── 1f3c7-1f3fd.svg │ ├── 1f3c7-1f3fe.svg │ ├── 1f3c7-1f3ff.svg │ ├── 1f3c7.svg │ ├── 1f3c8.svg │ ├── 1f3c9.svg │ ├── 1f3ca-1f3fb.svg │ ├── 1f3ca-1f3fc.svg │ ├── 1f3ca-1f3fd.svg │ ├── 1f3ca-1f3fe.svg │ ├── 1f3ca-1f3ff.svg │ ├── 1f3ca.svg │ ├── 1f3cb-1f3fb.svg │ ├── 1f3cb-1f3fc.svg │ ├── 1f3cb-1f3fd.svg │ ├── 1f3cb-1f3fe.svg │ ├── 1f3cb-1f3ff.svg │ ├── 1f3cb.svg │ ├── 1f3cc.svg │ ├── 1f3cd.svg │ ├── 1f3ce.svg │ ├── 1f3cf.svg │ ├── 1f3d0.svg │ ├── 1f3d1.svg │ ├── 1f3d2.svg │ ├── 1f3d3.svg │ ├── 1f3d4.svg │ ├── 1f3d5.svg │ ├── 1f3d6.svg │ ├── 1f3d7.svg │ ├── 1f3d8.svg │ ├── 1f3d9.svg │ ├── 1f3da.svg │ ├── 1f3db.svg │ ├── 1f3dc.svg │ ├── 1f3dd.svg │ ├── 1f3de.svg │ ├── 1f3df.svg │ ├── 1f3e0.svg │ ├── 1f3e1.svg │ ├── 1f3e2.svg │ ├── 1f3e3.svg │ ├── 1f3e4.svg │ ├── 1f3e5.svg │ ├── 1f3e6.svg │ ├── 1f3e7.svg │ ├── 1f3e8.svg │ ├── 1f3e9.svg │ ├── 1f3ea.svg │ ├── 1f3eb.svg │ ├── 1f3ec.svg │ ├── 1f3ed.svg │ ├── 1f3ee.svg │ ├── 1f3ef.svg │ ├── 1f3f0.svg │ ├── 1f3f3.svg │ ├── 1f3f4.svg │ ├── 1f3f5.svg │ ├── 1f3f7.svg │ ├── 1f3f8.svg │ ├── 1f3f9.svg │ ├── 1f3fa.svg │ ├── 1f400.svg │ ├── 1f401.svg │ ├── 1f402.svg │ ├── 1f403.svg │ ├── 1f404.svg │ ├── 1f405.svg │ ├── 1f406.svg │ ├── 1f407.svg │ ├── 1f408.svg │ ├── 1f409.svg │ ├── 1f40a.svg │ ├── 1f40b.svg │ ├── 1f40c.svg │ ├── 1f40d.svg │ ├── 1f40e.svg │ ├── 1f40f.svg │ ├── 1f410.svg │ ├── 1f411.svg │ ├── 1f412.svg │ ├── 1f413.svg │ ├── 1f414.svg │ ├── 1f415.svg │ ├── 1f416.svg │ ├── 1f417.svg │ ├── 1f418.svg │ ├── 1f419.svg │ ├── 1f41a.svg │ ├── 1f41b.svg │ ├── 1f41c.svg │ ├── 1f41d.svg │ ├── 1f41e.svg │ ├── 1f41f.svg │ ├── 1f420.svg │ ├── 1f421.svg │ ├── 1f422.svg │ ├── 1f423.svg │ ├── 1f424.svg │ ├── 1f425.svg │ ├── 1f426.svg │ ├── 1f427.svg │ ├── 1f428.svg │ ├── 1f429.svg │ ├── 1f42a.svg │ ├── 1f42b.svg │ ├── 1f42c.svg │ ├── 1f42d.svg │ ├── 1f42e.svg │ ├── 1f42f.svg │ ├── 1f430.svg │ ├── 1f431.svg │ ├── 1f432.svg │ ├── 1f433.svg │ ├── 1f434.svg │ ├── 1f435.svg │ ├── 1f436.svg │ ├── 1f437.svg │ ├── 1f438.svg │ ├── 1f439.svg │ ├── 1f43a.svg │ ├── 1f43b.svg │ ├── 1f43c.svg │ ├── 1f43d.svg │ ├── 1f43e.svg │ ├── 1f43f.svg │ ├── 1f440.svg │ ├── 1f441-1f5e8.svg │ ├── 1f441.svg │ ├── 1f442-1f3fb.svg │ ├── 1f442-1f3fc.svg │ ├── 1f442-1f3fd.svg │ ├── 1f442-1f3fe.svg │ ├── 1f442-1f3ff.svg │ ├── 1f442.svg │ ├── 1f443-1f3fb.svg │ ├── 1f443-1f3fc.svg │ ├── 1f443-1f3fd.svg │ ├── 1f443-1f3fe.svg │ ├── 1f443-1f3ff.svg │ ├── 1f443.svg │ ├── 1f444.svg │ ├── 1f445.svg │ ├── 1f446-1f3fb.svg │ ├── 1f446-1f3fc.svg │ ├── 1f446-1f3fd.svg │ ├── 1f446-1f3fe.svg │ ├── 1f446-1f3ff.svg │ ├── 1f446.svg │ ├── 1f447-1f3fb.svg │ ├── 1f447-1f3fc.svg │ ├── 1f447-1f3fd.svg │ ├── 1f447-1f3fe.svg │ ├── 1f447-1f3ff.svg │ ├── 1f447.svg │ ├── 1f448-1f3fb.svg │ ├── 1f448-1f3fc.svg │ ├── 1f448-1f3fd.svg │ ├── 1f448-1f3fe.svg │ ├── 1f448-1f3ff.svg │ ├── 1f448.svg │ ├── 1f449-1f3fb.svg │ ├── 1f449-1f3fc.svg │ ├── 1f449-1f3fd.svg │ ├── 1f449-1f3fe.svg │ ├── 1f449-1f3ff.svg │ ├── 1f449.svg │ ├── 1f44a-1f3fb.svg │ ├── 1f44a-1f3fc.svg │ ├── 1f44a-1f3fd.svg │ ├── 1f44a-1f3fe.svg │ ├── 1f44a-1f3ff.svg │ ├── 1f44a.svg │ ├── 1f44b-1f3fb.svg │ ├── 1f44b-1f3fc.svg │ ├── 1f44b-1f3fd.svg │ ├── 1f44b-1f3fe.svg │ ├── 1f44b-1f3ff.svg │ ├── 1f44b.svg │ ├── 1f44c-1f3fb.svg │ ├── 1f44c-1f3fc.svg │ ├── 1f44c-1f3fd.svg │ ├── 1f44c-1f3fe.svg │ ├── 1f44c-1f3ff.svg │ ├── 1f44c.svg │ ├── 1f44d-1f3fb.svg │ ├── 1f44d-1f3fc.svg │ ├── 1f44d-1f3fd.svg │ ├── 1f44d-1f3fe.svg │ ├── 1f44d-1f3ff.svg │ ├── 1f44d.svg │ ├── 1f44e-1f3fb.svg │ ├── 1f44e-1f3fc.svg │ ├── 1f44e-1f3fd.svg │ ├── 1f44e-1f3fe.svg │ ├── 1f44e-1f3ff.svg │ ├── 1f44e.svg │ ├── 1f44f-1f3fb.svg │ ├── 1f44f-1f3fc.svg │ ├── 1f44f-1f3fd.svg │ ├── 1f44f-1f3fe.svg │ ├── 1f44f-1f3ff.svg │ ├── 1f44f.svg │ ├── 1f450-1f3fb.svg │ ├── 1f450-1f3fc.svg │ ├── 1f450-1f3fd.svg │ ├── 1f450-1f3fe.svg │ ├── 1f450-1f3ff.svg │ ├── 1f450.svg │ ├── 1f451.svg │ ├── 1f452.svg │ ├── 1f453.svg │ ├── 1f454.svg │ ├── 1f455.svg │ ├── 1f456.svg │ ├── 1f457.svg │ ├── 1f458.svg │ ├── 1f459.svg │ ├── 1f45a.svg │ ├── 1f45b.svg │ ├── 1f45c.svg │ ├── 1f45d.svg │ ├── 1f45e.svg │ ├── 1f45f.svg │ ├── 1f460.svg │ ├── 1f461.svg │ ├── 1f462.svg │ ├── 1f463.svg │ ├── 1f464.svg │ ├── 1f465.svg │ ├── 1f466-1f3fb.svg │ ├── 1f466-1f3fc.svg │ ├── 1f466-1f3fd.svg │ ├── 1f466-1f3fe.svg │ ├── 1f466-1f3ff.svg │ ├── 1f466.svg │ ├── 1f467-1f3fb.svg │ ├── 1f467-1f3fc.svg │ ├── 1f467-1f3fd.svg │ ├── 1f467-1f3fe.svg │ ├── 1f467-1f3ff.svg │ ├── 1f467.svg │ ├── 1f468-1f3fb.svg │ ├── 1f468-1f3fc.svg │ ├── 1f468-1f3fd.svg │ ├── 1f468-1f3fe.svg │ ├── 1f468-1f3ff.svg │ ├── 1f468-1f468-1f466-1f466.svg │ ├── 1f468-1f468-1f466.svg │ ├── 1f468-1f468-1f467-1f466.svg │ ├── 1f468-1f468-1f467-1f467.svg │ ├── 1f468-1f468-1f467.svg │ ├── 1f468-1f469-1f466-1f466.svg │ ├── 1f468-1f469-1f467-1f466.svg │ ├── 1f468-1f469-1f467-1f467.svg │ ├── 1f468-1f469-1f467.svg │ ├── 1f468-2764-1f468.svg │ ├── 1f468-2764-1f48b-1f468.svg │ ├── 1f468.svg │ ├── 1f469-1f3fb.svg │ ├── 1f469-1f3fc.svg │ ├── 1f469-1f3fd.svg │ ├── 1f469-1f3fe.svg │ ├── 1f469-1f3ff.svg │ ├── 1f469-1f469-1f466-1f466.svg │ ├── 1f469-1f469-1f466.svg │ ├── 1f469-1f469-1f467-1f466.svg │ ├── 1f469-1f469-1f467-1f467.svg │ ├── 1f469-1f469-1f467.svg │ ├── 1f469-2764-1f469.svg │ ├── 1f469-2764-1f48b-1f469.svg │ ├── 1f469.svg │ ├── 1f46a.svg │ ├── 1f46b.svg │ ├── 1f46c.svg │ ├── 1f46d.svg │ ├── 1f46e-1f3fb.svg │ ├── 1f46e-1f3fc.svg │ ├── 1f46e-1f3fd.svg │ ├── 1f46e-1f3fe.svg │ ├── 1f46e-1f3ff.svg │ ├── 1f46e.svg │ ├── 1f46f.svg │ ├── 1f470-1f3fb.svg │ ├── 1f470-1f3fc.svg │ ├── 1f470-1f3fd.svg │ ├── 1f470-1f3fe.svg │ ├── 1f470-1f3ff.svg │ ├── 1f470.svg │ ├── 1f471-1f3fb.svg │ ├── 1f471-1f3fc.svg │ ├── 1f471-1f3fd.svg │ ├── 1f471-1f3fe.svg │ ├── 1f471-1f3ff.svg │ ├── 1f471.svg │ ├── 1f472-1f3fb.svg │ ├── 1f472-1f3fc.svg │ ├── 1f472-1f3fd.svg │ ├── 1f472-1f3fe.svg │ ├── 1f472-1f3ff.svg │ ├── 1f472.svg │ ├── 1f473-1f3fb.svg │ ├── 1f473-1f3fc.svg │ ├── 1f473-1f3fd.svg │ ├── 1f473-1f3fe.svg │ ├── 1f473-1f3ff.svg │ ├── 1f473.svg │ ├── 1f474-1f3fb.svg │ ├── 1f474-1f3fc.svg │ ├── 1f474-1f3fd.svg │ ├── 1f474-1f3fe.svg │ ├── 1f474-1f3ff.svg │ ├── 1f474.svg │ ├── 1f475-1f3fb.svg │ ├── 1f475-1f3fc.svg │ ├── 1f475-1f3fd.svg │ ├── 1f475-1f3fe.svg │ ├── 1f475-1f3ff.svg │ ├── 1f475.svg │ ├── 1f476-1f3fb.svg │ ├── 1f476-1f3fc.svg │ ├── 1f476-1f3fd.svg │ ├── 1f476-1f3fe.svg │ ├── 1f476-1f3ff.svg │ ├── 1f476.svg │ ├── 1f477-1f3fb.svg │ ├── 1f477-1f3fc.svg │ ├── 1f477-1f3fd.svg │ ├── 1f477-1f3fe.svg │ ├── 1f477-1f3ff.svg │ ├── 1f477.svg │ ├── 1f478-1f3fb.svg │ ├── 1f478-1f3fc.svg │ ├── 1f478-1f3fd.svg │ ├── 1f478-1f3fe.svg │ ├── 1f478-1f3ff.svg │ ├── 1f478.svg │ ├── 1f479.svg │ ├── 1f47a.svg │ ├── 1f47b.svg │ ├── 1f47c-1f3fb.svg │ ├── 1f47c-1f3fc.svg │ ├── 1f47c-1f3fd.svg │ ├── 1f47c-1f3fe.svg │ ├── 1f47c-1f3ff.svg │ ├── 1f47c.svg │ ├── 1f47d.svg │ ├── 1f47e.svg │ ├── 1f47f.svg │ ├── 1f480.svg │ ├── 1f481-1f3fb.svg │ ├── 1f481-1f3fc.svg │ ├── 1f481-1f3fd.svg │ ├── 1f481-1f3fe.svg │ ├── 1f481-1f3ff.svg │ ├── 1f481.svg │ ├── 1f482-1f3fb.svg │ ├── 1f482-1f3fc.svg │ ├── 1f482-1f3fd.svg │ ├── 1f482-1f3fe.svg │ ├── 1f482-1f3ff.svg │ ├── 1f482.svg │ ├── 1f483-1f3fb.svg │ ├── 1f483-1f3fc.svg │ ├── 1f483-1f3fd.svg │ ├── 1f483-1f3fe.svg │ ├── 1f483-1f3ff.svg │ ├── 1f483.svg │ ├── 1f484.svg │ ├── 1f485-1f3fb.svg │ ├── 1f485-1f3fc.svg │ ├── 1f485-1f3fd.svg │ ├── 1f485-1f3fe.svg │ ├── 1f485-1f3ff.svg │ ├── 1f485.svg │ ├── 1f486-1f3fb.svg │ ├── 1f486-1f3fc.svg │ ├── 1f486-1f3fd.svg │ ├── 1f486-1f3fe.svg │ ├── 1f486-1f3ff.svg │ ├── 1f486.svg │ ├── 1f487-1f3fb.svg │ ├── 1f487-1f3fc.svg │ ├── 1f487-1f3fd.svg │ ├── 1f487-1f3fe.svg │ ├── 1f487-1f3ff.svg │ ├── 1f487.svg │ ├── 1f488.svg │ ├── 1f489.svg │ ├── 1f48a.svg │ ├── 1f48b.svg │ ├── 1f48c.svg │ ├── 1f48d.svg │ ├── 1f48e.svg │ ├── 1f48f.svg │ ├── 1f490.svg │ ├── 1f491.svg │ ├── 1f492.svg │ ├── 1f493.svg │ ├── 1f494.svg │ ├── 1f495.svg │ ├── 1f496.svg │ ├── 1f497.svg │ ├── 1f498.svg │ ├── 1f499.svg │ ├── 1f49a.svg │ ├── 1f49b.svg │ ├── 1f49c.svg │ ├── 1f49d.svg │ ├── 1f49e.svg │ ├── 1f49f.svg │ ├── 1f4a0.svg │ ├── 1f4a1.svg │ ├── 1f4a2.svg │ ├── 1f4a3.svg │ ├── 1f4a4.svg │ ├── 1f4a5.svg │ ├── 1f4a6.svg │ ├── 1f4a7.svg │ ├── 1f4a8.svg │ ├── 1f4a9.svg │ ├── 1f4aa-1f3fb.svg │ ├── 1f4aa-1f3fc.svg │ ├── 1f4aa-1f3fd.svg │ ├── 1f4aa-1f3fe.svg │ ├── 1f4aa-1f3ff.svg │ ├── 1f4aa.svg │ ├── 1f4ab.svg │ ├── 1f4ac.svg │ ├── 1f4ad.svg │ ├── 1f4ae.svg │ ├── 1f4af.svg │ ├── 1f4b0.svg │ ├── 1f4b1.svg │ ├── 1f4b2.svg │ ├── 1f4b3.svg │ ├── 1f4b4.svg │ ├── 1f4b5.svg │ ├── 1f4b6.svg │ ├── 1f4b7.svg │ ├── 1f4b8.svg │ ├── 1f4b9.svg │ ├── 1f4ba.svg │ ├── 1f4bb.svg │ ├── 1f4bc.svg │ ├── 1f4bd.svg │ ├── 1f4be.svg │ ├── 1f4bf.svg │ ├── 1f4c0.svg │ ├── 1f4c1.svg │ ├── 1f4c2.svg │ ├── 1f4c3.svg │ ├── 1f4c4.svg │ ├── 1f4c5.svg │ ├── 1f4c6.svg │ ├── 1f4c7.svg │ ├── 1f4c8.svg │ ├── 1f4c9.svg │ ├── 1f4ca.svg │ ├── 1f4cb.svg │ ├── 1f4cc.svg │ ├── 1f4cd.svg │ ├── 1f4ce.svg │ ├── 1f4cf.svg │ ├── 1f4d0.svg │ ├── 1f4d1.svg │ ├── 1f4d2.svg │ ├── 1f4d3.svg │ ├── 1f4d4.svg │ ├── 1f4d5.svg │ ├── 1f4d6.svg │ ├── 1f4d7.svg │ ├── 1f4d8.svg │ ├── 1f4d9.svg │ ├── 1f4da.svg │ ├── 1f4db.svg │ ├── 1f4dc.svg │ ├── 1f4dd.svg │ ├── 1f4de.svg │ ├── 1f4df.svg │ ├── 1f4e0.svg │ ├── 1f4e1.svg │ ├── 1f4e2.svg │ ├── 1f4e3.svg │ ├── 1f4e4.svg │ ├── 1f4e5.svg │ ├── 1f4e6.svg │ ├── 1f4e7.svg │ ├── 1f4e8.svg │ ├── 1f4e9.svg │ ├── 1f4ea.svg │ ├── 1f4eb.svg │ ├── 1f4ec.svg │ ├── 1f4ed.svg │ ├── 1f4ee.svg │ ├── 1f4ef.svg │ ├── 1f4f0.svg │ ├── 1f4f1.svg │ ├── 1f4f2.svg │ ├── 1f4f3.svg │ ├── 1f4f4.svg │ ├── 1f4f5.svg │ ├── 1f4f6.svg │ ├── 1f4f7.svg │ ├── 1f4f8.svg │ ├── 1f4f9.svg │ ├── 1f4fa.svg │ ├── 1f4fb.svg │ ├── 1f4fc.svg │ ├── 1f4fd.svg │ ├── 1f4ff.svg │ ├── 1f500.svg │ ├── 1f501.svg │ ├── 1f502.svg │ ├── 1f503.svg │ ├── 1f504.svg │ ├── 1f505.svg │ ├── 1f506.svg │ ├── 1f507.svg │ ├── 1f508.svg │ ├── 1f509.svg │ ├── 1f50a.svg │ ├── 1f50b.svg │ ├── 1f50c.svg │ ├── 1f50d.svg │ ├── 1f50e.svg │ ├── 1f50f.svg │ ├── 1f510.svg │ ├── 1f511.svg │ ├── 1f512.svg │ ├── 1f513.svg │ ├── 1f514.svg │ ├── 1f515.svg │ ├── 1f516.svg │ ├── 1f517.svg │ ├── 1f518.svg │ ├── 1f519.svg │ ├── 1f51a.svg │ ├── 1f51b.svg │ ├── 1f51c.svg │ ├── 1f51d.svg │ ├── 1f51e.svg │ ├── 1f51f.svg │ ├── 1f520.svg │ ├── 1f521.svg │ ├── 1f522.svg │ ├── 1f523.svg │ ├── 1f524.svg │ ├── 1f525.svg │ ├── 1f526.svg │ ├── 1f527.svg │ ├── 1f528.svg │ ├── 1f529.svg │ ├── 1f52a.svg │ ├── 1f52b.svg │ ├── 1f52c.svg │ ├── 1f52d.svg │ ├── 1f52e.svg │ ├── 1f52f.svg │ ├── 1f530.svg │ ├── 1f531.svg │ ├── 1f532.svg │ ├── 1f533.svg │ ├── 1f534.svg │ ├── 1f535.svg │ ├── 1f536.svg │ ├── 1f537.svg │ ├── 1f538.svg │ ├── 1f539.svg │ ├── 1f53a.svg │ ├── 1f53b.svg │ ├── 1f53c.svg │ ├── 1f53d.svg │ ├── 1f549.svg │ ├── 1f54a.svg │ ├── 1f54b.svg │ ├── 1f54c.svg │ ├── 1f54d.svg │ ├── 1f54e.svg │ ├── 1f550.svg │ ├── 1f551.svg │ ├── 1f552.svg │ ├── 1f553.svg │ ├── 1f554.svg │ ├── 1f555.svg │ ├── 1f556.svg │ ├── 1f557.svg │ ├── 1f558.svg │ ├── 1f559.svg │ ├── 1f55a.svg │ ├── 1f55b.svg │ ├── 1f55c.svg │ ├── 1f55d.svg │ ├── 1f55e.svg │ ├── 1f55f.svg │ ├── 1f560.svg │ ├── 1f561.svg │ ├── 1f562.svg │ ├── 1f563.svg │ ├── 1f564.svg │ ├── 1f565.svg │ ├── 1f566.svg │ ├── 1f567.svg │ ├── 1f56f.svg │ ├── 1f570.svg │ ├── 1f573.svg │ ├── 1f574.svg │ ├── 1f575-1f3fb.svg │ ├── 1f575-1f3fc.svg │ ├── 1f575-1f3fd.svg │ ├── 1f575-1f3fe.svg │ ├── 1f575-1f3ff.svg │ ├── 1f575.svg │ ├── 1f576.svg │ ├── 1f577.svg │ ├── 1f578.svg │ ├── 1f579.svg │ ├── 1f57a-1f3fb.svg │ ├── 1f57a-1f3fc.svg │ ├── 1f57a-1f3fd.svg │ ├── 1f57a-1f3fe.svg │ ├── 1f57a-1f3ff.svg │ ├── 1f57a.svg │ ├── 1f587.svg │ ├── 1f58a.svg │ ├── 1f58b.svg │ ├── 1f58c.svg │ ├── 1f58d.svg │ ├── 1f590-1f3fb.svg │ ├── 1f590-1f3fc.svg │ ├── 1f590-1f3fd.svg │ ├── 1f590-1f3fe.svg │ ├── 1f590-1f3ff.svg │ ├── 1f590.svg │ ├── 1f595-1f3fb.svg │ ├── 1f595-1f3fc.svg │ ├── 1f595-1f3fd.svg │ ├── 1f595-1f3fe.svg │ ├── 1f595-1f3ff.svg │ ├── 1f595.svg │ ├── 1f596-1f3fb.svg │ ├── 1f596-1f3fc.svg │ ├── 1f596-1f3fd.svg │ ├── 1f596-1f3fe.svg │ ├── 1f596-1f3ff.svg │ ├── 1f596.svg │ ├── 1f5a4.svg │ ├── 1f5a5.svg │ ├── 1f5a8.svg │ ├── 1f5b1.svg │ ├── 1f5b2.svg │ ├── 1f5bc.svg │ ├── 1f5c2.svg │ ├── 1f5c3.svg │ ├── 1f5c4.svg │ ├── 1f5d1.svg │ ├── 1f5d2.svg │ ├── 1f5d3.svg │ ├── 1f5dc.svg │ ├── 1f5dd.svg │ ├── 1f5de.svg │ ├── 1f5e1.svg │ ├── 1f5e3.svg │ ├── 1f5e8.svg │ ├── 1f5ef.svg │ ├── 1f5f3.svg │ ├── 1f5fa.svg │ ├── 1f5fb.svg │ ├── 1f5fc.svg │ ├── 1f5fd.svg │ ├── 1f5fe.svg │ ├── 1f5ff.svg │ ├── 1f600.svg │ ├── 1f601.svg │ ├── 1f602.svg │ ├── 1f603.svg │ ├── 1f604.svg │ ├── 1f605.svg │ ├── 1f606.svg │ ├── 1f607.svg │ ├── 1f608.svg │ ├── 1f609.svg │ ├── 1f60a.svg │ ├── 1f60b.svg │ ├── 1f60c.svg │ ├── 1f60d.svg │ ├── 1f60e.svg │ ├── 1f60f.svg │ ├── 1f610.svg │ ├── 1f611.svg │ ├── 1f612.svg │ ├── 1f613.svg │ ├── 1f614.svg │ ├── 1f615.svg │ ├── 1f616.svg │ ├── 1f617.svg │ ├── 1f618.svg │ ├── 1f619.svg │ ├── 1f61a.svg │ ├── 1f61b.svg │ ├── 1f61c.svg │ ├── 1f61d.svg │ ├── 1f61e.svg │ ├── 1f61f.svg │ ├── 1f620.svg │ ├── 1f621.svg │ ├── 1f622.svg │ ├── 1f623.svg │ ├── 1f624.svg │ ├── 1f625.svg │ ├── 1f626.svg │ ├── 1f627.svg │ ├── 1f628.svg │ ├── 1f629.svg │ ├── 1f62a.svg │ ├── 1f62b.svg │ ├── 1f62c.svg │ ├── 1f62d.svg │ ├── 1f62e.svg │ ├── 1f62f.svg │ ├── 1f630.svg │ ├── 1f631.svg │ ├── 1f632.svg │ ├── 1f633.svg │ ├── 1f634.svg │ ├── 1f635.svg │ ├── 1f636.svg │ ├── 1f637.svg │ ├── 1f638.svg │ ├── 1f639.svg │ ├── 1f63a.svg │ ├── 1f63b.svg │ ├── 1f63c.svg │ ├── 1f63d.svg │ ├── 1f63e.svg │ ├── 1f63f.svg │ ├── 1f640.svg │ ├── 1f641.svg │ ├── 1f642.svg │ ├── 1f643.svg │ ├── 1f644.svg │ ├── 1f645-1f3fb.svg │ ├── 1f645-1f3fc.svg │ ├── 1f645-1f3fd.svg │ ├── 1f645-1f3fe.svg │ ├── 1f645-1f3ff.svg │ ├── 1f645.svg │ ├── 1f646-1f3fb.svg │ ├── 1f646-1f3fc.svg │ ├── 1f646-1f3fd.svg │ ├── 1f646-1f3fe.svg │ ├── 1f646-1f3ff.svg │ ├── 1f646.svg │ ├── 1f647-1f3fb.svg │ ├── 1f647-1f3fc.svg │ ├── 1f647-1f3fd.svg │ ├── 1f647-1f3fe.svg │ ├── 1f647-1f3ff.svg │ ├── 1f647.svg │ ├── 1f648.svg │ ├── 1f649.svg │ ├── 1f64a.svg │ ├── 1f64b-1f3fb.svg │ ├── 1f64b-1f3fc.svg │ ├── 1f64b-1f3fd.svg │ ├── 1f64b-1f3fe.svg │ ├── 1f64b-1f3ff.svg │ ├── 1f64b.svg │ ├── 1f64c-1f3fb.svg │ ├── 1f64c-1f3fc.svg │ ├── 1f64c-1f3fd.svg │ ├── 1f64c-1f3fe.svg │ ├── 1f64c-1f3ff.svg │ ├── 1f64c.svg │ ├── 1f64d-1f3fb.svg │ ├── 1f64d-1f3fc.svg │ ├── 1f64d-1f3fd.svg │ ├── 1f64d-1f3fe.svg │ ├── 1f64d-1f3ff.svg │ ├── 1f64d.svg │ ├── 1f64e-1f3fb.svg │ ├── 1f64e-1f3fc.svg │ ├── 1f64e-1f3fd.svg │ ├── 1f64e-1f3fe.svg │ ├── 1f64e-1f3ff.svg │ ├── 1f64e.svg │ ├── 1f64f-1f3fb.svg │ ├── 1f64f-1f3fc.svg │ ├── 1f64f-1f3fd.svg │ ├── 1f64f-1f3fe.svg │ ├── 1f64f-1f3ff.svg │ ├── 1f64f.svg │ ├── 1f680.svg │ ├── 1f681.svg │ ├── 1f682.svg │ ├── 1f683.svg │ ├── 1f684.svg │ ├── 1f685.svg │ ├── 1f686.svg │ ├── 1f687.svg │ ├── 1f688.svg │ ├── 1f689.svg │ ├── 1f68a.svg │ ├── 1f68b.svg │ ├── 1f68c.svg │ ├── 1f68d.svg │ ├── 1f68e.svg │ ├── 1f68f.svg │ ├── 1f690.svg │ ├── 1f691.svg │ ├── 1f692.svg │ ├── 1f693.svg │ ├── 1f694.svg │ ├── 1f695.svg │ ├── 1f696.svg │ ├── 1f697.svg │ ├── 1f698.svg │ ├── 1f699.svg │ ├── 1f69a.svg │ ├── 1f69b.svg │ ├── 1f69c.svg │ ├── 1f69d.svg │ ├── 1f69e.svg │ ├── 1f69f.svg │ ├── 1f6a0.svg │ ├── 1f6a1.svg │ ├── 1f6a2.svg │ ├── 1f6a3-1f3fb.svg │ ├── 1f6a3-1f3fc.svg │ ├── 1f6a3-1f3fd.svg │ ├── 1f6a3-1f3fe.svg │ ├── 1f6a3-1f3ff.svg │ ├── 1f6a3.svg │ ├── 1f6a4.svg │ ├── 1f6a5.svg │ ├── 1f6a6.svg │ ├── 1f6a7.svg │ ├── 1f6a8.svg │ ├── 1f6a9.svg │ ├── 1f6aa.svg │ ├── 1f6ab.svg │ ├── 1f6ac.svg │ ├── 1f6ad.svg │ ├── 1f6ae.svg │ ├── 1f6af.svg │ ├── 1f6b0.svg │ ├── 1f6b1.svg │ ├── 1f6b2.svg │ ├── 1f6b3.svg │ ├── 1f6b4-1f3fb.svg │ ├── 1f6b4-1f3fc.svg │ ├── 1f6b4-1f3fd.svg │ ├── 1f6b4-1f3fe.svg │ ├── 1f6b4-1f3ff.svg │ ├── 1f6b4.svg │ ├── 1f6b5-1f3fb.svg │ ├── 1f6b5-1f3fc.svg │ ├── 1f6b5-1f3fd.svg │ ├── 1f6b5-1f3fe.svg │ ├── 1f6b5-1f3ff.svg │ ├── 1f6b5.svg │ ├── 1f6b6-1f3fb.svg │ ├── 1f6b6-1f3fc.svg │ ├── 1f6b6-1f3fd.svg │ ├── 1f6b6-1f3fe.svg │ ├── 1f6b6-1f3ff.svg │ ├── 1f6b6.svg │ ├── 1f6b7.svg │ ├── 1f6b8.svg │ ├── 1f6b9.svg │ ├── 1f6ba.svg │ ├── 1f6bb.svg │ ├── 1f6bc.svg │ ├── 1f6bd.svg │ ├── 1f6be.svg │ ├── 1f6bf.svg │ ├── 1f6c0-1f3fb.svg │ ├── 1f6c0-1f3fc.svg │ ├── 1f6c0-1f3fd.svg │ ├── 1f6c0-1f3fe.svg │ ├── 1f6c0-1f3ff.svg │ ├── 1f6c0.svg │ ├── 1f6c1.svg │ ├── 1f6c2.svg │ ├── 1f6c3.svg │ ├── 1f6c4.svg │ ├── 1f6c5.svg │ ├── 1f6cb.svg │ ├── 1f6cc.svg │ ├── 1f6cd.svg │ ├── 1f6ce.svg │ ├── 1f6cf.svg │ ├── 1f6d0.svg │ ├── 1f6d1.svg │ ├── 1f6d2.svg │ ├── 1f6e0.svg │ ├── 1f6e1.svg │ ├── 1f6e2.svg │ ├── 1f6e3.svg │ ├── 1f6e4.svg │ ├── 1f6e5.svg │ ├── 1f6e9.svg │ ├── 1f6eb.svg │ ├── 1f6ec.svg │ ├── 1f6f0.svg │ ├── 1f6f3.svg │ ├── 1f6f4.svg │ ├── 1f6f5.svg │ ├── 1f6f6.svg │ ├── 1f910.svg │ ├── 1f911.svg │ ├── 1f912.svg │ ├── 1f913.svg │ ├── 1f914.svg │ ├── 1f915.svg │ ├── 1f916.svg │ ├── 1f917.svg │ ├── 1f918-1f3fb.svg │ ├── 1f918-1f3fc.svg │ ├── 1f918-1f3fd.svg │ ├── 1f918-1f3fe.svg │ ├── 1f918-1f3ff.svg │ ├── 1f918.svg │ ├── 1f919-1f3fb.svg │ ├── 1f919-1f3fc.svg │ ├── 1f919-1f3fd.svg │ ├── 1f919-1f3fe.svg │ ├── 1f919-1f3ff.svg │ ├── 1f919.svg │ ├── 1f91a-1f3fb.svg │ ├── 1f91a-1f3fc.svg │ ├── 1f91a-1f3fd.svg │ ├── 1f91a-1f3fe.svg │ ├── 1f91a-1f3ff.svg │ ├── 1f91a.svg │ ├── 1f91b-1f3fb.svg │ ├── 1f91b-1f3fc.svg │ ├── 1f91b-1f3fd.svg │ ├── 1f91b-1f3fe.svg │ ├── 1f91b-1f3ff.svg │ ├── 1f91b.svg │ ├── 1f91c-1f3fb.svg │ ├── 1f91c-1f3fc.svg │ ├── 1f91c-1f3fd.svg │ ├── 1f91c-1f3fe.svg │ ├── 1f91c-1f3ff.svg │ ├── 1f91c.svg │ ├── 1f91d-1f3fb.svg │ ├── 1f91d-1f3fc.svg │ ├── 1f91d-1f3fd.svg │ ├── 1f91d-1f3fe.svg │ ├── 1f91d-1f3ff.svg │ ├── 1f91d.svg │ ├── 1f91e-1f3fb.svg │ ├── 1f91e-1f3fc.svg │ ├── 1f91e-1f3fd.svg │ ├── 1f91e-1f3fe.svg │ ├── 1f91e-1f3ff.svg │ ├── 1f91e.svg │ ├── 1f920.svg │ ├── 1f921.svg │ ├── 1f922.svg │ ├── 1f923.svg │ ├── 1f924.svg │ ├── 1f925.svg │ ├── 1f926-1f3fb.svg │ ├── 1f926-1f3fc.svg │ ├── 1f926-1f3fd.svg │ ├── 1f926-1f3fe.svg │ ├── 1f926-1f3ff.svg │ ├── 1f926.svg │ ├── 1f927.svg │ ├── 1f930-1f3fb.svg │ ├── 1f930-1f3fc.svg │ ├── 1f930-1f3fd.svg │ ├── 1f930-1f3fe.svg │ ├── 1f930-1f3ff.svg │ ├── 1f930.svg │ ├── 1f933-1f3fb.svg │ ├── 1f933-1f3fc.svg │ ├── 1f933-1f3fd.svg │ ├── 1f933-1f3fe.svg │ ├── 1f933-1f3ff.svg │ ├── 1f933.svg │ ├── 1f934-1f3fb.svg │ ├── 1f934-1f3fc.svg │ ├── 1f934-1f3fd.svg │ ├── 1f934-1f3fe.svg │ ├── 1f934-1f3ff.svg │ ├── 1f934.svg │ ├── 1f935-1f3fb.svg │ ├── 1f935-1f3fc.svg │ ├── 1f935-1f3fd.svg │ ├── 1f935-1f3fe.svg │ ├── 1f935-1f3ff.svg │ ├── 1f935.svg │ ├── 1f936-1f3fb.svg │ ├── 1f936-1f3fc.svg │ ├── 1f936-1f3fd.svg │ ├── 1f936-1f3fe.svg │ ├── 1f936-1f3ff.svg │ ├── 1f936.svg │ ├── 1f937-1f3fb.svg │ ├── 1f937-1f3fc.svg │ ├── 1f937-1f3fd.svg │ ├── 1f937-1f3fe.svg │ ├── 1f937-1f3ff.svg │ ├── 1f937.svg │ ├── 1f938-1f3fb.svg │ ├── 1f938-1f3fc.svg │ ├── 1f938-1f3fd.svg │ ├── 1f938-1f3fe.svg │ ├── 1f938-1f3ff.svg │ ├── 1f938.svg │ ├── 1f939-1f3fb.svg │ ├── 1f939-1f3fc.svg │ ├── 1f939-1f3fd.svg │ ├── 1f939-1f3fe.svg │ ├── 1f939-1f3ff.svg │ ├── 1f939.svg │ ├── 1f93a.svg │ ├── 1f93b-1f3fb.svg │ ├── 1f93b-1f3fc.svg │ ├── 1f93b-1f3fd.svg │ ├── 1f93b-1f3fe.svg │ ├── 1f93b-1f3ff.svg │ ├── 1f93b.svg │ ├── 1f93c-1f3fb.svg │ ├── 1f93c-1f3fc.svg │ ├── 1f93c-1f3fd.svg │ ├── 1f93c-1f3fe.svg │ ├── 1f93c-1f3ff.svg │ ├── 1f93c.svg │ ├── 1f93d-1f3fb.svg │ ├── 1f93d-1f3fc.svg │ ├── 1f93d-1f3fd.svg │ ├── 1f93d-1f3fe.svg │ ├── 1f93d-1f3ff.svg │ ├── 1f93d.svg │ ├── 1f93e-1f3fb.svg │ ├── 1f93e-1f3fc.svg │ ├── 1f93e-1f3fd.svg │ ├── 1f93e-1f3fe.svg │ ├── 1f93e-1f3ff.svg │ ├── 1f93e.svg │ ├── 1f93f.svg │ ├── 1f940.svg │ ├── 1f942.svg │ ├── 1f943.svg │ ├── 1f944.svg │ ├── 1f945.svg │ ├── 1f946.svg │ ├── 1f947.svg │ ├── 1f948.svg │ ├── 1f949.svg │ ├── 1f950.svg │ ├── 1f951.svg │ ├── 1f952.svg │ ├── 1f953.svg │ ├── 1f954.svg │ ├── 1f955.svg │ ├── 1f956.svg │ ├── 1f957.svg │ ├── 1f958.svg │ ├── 1f959.svg │ ├── 1f95a.svg │ ├── 1f95b.svg │ ├── 1f95c.svg │ ├── 1f95d.svg │ ├── 1f95e.svg │ ├── 1f960.svg │ ├── 1f961.svg │ ├── 1f980.svg │ ├── 1f981.svg │ ├── 1f982.svg │ ├── 1f983.svg │ ├── 1f984.svg │ ├── 1f985.svg │ ├── 1f986.svg │ ├── 1f987.svg │ ├── 1f988.svg │ ├── 1f989.svg │ ├── 1f98a.svg │ ├── 1f98b.svg │ ├── 1f98c.svg │ ├── 1f98d.svg │ ├── 1f98e.svg │ ├── 1f98f.svg │ ├── 1f990.svg │ ├── 1f991.svg │ ├── 1f9c0.svg │ ├── 203c.svg │ ├── 2049.svg │ ├── 2122.svg │ ├── 2139.svg │ ├── 2194.svg │ ├── 2195.svg │ ├── 2196.svg │ ├── 2197.svg │ ├── 2198.svg │ ├── 2199.svg │ ├── 21a9.svg │ ├── 21aa.svg │ ├── 231a.svg │ ├── 231b.svg │ ├── 2328.svg │ ├── 23cf.svg │ ├── 23e9.svg │ ├── 23ea.svg │ ├── 23eb.svg │ ├── 23ec.svg │ ├── 23ed.svg │ ├── 23ee.svg │ ├── 23ef.svg │ ├── 23f0.svg │ ├── 23f1.svg │ ├── 23f2.svg │ ├── 23f3.svg │ ├── 23f8.svg │ ├── 23f9.svg │ ├── 23fa.svg │ ├── 24c2.svg │ ├── 25aa.svg │ ├── 25ab.svg │ ├── 25b6.svg │ ├── 25c0.svg │ ├── 25fb.svg │ ├── 25fc.svg │ ├── 25fd.svg │ ├── 25fe.svg │ ├── 2600.svg │ ├── 2601.svg │ ├── 2602.svg │ ├── 2603.svg │ ├── 2604.svg │ ├── 260e.svg │ ├── 2611.svg │ ├── 2614.svg │ ├── 2615.svg │ ├── 2618.svg │ ├── 261d-1f3fb.svg │ ├── 261d-1f3fc.svg │ ├── 261d-1f3fd.svg │ ├── 261d-1f3fe.svg │ ├── 261d-1f3ff.svg │ ├── 261d.svg │ ├── 2620.svg │ ├── 2622.svg │ ├── 2623.svg │ ├── 2626.svg │ ├── 262a.svg │ ├── 262e.svg │ ├── 262f.svg │ ├── 2638.svg │ ├── 2639.svg │ ├── 263a.svg │ ├── 2648.svg │ ├── 2649.svg │ ├── 264a.svg │ ├── 264b.svg │ ├── 264c.svg │ ├── 264d.svg │ ├── 264e.svg │ ├── 264f.svg │ ├── 2650.svg │ ├── 2651.svg │ ├── 2652.svg │ ├── 2653.svg │ ├── 2660.svg │ ├── 2663.svg │ ├── 2665.svg │ ├── 2666.svg │ ├── 2668.svg │ ├── 267b.svg │ ├── 267f.svg │ ├── 2692.svg │ ├── 2693.svg │ ├── 2694.svg │ ├── 2696.svg │ ├── 2697.svg │ ├── 2699.svg │ ├── 269b.svg │ ├── 269c.svg │ ├── 26a0.svg │ ├── 26a1.svg │ ├── 26aa.svg │ ├── 26ab.svg │ ├── 26b0.svg │ ├── 26b1.svg │ ├── 26bd.svg │ ├── 26be.svg │ ├── 26c4.svg │ ├── 26c5.svg │ ├── 26c8.svg │ ├── 26ce.svg │ ├── 26cf.svg │ ├── 26d1.svg │ ├── 26d3.svg │ ├── 26d4.svg │ ├── 26e9.svg │ ├── 26ea.svg │ ├── 26f0.svg │ ├── 26f1.svg │ ├── 26f2.svg │ ├── 26f3.svg │ ├── 26f4.svg │ ├── 26f5.svg │ ├── 26f7.svg │ ├── 26f8.svg │ ├── 26f9-1f3fb.svg │ ├── 26f9-1f3fc.svg │ ├── 26f9-1f3fd.svg │ ├── 26f9-1f3fe.svg │ ├── 26f9-1f3ff.svg │ ├── 26f9.svg │ ├── 26fa.svg │ ├── 26fd.svg │ ├── 2702.svg │ ├── 2705.svg │ ├── 2708.svg │ ├── 2709.svg │ ├── 270a-1f3fb.svg │ ├── 270a-1f3fc.svg │ ├── 270a-1f3fd.svg │ ├── 270a-1f3fe.svg │ ├── 270a-1f3ff.svg │ ├── 270a.svg │ ├── 270b-1f3fb.svg │ ├── 270b-1f3fc.svg │ ├── 270b-1f3fd.svg │ ├── 270b-1f3fe.svg │ ├── 270b-1f3ff.svg │ ├── 270b.svg │ ├── 270c-1f3fb.svg │ ├── 270c-1f3fc.svg │ ├── 270c-1f3fd.svg │ ├── 270c-1f3fe.svg │ ├── 270c-1f3ff.svg │ ├── 270c.svg │ ├── 270d-1f3fb.svg │ ├── 270d-1f3fc.svg │ ├── 270d-1f3fd.svg │ ├── 270d-1f3fe.svg │ ├── 270d-1f3ff.svg │ ├── 270d.svg │ ├── 270f.svg │ ├── 2712.svg │ ├── 2714.svg │ ├── 2716.svg │ ├── 271d.svg │ ├── 2721.svg │ ├── 2728.svg │ ├── 2733.svg │ ├── 2734.svg │ ├── 2744.svg │ ├── 2747.svg │ ├── 274c.svg │ ├── 274e.svg │ ├── 2753.svg │ ├── 2754.svg │ ├── 2755.svg │ ├── 2757.svg │ ├── 2763.svg │ ├── 2764.svg │ ├── 2795.svg │ ├── 2796.svg │ ├── 2797.svg │ ├── 27a1.svg │ ├── 27b0.svg │ ├── 27bf.svg │ ├── 2934.svg │ ├── 2935.svg │ ├── 2b05.svg │ ├── 2b06.svg │ ├── 2b07.svg │ ├── 2b1b.svg │ ├── 2b1c.svg │ ├── 2b50.svg │ ├── 2b55.svg │ ├── 3030.svg │ ├── 303d.svg │ ├── 3297.svg │ ├── 3299.svg │ ├── LICENSE.md │ ├── README.md │ ├── emoticons.qrc │ └── emoticons.xml ├── Universe │ ├── 1f004.svg │ ├── 1f0cf.svg │ ├── 1f170.svg │ ├── 1f171.svg │ ├── 1f17e.svg │ ├── 1f17f.svg │ ├── 1f18e.svg │ ├── 1f191.svg │ ├── 1f192.svg │ ├── 1f193.svg │ ├── 1f194.svg │ ├── 1f195.svg │ ├── 1f196.svg │ ├── 1f197.svg │ ├── 1f198.svg │ ├── 1f199.svg │ ├── 1f19a.svg │ ├── 1f1e6.svg │ ├── 1f1e7.svg │ ├── 1f1e8-1f1f3.svg │ ├── 1f1e8.svg │ ├── 1f1e9-1f1ea.svg │ ├── 1f1e9.svg │ ├── 1f1ea-1f1f8.svg │ ├── 1f1ea.svg │ ├── 1f1eb-1f1f7.svg │ ├── 1f1eb.svg │ ├── 1f1ec-1f1e7.svg │ ├── 1f1ec.svg │ ├── 1f1ed.svg │ ├── 1f1ee-1f1f9.svg │ ├── 1f1ee.svg │ ├── 1f1ef-1f1f5.svg │ ├── 1f1ef.svg │ ├── 1f1f0-1f1f7.svg │ ├── 1f1f0.svg │ ├── 1f1f1.svg │ ├── 1f1f2.svg │ ├── 1f1f3.svg │ ├── 1f1f4.svg │ ├── 1f1f5.svg │ ├── 1f1f6.svg │ ├── 1f1f7-1f1fa.svg │ ├── 1f1f7.svg │ ├── 1f1f8.svg │ ├── 1f1f9.svg │ ├── 1f1fa-1f1f8.svg │ ├── 1f1fa.svg │ ├── 1f1fb.svg │ ├── 1f1fc.svg │ ├── 1f1fd.svg │ ├── 1f1fe.svg │ ├── 1f1ff.svg │ ├── 1f201.svg │ ├── 1f202.svg │ ├── 1f21a.svg │ ├── 1f22f.svg │ ├── 1f232.svg │ ├── 1f233.svg │ ├── 1f234.svg │ ├── 1f235.svg │ ├── 1f236.svg │ ├── 1f237.svg │ ├── 1f238.svg │ ├── 1f239.svg │ ├── 1f23a.svg │ ├── 1f250.svg │ ├── 1f251.svg │ ├── 1f300.svg │ ├── 1f301.svg │ ├── 1f302.svg │ ├── 1f303.svg │ ├── 1f304.svg │ ├── 1f305.svg │ ├── 1f306.svg │ ├── 1f307.svg │ ├── 1f308.svg │ ├── 1f309.svg │ ├── 1f30a.svg │ ├── 1f30b.svg │ ├── 1f30c.svg │ ├── 1f30d.svg │ ├── 1f30e.svg │ ├── 1f30f.svg │ ├── 1f310.svg │ ├── 1f311.svg │ ├── 1f312.svg │ ├── 1f313.svg │ ├── 1f314.svg │ ├── 1f315.svg │ ├── 1f316.svg │ ├── 1f317.svg │ ├── 1f318.svg │ ├── 1f319.svg │ ├── 1f31a.svg │ ├── 1f31b.svg │ ├── 1f31c.svg │ ├── 1f31d.svg │ ├── 1f31e.svg │ ├── 1f31f.svg │ ├── 1f320.svg │ ├── 1f330.svg │ ├── 1f331.svg │ ├── 1f332.svg │ ├── 1f333.svg │ ├── 1f334.svg │ ├── 1f335.svg │ ├── 1f337.svg │ ├── 1f338.svg │ ├── 1f339.svg │ ├── 1f33a.svg │ ├── 1f33b.svg │ ├── 1f33c.svg │ ├── 1f33d.svg │ ├── 1f33e.svg │ ├── 1f33f.svg │ ├── 1f340.svg │ ├── 1f341.svg │ ├── 1f342.svg │ ├── 1f343.svg │ ├── 1f344.svg │ ├── 1f345.svg │ ├── 1f346.svg │ ├── 1f347.svg │ ├── 1f348.svg │ ├── 1f349.svg │ ├── 1f34a.svg │ ├── 1f34b.svg │ ├── 1f34c.svg │ ├── 1f34d.svg │ ├── 1f34e.svg │ ├── 1f34f.svg │ ├── 1f350.svg │ ├── 1f351.svg │ ├── 1f352.svg │ ├── 1f353.svg │ ├── 1f354.svg │ ├── 1f355.svg │ ├── 1f356.svg │ ├── 1f357.svg │ ├── 1f358.svg │ ├── 1f359.svg │ ├── 1f35a.svg │ ├── 1f35b.svg │ ├── 1f35c.svg │ ├── 1f35d.svg │ ├── 1f35e.svg │ ├── 1f35f.svg │ ├── 1f360.svg │ ├── 1f361.svg │ ├── 1f362.svg │ ├── 1f363.svg │ ├── 1f364.svg │ ├── 1f365.svg │ ├── 1f366.svg │ ├── 1f367.svg │ ├── 1f368.svg │ ├── 1f369.svg │ ├── 1f36a.svg │ ├── 1f36b.svg │ ├── 1f36c.svg │ ├── 1f36d.svg │ ├── 1f36e.svg │ ├── 1f36f.svg │ ├── 1f370.svg │ ├── 1f371.svg │ ├── 1f372.svg │ ├── 1f373.svg │ ├── 1f374.svg │ ├── 1f375.svg │ ├── 1f376.svg │ ├── 1f377.svg │ ├── 1f378.svg │ ├── 1f379.svg │ ├── 1f37a.svg │ ├── 1f37b.svg │ ├── 1f37c.svg │ ├── 1f380.svg │ ├── 1f381.svg │ ├── 1f382.svg │ ├── 1f383.svg │ ├── 1f384.svg │ ├── 1f385.svg │ ├── 1f386.svg │ ├── 1f387.svg │ ├── 1f388.svg │ ├── 1f389.svg │ ├── 1f38a.svg │ ├── 1f38b.svg │ ├── 1f38c.svg │ ├── 1f38d.svg │ ├── 1f38e.svg │ ├── 1f38f.svg │ ├── 1f390.svg │ ├── 1f391.svg │ ├── 1f392.svg │ ├── 1f393.svg │ ├── 1f3a0.svg │ ├── 1f3a1.svg │ ├── 1f3a2.svg │ ├── 1f3a3.svg │ ├── 1f3a4.svg │ ├── 1f3a5.svg │ ├── 1f3a6.svg │ ├── 1f3a7.svg │ ├── 1f3a8.svg │ ├── 1f3a9.svg │ ├── 1f3aa.svg │ ├── 1f3ab.svg │ ├── 1f3ac.svg │ ├── 1f3ad.svg │ ├── 1f3ae.svg │ ├── 1f3af.svg │ ├── 1f3b0.svg │ ├── 1f3b1.svg │ ├── 1f3b2.svg │ ├── 1f3b3.svg │ ├── 1f3b4.svg │ ├── 1f3b5.svg │ ├── 1f3b6.svg │ ├── 1f3b7.svg │ ├── 1f3b8.svg │ ├── 1f3b9.svg │ ├── 1f3ba.svg │ ├── 1f3bb.svg │ ├── 1f3bc.svg │ ├── 1f3bd.svg │ ├── 1f3be.svg │ ├── 1f3bf.svg │ ├── 1f3c0.svg │ ├── 1f3c1.svg │ ├── 1f3c2.svg │ ├── 1f3c3.svg │ ├── 1f3c4.svg │ ├── 1f3c6.svg │ ├── 1f3c7.svg │ ├── 1f3c8.svg │ ├── 1f3c9.svg │ ├── 1f3ca.svg │ ├── 1f3e0.svg │ ├── 1f3e1.svg │ ├── 1f3e2.svg │ ├── 1f3e3.svg │ ├── 1f3e4.svg │ ├── 1f3e5.svg │ ├── 1f3e6.svg │ ├── 1f3e7.svg │ ├── 1f3e8.svg │ ├── 1f3e9.svg │ ├── 1f3ea.svg │ ├── 1f3eb.svg │ ├── 1f3ec.svg │ ├── 1f3ed.svg │ ├── 1f3ee.svg │ ├── 1f3ef.svg │ ├── 1f3f0.svg │ ├── 1f400.svg │ ├── 1f401.svg │ ├── 1f402.svg │ ├── 1f403.svg │ ├── 1f404.svg │ ├── 1f405.svg │ ├── 1f406.svg │ ├── 1f407.svg │ ├── 1f408.svg │ ├── 1f409.svg │ ├── 1f40a.svg │ ├── 1f40b.svg │ ├── 1f40c.svg │ ├── 1f40d.svg │ ├── 1f40e.svg │ ├── 1f40f.svg │ ├── 1f410.svg │ ├── 1f411.svg │ ├── 1f412.svg │ ├── 1f413.svg │ ├── 1f414.svg │ ├── 1f415.svg │ ├── 1f416.svg │ ├── 1f417.svg │ ├── 1f418.svg │ ├── 1f419.svg │ ├── 1f41a.svg │ ├── 1f41b.svg │ ├── 1f41c.svg │ ├── 1f41d.svg │ ├── 1f41e.svg │ ├── 1f41f.svg │ ├── 1f420.svg │ ├── 1f421.svg │ ├── 1f422.svg │ ├── 1f423.svg │ ├── 1f424.svg │ ├── 1f425.svg │ ├── 1f426.svg │ ├── 1f427.svg │ ├── 1f428.svg │ ├── 1f429.svg │ ├── 1f42a.svg │ ├── 1f42b.svg │ ├── 1f42c.svg │ ├── 1f42d.svg │ ├── 1f42e.svg │ ├── 1f42f.svg │ ├── 1f430.svg │ ├── 1f431.svg │ ├── 1f432.svg │ ├── 1f433.svg │ ├── 1f434.svg │ ├── 1f435.svg │ ├── 1f436.svg │ ├── 1f437.svg │ ├── 1f438.svg │ ├── 1f439.svg │ ├── 1f43a.svg │ ├── 1f43b.svg │ ├── 1f43c.svg │ ├── 1f43d.svg │ ├── 1f43e.svg │ ├── 1f440.svg │ ├── 1f442.svg │ ├── 1f443.svg │ ├── 1f444.svg │ ├── 1f445.svg │ ├── 1f446.svg │ ├── 1f447.svg │ ├── 1f448.svg │ ├── 1f449.svg │ ├── 1f44a.svg │ ├── 1f44b.svg │ ├── 1f44c.svg │ ├── 1f44d.svg │ ├── 1f44e.svg │ ├── 1f44f.svg │ ├── 1f450.svg │ ├── 1f451.svg │ ├── 1f452.svg │ ├── 1f453.svg │ ├── 1f454.svg │ ├── 1f455.svg │ ├── 1f456.svg │ ├── 1f457.svg │ ├── 1f458.svg │ ├── 1f459.svg │ ├── 1f45a.svg │ ├── 1f45b.svg │ ├── 1f45c.svg │ ├── 1f45d.svg │ ├── 1f45e.svg │ ├── 1f45f.svg │ ├── 1f460.svg │ ├── 1f461.svg │ ├── 1f462.svg │ ├── 1f463.svg │ ├── 1f464.svg │ ├── 1f465.svg │ ├── 1f466.svg │ ├── 1f467.svg │ ├── 1f468.svg │ ├── 1f469.svg │ ├── 1f46a.svg │ ├── 1f46b.svg │ ├── 1f46c.svg │ ├── 1f46d.svg │ ├── 1f46e.svg │ ├── 1f46f.svg │ ├── 1f470.svg │ ├── 1f471.svg │ ├── 1f472.svg │ ├── 1f473.svg │ ├── 1f474.svg │ ├── 1f475.svg │ ├── 1f476.svg │ ├── 1f477.svg │ ├── 1f478.svg │ ├── 1f479.svg │ ├── 1f47a.svg │ ├── 1f47b.svg │ ├── 1f47c.svg │ ├── 1f47d.svg │ ├── 1f47e.svg │ ├── 1f47f.svg │ ├── 1f480.svg │ ├── 1f481.svg │ ├── 1f482.svg │ ├── 1f483.svg │ ├── 1f484.svg │ ├── 1f485.svg │ ├── 1f486.svg │ ├── 1f487.svg │ ├── 1f488.svg │ ├── 1f489.svg │ ├── 1f48a.svg │ ├── 1f48b.svg │ ├── 1f48c.svg │ ├── 1f48d.svg │ ├── 1f48e.svg │ ├── 1f48f.svg │ ├── 1f490.svg │ ├── 1f491.svg │ ├── 1f492.svg │ ├── 1f493.svg │ ├── 1f494.svg │ ├── 1f495.svg │ ├── 1f496.svg │ ├── 1f497.svg │ ├── 1f498.svg │ ├── 1f499.svg │ ├── 1f49a.svg │ ├── 1f49b.svg │ ├── 1f49c.svg │ ├── 1f49d.svg │ ├── 1f49e.svg │ ├── 1f49f.svg │ ├── 1f4a0.svg │ ├── 1f4a1.svg │ ├── 1f4a2.svg │ ├── 1f4a3.svg │ ├── 1f4a4.svg │ ├── 1f4a5.svg │ ├── 1f4a6.svg │ ├── 1f4a7.svg │ ├── 1f4a8.svg │ ├── 1f4a9.svg │ ├── 1f4aa.svg │ ├── 1f4ab.svg │ ├── 1f4ac.svg │ ├── 1f4ad.svg │ ├── 1f4ae.svg │ ├── 1f4af.svg │ ├── 1f4b0.svg │ ├── 1f4b1.svg │ ├── 1f4b2.svg │ ├── 1f4b3.svg │ ├── 1f4b4.svg │ ├── 1f4b5.svg │ ├── 1f4b6.svg │ ├── 1f4b7.svg │ ├── 1f4b8.svg │ ├── 1f4b9.svg │ ├── 1f4ba.svg │ ├── 1f4bb.svg │ ├── 1f4bc.svg │ ├── 1f4bd.svg │ ├── 1f4be.svg │ ├── 1f4bf.svg │ ├── 1f4c0.svg │ ├── 1f4c1.svg │ ├── 1f4c2.svg │ ├── 1f4c3.svg │ ├── 1f4c4.svg │ ├── 1f4c5.svg │ ├── 1f4c6.svg │ ├── 1f4c7.svg │ ├── 1f4c8.svg │ ├── 1f4c9.svg │ ├── 1f4ca.svg │ ├── 1f4cb.svg │ ├── 1f4cc.svg │ ├── 1f4cd.svg │ ├── 1f4ce.svg │ ├── 1f4cf.svg │ ├── 1f4d0.svg │ ├── 1f4d1.svg │ ├── 1f4d2.svg │ ├── 1f4d3.svg │ ├── 1f4d4.svg │ ├── 1f4d5.svg │ ├── 1f4d6.svg │ ├── 1f4d7.svg │ ├── 1f4d8.svg │ ├── 1f4d9.svg │ ├── 1f4da.svg │ ├── 1f4db.svg │ ├── 1f4dc.svg │ ├── 1f4dd.svg │ ├── 1f4de.svg │ ├── 1f4df.svg │ ├── 1f4e0.svg │ ├── 1f4e1.svg │ ├── 1f4e2.svg │ ├── 1f4e3.svg │ ├── 1f4e4.svg │ ├── 1f4e5.svg │ ├── 1f4e6.svg │ ├── 1f4e7.svg │ ├── 1f4e8.svg │ ├── 1f4e9.svg │ ├── 1f4ea.svg │ ├── 1f4eb.svg │ ├── 1f4ec.svg │ ├── 1f4ed.svg │ ├── 1f4ee.svg │ ├── 1f4ef.svg │ ├── 1f4f0.svg │ ├── 1f4f1.svg │ ├── 1f4f2.svg │ ├── 1f4f3.svg │ ├── 1f4f4.svg │ ├── 1f4f5.svg │ ├── 1f4f6.svg │ ├── 1f4f7.svg │ ├── 1f4f9.svg │ ├── 1f4fa.svg │ ├── 1f4fb.svg │ ├── 1f4fc.svg │ ├── 1f500.svg │ ├── 1f501.svg │ ├── 1f502.svg │ ├── 1f503.svg │ ├── 1f504.svg │ ├── 1f505.svg │ ├── 1f506.svg │ ├── 1f507.svg │ ├── 1f508.svg │ ├── 1f509.svg │ ├── 1f50a.svg │ ├── 1f50b.svg │ ├── 1f50c.svg │ ├── 1f50d.svg │ ├── 1f50e.svg │ ├── 1f50f.svg │ ├── 1f510.svg │ ├── 1f511.svg │ ├── 1f512.svg │ ├── 1f513.svg │ ├── 1f514.svg │ ├── 1f515.svg │ ├── 1f516.svg │ ├── 1f517.svg │ ├── 1f518.svg │ ├── 1f519.svg │ ├── 1f51a.svg │ ├── 1f51b.svg │ ├── 1f51c.svg │ ├── 1f51d.svg │ ├── 1f51e.svg │ ├── 1f51f.svg │ ├── 1f520.svg │ ├── 1f521.svg │ ├── 1f522.svg │ ├── 1f523.svg │ ├── 1f524.svg │ ├── 1f525.svg │ ├── 1f526.svg │ ├── 1f527.svg │ ├── 1f528.svg │ ├── 1f529.svg │ ├── 1f52a.svg │ ├── 1f52b.svg │ ├── 1f52c.svg │ ├── 1f52d.svg │ ├── 1f52e.svg │ ├── 1f52f.svg │ ├── 1f530.svg │ ├── 1f531.svg │ ├── 1f532.svg │ ├── 1f533.svg │ ├── 1f534.svg │ ├── 1f535.svg │ ├── 1f536.svg │ ├── 1f537.svg │ ├── 1f538.svg │ ├── 1f539.svg │ ├── 1f53a.svg │ ├── 1f53b.svg │ ├── 1f53c.svg │ ├── 1f53d.svg │ ├── 1f550.svg │ ├── 1f551.svg │ ├── 1f552.svg │ ├── 1f553.svg │ ├── 1f554.svg │ ├── 1f555.svg │ ├── 1f556.svg │ ├── 1f557.svg │ ├── 1f558.svg │ ├── 1f559.svg │ ├── 1f55a.svg │ ├── 1f55b.svg │ ├── 1f55c.svg │ ├── 1f55d.svg │ ├── 1f55e.svg │ ├── 1f55f.svg │ ├── 1f560.svg │ ├── 1f561.svg │ ├── 1f562.svg │ ├── 1f563.svg │ ├── 1f564.svg │ ├── 1f565.svg │ ├── 1f566.svg │ ├── 1f567.svg │ ├── 1f595.svg │ ├── 1f5fb.svg │ ├── 1f5fc.svg │ ├── 1f5fd.svg │ ├── 1f5fe.svg │ ├── 1f5ff.svg │ ├── 1f600.svg │ ├── 1f601.svg │ ├── 1f602.svg │ ├── 1f603.svg │ ├── 1f604.svg │ ├── 1f605.svg │ ├── 1f606.svg │ ├── 1f607.svg │ ├── 1f608.svg │ ├── 1f609.svg │ ├── 1f60a.svg │ ├── 1f60b.svg │ ├── 1f60c.svg │ ├── 1f60d.svg │ ├── 1f60e.svg │ ├── 1f60f.svg │ ├── 1f610.svg │ ├── 1f611.svg │ ├── 1f612.svg │ ├── 1f613.svg │ ├── 1f614.svg │ ├── 1f615.svg │ ├── 1f616.svg │ ├── 1f617.svg │ ├── 1f618.svg │ ├── 1f619.svg │ ├── 1f61a.svg │ ├── 1f61b.svg │ ├── 1f61c.svg │ ├── 1f61d.svg │ ├── 1f61e.svg │ ├── 1f61f.svg │ ├── 1f620.svg │ ├── 1f621.svg │ ├── 1f622.svg │ ├── 1f623.svg │ ├── 1f624.svg │ ├── 1f625.svg │ ├── 1f626.svg │ ├── 1f627.svg │ ├── 1f628.svg │ ├── 1f629.svg │ ├── 1f62a.svg │ ├── 1f62b.svg │ ├── 1f62c.svg │ ├── 1f62d.svg │ ├── 1f62e.svg │ ├── 1f62f.svg │ ├── 1f630.svg │ ├── 1f631.svg │ ├── 1f632.svg │ ├── 1f633.svg │ ├── 1f634.svg │ ├── 1f635.svg │ ├── 1f636.svg │ ├── 1f637.svg │ ├── 1f638.svg │ ├── 1f639.svg │ ├── 1f63a.svg │ ├── 1f63b.svg │ ├── 1f63c.svg │ ├── 1f63d.svg │ ├── 1f63e.svg │ ├── 1f63f.svg │ ├── 1f640.svg │ ├── 1f645.svg │ ├── 1f646.svg │ ├── 1f647.svg │ ├── 1f648.svg │ ├── 1f649.svg │ ├── 1f64a.svg │ ├── 1f64b.svg │ ├── 1f64c.svg │ ├── 1f64d.svg │ ├── 1f64e.svg │ ├── 1f64f.svg │ ├── 1f680.svg │ ├── 1f681.svg │ ├── 1f682.svg │ ├── 1f683.svg │ ├── 1f684.svg │ ├── 1f685.svg │ ├── 1f686.svg │ ├── 1f687.svg │ ├── 1f688.svg │ ├── 1f689.svg │ ├── 1f68a.svg │ ├── 1f68b.svg │ ├── 1f68c.svg │ ├── 1f68d.svg │ ├── 1f68e.svg │ ├── 1f68f.svg │ ├── 1f690.svg │ ├── 1f691.svg │ ├── 1f692.svg │ ├── 1f693.svg │ ├── 1f694.svg │ ├── 1f695.svg │ ├── 1f696.svg │ ├── 1f697.svg │ ├── 1f698.svg │ ├── 1f699.svg │ ├── 1f69a.svg │ ├── 1f69b.svg │ ├── 1f69c.svg │ ├── 1f69d.svg │ ├── 1f69e.svg │ ├── 1f69f.svg │ ├── 1f6a0.svg │ ├── 1f6a1.svg │ ├── 1f6a2.svg │ ├── 1f6a3.svg │ ├── 1f6a4.svg │ ├── 1f6a5.svg │ ├── 1f6a6.svg │ ├── 1f6a7.svg │ ├── 1f6a8.svg │ ├── 1f6a9.svg │ ├── 1f6aa.svg │ ├── 1f6ab.svg │ ├── 1f6ac.svg │ ├── 1f6ad.svg │ ├── 1f6ae.svg │ ├── 1f6af.svg │ ├── 1f6b0.svg │ ├── 1f6b1.svg │ ├── 1f6b2.svg │ ├── 1f6b3.svg │ ├── 1f6b4.svg │ ├── 1f6b5.svg │ ├── 1f6b6.svg │ ├── 1f6b7.svg │ ├── 1f6b8.svg │ ├── 1f6b9.svg │ ├── 1f6ba.svg │ ├── 1f6bb.svg │ ├── 1f6bc.svg │ ├── 1f6bd.svg │ ├── 1f6be.svg │ ├── 1f6bf.svg │ ├── 1f6c0.svg │ ├── 1f6c1.svg │ ├── 1f6c2.svg │ ├── 1f6c3.svg │ ├── 1f6c4.svg │ ├── 1f6c5.svg │ ├── 203c.svg │ ├── 2049.svg │ ├── 2122.svg │ ├── 2139.svg │ ├── 2194.svg │ ├── 2195.svg │ ├── 2196.svg │ ├── 2197.svg │ ├── 2198.svg │ ├── 2199.svg │ ├── 21a9.svg │ ├── 21aa.svg │ ├── 23-20e3.svg │ ├── 231a.svg │ ├── 231b.svg │ ├── 23e9.svg │ ├── 23ea.svg │ ├── 23eb.svg │ ├── 23ec.svg │ ├── 23f0.svg │ ├── 23f3.svg │ ├── 24c2.svg │ ├── 25aa.svg │ ├── 25ab.svg │ ├── 25b6.svg │ ├── 25c0.svg │ ├── 25fb.svg │ ├── 25fc.svg │ ├── 25fd.svg │ ├── 25fe.svg │ ├── 2600.svg │ ├── 2601.svg │ ├── 260e.svg │ ├── 2611.svg │ ├── 2614.svg │ ├── 2615.svg │ ├── 261d.svg │ ├── 263a.svg │ ├── 2648.svg │ ├── 2649.svg │ ├── 264a.svg │ ├── 264b.svg │ ├── 264c.svg │ ├── 264d.svg │ ├── 264e.svg │ ├── 264f.svg │ ├── 2650.svg │ ├── 2651.svg │ ├── 2652.svg │ ├── 2653.svg │ ├── 2660.svg │ ├── 2663.svg │ ├── 2665.svg │ ├── 2666.svg │ ├── 2668.svg │ ├── 267b.svg │ ├── 267f.svg │ ├── 2693.svg │ ├── 26a0.svg │ ├── 26a1.svg │ ├── 26aa.svg │ ├── 26ab.svg │ ├── 26bd.svg │ ├── 26be.svg │ ├── 26c4.svg │ ├── 26c5.svg │ ├── 26ce.svg │ ├── 26d4.svg │ ├── 26ea.svg │ ├── 26f2.svg │ ├── 26f3.svg │ ├── 26f5.svg │ ├── 26fa.svg │ ├── 26fd.svg │ ├── 2702.svg │ ├── 2705.svg │ ├── 2708.svg │ ├── 2709.svg │ ├── 270a.svg │ ├── 270b.svg │ ├── 270c.svg │ ├── 270f.svg │ ├── 2712.svg │ ├── 2714.svg │ ├── 2716.svg │ ├── 2728.svg │ ├── 2733.svg │ ├── 2734.svg │ ├── 2744.svg │ ├── 2747.svg │ ├── 274c.svg │ ├── 274e.svg │ ├── 2753.svg │ ├── 2754.svg │ ├── 2755.svg │ ├── 2757.svg │ ├── 2764.svg │ ├── 2795.svg │ ├── 2796.svg │ ├── 2797.svg │ ├── 27a1.svg │ ├── 27b0.svg │ ├── 27bf.svg │ ├── 2934.svg │ ├── 2935.svg │ ├── 2b05.svg │ ├── 2b06.svg │ ├── 2b07.svg │ ├── 2b1b.svg │ ├── 2b1c.svg │ ├── 2b50.svg │ ├── 2b55.svg │ ├── 30-20e3.svg │ ├── 3030.svg │ ├── 303d.svg │ ├── 31-20e3.svg │ ├── 32-20e3.svg │ ├── 3297.svg │ ├── 3299.svg │ ├── 33-20e3.svg │ ├── 34-20e3.svg │ ├── 35-20e3.svg │ ├── 36-20e3.svg │ ├── 37-20e3.svg │ ├── 38-20e3.svg │ ├── 39-20e3.svg │ ├── LICENSE │ ├── LICENSE-GRAPHICS │ ├── README.md │ ├── a9.svg │ ├── ae.svg │ ├── e50a.svg │ ├── emoticons.qrc │ └── emoticons.xml ├── messaging-emoticon-map.xsd └── update_smileys.py ├── src ├── BUILD.bazel ├── appmanager.cpp ├── appmanager.h ├── chatlog │ ├── chatline.cpp │ ├── chatline.h │ ├── chatlinecontent.cpp │ ├── chatlinecontent.h │ ├── chatlinecontentproxy.cpp │ ├── chatlinecontentproxy.h │ ├── chatlinestorage.cpp │ ├── chatlinestorage.h │ ├── chatmessage.cpp │ ├── chatmessage.h │ ├── chatwidget.cpp │ ├── chatwidget.h │ ├── content │ │ ├── broken.cpp │ │ ├── broken.h │ │ ├── filetransferwidget.cpp │ │ ├── filetransferwidget.h │ │ ├── filetransferwidget.ui │ │ ├── image.cpp │ │ ├── image.h │ │ ├── notificationicon.cpp │ │ ├── notificationicon.h │ │ ├── spinner.cpp │ │ ├── spinner.h │ │ ├── text.cpp │ │ ├── text.h │ │ ├── timestamp.cpp │ │ └── timestamp.h │ ├── customtextdocument.cpp │ ├── customtextdocument.h │ ├── documentcache.cpp │ ├── documentcache.h │ ├── pixmapcache.cpp │ ├── pixmapcache.h │ ├── textformatter.cpp │ └── textformatter.h ├── conferencelist.cpp ├── conferencelist.h ├── core │ ├── chatid.cpp │ ├── chatid.h │ ├── conferenceid.cpp │ ├── conferenceid.h │ ├── core.cpp │ ├── core.h │ ├── coreav.cpp │ ├── coreav.h │ ├── corefile.cpp │ ├── corefile.h │ ├── dhtserver.cpp │ ├── dhtserver.h │ ├── icoreconferencemessagesender.cpp │ ├── icoreconferencemessagesender.h │ ├── icoreconferencequery.cpp │ ├── icoreconferencequery.h │ ├── icorefriendmessagesender.cpp │ ├── icorefriendmessagesender.h │ ├── icoreidhandler.cpp │ ├── icoreidhandler.h │ ├── icoresettings.cpp │ ├── icoresettings.h │ ├── idebugsettings.cpp │ ├── idebugsettings.h │ ├── receiptnum.h │ ├── toxcall.cpp │ ├── toxcall.h │ ├── toxencrypt.cpp │ ├── toxencrypt.h │ ├── toxfile.cpp │ ├── toxfile.h │ ├── toxfilepause.h │ ├── toxfileprogress.cpp │ ├── toxfileprogress.h │ ├── toxid.cpp │ ├── toxid.h │ ├── toxlogger.cpp │ ├── toxlogger.h │ ├── toxoptions.cpp │ ├── toxoptions.h │ ├── toxpk.cpp │ ├── toxpk.h │ ├── toxstring.cpp │ └── toxstring.h ├── friendlist.cpp ├── friendlist.h ├── ipc.cpp ├── ipc.h ├── loginscreen.ui ├── main.cpp ├── mainwindow.ui ├── model │ ├── about │ │ ├── aboutfriend.cpp │ │ ├── aboutfriend.h │ │ ├── iaboutfriend.cpp │ │ └── iaboutfriend.h │ ├── brokenmessagereason.h │ ├── chat.cpp │ ├── chat.h │ ├── chathistory.cpp │ ├── chathistory.h │ ├── chatlogitem.cpp │ ├── chatlogitem.h │ ├── chatroom │ │ ├── conferenceroom.cpp │ │ ├── conferenceroom.h │ │ ├── friendchatroom.cpp │ │ └── friendchatroom.h │ ├── conference.cpp │ ├── conference.h │ ├── conferenceinvite.cpp │ ├── conferenceinvite.h │ ├── conferencemessagedispatcher.cpp │ ├── conferencemessagedispatcher.h │ ├── debug │ │ ├── debuglogmodel.cpp │ │ ├── debuglogmodel.h │ │ ├── debugobjecttreemodel.cpp │ │ └── debugobjecttreemodel.h │ ├── dialogs │ │ ├── idialogs.cpp │ │ ├── idialogs.h │ │ ├── idialogsmanager.cpp │ │ └── idialogsmanager.h │ ├── exiftransform.cpp │ ├── exiftransform.h │ ├── friend.cpp │ ├── friend.h │ ├── friendlist │ │ ├── friendlistmanager.cpp │ │ ├── friendlistmanager.h │ │ ├── ifriendlistitem.cpp │ │ └── ifriendlistitem.h │ ├── friendmessagedispatcher.cpp │ ├── friendmessagedispatcher.h │ ├── ibootstraplistgenerator.cpp │ ├── ibootstraplistgenerator.h │ ├── ichatlog.h │ ├── imessagedispatcher.cpp │ ├── imessagedispatcher.h │ ├── message.cpp │ ├── message.h │ ├── notificationdata.h │ ├── notificationgenerator.cpp │ ├── notificationgenerator.h │ ├── profile │ │ ├── iprofileinfo.cpp │ │ ├── iprofileinfo.h │ │ ├── profileinfo.cpp │ │ └── profileinfo.h │ ├── sessionchatlog.cpp │ ├── sessionchatlog.h │ ├── status.cpp │ ├── status.h │ ├── systemmessage.h │ └── toxclientstandards.h ├── net │ ├── avatarbroadcaster.cpp │ ├── avatarbroadcaster.h │ ├── bootstrapnodeupdater.cpp │ ├── bootstrapnodeupdater.h │ ├── toxuri.cpp │ ├── toxuri.h │ ├── updatecheck.cpp │ └── updatecheck.h ├── nexus.cpp ├── nexus.h ├── persistence │ ├── db │ │ ├── rawdatabase.cpp │ │ ├── rawdatabase.h │ │ ├── rawdatabaseimpl.cpp │ │ ├── rawdatabaseimpl.h │ │ └── upgrades │ │ │ ├── dbto11.cpp │ │ │ ├── dbto11.h │ │ │ ├── dbupgrader.cpp │ │ │ └── dbupgrader.h │ ├── globalsettingsupgrader.cpp │ ├── globalsettingsupgrader.h │ ├── history.cpp │ ├── history.h │ ├── iconferencesettings.cpp │ ├── iconferencesettings.h │ ├── ifriendsettings.cpp │ ├── ifriendsettings.h │ ├── inotificationsettings.cpp │ ├── inotificationsettings.h │ ├── ismileysettings.cpp │ ├── ismileysettings.h │ ├── offlinemsgengine.cpp │ ├── offlinemsgengine.h │ ├── paths.cpp │ ├── paths.h │ ├── personalsettingsupgrader.cpp │ ├── personalsettingsupgrader.h │ ├── profile.cpp │ ├── profile.h │ ├── profilelocker.cpp │ ├── profilelocker.h │ ├── serialize.cpp │ ├── serialize.h │ ├── settings.cpp │ ├── settings.h │ ├── settingsserializer.cpp │ ├── settingsserializer.h │ ├── smileypack.cpp │ ├── smileypack.h │ ├── toxsave.cpp │ └── toxsave.h ├── platform │ ├── autorun.h │ ├── autorun_osx.cpp │ ├── autorun_win.cpp │ ├── autorun_xdg.cpp │ ├── camera │ │ ├── avfoundation.h │ │ ├── avfoundation.mm │ │ ├── directshow.cpp │ │ ├── directshow.h │ │ ├── v4l2.cpp │ │ └── v4l2.h │ ├── capslock.h │ ├── capslock_osx.cpp │ ├── capslock_win.cpp │ ├── capslock_x11.cpp │ ├── desktop_notifications │ │ ├── desktopnotify.cpp │ │ ├── desktopnotify.h │ │ ├── desktopnotifybackend.h │ │ ├── desktopnotifybackend_dbus.cpp │ │ └── desktopnotifybackend_noop.cpp │ ├── posixsignalnotifier.cpp │ ├── posixsignalnotifier.h │ ├── screenshot.cpp │ ├── screenshot.h │ ├── screenshot_dbus.cpp │ ├── screenshot_dbus.h │ ├── stacktrace.cpp │ ├── stacktrace.h │ ├── timer.h │ ├── timer_osx.cpp │ ├── timer_win.cpp │ ├── timer_x11.cpp │ ├── x11_display.cpp │ └── x11_display.h ├── version.cpp.in ├── version.h ├── video │ ├── cameradevice.cpp │ ├── cameradevice.h │ ├── camerasource.cpp │ ├── camerasource.h │ ├── corevideosource.cpp │ ├── corevideosource.h │ ├── ivideosettings.cpp │ ├── ivideosettings.h │ ├── netcamview.cpp │ ├── netcamview.h │ ├── scopedavdictionary.cpp │ ├── scopedavdictionary.h │ ├── videoframe.cpp │ ├── videoframe.h │ ├── videomode.cpp │ ├── videomode.h │ ├── videosource.cpp │ ├── videosource.h │ ├── videosurface.cpp │ └── videosurface.h └── widget │ ├── about │ ├── aboutfriendform.cpp │ ├── aboutfriendform.h │ └── aboutfriendform.ui │ ├── categorywidget.cpp │ ├── categorywidget.h │ ├── chatformheader.cpp │ ├── chatformheader.h │ ├── circlewidget.cpp │ ├── circlewidget.h │ ├── commondialogs.cpp │ ├── commondialogs.h │ ├── conferencewidget.cpp │ ├── conferencewidget.h │ ├── contentdialog.cpp │ ├── contentdialog.h │ ├── contentdialogmanager.cpp │ ├── contentdialogmanager.h │ ├── contentlayout.cpp │ ├── contentlayout.h │ ├── emoticonswidget.cpp │ ├── emoticonswidget.h │ ├── flowlayout.cpp │ ├── flowlayout.h │ ├── form │ ├── addfriendform.cpp │ ├── addfriendform.h │ ├── chatform.cpp │ ├── chatform.h │ ├── conferenceform.cpp │ ├── conferenceform.h │ ├── conferenceinviteform.cpp │ ├── conferenceinviteform.h │ ├── conferenceinvitewidget.cpp │ ├── conferenceinvitewidget.h │ ├── debug │ │ ├── debuglog.cpp │ │ ├── debuglog.h │ │ ├── debuglog.ui │ │ ├── debugobjecttree.cpp │ │ ├── debugobjecttree.h │ │ └── debugobjecttree.ui │ ├── debugwidget.cpp │ ├── debugwidget.h │ ├── filesform.cpp │ ├── filesform.h │ ├── filetransferlist.h │ ├── genericchatform.cpp │ ├── genericchatform.h │ ├── loadhistorydialog.cpp │ ├── loadhistorydialog.h │ ├── loadhistorydialog.ui │ ├── profileform.cpp │ ├── profileform.h │ ├── profileform.ui │ ├── removechatdialog.ui │ ├── searchsettingsform.cpp │ ├── searchsettingsform.h │ ├── searchsettingsform.ui │ ├── setpassworddialog.cpp │ ├── setpassworddialog.h │ ├── setpassworddialog.ui │ ├── settings │ │ ├── aboutform.cpp │ │ ├── aboutform.h │ │ ├── aboutsettings.ui │ │ ├── advancedform.cpp │ │ ├── advancedform.h │ │ ├── advancedsettings.ui │ │ ├── avform.cpp │ │ ├── avform.h │ │ ├── avform.ui │ │ ├── generalform.cpp │ │ ├── generalform.h │ │ ├── generalsettings.ui │ │ ├── genericsettings.cpp │ │ ├── genericsettings.h │ │ ├── privacyform.cpp │ │ ├── privacyform.h │ │ ├── privacysettings.ui │ │ ├── textcompose.cpp │ │ ├── textcompose.h │ │ ├── userinterfaceform.cpp │ │ ├── userinterfaceform.h │ │ ├── userinterfacesettings.ui │ │ ├── verticalonlyscroller.cpp │ │ └── verticalonlyscroller.h │ ├── settingswidget.cpp │ ├── settingswidget.h │ ├── tabcompleter.cpp │ └── tabcompleter.h │ ├── friendlistlayout.cpp │ ├── friendlistlayout.h │ ├── friendlistwidget.cpp │ ├── friendlistwidget.h │ ├── friendwidget.cpp │ ├── friendwidget.h │ ├── genericchatitemlayout.cpp │ ├── genericchatitemlayout.h │ ├── genericchatitemwidget.cpp │ ├── genericchatitemwidget.h │ ├── genericchatroomwidget.cpp │ ├── genericchatroomwidget.h │ ├── imagepreviewwidget.cpp │ ├── imagepreviewwidget.h │ ├── loginscreen.cpp │ ├── loginscreen.h │ ├── maskablepixmapwidget.cpp │ ├── maskablepixmapwidget.h │ ├── notificationedgewidget.cpp │ ├── notificationedgewidget.h │ ├── notificationscrollarea.cpp │ ├── notificationscrollarea.h │ ├── passwordedit.cpp │ ├── passwordedit.h │ ├── popup.cpp │ ├── popup.h │ ├── qrwidget.cpp │ ├── qrwidget.h │ ├── searchform.cpp │ ├── searchform.h │ ├── searchtypes.h │ ├── splitterrestorer.cpp │ ├── splitterrestorer.h │ ├── style.cpp │ ├── style.h │ ├── tool │ ├── abstractscreenshotgrabber.cpp │ ├── abstractscreenshotgrabber.h │ ├── activatedialog.cpp │ ├── activatedialog.h │ ├── adjustingscrollarea.cpp │ ├── adjustingscrollarea.h │ ├── callconfirmwidget.cpp │ ├── callconfirmwidget.h │ ├── chattextedit.cpp │ ├── chattextedit.h │ ├── croppinglabel.cpp │ ├── croppinglabel.h │ ├── flyoutoverlaywidget.cpp │ ├── flyoutoverlaywidget.h │ ├── identicon.cpp │ ├── identicon.h │ ├── imessageboxmanager.cpp │ ├── imessageboxmanager.h │ ├── messageboxmanager.cpp │ ├── messageboxmanager.h │ ├── movablewidget.cpp │ ├── movablewidget.h │ ├── profileimporter.cpp │ ├── profileimporter.h │ ├── recursivesignalblocker.cpp │ ├── recursivesignalblocker.h │ ├── removechatdialog.cpp │ ├── removechatdialog.h │ ├── screengrabberchooserrectitem.cpp │ ├── screengrabberchooserrectitem.h │ ├── screengrabberoverlayitem.cpp │ ├── screengrabberoverlayitem.h │ ├── screenshotgrabber.cpp │ ├── screenshotgrabber.h │ ├── toolboxgraphicsitem.cpp │ └── toolboxgraphicsitem.h │ ├── translator.cpp │ ├── translator.h │ ├── widget.cpp │ └── widget.h ├── test ├── BUILD.bazel ├── chatlog │ ├── chatlinestorage_test.cpp │ └── textformatter_test.cpp ├── core │ ├── chatid_test.cpp │ ├── core_test.cpp │ ├── fileprogress_test.cpp │ ├── toxid_test.cpp │ └── toxstring_test.cpp ├── dbutility │ ├── CMakeLists.txt │ ├── include │ │ └── dbutility │ │ │ └── dbutility.h │ └── src │ │ └── dbutility.cpp ├── mock │ ├── CMakeLists.txt │ ├── include │ │ └── mock │ │ │ ├── mockbootstraplistgenerator.h │ │ │ ├── mockconferencequery.h │ │ │ ├── mockcoreidhandler.h │ │ │ └── mockcoresettings.h │ └── src │ │ ├── mockbootstraplistgenerator.cpp │ │ ├── mockconferencequery.cpp │ │ ├── mockcoreidhandler.cpp │ │ └── mockcoresettings.cpp ├── model │ ├── conferencemessagedispatcher_test.cpp │ ├── exiftransform_fuzz_test.cpp │ ├── exiftransform_test.cpp │ ├── friendlistmanager_test.cpp │ ├── friendmessagedispatcher_test.cpp │ ├── messageprocessor_test.cpp │ ├── notificationgenerator_test.cpp │ └── sessionchatlog_test.cpp ├── net │ └── bsu_test.cpp ├── persistence │ ├── dbschema_test.cpp │ ├── dbupgrade │ │ └── dbTo11_test.cpp │ ├── offlinemsgengine_test.cpp │ ├── paths_test.cpp │ ├── serialize_fuzz_test.cpp │ └── smileypack_test.cpp ├── platform │ ├── posixsignalnotifier_test.cpp │ └── stacktrace_test.cpp ├── resources │ ├── images │ │ ├── loginscreen_empty.png │ │ └── loginscreen_ok.png │ ├── profile │ │ ├── .gitignore │ │ ├── qtox-test-user.db │ │ ├── qtox-test-user.ini │ │ ├── qtox-test-user.tox │ │ └── qtox.ini │ └── test_data.qrc └── widget │ ├── filesform_test.cpp │ ├── form │ └── settings │ │ └── generalform_test.cpp │ ├── loginscreen_test.cpp │ └── tool │ └── identicon_test.cpp ├── themes ├── dark │ ├── acceptCall │ │ └── acceptCall.svg │ ├── addFriendForm │ │ └── toxId.qss │ ├── chatArea │ │ ├── chatArea.qss │ │ ├── chatHead.qss │ │ ├── error.svg │ │ ├── info.svg │ │ ├── innerStyle.qss │ │ ├── scrollBarDownArrow.svg │ │ ├── scrollBarLeftArrow.svg │ │ ├── scrollBarRightArrow.svg │ │ ├── scrollBarUpArrow.svg │ │ ├── spinner.svg │ │ ├── symbols.svg │ │ └── typing.svg │ ├── chatForm │ │ ├── buttons.qss │ │ ├── callButton.svg │ │ ├── emoteButton.svg │ │ ├── exitFullScreenButton.svg │ │ ├── fileButton.svg │ │ ├── fullScreenButtons.qss │ │ ├── labels.qss │ │ ├── micButton.svg │ │ ├── micButtonRed.svg │ │ ├── screenshotButton.svg │ │ ├── searchCalendarButton.svg │ │ ├── searchDownButton.svg │ │ ├── searchHideButton.svg │ │ ├── searchSettingsButton.svg │ │ ├── searchUpButton.svg │ │ ├── sendButton.svg │ │ ├── videoButton.svg │ │ ├── videoButtonRed.svg │ │ ├── videoPreview.svg │ │ ├── videoPreviewRed.svg │ │ ├── volButton.svg │ │ └── volButtonRed.svg │ ├── contentDialog │ │ └── contentDialog.qss │ ├── emoteButton │ │ ├── emoteButton.qss │ │ └── emoteButton.svg │ ├── emoticonWidget │ │ ├── dot_page.svg │ │ ├── dot_page_current.svg │ │ ├── dot_page_hover.svg │ │ └── emoticonWidget.qss │ ├── fileButton │ │ ├── fileButton.qss │ │ └── fileButton.svg │ ├── fileTransferInstance │ │ ├── arrow_black.svg │ │ ├── arrow_white.svg │ │ ├── browse.svg │ │ ├── dir.svg │ │ ├── filetransferWidget.qss │ │ ├── no.svg │ │ ├── no_dark.svg │ │ ├── pause.svg │ │ ├── pause_dark.svg │ │ └── yes.svg │ ├── fileTransferWidget │ │ └── fileDone.svg │ ├── friendList │ │ └── friendList.qss │ ├── genericChatRoomWidget │ │ └── genericChatRoomWidget.qss │ ├── loginScreen │ │ └── loginScreen.qss │ ├── msgEdit │ │ └── msgEdit.qss │ ├── notificationEdge │ │ └── notificationEdge.qss │ ├── palette.ini │ ├── rejectCall │ │ └── rejectCall.svg │ ├── screenshotButton │ │ ├── screenshotButton.qss │ │ └── screenshotButton.svg │ ├── sendButton │ │ ├── sendButton.qss │ │ └── sendButton.svg │ ├── settings │ │ ├── checkboxChecked.svg │ │ ├── checkboxCheckedDisabled.svg │ │ └── mainHead.qss │ ├── statusButton │ │ ├── menu_indicator.svg │ │ └── statusButton.qss │ ├── tooliconsZone │ │ └── tooliconsZone.qss │ └── window │ │ ├── general.qss │ │ ├── profile.qss │ │ ├── statusPanel.qss │ │ └── window.qss └── default │ ├── acceptCall │ └── acceptCall.svg │ ├── addFriendForm │ └── toxId.qss │ ├── chatArea │ ├── chatArea.qss │ ├── chatHead.qss │ ├── error.svg │ ├── info.svg │ ├── innerStyle.qss │ ├── scrollBarDownArrow.svg │ ├── scrollBarLeftArrow.svg │ ├── scrollBarRightArrow.svg │ ├── scrollBarUpArrow.svg │ ├── spinner.svg │ ├── symbols.svg │ └── typing.svg │ ├── chatForm │ ├── buttons.qss │ ├── callButton.svg │ ├── emoteButton.svg │ ├── exitFullScreenButton.svg │ ├── fileButton.svg │ ├── fullScreenButtons.qss │ ├── labels.qss │ ├── micButton.svg │ ├── micButtonRed.svg │ ├── screenshotButton.svg │ ├── searchCalendarButton.svg │ ├── searchDownButton.svg │ ├── searchHideButton.svg │ ├── searchSettingsButton.svg │ ├── searchUpButton.svg │ ├── sendButton.svg │ ├── videoButton.svg │ ├── videoButtonRed.svg │ ├── videoPreview.svg │ ├── videoPreviewRed.svg │ ├── volButton.svg │ └── volButtonRed.svg │ ├── contentDialog │ └── contentDialog.qss │ ├── emoteButton │ ├── emoteButton.qss │ └── emoteButton.svg │ ├── emoticonWidget │ ├── dot_page.svg │ ├── dot_page_current.svg │ ├── dot_page_hover.svg │ └── emoticonWidget.qss │ ├── fileButton │ ├── fileButton.qss │ └── fileButton.svg │ ├── fileTransferInstance │ ├── arrow_black.svg │ ├── arrow_white.svg │ ├── browse.svg │ ├── dir.svg │ ├── filetransferWidget.qss │ ├── no.svg │ ├── no_dark.svg │ ├── pause.svg │ ├── pause_dark.svg │ └── yes.svg │ ├── fileTransferWidget │ └── fileDone.svg │ ├── friendList │ └── friendList.qss │ ├── genericChatRoomWidget │ └── genericChatRoomWidget.qss │ ├── loginScreen │ └── loginScreen.qss │ ├── msgEdit │ └── msgEdit.qss │ ├── notificationEdge │ └── notificationEdge.qss │ ├── palette.ini │ ├── rejectCall │ └── rejectCall.svg │ ├── screenshotButton │ ├── screenshotButton.qss │ └── screenshotButton.svg │ ├── sendButton │ ├── sendButton.qss │ └── sendButton.svg │ ├── settings │ └── mainHead.qss │ ├── statusButton │ ├── menu_indicator.svg │ └── statusButton.qss │ ├── tooliconsZone │ └── tooliconsZone.qss │ └── window │ ├── general.qss │ ├── profile.qss │ ├── statusPanel.qss │ └── window.qss ├── tools ├── format-code.sh ├── lsp_tidy.py ├── translate_ai.py ├── update-translation-files.sh └── update-versions.sh ├── translations ├── CMakeLists.txt ├── README.md ├── ar.ts ├── be.ts ├── ber.ts ├── bg.ts ├── bn.ts ├── cs.ts ├── da.ts ├── de.ts ├── el.ts ├── en.ts ├── eo.ts ├── es.ts ├── et.ts ├── fa.ts ├── fi.ts ├── fr.ts ├── gl.ts ├── he.ts ├── hr.ts ├── hu.ts ├── is.ts ├── it.ts ├── ja.ts ├── jbo.ts ├── kn.ts ├── ko.ts ├── li.ts ├── lt.ts ├── lv.ts ├── mk.ts ├── nb_NO.ts ├── nl.ts ├── nl_BE.ts ├── pl.ts ├── pr.ts ├── pt.ts ├── pt_BR.ts ├── ro.ts ├── ru.ts ├── si.ts ├── sk.ts ├── sl.ts ├── sq.ts ├── sr.ts ├── sr_Latn.ts ├── sv.ts ├── sw.ts ├── ta.ts ├── tr.ts ├── translations.qrc ├── ug.ts ├── uk.ts ├── ur.ts ├── vi.ts ├── zh_CN.ts └── zh_TW.ts └── util ├── BUILD.bazel ├── CMakeLists.txt ├── include └── util │ ├── algorithm.h │ ├── display.h │ ├── interface.h │ ├── network.h │ ├── ranges.h │ ├── strongtype.h │ └── toxcoreerrorparser.h └── src ├── algorithm.cpp ├── display.cpp ├── network.cpp ├── ranges.cpp └── toxcoreerrorparser.cpp /.ci-scripts/.gitignore: -------------------------------------------------------------------------------- 1 | /dockerfiles 2 | -------------------------------------------------------------------------------- /.ci-scripts/create-identity.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | # https://api.github.com/users/github-actions%5Bbot%5D 4 | git config --global user.name "github-actions[bot]" 5 | git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" 6 | -------------------------------------------------------------------------------- /.ci-scripts/import-developer-keys.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # Copyright © 2024-2025 The TokTok team 5 | 6 | set -eux -o pipefail 7 | 8 | for key in .github/keys/*.asc; do 9 | gpg --import "$key" 10 | done 11 | -------------------------------------------------------------------------------- /.ci-scripts/lcov.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # Copyright © 2021 by The qTox Project Contributors 5 | # Copyright © 2024-2025 The TokTok team 6 | 7 | # Create lcov report 8 | lcov --directory . --capture --output-file coverage.info 9 | # Filter out system headers and test sources 10 | lcov --remove coverage.info '/usr/*' '*/test/*' '*/*_autogen/*' --output-file coverage.info 11 | -------------------------------------------------------------------------------- /.ci-scripts/verify-commit-format.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | # SPDX-License-Identifier: GPL-3.0-or-later 4 | # Copyright © 2016-2019 by The qTox Project Contributors 5 | # Copyright © 2024-2025 The TokTok team 6 | 7 | # Fail out on error 8 | set -eu -o pipefail 9 | 10 | # Verify commit messages 11 | readarray -t COMMITS <<<"$(curl -s "$GITHUB_CONTEXT" | jq -r '.[0,-1].sha')" 12 | COMMIT_RANGE="${COMMITS[1]}~1..${COMMITS[0]}" 13 | bash ./verify-commit-messages.sh "$COMMIT_RANGE" 14 | -------------------------------------------------------------------------------- /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | 4 | workflows: 5 | version: 2 6 | circleci: 7 | jobs: 8 | - bazel-release 9 | 10 | jobs: 11 | bazel-release: 12 | working_directory: /tmp/cirrus-ci-build 13 | docker: 14 | - image: toxchat/toktok-stack:latest 15 | 16 | steps: 17 | - checkout 18 | - run: bash <(curl -s https://raw.githubusercontent.com/TokTok/ci-tools/refs/heads/master/tools/circleci-bazel-test) 19 | -------------------------------------------------------------------------------- /.clog.toml: -------------------------------------------------------------------------------- 1 | [clog] 2 | repository = "https://github.com/TokTok/qTox" 3 | changelog = "CHANGELOG.md" 4 | from-latest-tag = true 5 | ignore-before = "v1.3.0" 6 | forked-from = [ 7 | { repository = "https://github.com/qTox/qTox", since = "8632be2" } 8 | ] 9 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # Ignore everything except sources and build scripts. 2 | **/* 3 | !audio/ 4 | !cmake/ 5 | !img/ 6 | !platform/wasm/_headers 7 | !platform/wasm/build.sh 8 | !res/**/* 9 | !themes/ 10 | !translations/ 11 | !smileys/ 12 | !src/ 13 | !util/ 14 | !CMakeLists.txt 15 | !LICENSE 16 | !README.md 17 | !res.qrc 18 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Fix GitHub thinking our translations are TypeScript 2 | *.ts linguist-language=XML 3 | 4 | # fix bootstrap.sh on Windows MSYS 5 | *.sh eol=lf 6 | 7 | # Don't count the translation files in the language stats 8 | translations/* linguist-vendored 9 | -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | /.github/ @TokTok/admins 2 | -------------------------------------------------------------------------------- /.github/release-drafter.yml: -------------------------------------------------------------------------------- 1 | _extends: .github 2 | 3 | version-resolver: 4 | major: 5 | labels: 6 | - 'api break' 7 | minor: 8 | labels: 9 | - 'enhancement' 10 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: ci 2 | 3 | on: 4 | pull_request: 5 | branches: [master] 6 | 7 | # Cancel old PR builds when pushing new commits. 8 | concurrency: 9 | group: ci-${{ github.event.pull_request.number || github.ref }} 10 | cancel-in-progress: true 11 | 12 | jobs: 13 | common: 14 | uses: TokTok/ci-tools/.github/workflows/common-ci.yml@master 15 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: release 2 | 3 | on: 4 | issues: 5 | types: [assigned] 6 | 7 | concurrency: 8 | group: release-${{ github.event.issue.number }} 9 | cancel-in-progress: true 10 | 11 | jobs: 12 | release: 13 | name: Release 14 | uses: TokTok/ci-tools/.github/workflows/release-deploy.yml@master 15 | with: 16 | production: true 17 | secrets: 18 | TOKEN_RELEASES: ${{ secrets.TOKEN_RELEASES }} 19 | -------------------------------------------------------------------------------- /.imgbotconfig: -------------------------------------------------------------------------------- 1 | { 2 | "schedule": "daily", 3 | "ignoredFiles": [ 4 | "*.svg" 5 | ], 6 | "prTitle" : "perf: ImgBot optimized images" 7 | } 8 | -------------------------------------------------------------------------------- /.netlify/state.json: -------------------------------------------------------------------------------- 1 | { 2 | "siteId": "a65b05dd-7edb-4bb9-a3ee-a27007e0ca3d" 3 | } 4 | -------------------------------------------------------------------------------- /.restyled.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | exclude: 3 | - "test/resources/profile/*" 4 | - "translations/*.ts" 5 | 6 | restylers: 7 | - astyle: 8 | enabled: false 9 | - pyment: 10 | enabled: false 11 | - "*" 12 | -------------------------------------------------------------------------------- /.reviewable/settings.yaml: -------------------------------------------------------------------------------- 1 | # Reviewable settings file. Read the docs at https://docs.reviewable.io/repositories.html#store-repository-settings-using-the-reviewable-directory 2 | approval-text: ":lgtm_strong:" 3 | github-status: 4 | updates: always 5 | -------------------------------------------------------------------------------- /.weblate: -------------------------------------------------------------------------------- 1 | [weblate] 2 | url = https://hosted.weblate.org/api/ 3 | translation = qtox/qtox 4 | -------------------------------------------------------------------------------- /audio/include/audio/audio.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | 7 | #pragma once 8 | 9 | #include 10 | 11 | class IAudioControl; 12 | class IAudioSettings; 13 | class Audio 14 | { 15 | public: 16 | static std::unique_ptr makeAudio(IAudioSettings& settings); 17 | }; 18 | -------------------------------------------------------------------------------- /audio/original/call_end.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/original/call_end.wav -------------------------------------------------------------------------------- /audio/original/call_incoming.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/original/call_incoming.wav -------------------------------------------------------------------------------- /audio/original/call_outgoing.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/original/call_outgoing.wav -------------------------------------------------------------------------------- /audio/original/notification.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/original/notification.wav -------------------------------------------------------------------------------- /audio/resources/audio_res.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | call_end.s16le.pcm 4 | call_incoming.s16le.pcm 5 | call_outgoing.s16le.pcm 6 | notification.s16le.pcm 7 | 8 | 9 | -------------------------------------------------------------------------------- /audio/resources/call_end.s16le.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/resources/call_end.s16le.pcm -------------------------------------------------------------------------------- /audio/resources/call_incoming.s16le.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/resources/call_incoming.s16le.pcm -------------------------------------------------------------------------------- /audio/resources/call_outgoing.s16le.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/resources/call_outgoing.s16le.pcm -------------------------------------------------------------------------------- /audio/resources/notification.s16le.pcm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/audio/resources/notification.s16le.pcm -------------------------------------------------------------------------------- /audio/src/iaudiosettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "audio/iaudiosettings.h" 7 | 8 | IAudioSettings::~IAudioSettings() = default; 9 | -------------------------------------------------------------------------------- /audio/src/iaudiosink.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "audio/iaudiosink.h" 7 | 8 | IAudioSink::~IAudioSink() = default; 9 | -------------------------------------------------------------------------------- /img/icons/128x128/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/128x128/qtox.png -------------------------------------------------------------------------------- /img/icons/14x14/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/14x14/qtox.png -------------------------------------------------------------------------------- /img/icons/16x16/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/16x16/qtox.png -------------------------------------------------------------------------------- /img/icons/192x192/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/192x192/qtox.png -------------------------------------------------------------------------------- /img/icons/22x22/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/22x22/qtox.png -------------------------------------------------------------------------------- /img/icons/24x24/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/24x24/qtox.png -------------------------------------------------------------------------------- /img/icons/256x256/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/256x256/qtox.png -------------------------------------------------------------------------------- /img/icons/32x32/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/32x32/qtox.png -------------------------------------------------------------------------------- /img/icons/36x36/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/36x36/qtox.png -------------------------------------------------------------------------------- /img/icons/48x48/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/48x48/qtox.png -------------------------------------------------------------------------------- /img/icons/512x512/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/512x512/qtox.png -------------------------------------------------------------------------------- /img/icons/64x64/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/64x64/qtox.png -------------------------------------------------------------------------------- /img/icons/72x72/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/72x72/qtox.png -------------------------------------------------------------------------------- /img/icons/96x96/qtox.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/icons/96x96/qtox.png -------------------------------------------------------------------------------- /img/settings/av.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/settings/av.png -------------------------------------------------------------------------------- /img/settings/general.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/settings/general.png -------------------------------------------------------------------------------- /img/settings/identity.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/settings/identity.png -------------------------------------------------------------------------------- /img/settings/privacy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/img/settings/privacy.png -------------------------------------------------------------------------------- /img/status/online.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "platform/wasm/netlify.sh" 3 | publish = "_site" 4 | -------------------------------------------------------------------------------- /platform/deps.depfile: -------------------------------------------------------------------------------- 1 | # Build dependencies for qTox (in build order). 2 | openssl 3 | qrencode 4 | libexif 5 | sodium 6 | openal 7 | vpx 8 | opus 9 | ffmpeg 10 | sqlcipher 11 | hunspell 12 | extra_cmake_modules 13 | sonnet 14 | kimageformats 15 | toxcore 16 | -------------------------------------------------------------------------------- /platform/macos/BUILD.bazel: -------------------------------------------------------------------------------- 1 | load("//third_party/qt:build_defs.bzl", "qt_mac_deploy") 2 | 3 | qt_mac_deploy( 4 | name = "qtox", 5 | app_icons = glob(["qtox.icns.xcassets/**"]), 6 | bundle_id = "chat.tox.qtox", 7 | deps = ["//qtox:qtox_main"], 8 | ) 9 | -------------------------------------------------------------------------------- /platform/macos/Brewfile: -------------------------------------------------------------------------------- 1 | brew "bash" # macOS bash is too old 2 | brew "cmake" 3 | brew "coreutils" 4 | brew "create-dmg" 5 | brew "ffmpeg" 6 | brew "git" 7 | brew "libexif" 8 | brew "libsodium" 9 | brew "libtool" 10 | brew "libvpx" 11 | brew "ninja" 12 | brew "openal-soft" 13 | brew "opus" 14 | brew "pkgconfig" 15 | brew "qrencode" 16 | brew "qt@6" 17 | brew "sqlcipher" 18 | # accelerate builds with ccache 19 | brew "ccache" 20 | -------------------------------------------------------------------------------- /platform/macos/Brewfile-static: -------------------------------------------------------------------------------- 1 | # Dependencies for building all dependencies from source as static libraries. 2 | # Needed for distributable builds, but users should use Brewfile if they are 3 | # just compiling for their own machine. 4 | brew "bash" # macOS bash is too old 5 | brew "cmake" 6 | brew "create-dmg" 7 | brew "git" 8 | brew "libtool" 9 | brew "ninja" 10 | brew "yasm" 11 | # accelerate builds with ccache 12 | brew "ccache" 13 | -------------------------------------------------------------------------------- /platform/macos/asan.supp: -------------------------------------------------------------------------------- 1 | interceptor_via_lib:CoreGraphics 2 | -------------------------------------------------------------------------------- /platform/macos/backgroundImage.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/backgroundImage.tiff -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-128.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-128@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-128@2x.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-16.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-16@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-16@2x.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-256.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-256@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-256@2x.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-32.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-32@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-32@2x.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-512.png -------------------------------------------------------------------------------- /platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-512@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/macos/qtox.icns.xcassets/qtox.icns.appiconset/qtox.icns-512@2x.png -------------------------------------------------------------------------------- /platform/wasm/_headers: -------------------------------------------------------------------------------- 1 | /* 2 | Cross-Origin-Opener-Policy: same-origin 3 | Cross-Origin-Embedder-Policy: require-corp 4 | -------------------------------------------------------------------------------- /platform/wasm/run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -eux 4 | 5 | docker build -t toxchat/qtox:wasm -f platform/wasm/Dockerfile . 6 | docker run --rm -it -p 8000:8000 toxchat/qtox:wasm 7 | -------------------------------------------------------------------------------- /platform/windows/BUILD.bazel: -------------------------------------------------------------------------------- 1 | load("//third_party/qt:build_defs.bzl", "qt_win_deploy") 2 | 3 | qt_win_deploy( 4 | name = "qtox", 5 | deps = ["//qtox"], 6 | ) 7 | -------------------------------------------------------------------------------- /platform/windows/qtox.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/platform/windows/qtox.ico -------------------------------------------------------------------------------- /platform/windows/qtox.rc: -------------------------------------------------------------------------------- 1 | IDI_ICON1 ICON DISCARDABLE "qtox.ico" 2 | -------------------------------------------------------------------------------- /res/font/DejaVuSans.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/res/font/DejaVuSans.ttf -------------------------------------------------------------------------------- /resources/images/icons/qtox.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/resources/images/icons/qtox.icns -------------------------------------------------------------------------------- /resources/images/icons/qtox_profile.icns: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/resources/images/icons/qtox_profile.icns -------------------------------------------------------------------------------- /shell.nix: -------------------------------------------------------------------------------- 1 | { pkgs ? import { } }: 2 | pkgs.mkShell { inputsFrom = with pkgs; [ qtox ]; } 3 | -------------------------------------------------------------------------------- /smileys/Classic/angry.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/angry.png -------------------------------------------------------------------------------- /smileys/Classic/cool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/cool.png -------------------------------------------------------------------------------- /smileys/Classic/crying.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/crying.png -------------------------------------------------------------------------------- /smileys/Classic/happy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/happy.png -------------------------------------------------------------------------------- /smileys/Classic/laugh.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/laugh.png -------------------------------------------------------------------------------- /smileys/Classic/laugh_closed_eyes.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/laugh_closed_eyes.png -------------------------------------------------------------------------------- /smileys/Classic/plain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/plain.png -------------------------------------------------------------------------------- /smileys/Classic/sad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/sad.png -------------------------------------------------------------------------------- /smileys/Classic/scared.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/scared.png -------------------------------------------------------------------------------- /smileys/Classic/smile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/smile.png -------------------------------------------------------------------------------- /smileys/Classic/stunned.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/stunned.png -------------------------------------------------------------------------------- /smileys/Classic/tongue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/tongue.png -------------------------------------------------------------------------------- /smileys/Classic/uncertain.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/uncertain.png -------------------------------------------------------------------------------- /smileys/Classic/wink.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/smileys/Classic/wink.png -------------------------------------------------------------------------------- /smileys/EmojiOne/0023.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/0031-20e3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/0031.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/0034-20e3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/0034.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/0037.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/00ae.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f170.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f171.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f17e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f17f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f193.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f195.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f196.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e6-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e6-1f1f2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e6-1f1f9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1e9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1eb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1ec.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1ed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1ef.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e7-1f1fc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1ec.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1ed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1ee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1f2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1f4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1f5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e8-1f1ff.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e9-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e9-1f1ef.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1e9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ea-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1eb-1f1f7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1eb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ec-1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ec-1f1eb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ec-1f1ed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ec-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ec-1f1f3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ec-1f1fc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ed-1f1fa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ee-1f1e9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ee-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ee-1f1f9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ef-1f1f5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ef.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f1-1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f1-1f1e8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f1-1f1f9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f1-1f1fa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f1-1f1fb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1e8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1eb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1ec.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1f2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1f7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1fa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2-1f1fb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f3-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f3-1f1ec.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f3-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f5-1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f5-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f5-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f5-1f1fc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f6-1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f7-1f1f4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f7-1f1fa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f8-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f8-1f1f3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f8-1f1f4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9-1f1e9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9-1f1ed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9-1f1f1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9-1f1f3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9-1f1f4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9-1f1f7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1f9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fa-1f1e6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fb-1f1f3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fc-1f1eb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fe-1f1ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1fe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f1ff.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f201.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f234.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f238.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f251.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f319.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f31f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f332.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f397.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f3a6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f3b4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f3b5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f3f3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f3f4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f441-1f5e8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f445.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f48a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f48e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f494.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f495.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f499.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f49a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f49b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f49c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f49f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4a6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4a7.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4ab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4ac.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4b2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4b4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4b9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4bd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4c2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4ca.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4cc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4cd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f4f6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f503.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f504.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f505.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f506.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f507.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f518.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f51a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f51b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f51d.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f527.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f52f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f530.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f532.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f533.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f534.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f535.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f536.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f537.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f538.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f539.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f53a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f53b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f53c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f53d.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f550.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f551.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f552.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f553.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f554.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f555.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f556.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f557.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f558.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f559.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f55a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f55b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f55c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f55d.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f55e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f55f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f560.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f561.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f562.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f563.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f564.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f565.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f566.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f567.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f570.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f5a4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f5a5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f5e8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f610.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f611.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f615.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f62e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f62f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f636.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f641.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f642.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f643.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6a5.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6a6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6a9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6ab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6ac.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6ae.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6b9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6ba.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6bb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6bc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6be.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6c2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6c3.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f6d1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/1f95a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/203c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2122.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2139.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2194.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2195.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2196.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2197.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2198.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2199.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/21a9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/21aa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23cf.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23e9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23ea.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23eb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23ec.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23ed.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23ee.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23ef.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23f8.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23f9.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/23fa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/24c2.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25aa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25ab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25b6.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25c0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25fb.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25fc.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25fd.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/25fe.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2611.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2626.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/262a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2639.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/263a.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2660.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2663.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2665.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2666.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/267f.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/26a0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/26a1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/26aa.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/26ab.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/26d4.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2705.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2714.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2716.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2721.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2728.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2733.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2734.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/274c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/274e.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2753.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2754.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2755.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2757.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2763.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2764.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2795.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2796.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2797.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/27a1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2934.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2935.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b05.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b06.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b07.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b1b.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b1c.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b50.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/2b55.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /smileys/EmojiOne/README.md: -------------------------------------------------------------------------------- 1 | Emoji art supplied by http://emojione.com 2 | -------------------------------------------------------------------------------- /smileys/Universe/README.md: -------------------------------------------------------------------------------- 1 | ## License 2 | Copyright 2014 Twitter, Inc and other contributors 3 | 4 | Graphics licensed under CC-BY 4.0: https://creativecommons.org/licenses/by/4.0/ 5 | -------------------------------------------------------------------------------- /src/chatlog/textformatter.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2017-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | class QString; 9 | 10 | namespace TextFormatter { 11 | QString highlightURI(const QString& message); 12 | 13 | QString applyMarkdown(const QString& message, bool showFormattingSymbols); 14 | 15 | QString processPostNullSuffix(QString message, bool html); 16 | } // namespace TextFormatter 17 | -------------------------------------------------------------------------------- /src/core/icoreconferencemessagesender.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "icoreconferencemessagesender.h" 7 | 8 | ICoreConferenceMessageSender::~ICoreConferenceMessageSender() = default; 9 | -------------------------------------------------------------------------------- /src/core/icoreconferencequery.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "icoreconferencequery.h" 7 | 8 | ICoreConferenceQuery::~ICoreConferenceQuery() = default; 9 | -------------------------------------------------------------------------------- /src/core/icorefriendmessagesender.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "icorefriendmessagesender.h" 7 | 8 | ICoreFriendMessageSender::~ICoreFriendMessageSender() = default; 9 | -------------------------------------------------------------------------------- /src/core/icoreidhandler.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "icoreidhandler.h" 7 | 8 | ICoreIdHandler::~ICoreIdHandler() = default; 9 | -------------------------------------------------------------------------------- /src/core/icoresettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "icoresettings.h" 7 | 8 | ICoreSettings::~ICoreSettings() = default; 9 | -------------------------------------------------------------------------------- /src/core/idebugsettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2024-2025 The TokTok team. 3 | */ 4 | 5 | #include "idebugsettings.h" 6 | 7 | IDebugSettings::~IDebugSettings() = default; 8 | -------------------------------------------------------------------------------- /src/core/receiptnum.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include "util/strongtype.h" 9 | 10 | #include 11 | 12 | #include 13 | 14 | using ReceiptNum = NamedType; 15 | Q_DECLARE_METATYPE(ReceiptNum) 16 | 17 | using ExtendedReceiptNum = NamedType; 18 | Q_DECLARE_METATYPE(ExtendedReceiptNum) 19 | -------------------------------------------------------------------------------- /src/core/toxlogger.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | #include 10 | 11 | namespace ToxLogger { 12 | 13 | void onLogMessage(Tox* tox, Tox_Log_Level level, const char* file, uint32_t line, const char* func, 14 | const char* message, void* user_data); 15 | 16 | } // namespace ToxLogger 17 | -------------------------------------------------------------------------------- /src/model/about/iaboutfriend.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "iaboutfriend.h" 7 | 8 | IAboutFriend::~IAboutFriend() = default; 9 | -------------------------------------------------------------------------------- /src/model/brokenmessagereason.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2015-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | // NOTE: Numbers are important here as this is cast to an int and persisted in the DB 9 | enum class BrokenMessageReason : int 10 | { 11 | unknown = 0, 12 | unsupportedExtensions = 1 13 | }; 14 | -------------------------------------------------------------------------------- /src/model/chat.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2017-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | 7 | #include "chat.h" 8 | 9 | #include 10 | 11 | Chat::~Chat() = default; 12 | -------------------------------------------------------------------------------- /src/model/dialogs/idialogs.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "idialogs.h" 7 | 8 | IDialogs::~IDialogs() = default; 9 | -------------------------------------------------------------------------------- /src/model/dialogs/idialogsmanager.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "idialogsmanager.h" 7 | 8 | IDialogsManager::~IDialogsManager() = default; 9 | -------------------------------------------------------------------------------- /src/model/friendlist/ifriendlistitem.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "ifriendlistitem.h" 7 | 8 | IFriendListItem::~IFriendListItem() = default; 9 | -------------------------------------------------------------------------------- /src/model/ibootstraplistgenerator.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "ibootstraplistgenerator.h" 7 | 8 | IBootstrapListGenerator::~IBootstrapListGenerator() = default; 9 | -------------------------------------------------------------------------------- /src/model/imessagedispatcher.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "imessagedispatcher.h" 7 | 8 | IMessageDispatcher::~IMessageDispatcher() = default; 9 | -------------------------------------------------------------------------------- /src/model/notificationdata.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2020 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | #include 10 | 11 | struct NotificationData 12 | { 13 | QString title; 14 | QString message; 15 | QString category; 16 | QPixmap pixmap; 17 | }; 18 | -------------------------------------------------------------------------------- /src/model/profile/iprofileinfo.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "iprofileinfo.h" 7 | 8 | IProfileInfo::~IProfileInfo() = default; 9 | -------------------------------------------------------------------------------- /src/model/toxclientstandards.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2020 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | namespace ToxClientStandards { 11 | // From TCS 2.2.4, max valid avatar size is 64KiB 12 | constexpr static uint64_t MaxAvatarSize = 64 * 1024; 13 | constexpr bool IsValidAvatarSize(uint64_t fileSize) 14 | { 15 | return fileSize <= MaxAvatarSize; 16 | } 17 | } // namespace ToxClientStandards 18 | -------------------------------------------------------------------------------- /src/persistence/db/rawdatabase.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "rawdatabase.h" 7 | 8 | #include "rawdatabaseimpl.h" 9 | 10 | RawDatabase::~RawDatabase() = default; 11 | 12 | std::shared_ptr RawDatabase::open(const QString& path, const QString& password, 13 | const QByteArray& salt) 14 | { 15 | return std::make_shared(path, password, salt); 16 | } 17 | -------------------------------------------------------------------------------- /src/persistence/globalsettingsupgrader.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | class Settings; 9 | 10 | namespace GlobalSettingsUpgrader { 11 | bool doUpgrade(Settings& settings, int fromVer, int toVer); 12 | } 13 | -------------------------------------------------------------------------------- /src/persistence/iconferencesettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "iconferencesettings.h" 7 | 8 | IConferenceSettings::~IConferenceSettings() = default; 9 | -------------------------------------------------------------------------------- /src/persistence/ifriendsettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "ifriendsettings.h" 7 | 8 | IFriendSettings::~IFriendSettings() = default; 9 | -------------------------------------------------------------------------------- /src/persistence/inotificationsettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "inotificationsettings.h" 7 | 8 | INotificationSettings::~INotificationSettings() = default; 9 | -------------------------------------------------------------------------------- /src/persistence/ismileysettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "ismileysettings.h" 7 | 8 | ISmileySettings::~ISmileySettings() = default; 9 | -------------------------------------------------------------------------------- /src/persistence/ismileysettings.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include "util/interface.h" 9 | 10 | #include 11 | 12 | class ISmileySettings 13 | { 14 | public: 15 | virtual ~ISmileySettings(); 16 | virtual QString getSmileyPack() const = 0; 17 | DECLARE_SIGNAL(smileyPackChanged, const QString& name); 18 | }; 19 | -------------------------------------------------------------------------------- /src/persistence/personalsettingsupgrader.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | class SettingsSerializer; 9 | 10 | namespace PersonalSettingsUpgrader { 11 | bool doUpgrade(SettingsSerializer& settingsSerializer, int fromVer, int toVer); 12 | } 13 | -------------------------------------------------------------------------------- /src/persistence/serialize.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | int dataToVInt(const QByteArray& data); 11 | QByteArray vintToData(int num); 12 | -------------------------------------------------------------------------------- /src/platform/autorun.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #ifdef QTOX_PLATFORM_EXT 9 | 10 | class Settings; 11 | namespace Platform { 12 | bool setAutorun(const Settings& settings, bool on); 13 | bool getAutorun(const Settings& settings); 14 | } // namespace Platform 15 | 16 | #endif // QTOX_PLATFORM_EXT 17 | -------------------------------------------------------------------------------- /src/platform/camera/directshow.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2015-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | 7 | #pragma once 8 | 9 | #include 10 | #include 11 | #include 12 | 13 | #ifdef Q_OS_WIN 14 | struct VideoMode; 15 | 16 | namespace DirectShow { 17 | QVector> getDeviceList(); 18 | QVector getDeviceModes(QString devName); 19 | } // namespace DirectShow 20 | #endif 21 | -------------------------------------------------------------------------------- /src/platform/capslock.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2016-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #ifdef QTOX_PLATFORM_EXT 9 | 10 | namespace Platform { 11 | bool capsLockEnabled(); 12 | } 13 | 14 | #endif // QTOX_PLATFORM_EXT 15 | -------------------------------------------------------------------------------- /src/platform/capslock_win.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2016-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "capslock.h" // IWYU pragma: keep, associated 7 | 8 | #ifdef QTOX_PLATFORM_EXT 9 | #include 10 | 11 | #ifdef Q_OS_WIN 12 | #include 13 | 14 | bool Platform::capsLockEnabled() 15 | { 16 | return GetKeyState(VK_CAPITAL) == 1; 17 | } 18 | #endif 19 | #endif 20 | -------------------------------------------------------------------------------- /src/platform/screenshot.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2025 The TokTok team. 3 | */ 4 | 5 | #include "screenshot.h" 6 | 7 | #include 8 | 9 | #if QT_CONFIG(dbus) 10 | #include "screenshot_dbus.h" 11 | #endif 12 | 13 | #include "src/widget/tool/abstractscreenshotgrabber.h" 14 | 15 | AbstractScreenshotGrabber* Platform::createScreenshotGrabber(QWidget* parent) 16 | { 17 | #if QT_CONFIG(dbus) 18 | return DBusScreenshotGrabber::create(parent); 19 | #else 20 | std::ignore = parent; 21 | return nullptr; 22 | #endif 23 | } 24 | -------------------------------------------------------------------------------- /src/platform/timer.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #ifdef QTOX_PLATFORM_EXT 9 | 10 | #include 11 | 12 | namespace Platform { 13 | uint32_t getIdleTime(); 14 | } 15 | 16 | #endif // PLATFORM_TIMER_H 17 | -------------------------------------------------------------------------------- /src/platform/x11_display.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2017-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #ifdef QTOX_PLATFORM_EXT 9 | 10 | typedef struct _XDisplay Display; 11 | 12 | 13 | namespace Platform::X11Display { 14 | Display* lock(); 15 | void unlock(); 16 | } // namespace Platform::X11Display 17 | 18 | 19 | #endif // QTOX_PLATFORM_EXT 20 | -------------------------------------------------------------------------------- /src/version.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2025 The TokTok team. 3 | */ 4 | 5 | #pragma once 6 | 7 | class QString; 8 | 9 | namespace VersionInfo { 10 | QString gitDescribe(); 11 | QString gitVersion(); 12 | QString gitDescribeExact(); 13 | } // namespace VersionInfo 14 | -------------------------------------------------------------------------------- /src/video/ivideosettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "ivideosettings.h" 7 | 8 | IVideoSettings::~IVideoSettings() = default; 9 | -------------------------------------------------------------------------------- /src/video/videosource.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2016-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "videosource.h" 7 | 8 | /** 9 | * @class VideoSource 10 | * @brief An abstract source of video frames 11 | * 12 | * When it has at least one subscriber the source will emit new video frames. 13 | * Subscribing is recursive, multiple users can subscribe to the same VideoSource. 14 | */ 15 | 16 | // Initialize sourceIDs to 0 17 | VideoSource::AtomicIDType VideoSource::sourceIDs{0}; 18 | -------------------------------------------------------------------------------- /src/widget/commondialogs.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | class CommonDialogs : public QObject 11 | { 12 | Q_OBJECT 13 | 14 | public: 15 | CommonDialogs() = delete; 16 | ~CommonDialogs() override; 17 | 18 | // Title and text of the dialog. 19 | using Dialog = QPair; 20 | 21 | // Dialogs for errors and warnings. 22 | static Dialog NoWritePermission(); 23 | }; 24 | -------------------------------------------------------------------------------- /src/widget/form/settings/textcompose.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | class QString; 9 | class Style; 10 | 11 | /** 12 | * Helper functions for creating label text. 13 | */ 14 | namespace TextCompose { 15 | QString urlEncode(const QString& str); 16 | QString createLink(Style& style, QString path, QString text); 17 | } // namespace TextCompose 18 | -------------------------------------------------------------------------------- /src/widget/form/settings/verticalonlyscroller.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2015-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | class QResizeEvent; 11 | class QShowEvent; 12 | 13 | class VerticalOnlyScroller : public QScrollArea 14 | { 15 | Q_OBJECT 16 | public: 17 | explicit VerticalOnlyScroller(QWidget* parent = nullptr); 18 | 19 | protected: 20 | void resizeEvent(QResizeEvent* event) final; 21 | void showEvent(QShowEvent* event) final; 22 | }; 23 | -------------------------------------------------------------------------------- /src/widget/popup.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "popup.h" 7 | 8 | #include 9 | 10 | QString Popup::getAutoAcceptDir(QWidget* parent, const QString& dir) 11 | { 12 | const QString title = QFileDialog::tr("Choose an auto-accept directory", "popup title"); 13 | return QFileDialog::getExistingDirectory(parent, title, dir); 14 | } 15 | -------------------------------------------------------------------------------- /src/widget/popup.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | class QString; 9 | class QWidget; 10 | 11 | namespace Popup { 12 | QString getAutoAcceptDir(QWidget* parent, const QString& dir); 13 | } // namespace Popup 14 | -------------------------------------------------------------------------------- /src/widget/splitterrestorer.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2017-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | class QSize; 9 | class QSplitter; 10 | class QByteArray; 11 | 12 | class SplitterRestorer 13 | { 14 | public: 15 | explicit SplitterRestorer(QSplitter* splitter_); 16 | void restore(const QByteArray& state, const QSize& windowSize); 17 | 18 | private: 19 | QSplitter* splitter; 20 | }; 21 | -------------------------------------------------------------------------------- /src/widget/tool/abstractscreenshotgrabber.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2015-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "abstractscreenshotgrabber.h" 7 | 8 | AbstractScreenshotGrabber::AbstractScreenshotGrabber(QObject* parent) 9 | : QObject(parent) 10 | { 11 | } 12 | 13 | AbstractScreenshotGrabber::~AbstractScreenshotGrabber() = default; 14 | -------------------------------------------------------------------------------- /src/widget/tool/adjustingscrollarea.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2014-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | class AdjustingScrollArea : public QScrollArea 11 | { 12 | Q_OBJECT 13 | public: 14 | explicit AdjustingScrollArea(QWidget* parent = nullptr); 15 | ~AdjustingScrollArea() override = default; 16 | 17 | protected: 18 | void resizeEvent(QResizeEvent* ev) override; 19 | QSize sizeHint() const final; 20 | }; 21 | -------------------------------------------------------------------------------- /src/widget/tool/imessageboxmanager.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "src/widget/tool/imessageboxmanager.h" 7 | 8 | IMessageBoxManager::~IMessageBoxManager() = default; 9 | -------------------------------------------------------------------------------- /src/widget/tool/recursivesignalblocker.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2016-2019 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | class QObject; 11 | class QSignalBlocker; 12 | 13 | class RecursiveSignalBlocker 14 | { 15 | public: 16 | explicit RecursiveSignalBlocker(QObject* object); 17 | ~RecursiveSignalBlocker(); 18 | 19 | void recursiveBlock(QObject* object); 20 | 21 | private: 22 | QVector mBlockers; 23 | }; 24 | -------------------------------------------------------------------------------- /test/dbutility/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # cmake-format: off 2 | # SPDX-License-Identifier: GPL-3.0-or-later 3 | # Copyright © 2022 by The qTox Project Contributors 4 | # Copyright © 2024-2025 The TokTok team 5 | # cmake-format: on 6 | 7 | add_library(dbutility_library STATIC include/dbutility/dbutility.h 8 | src/dbutility.cpp) 9 | 10 | target_include_directories(dbutility_library PUBLIC include/) 11 | target_link_libraries(dbutility_library Qt6::Core Qt6::Test util_library 12 | qtox::warnings) 13 | -------------------------------------------------------------------------------- /test/mock/src/mockbootstraplistgenerator.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "mock/mockbootstraplistgenerator.h" 7 | 8 | MockBootstrapListGenerator::~MockBootstrapListGenerator() = default; 9 | -------------------------------------------------------------------------------- /test/mock/src/mockconferencequery.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "mock/mockconferencequery.h" 7 | 8 | MockConferenceQuery::~MockConferenceQuery() = default; 9 | -------------------------------------------------------------------------------- /test/mock/src/mockcoreidhandler.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "mock/mockcoreidhandler.h" 7 | 8 | MockCoreIdHandler::~MockCoreIdHandler() = default; 9 | -------------------------------------------------------------------------------- /test/mock/src/mockcoresettings.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2022 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #include "mock/mockcoresettings.h" 7 | 8 | MockSettings::~MockSettings() = default; 9 | -------------------------------------------------------------------------------- /test/resources/images/loginscreen_empty.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/test/resources/images/loginscreen_empty.png -------------------------------------------------------------------------------- /test/resources/images/loginscreen_ok.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/test/resources/images/loginscreen_ok.png -------------------------------------------------------------------------------- /test/resources/profile/.gitignore: -------------------------------------------------------------------------------- 1 | /bootstrapNodes.example.json 2 | /*.lock 3 | -------------------------------------------------------------------------------- /test/resources/profile/qtox-test-user.db: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/test/resources/profile/qtox-test-user.db -------------------------------------------------------------------------------- /test/resources/profile/qtox-test-user.ini: -------------------------------------------------------------------------------- 1 | QTOXFriendsFriendaddr@13117C65771C5A05409F532A7809D238E38E94312C870FE7970C5B65B1215E20aliasnote autoAcceptDirautoAcceptCall0autoConferenceInvite0circle-1activityRequestsGUI compactLayout1friendSortingMethod0Proxy proxyType0 proxyAddr proxyPort0CirclesPrivacytypingNotification1 enableLogging1 blackListVersionsettingsVersion1 -------------------------------------------------------------------------------- /test/resources/profile/qtox-test-user.tox: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TokTok/qTox/f06e66e556843057871339142935b7d34126bc6f/test/resources/profile/qtox-test-user.tox -------------------------------------------------------------------------------- /test/resources/test_data.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | images/loginscreen_empty.png 4 | images/loginscreen_ok.png 5 | 6 | 7 | -------------------------------------------------------------------------------- /themes/dark/addFriendForm/toxId.qss: -------------------------------------------------------------------------------- 1 | QLineEdit { 2 | background-color: #8a3f3a; 3 | } 4 | -------------------------------------------------------------------------------- /themes/dark/chatArea/chatArea.qss: -------------------------------------------------------------------------------- 1 | QTextEdit 2 | { 3 | background: @groundBase; 4 | color: @mainText; 5 | } 6 | 7 | QGraphicsView 8 | { 9 | border: none; 10 | } 11 | 12 | QWidget 13 | { 14 | background: @groundBase; 15 | } 16 | -------------------------------------------------------------------------------- /themes/dark/chatForm/labels.qss: -------------------------------------------------------------------------------- 1 | QLabel 2 | { 3 | color: @mainText; 4 | } 5 | 6 | QLabel:disabled 7 | { 8 | color: #2d2b2b; 9 | } 10 | 11 | QLabel[state="red"] 12 | { 13 | color: #e84747; 14 | } 15 | -------------------------------------------------------------------------------- /themes/dark/chatForm/screenshotButton.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 3 | 4 | Layer 1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /themes/dark/contentDialog/contentDialog.qss: -------------------------------------------------------------------------------- 1 | QSplitter:handle 2 | { 3 | color: @groundBase; 4 | background-color: @groundBase; 5 | } 6 | 7 | QWidget 8 | { 9 | background: @groundBase; 10 | color: @mainText; 11 | } 12 | -------------------------------------------------------------------------------- /themes/dark/emoteButton/emoteButton.qss: -------------------------------------------------------------------------------- 1 | QPushButton 2 | { 3 | background-color: #6bc260; 4 | background-image: url("@getImagePath(emoteButton/emoteButton.svg)"); 5 | background-repeat: none; 6 | background-position: center; 7 | border-top-right-radius: 5px; 8 | border: none; 9 | width: 24px; 10 | height: 24px; 11 | } 12 | 13 | QPushButton:hover 14 | { 15 | background-color: #79c76f; 16 | } 17 | 18 | QPushButton:pressed 19 | { 20 | background-color: #51b244; 21 | } 22 | 23 | QPushButton:focus 24 | { 25 | outline: none; 26 | } 27 | -------------------------------------------------------------------------------- /themes/dark/fileTransferInstance/filetransferWidget.qss: -------------------------------------------------------------------------------- 1 | [fontColor="white"] QLabel { 2 | color: @mainText; 3 | font: @big; 4 | } 5 | 6 | [fontColor="black"] QLabel { 7 | color: @statusActive; 8 | font: @big; 9 | } 10 | 11 | QPushButton { 12 | margin: 0; 13 | border: none; 14 | } 15 | 16 | 17 | 18 | QProgressBar { 19 | border: 2px solid @statusActive; 20 | border-radius: 0px; 21 | background-color: @statusActive; 22 | } 23 | 24 | QProgressBar::chunk { 25 | background-color: @transferMiddle; 26 | width: 1px; 27 | } 28 | -------------------------------------------------------------------------------- /themes/dark/notificationEdge/notificationEdge.qss: -------------------------------------------------------------------------------- 1 | NotificationEdgeWidget 2 | { 3 | background-color: #6bc260; 4 | } 5 | 6 | NotificationEdgeWidget > QLabel 7 | { 8 | color: white; 9 | } 10 | -------------------------------------------------------------------------------- /themes/dark/palette.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | transferGood="#42783b" 3 | transferWait="#958931" 4 | transferBad="#963a3a" 5 | transferMiddle="#707070" 6 | mainText="#c3c3c3" 7 | nameActive="#c3c3c3" 8 | statusActive="#d1d1d1" 9 | groundExtra="#d1d1d1" 10 | groundBase="#201f1f" 11 | orange="#713400" 12 | yellow="#adab00" 13 | themeDark="#1c1c1c" 14 | themeMediumDark="#2a2a2a" 15 | themeMedium="#100f0f" 16 | themeLight="#201f1f" 17 | action="#546eff" 18 | link="#d292ff" 19 | searchHighlighted="#7e2a00" 20 | selectText = "#515151" 21 | -------------------------------------------------------------------------------- /themes/dark/screenshotButton/screenshotButton.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 3 | 4 | Layer 1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /themes/dark/sendButton/sendButton.qss: -------------------------------------------------------------------------------- 1 | QPushButton 2 | { 3 | background-color: #6bc260; 4 | background-image: url("@getImagePath(sendButton/sendButton.svg)"); 5 | background-repeat: none; 6 | background-position: center; 7 | border: none; 8 | border-radius: 5px; 9 | width: 50px; 10 | height: 50px; 11 | } 12 | 13 | QPushButton:hover 14 | { 15 | background-color: #79c76f; 16 | } 17 | 18 | QPushButton:pressed 19 | { 20 | background-color: #51b244; 21 | } 22 | 23 | QPushButton:focus 24 | { 25 | outline: none; 26 | } 27 | -------------------------------------------------------------------------------- /themes/dark/settings/mainHead.qss: -------------------------------------------------------------------------------- 1 | QWidget .QLabel, QWidget .QLineEdit 2 | { 3 | color: @mainText; 4 | background: @groundBase; 5 | } 6 | -------------------------------------------------------------------------------- /themes/dark/window/profile.qss: -------------------------------------------------------------------------------- 1 | #selfAvatar:hover 2 | { 3 | border-radius: 6px; 4 | background-color: #ccc; 5 | } 6 | -------------------------------------------------------------------------------- /themes/default/addFriendForm/toxId.qss: -------------------------------------------------------------------------------- 1 | QLineEdit { 2 | background-color: #FFC1C1; 3 | } 4 | -------------------------------------------------------------------------------- /themes/default/chatArea/chatArea.qss: -------------------------------------------------------------------------------- 1 | QTextEdit 2 | { 3 | background: white; 4 | color: black; 5 | } 6 | 7 | QGraphicsView 8 | { 9 | border: none; 10 | } 11 | -------------------------------------------------------------------------------- /themes/default/chatArea/innerStyle.qss: -------------------------------------------------------------------------------- 1 | body { 2 | font: @baseFont; 3 | } 4 | 5 | p { 6 | white-space: pre-wrap; 7 | } 8 | 9 | .action { 10 | color: @action; 11 | font-style: italic; 12 | } 13 | 14 | .typing { 15 | color: #4e4e4e; 16 | } 17 | 18 | .quote { 19 | color: #279419; 20 | } 21 | 22 | .alert { 23 | margin-left: 0px; 24 | margin-right: 0px; 25 | background-color: @orange; 26 | } 27 | 28 | .alert_name { 29 | background-color: @orange; 30 | font: @bigBold; 31 | } 32 | 33 | a { 34 | color: @link; 35 | } 36 | -------------------------------------------------------------------------------- /themes/default/chatForm/labels.qss: -------------------------------------------------------------------------------- 1 | QLabel 2 | { 3 | color: #000; 4 | } 5 | 6 | QLabel:disabled 7 | { 8 | color: #ddd; 9 | } 10 | 11 | QLabel[state="red"] 12 | { 13 | color: #e84747; 14 | } 15 | -------------------------------------------------------------------------------- /themes/default/chatForm/screenshotButton.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 3 | 4 | Layer 1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /themes/default/contentDialog/contentDialog.qss: -------------------------------------------------------------------------------- 1 | QSplitter:handle 2 | { 3 | color: white; 4 | background-color: white; 5 | } 6 | 7 | QWidget 8 | { 9 | background: @groundBase; 10 | color: @mainText; 11 | } 12 | -------------------------------------------------------------------------------- /themes/default/emoteButton/emoteButton.qss: -------------------------------------------------------------------------------- 1 | QPushButton 2 | { 3 | background-color: #6bc260; 4 | background-image: url("@getImagePath(emoteButton/emoteButton.svg)"); 5 | background-repeat: none; 6 | background-position: center; 7 | border-top-right-radius: 5px; 8 | border: none; 9 | width: 24px; 10 | height: 24px; 11 | } 12 | 13 | QPushButton:hover 14 | { 15 | background-color: #79c76f; 16 | } 17 | 18 | QPushButton:pressed 19 | { 20 | background-color: #51b244; 21 | } 22 | 23 | QPushButton:focus 24 | { 25 | outline: none; 26 | } 27 | -------------------------------------------------------------------------------- /themes/default/fileTransferInstance/filetransferWidget.qss: -------------------------------------------------------------------------------- 1 | [fontColor="white"] QLabel { 2 | color: white; 3 | font: @big; 4 | } 5 | 6 | [fontColor="black"] QLabel { 7 | color: @statusActive; 8 | font: @big; 9 | } 10 | 11 | QPushButton { 12 | margin:0; 13 | border: none; 14 | } 15 | 16 | 17 | 18 | QProgressBar { 19 | border: 2px solid @statusActive; 20 | border-radius: 0px; 21 | background-color: @statusActive; 22 | } 23 | 24 | QProgressBar::chunk { 25 | background-color: @transferMiddle; 26 | width: 1px; 27 | } 28 | -------------------------------------------------------------------------------- /themes/default/notificationEdge/notificationEdge.qss: -------------------------------------------------------------------------------- 1 | NotificationEdgeWidget 2 | { 3 | background-color: #6bc260; 4 | } 5 | 6 | NotificationEdgeWidget > QLabel 7 | { 8 | color: white; 9 | } 10 | -------------------------------------------------------------------------------- /themes/default/palette.ini: -------------------------------------------------------------------------------- 1 | [colors] 2 | transferGood="#6bc260" 3 | transferWait="#cebf44" 4 | transferBad="#c84e4e" 5 | transferMiddle="#d1d1d1" 6 | mainText="#000000" 7 | nameActive="#1c1c1c" 8 | statusActive="#414141" 9 | groundExtra="#d1d1d1" 10 | groundBase="#ffffff" 11 | orange="#ff7700" 12 | yellow="#9c9100" 13 | themeDark="#1c1c1c" 14 | themeMediumDark="#2a2a2a" 15 | themeMedium="#414141" 16 | themeLight="#4e4e4e" 17 | action="#1818FF" 18 | link="#0000ff" 19 | searchHighlighted="#ff7626" 20 | selectText = "#9edeff" 21 | -------------------------------------------------------------------------------- /themes/default/screenshotButton/screenshotButton.svg: -------------------------------------------------------------------------------- 1 | 2 | image/svg+xml 3 | 4 | Layer 1 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /themes/default/sendButton/sendButton.qss: -------------------------------------------------------------------------------- 1 | QPushButton 2 | { 3 | background-color: #6bc260; 4 | background-image: url("@getImagePath(sendButton/sendButton.svg)"); 5 | background-repeat: none; 6 | background-position: center; 7 | border: none; 8 | border-radius: 5px; 9 | width: 50px; 10 | height: 50px; 11 | } 12 | 13 | QPushButton:hover 14 | { 15 | background-color: #79c76f; 16 | } 17 | 18 | QPushButton:pressed 19 | { 20 | background-color: #51b244; 21 | } 22 | 23 | QPushButton:focus 24 | { 25 | outline: none; 26 | } 27 | -------------------------------------------------------------------------------- /themes/default/settings/mainHead.qss: -------------------------------------------------------------------------------- 1 | QWidget .QLabel, QWidget .QLineEdit 2 | { 3 | color: black; 4 | background: white; 5 | } 6 | -------------------------------------------------------------------------------- /themes/default/window/profile.qss: -------------------------------------------------------------------------------- 1 | #selfAvatar:hover 2 | { 3 | border-radius: 6px; 4 | background-color: #ccc; 5 | } 6 | -------------------------------------------------------------------------------- /util/BUILD.bazel: -------------------------------------------------------------------------------- 1 | load("@rules_cc//cc:defs.bzl", "cc_library") 2 | 3 | cc_library( 4 | name = "util", 5 | srcs = glob(["src/**/*.cpp"]), 6 | hdrs = glob(["include/**/*.h"]), 7 | includes = ["include"], 8 | tags = ["qt"], 9 | visibility = ["//qtox:__subpackages__"], 10 | deps = [ 11 | "//c-toxcore", 12 | "@qt//:qt_core", 13 | "@qt//:qt_network", 14 | ], 15 | ) 16 | -------------------------------------------------------------------------------- /util/include/util/display.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2021 by The qTox Project Contributors 3 | * Copyright © 2024-2025 The TokTok team. 4 | */ 5 | 6 | #pragma once 7 | 8 | #include 9 | 10 | #include 11 | 12 | QString getHumanReadableSize(uint64_t sizeBytes); 13 | -------------------------------------------------------------------------------- /util/include/util/network.h: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2025 The TokTok team. 3 | */ 4 | 5 | #pragma once 6 | 7 | #include 8 | 9 | class QHostAddress; 10 | class QHostInfo; 11 | 12 | namespace NetworkUtil { 13 | QList ipAddresses(const QHostInfo& hostInfo, bool enableIPv6); 14 | } // namespace NetworkUtil 15 | -------------------------------------------------------------------------------- /util/src/algorithm.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2024-2025 The TokTok team. 3 | */ 4 | 5 | #include "util/algorithm.h" // IWYU pragma: keep 6 | -------------------------------------------------------------------------------- /util/src/ranges.cpp: -------------------------------------------------------------------------------- 1 | /* SPDX-License-Identifier: GPL-3.0-or-later 2 | * Copyright © 2024-2025 The TokTok team. 3 | */ 4 | 5 | #include "util/ranges.h" // IWYU pragma: keep 6 | --------------------------------------------------------------------------------