Commit Graph

389 Commits

Author SHA1 Message Date
FlightlessMango
4a5e05c979 Trim gpuName from pci.ids 2020-06-11 07:58:19 +02:00
FlightlessMango
572ba69e3e More width fixing 2020-06-11 04:50:39 +02:00
jackun
b68f78028d
Fix "IO RD/RW" typo
Also micro-micro-micro optimization, probably: move READ/WRITE if statement before WRITE
as you'd probably find it more useful than just WRITE.
2020-06-10 22:00:55 +03:00
jackun
1495b1e88f
ifdef guard nvml header 2020-06-09 14:16:02 +03:00
jackun
953c8d0e0f
Add meson option with_nvml 2020-06-09 13:44:41 +03:00
jackun
2220cb9d74
Decouple engine_version from fps 2020-06-06 13:00:59 +03:00
jackun
16b05dfc5e
Show gpu core clock or power usage in 4th column or both on next row if both are enabled 2020-06-06 12:50:13 +03:00
jackun
b837ce930e
[whitespace] fix indentation from gpu_name to arch 2020-06-05 15:46:37 +03:00
FlightlessMango
db151bb236 Add log_interval check to per frame log write 2020-06-05 06:14:47 +02:00
FlightlessMango
d8727110b0 Replaced log_period env with log_interval param 2020-06-04 00:52:11 +02:00
FlightlessMango
128fbd4b88 Per frame logging use output_file and date 2020-06-04 00:47:01 +02:00
FlightlessMango
33a5ad6571 Format gpu_text and cpu_text in textColored 2020-06-01 20:18:15 +02:00
FlightlessMango
dd1667bf3e Fixed typo 2020-06-01 03:49:34 +02:00
FlightlessMango
2d0ba9a076 Params to override cpu/gpu text 2020-06-01 02:08:35 +02:00
jackun
c04658456a
Wider glyph ranges for custom font; media player text scaling with font_scale_media_player param 2020-05-24 16:49:11 +03:00
FlightlessMango
c254347688 Use histogram in benchmark too 2020-05-24 17:28:29 +02:00
FlightlessMango
ac926bbfd5 Added histogram param 2020-05-24 17:17:17 +02:00
FlightlessMango
078617f999 Added param for engine version 2020-05-23 23:16:08 +02:00
jackun
ff48525313
Consolidated amdgpu file handles to a struct and add gpu_power param to show power usage for amdgpu/nvml 2020-05-22 15:44:34 +03:00
jackun
5057a47b05
Potential buffer overflow, use snprintf instead 2020-05-21 20:23:33 +03:00
jackun
159305bbc7
Use display_time instead of recalculating 2020-05-21 20:19:46 +03:00
FlightlessMango
1d375fd155 Removed crosshair 2020-05-20 18:21:14 +02:00
FlightlessMango
434aa04356 Fixed bench position even more 2020-05-19 12:57:17 +02:00
FlightlessMango
7f9bb2e6b8 Fixed mistake in bench positioning 2020-05-19 12:38:03 +02:00
FlightlessMango
54f83ee3d6 Corrected position and sizing for quick bench 2020-05-18 01:09:24 +02:00
FlightlessMango
22c25b6247 Fixo typo in quick benchmark 2020-05-17 16:33:57 +02:00
jackun
c5bb35c10d
Merge branch '159' into develop 2020-05-17 15:24:47 +03:00
FlightlessMango
92b86ad8bf Added plot graph to quick benchmark 2020-05-17 15:51:43 +02:00
Valters
1afea91dab
Add multi hotkey 2020-05-17 15:19:20 +03:00
FlightlessMango
75f9128ce5 Redesigned logging, adding quick benchmark 2020-05-16 13:35:50 +02:00
FlightlessMango
927fee0f59 No need to add version for nvidia twice 2020-05-13 10:54:00 +02:00
jackun
40255b62f9
Fix get_device_name, don't substr if no '[' in gpu name 2020-05-12 22:56:20 +03:00
jackun
2622270e5c
Init remote control params even if blacklisted 2020-05-12 20:40:16 +03:00
jackun
d694a61d21
Add media_player_name and media_player_color params
Allows to set "main" media player and text color
2020-05-11 22:05:13 +03:00
jackun
6c2b00ffb7
Append driver version 2020-05-10 15:46:40 +03:00
jackun
768297b430
[editorconfig] Apply whitespace rules 2020-05-10 15:18:59 +03:00
FlightlessMango
bc0a0aa53e No need to save deviceName for later 2020-05-10 16:09:05 +02:00
jackun
2308a4228a
Fix vulkan device name 2020-05-10 14:44:04 +03:00
FlightlessMango
31b01aab9f Uncommented most of prop.driverVersion code 2020-05-10 08:56:41 +02:00
FlightlessMango
848b296477 Display vulkan driver
Co-authored-by: Georg Lehmann <dadschoorse@gmail.com>
2020-05-10 02:22:44 +02:00
FlightlessMango
f3422af562 Param gpu_name 2020-05-10 02:21:39 +02:00
FlightlessMango
1ddcc531ff Get device name from pci.ids and display it 2020-05-10 01:43:08 +02:00
FlightlessMango
ed62155310 Parse pci.ids
Co-authored-by: jackun <jack.un@gmail.com>
2020-05-10 01:40:56 +02:00
FlightlessMango
a2cc14f738 Get deviceID 2020-05-10 01:36:09 +02:00
FlightlessMango
3f4949f593 Added top-center overlay position 2020-05-04 06:54:25 +02:00
FlightlessMango
9cf6c502d2 Missing brackets for versions in render_imgui 2020-05-02 20:20:10 +02:00
FlightlessMango
e170e64f9c [Params] Version option 2020-05-02 18:39:39 +02:00
jackun
0ab53a1c06
Move MANGOHUD_PCI_DEV to config file param 'pci_dev'
Relax format requirements as long as it loosely resembles 'domain🚌slot.func' format.
2020-05-02 17:40:05 +03:00
FlightlessMango
bff9958284 Changed pthreads to std::thread 2020-05-01 23:55:21 +02:00
Sporif
1e1dcd3a98 Fix vulkan driver version shown for Nvidia and Intel on Windows 2020-04-30 14:38:22 +01:00
jackun
29e5c4e460
Show device's name and vulkan driver version 2020-04-28 18:06:39 +03:00
jackun
8b855e3251
Fix mul/div order when normalizing io stats to sample per second as fps_sampling_period is also an integer. 2020-04-28 17:25:34 +03:00
Sporif
61ef9244e9 Disable dlsym hooking by default and fix LD_PRELOAD propagation to new processes
This allows `mangohud steam` to work
2020-04-18 17:53:41 +01:00
Sporif
c4a00704cf Separate out blacklist implementation 2020-04-18 17:53:41 +01:00
Georg Lehmann
1eca184157
Vulkan Overlay: Don't try to change the image layout to present twice
The render pass already does the transition.
The pipeline barrier is still needed to transfer the queue family ownership.

Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3740>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/merge_requests/3740>
2020-04-18 18:37:27 +03:00
jackun
88188ee1da
[dbus] Generalize a bit more but still give Spotify special treatment, keep track of 'org.mpris.MediaPlayer2' service providers
Keeps and draws spotify's and other player's metadata separately.
Keep track of 'org.mpris.MediaPlayer2' service providers so when
a player that was the last metadata sender quits, we can stop
showing its metadata on overlay.
2020-04-13 03:02:52 +03:00
jackun
b40fb95a04
[OpenGL] Better version parsing and fix gl version checks for vertex arrays 2020-04-12 16:25:35 +03:00
jackun
a9311bb578
Allow to specify gpu with pci bus id by setting env var MANGOHUD_PCI_DEV=xxxx:xx:xx:x where x's are "domain🚌slot.function" 2020-04-11 00:34:33 +03:00
jackun
e5a256bfc0
Move DBus init to overlay_params so it can be enabled/disabled on the fly from a single place 2020-04-10 22:39:43 +03:00
FlightlessMango
d454ff43a2 Hide all hud elements on no_display 2020-04-05 13:20:15 +02:00
jackun
8024736253
Add DBus loader, combined ticker for Spotify metadata 2020-04-04 23:50:57 +03:00
FlightlessMango
d975278396
Dbus with spotify 2020-04-04 20:51:53 +03:00
jackun
2f034c6d1e
Use X11 loader functions instead of linking to X11 libs 2020-04-02 03:09:49 +03:00
jackun
049e960589
Add 'use_xnvctrl' feature to allow building without libXNVCtrl support 2020-03-30 22:48:56 +03:00
Lionel Landwerlin
1fc94600e9
vulkan/overlay: Add a workaround semaphore for application presenting without one
When an application calls vkQueuePresent() on a different queue than
the one we run our drawing on and it doesn't give a semaphore to wait
on, let's insert our own semaphore so that we don't race the
application's drawing.

Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com>
Closes: https://gitlab.freedesktop.org/mesa/mesa/issues/2540
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3893>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/3893>
2020-03-27 02:24:54 +02:00
jackun
32ae051434
Add Bethesda launcher to blacklist 2020-03-25 22:51:21 +02:00
Sporif
c24d9015cd
Blacklist support
Initial blacklist: Battle.net.exe, EpicGamesLauncher.exe, IGOProxy.exe, IGOProxy64.exe, Origin.exe, Steam.exe

Signed-off-by: jackun <jack.un@gmail.com>
2020-03-25 17:11:33 +02:00
jackun
cf17f70dab
Remove unused statistics related code 2020-03-24 21:38:08 +02:00
jackun
e72a7bdd76
[config] Try to set notifier file descriptor to non-blocking mode; add start/stop_notifier functions
If setting to non-blocking fails, just closing the fd should kill it anyway
2020-03-24 00:02:42 +02:00
jackun
2ab386d70a
Fix double definition 2020-03-23 21:19:03 +02:00
FlightlessMango
a84f5ef178 Show mangohud arch in hud 2020-03-23 20:12:11 +01:00
FlightlessMango
c9558eec50 Merge branch 'xnvctrl' into develop 2020-03-23 18:05:13 +01:00
jackun
ae3a155e22
Keep engine name per vulkan instance 2020-03-23 18:59:39 +02:00
jackun
f92a2a07db
GiB not GB 2020-03-21 21:47:50 +02:00
jackun
fbae1dfcc0
More checks for XNVCtrl support. Favor NVML but fallback to XNVCtrl if supported. 2020-03-20 16:36:00 +02:00
jackun
1915352c86
Draw versions after table so they don't get clipped 2020-03-18 18:55:51 +02:00
jackun
6ad6bffade
Use ImGui's DisplaySize so display size for layer positioning etc can be set the same way for vulkan and OpenGL 2020-03-17 15:00:20 +02:00
jackun
3d46ccafe1
Show OpenGL version below engine name too to avoid it getting clipped 2020-03-17 14:58:27 +02:00
jackun
8aa0783b4a
Show vulkan/opengl version
OpenGL glGetIntegerv(GL_[MAJOR|MINOR]_VERSION) don't work on versions < 3.0 though
2020-03-17 00:24:04 +02:00
FlightlessMango
8fb13e23e4 Resize window when reloading config 2020-03-16 18:41:48 +01:00
jackun
a0f5cb56a2
[config] Guard overlay_params from the thread with mutex 2020-03-16 18:52:03 +02:00
jackun
34184abf2e
[config] loop in the notifier thread and reload configuration file if it is changed 2020-03-16 18:35:01 +02:00
FlightlessMango
c5dad16612 Listen for modify on config file 2020-03-16 16:48:12 +01:00
FlightlessMango
b0e1fe9321 [params] set targetFrameTime in params.cpp 2020-03-15 17:09:03 +01:00
jackun
abef561573
Disable CPU stat(s) if it failed to initialize 2020-03-14 23:15:03 +02:00
FlightlessMango
b3286cbe48 check if opengl/vulkan with is_vulkan bool 2020-03-14 18:29:43 +01:00
jackun
13e57578c3
Fix update_hud_info indentation 2020-03-14 19:11:34 +02:00
jackun
154380e056
Don't update time if not enabled 2020-03-14 19:10:38 +02:00
jackun
9a7a4d99e0
Don't update CPU freq/temp if not enabled 2020-03-14 18:48:04 +02:00
jackun
6bbc89a9cc
Don't update CPU stats if not enabled 2020-03-14 18:41:50 +02:00
jackun
16552b25e3 Don't update RAM/IO stats if not enabled 2020-03-14 18:38:18 +02:00
jackun
57f3b3470d
Remove param_unit() 2020-03-13 18:25:22 +02:00
FlightlessMango
e24f5dfc8b added log_duration param and updated readme 2020-03-13 16:27:45 +01:00
FlightlessMango
8641392ca7 added MANGOHUD_FONT to params as font_file 2020-03-13 16:18:47 +01:00
FlightlessMango
d1bdf71580 added MANGOHUD_OUTPUT to params as output_file 2020-03-13 16:06:57 +01:00
jackun
05d61ee77e
Init CPUStats just once 2020-03-13 16:08:36 +02:00
FlightlessMango
e68dd48f3f forgot one refresh_config 2020-03-13 15:07:44 +01:00
FlightlessMango
fe69ec2955 changed refresh_config to reload_cfg 2020-03-13 14:57:11 +01:00
jackun
373bba5fcf
Keep time outside the table or it gets clipped if using too fancy a format 2020-03-11 12:11:16 +02:00
FlightlessMango
8bf8723ad5 added param text_color 2020-03-11 06:20:18 +01:00
FlightlessMango
77b3033cc7 Removed frametime_alpha and replace it with an overall alpha for text and frametime 2020-03-11 06:07:41 +01:00
FlightlessMango
88ad5de2ab Fix so preloading doesn't break vulkan layer 2020-03-10 08:27:27 +01:00
FlightlessMango
163c76bea7 added param background_color 2020-03-10 07:48:04 +01:00
FlightlessMango
906a8cde23 added param frametime_color 2020-03-10 06:30:37 +01:00
FlightlessMango
a2735693ba Merge opengl into develop 2020-03-10 06:19:18 +01:00
FlightlessMango
755558ecb9 added param io_color 2020-03-10 05:01:31 +01:00
FlightlessMango
d8b3c3c81f params for changing color of cpu, gpu, vram, ram and engine text 2020-03-10 04:51:27 +01:00
jackun
5e4bd7b8c8
Keep time outside the table or it gets clipped if using too fancy a format 2020-03-07 14:10:52 +02:00
jackun
b4f1402461 Right align value texts 2020-03-07 02:08:01 +01:00
jackun
e881a1538a Pre-convert crosshair's color to ImGui's format 2020-03-07 02:08:01 +01:00
FlightlessMango
857dcf7fb8 use hmwon freq1/2 instead for amdgpu core/mem clocks 2020-03-07 02:08:01 +01:00
FlightlessMango
4d5f62386b added gpu mem and core clocks to hud 2020-03-07 02:08:01 +01:00
jackun
f8398c3e7a Add I/O stats
Using /proc/self/io 'read_bytes' and 'write_bytes' fields which count only
reads/writes that hit the storage (i.e no cached reads).
2020-03-07 02:07:24 +01:00
FlightlessMango
534ca9416d Spruced up iostats and change to bool from custom 2020-03-07 02:06:40 +01:00
FlightlessMango
4847cb8e31 Using table for hud layout 2020-03-07 02:06:40 +01:00
jackun
2472e69205
Check if pApplicationInfo is null 2020-03-07 02:29:31 +02:00
jackun
fad35b9540
Just check hwmon sysfs folder for cpu temp sensors 2020-03-05 09:52:14 +02:00
jackun
6bf37f8510
Add "time_format" parameter; update time string every "fps_sampling_period" interval
See std::put_time docs for supported formatting
2020-03-02 22:53:43 +02:00
FlightlessMango
58c7831d5c hud width correction 2020-02-29 01:38:40 +01:00
FlightlessMango
80cff1ac86 Fixed hud width not applying 2020-02-29 01:16:41 +01:00
jackun
b91be85ff9
Use std::unordered_map and std::mutex instead for object mapping and related cleanups 2020-02-20 01:03:35 +02:00
jackun
54950853b5
Remove redundant 'no_display' code 2020-02-18 15:36:20 +02:00
jackun
8f66bd7d87
Set stats window height to ImGui::GetCursorPosY() 2020-02-18 14:35:58 +02:00
jackun
2fb0453e28
Create ImGui fonts per swapchain 2020-02-18 14:21:22 +02:00
FlightlessMango
099082affc Refresh config keybind 2020-02-18 12:04:59 +01:00
jackun
9053b63142
Allocate instance_data with "new" 2020-02-18 11:49:09 +02:00
jackun
80f29aad9d
Allow MANGOHUD_CONFIG to override configuration files' settings.
Use `MANGOHUD_CONFIG=some_setting=1` to skip reading the configuration files
and just use the settings specified with MANGOHUD_CONFIG.

Use `MANGOHUD_CONFIG=read_configs,...` to read configuration files too and
add other settings that you would like to override.
2020-02-18 09:24:22 +02:00
jackun
5c4816efa5
Unused instance_data 2020-02-13 20:54:17 +02:00
jackun
27848bd253
Don't crash if there's nothing to draw 2020-02-12 19:58:01 +02:00
FlightlessMango
d8783d3002 Added time param 2020-02-12 18:24:00 +01:00
jackun
b9ae979a05
Don't interpolate fps limit sleep overhead
Random hiccups and game pauses can make it go crazy otherwise.
2020-02-12 13:58:13 +02:00
FlightlessMango
dba31e6a11 Set background alpha color to 1.0 2020-02-12 12:43:46 +01:00
FlightlessMango
e947dae9ed Fixed fps limiter accuracy 2020-02-12 05:59:18 +01:00
FlightlessMango
c73df54166 Added background_alpha param 2020-02-12 04:51:08 +01:00
FlightlessMango
e81fa5776e Added crosshair_color param 2020-02-11 09:21:23 +01:00
FlightlessMango
d79d06271f Repurposed no_display param 2020-02-11 06:10:10 +01:00
FlightlessMango
50cff923e8 Changed vram to display GB from MB 2020-02-11 02:50:33 +01:00
FlightlessMango
3c4fcda623 Added offset x/y in params 2020-02-10 17:37:37 +01:00
FlightlessMango
a8e4ac84f9 Merge branch 'crosshair' 2020-02-10 17:08:15 +01:00
FlightlessMango
69ed9db4c1 Merge branch 'limiter' 2020-02-10 17:01:03 +01:00
jackun
1fc94f6db5
Remove unused histogram's get_stat() 2020-02-10 12:42:44 +02:00
Georg Lehmann
7a4ffe8206
Vulkan overlay: use the corresponding image index for each swapchain
pImageIndices should be a pointer to the current image index
otherwise every swapchain but the first one could have a wrong image index
2020-02-10 12:38:05 +02:00
FlightlessMango
784cb427ff Use params for keybinds 2020-02-09 12:26:41 +01:00
FlightlessMango
e359058430 Fixed hud being wider than intended 2020-02-09 09:25:00 +01:00
jackun
5f6c3c9190
Fix ImGui::PopStyleColor() being in wrong place 2020-02-08 20:32:33 +02:00
FlightlessMango
c5ea98a243 Added a crosshair and params for it 2020-02-08 03:55:39 +01:00
FlightlessMango
be8dc8929d Don't use fps limiter unless limit is set 2020-02-08 01:59:26 +01:00
FlightlessMango
148d19422d Added vsync option 2020-02-07 13:12:58 +01:00
FlightlessMango
cd131e0c39 Add fps_limit param 2020-02-07 12:14:59 +01:00
FlightlessMango
a99720f311 Change to nanoseconds 2020-02-07 12:01:20 +01:00
FlightlessMango
f38389b967 FPS limiter 2020-02-07 11:46:12 +01:00
FlightlessMango
4be6d4c748 Added frametime ms next to frametime graph 2020-02-07 00:00:40 +01:00
FlightlessMango
bd4c402824 Added Frametime label 2020-02-06 23:58:45 +01:00
telans
1bc513f572
remove nvidiaSmiThread 2020-02-06 18:45:32 +13:00
jackun
97fcafd030
Check if amdgpu file handles are valid 2020-02-05 22:37:03 +02:00
Georg Lehmann
908d46d6ea
Correctly wait in the fragment stage until all semaphores are signaled
This fixes two issues:
- a crash if the application uses more than one semaphore for presenting because the driver expects one stage per semaphore
- the swapchain image could be not ready yet if the semaphores aren't signaled, \#946[1] is possible related

[1] https://gitlab.freedesktop.org/mesa/mesa/issues/946

Signed-off-by: jackun <jack.un@gmail.com>
2020-02-05 22:37:03 +02:00
jackun
3c8376588a
Init gpu stats when VkDevice gets created 2020-02-05 22:37:03 +02:00
FlightlessMango
35d8f7c829
add ram/vram param options 2020-02-05 14:16:16 +02:00
FlightlessMango
beaac191d1
Displaying used ram and vram on the hud 2020-02-05 14:16:16 +02:00
FlightlessMango
e3b380b970
changed mem color 2020-02-05 14:16:15 +02:00
FlightlessMango
14ad1e015a
Display memory stats on the hud 2020-02-05 14:16:15 +02:00
FlightlessMango
d20a92a0c4 Write system info to log file 2020-02-05 07:07:23 +01:00
FlightlessMango
68599a02a3 param options for cpu_stats and gpu_stats 2020-02-05 01:06:10 +01:00
jackun
bba8702ff3
Check if engine name is set 2020-02-05 00:43:32 +02:00
jackun
6d3d869586
Fix system info and stats parsing 2020-02-04 23:23:01 +02:00
telans
539e1bb4dc
saturate the colors a little 2020-02-04 20:58:35 +13:00
jackun
ca0462f817
Revert "Fix Get*ProcAddr functions' exports"
This reverts commit 3f036dd3a0.
2020-02-03 02:58:43 +02:00
FlightlessMango
dcb0dcd441 Merge branch 'dynamic_nvml' 2020-02-02 02:57:48 +01:00
FlightlessMango
3d711005d4 Merge branch 'cpu' 2020-02-02 02:53:58 +01:00
FlightlessMango
3d49422325 cleaning up 2020-02-02 02:21:00 +01:00
jackun
90416278e0
Total cpu periods 2020-02-02 02:14:08 +02:00
FlightlessMango
c9e9c2feaf bring back cpu temp 2020-02-02 01:09:45 +01:00
FlightlessMango
1a60999243 New cpu implementation 2020-02-02 00:55:24 +01:00
jackun
3f036dd3a0
Fix Get*ProcAddr functions' exports 2020-02-01 23:41:15 +02:00
FlightlessMango
ac719b2ffd Check if nvml is avaible on intel vendorID 2020-02-01 22:09:35 +01:00
FlightlessMango
af17b20bd7 Use vendorID instead of deviceName to detect GPU 2020-02-01 22:07:19 +01:00
FlightlessMango
1b00d29792 Removed unused histogram 2020-02-01 02:45:10 +01:00
FlightlessMango
369b18eb07
Use nvml to display gpu values in hud 2020-01-30 21:23:47 +02:00
jackun
b28e0d2606
Remove unused pipeline stats counters 2020-01-30 11:19:25 +02:00
telans
b67a2aad16
Merge branch 'telans'
Remove unused python file
Fix includes
Add package build.sh option
2020-01-29 18:40:26 +00:00
FlightlessMango
d3a588b0b0 Removed unused variables and fixed compiler warnings 2020-01-29 16:37:41 +01:00
telans
e82e3721b7
update header location & duration_env 2020-01-29 23:24:46 +13:00
telans
0287920776
remove unused git_sha1.h 2020-01-29 21:35:09 +13:00
telans
ae08d0cc21
Merge branch 'gui-color' 2020-01-28 23:29:16 +00:00
FlightlessMango
e3008126f3 We don't need to push the default font 2020-01-28 12:59:09 +01:00
FlightlessMango
af99e711b5 Reduced ImGui ItemSpacing 2020-01-28 12:58:18 +01:00
jackun
ca78a59d54 Removed graph background, plotlines color to green 2020-01-28 09:03:24 +02:00
jackun
64fd81a471 Add Unispace as default font or load a font from file specified by envvar MANGOHUD_FONT
Could make built-in font configurable by including some other source file with font data instead of src/font_unispace.c
2020-01-28 08:58:04 +02:00
FlightlessMango
dd78c02ed8 MangoHud Standalone
Co-authored-by: jackun <jack.un@gmail.com>
Co-authored-by: telans <telans@protonmail.com>
2020-01-28 05:11:05 +01:00