https



Steve's Multipurpose Windows Gizmo
with the Graviton screen blanker!

Page Updated: May 04, 2013 at 18:21 (354.35 days ago)Viewed 149 times per day


What the heck is Wizmo?

Wizmo is an extremely useful "Windows Gizmo" I created when I could not find anything else on the Net to do similar jobs.

Wizmo is a multi-purpose, miscellaneous Windows function, "catch all" with a growing list of uncommon but useful features and capabilities.

Wizmo is present on every one of my Windows machines. I use it many times per day and I have grown to rely upon it so much that, if it didn't already exist, I would drop everything and write it again. It is that useful.

I will be very pleased if you find Wizmo to be useful to you too. 



File stats for: Wizmofile download  freeware page
spacer
gray
spacer
Last Updated:
Size: 38k
Jun 25, 2008 at 13:25
(2,128.55 days ago)
Downloads/day: 63
Total downloads: 1,170,342
Current Rank: 6
Historical Rank: 8



Why Wizmo was born . . .

Window's built-in power management support is pretty cool. But sometimes you don't want timed operation, which is all Windows provides.

When I upgraded from NT 4.0 to Windows 2000, I added three monitors. Windows 2000 supports multiple displays and you can never have too much desktop space. The monitors supported power management so they could be programmatically switched on and off. Also, I almost always know when I am leaving the computer unattended for a long time and the monitors should be powered down. I don't want them powering down when they shouldn't (that's not good for them), and leaving them on to timeout — when I know they should be switched off — seems non-optimal. (I feel the same way about screen blanking in general, but somewhat less so.)

So I looked all around the Net for a simple, "single-click", power management app that would let me shut down my system's monitors. I came up dry.

Necessity being the mother of invention, I decided to write my own. The result is Wizmo . . . which quickly grew into much more than just an auto power off utility.



How does Wizmo work?

Wizmo is driven by one or more command line options. When it is started without any options, or with options that it can't understand, Wizmo displays the on-screen dialog shown above, but it does nothing else. The dialog explains Wizmo's operation and lists all of Wizmo's built-in capabilities. The "Ref" button toggles the display between the main screen and a quick reference page.

Wizmo is commanded to do more by using a Windows shortcut where it's possible to add commands directing Wizmo's actions:

The image above shows a shortcut to the wizmo.exe file. After Wizmo was downloaded from grc.com it was placed into the c:\windows\system directory for subsequent access. (There is nothing to install, Wizmo simply runs when requested.)

As you can also see in the image above, the Wizmo command "monoff", which immediately turns off all of the system's monitors, has been added to the command line after "wizmo.exe". Multiple commands can be added in sequence combinations to create simple script-like programs. For example, the following Wizmo command line will raise the system's speaker volume only while the user is away from the computer, activate Wizmo's built-in "graviton" screen blanker, then lower the volume to its typical setting once the user has returned:

wizmo.exe volume=80 graviton volume=20

Or, to mute the PC while you're away ...

wizmo.exe mute=1 graviton mute=0

The resulting shortcut icon can be placed on the Windows start menu for easy access, placed on the Windows desktop, or added to the "shortcut" buttons just to the left of the Windows Start button. Wherever is most convenient for you.

And speaking of the shortcut icon, Wizmo comes with a collection of different built-in icons that can also be chosen to help keep multiple Wizmo shortcuts separate and straight. (I am always looking for more icons that would be appropriate for the sorts of things Wizmo does. If you find any good ones, please attach them to some eMail and send them to support @ grc.com. I'll add them into Wizmo for everyone's use.)

Additional instructions are built into Wizmo.
Download and run the program for more help.



What commands does Wizmo understand?

This page's Wizmo command vocabulary is listed in chronological order of its development and inclusion in Wizmo. New command descriptions will be appended to the bottom of the page.

Since Wizmo is intended to be a "catch all" for miscellaneous and generally useful Windows commands, it will be growing as Wizmo's users think of and suggest new things for Wizmo to do. New commands will be placed within their respective groups (shutdown, blanking, graviton, etc) but the "Version history" section at the end of this page will help people quickly identify updates and additions to Wizmo's command vocabulary.

Wizmo Command Vocabulary



SHUTDOWN TRIGGER COMMANDS

standby  —  trigger Windows' standby mode
This is the shutdown mode, if supported, from which Windows can (sometimes) resume quickly. But it is still Windows, so save your files first.
Example: wizmo standby
hibernate  —  triggers Window's long-term hibernation
If hibernation is supported by your Windows configuration, this command will trigger Windows to enter hibernation mode. This is the standby mode which Windows can remain in forever, since the system's RAM and device conditions are copied to hard disk. Hibernation is not supported by all Windows versions and configurations.
Example: wizmo hibernate
logoff  —  log off the current user
Leaves the computer running, but attempts to gracefully close all of the current user's running programs and logs the current user off.
Example: wizmo logoff
lock  —  lock the workstation
Exactly equivalent to pressing Ctl-Alt-Del then choosing "Lock Workstation."
Example: wizmo lock
blindlock  —  lock the workstation & power-off monitors
Equivalent to pressing Ctl-Alt-Del then choosing "Lock Workstation" and keeping all system monitors powered off until login is successful.
Example: wizmo blindlock

This locks the system and powers down the monitors, forcing the logon password to be entered “blind” without the benefit of user-interface feedback. Before using this you should experiment with the regular “lock” command and using the Alt-U and Alt-P keys to select the username and password fields in case of unseen typos.
exit  —  exit Windows
Attempts to gracefully close all of the user's running programs and exits Windows to the "safe to turn off" state. Does not power down the computer.
Example: wizmo exit
reboot  —  restart (reboot) the computer
Attempts to gracefully close all of the user's running programs, exits Windows, reboots the system and restarts Windows.
Example: wizmo reboot
shutdown  —  shutdown the computer
Shuts down all of the user's running programs, exits Windows, then powers off the machine if supported by the system's hardware.
Example: wizmo shutdown
The 'Damit' Variations
Most Windows users have had the annoying experience (all too often) of having Windows decide that it just doesn't feel like shutting down, rebooting, restarting, sleeping, hibernating or whatever. To address Windows occasional lack of obedience, I added a handy (and sometimes crucial) feature: The shutdown trigger commands list above accept an optional exclamation point "!". For example: "reboot!" (pronounced "Reboot Damit!"). A word of caution: Since the Damit Variations force the requested function to succeed, even if programs or device drivers have refused to give Windows their permission to be shutdown, you should be certain that this is what you want and that any files are safely saved.

The Emergency Damit Variations
And . . . since you never know in advance when you might need one of the damit variations, if you don't want to pre-set shortcuts that way, you can request a one-time damit variation by holding down either of the shift keys when launching Wizmo with one of the shutdown trigger commands above. You will hear a "double sigh" to confirm the recognition of the emergency damit variation and the function will be executed as requested.



DRIVE OPEN (EJECT) and CLOSE (LOAD)

open  —  opens the system's default CDROM drive tray.
Example: wizmo open
close  —  closes the system's default CDROM drive tray.
Example: wizmo close
open={drive:}  —  open or eject specific removable drive media.
On systems with multiple CDROM or other removable drives (e.g. Iomega Zip and Jaz) this opens or ejects the media from the specified drive.
Example: wizmo open=w:
close={drive:}  —  close or load specific removable drive media.
(NT/2000/XP only) On systems with multiple CDROM or other removable drives (e.g. Iomega Zip and Jaz) this closes or loads the media on the specified drive. This function is not available under Windows 95/98/ME. On those systems it will behave like the "close" function above.
Example: wizmo close=r:



WIFI DISCONNECTION PREVENTION COMMANDS

wanlock  —  disable "wireless zero config" service
Windows' "Wireless Zero Configuration" service periodically drops and restarts wireless connections in a misguided attempt to check for a "better" access point to connect with. Wizmo's "wanlock" command simply stops this service to prevent this annoying behavior. Once your machine is connected wirelessly, give the "wizmo wanlock" to "lock" Windows to the current access point and prevent those annoying disconnections.
Example: wizmo wanlock
wanopen  —  re-enable "wireless zero config" service
This simply restarts the Windows "Wireless Zero Configuration" service which the "wanlock" command may have stopped. Rebooting the system does this automatically. But there may be times when you'd like to move to another access point and have Windows "find it" for you.
Example: wizmo wanopen



WINDOWS SCREEN SAVER COMMANDS

blank  —  activate the system's screen saver
This simply trips the system's currently chosen screen saver exactly as if the screen saver's automatic timeout had been reached. Since this is not a Wizmo hosted screen saver, the command merely triggers one of Windows' built-in savers. Wizmo command scripting will therefore not "pause" at the screen saver command as they do for the Wizmo hosted commands. This limits the usefulness of Wizmo's command scripting for this command.
Example: wizmo blank
autoblank={0|1}  —  disables/enables timed blanking
If, unlike me, you prefer timed blanking or your screens, there may be times — like when you're on the phone, or watching the system perform a lengthy defragmentation — when you don't want a short screen blanker timeout. This command, given a "0" argument (to disable autoblanking) or a "1" (to enable autoblanking), will disable or enable the system's automatic screen saving timeout.
Example: wizmo autoblank=0       (disable timed blanking)



WIZMO'S SCREEN SAVER COMMANDS

blackout  —  blank the screen to "basic black"
Leave the system's monitors powered on, but blank the screen(s) to absolute black. Colors other than black can be chosen by using the "desktop" command instead of "blackout." Since this is a Wizmo hosted screen saver, the mouse sensitivity "shake=" command can precede the "blackout" command to set or disable subsequent mouse movement unblanking. Other Wizmo commands to change system settings may be placed before and after the "blackout" command to alter the system's operation during the blanking.
Example: wizmo blackout
desktop  —  blank the screen to "desktop" color
Leave the system's monitors powered on and blanks the screen(s) to the desktop's color. In practice this is very much like removing all desktop icons, windows, and other user-interface details from the screen(s). The "blank to" color is chosen from the Appearances tab of the desktop properties dialog. Since this is a Wizmo hosted screen saver, the mouse sensitivity "shake=" command can precede the "desktop" command to set or disable subsequent mouse movement unblanking. Other Wizmo commands to change system settings may be placed before and after the "desktop" command to alter the system's operation during the blanking.
Example: wizmo desktop
monoff  —  turns off all monitors
Any system monitors that support Windows advanced power management (APM) will be immediately powered down until they are awakened by the keyboard or mouse movement. Since this is a Wizmo hosted mode, the mouse sensitivity "shake=" command can precede the "monoff" command to set or disable subsequent mouse movement unblanking. Other Wizmo commands to change system settings may be placed before and after the "monoff" command to alter the system's operation while the monitors are powered down.
Example: wizmo monoff
graviton  —  activate Wizmo's animated screen saver
Back in 1972, the researchers at Stanford University's Artificial Intelligence Laboratory (SAIL) would often unwind at the end of the day by playing the original "Asteroids" game which was first developed there. I worked at SAIL during summers, and part time while attending high school, and spent many enjoyable hours playing the world's first video game.

I always wanted to experiment with computing and displaying the motion of a set of mutually gravitationally attracted objects, where every object was attracted to every other. As you might imagine, the math is complex. Thirty years later, personal computers had become powerful enough to do this on the average desktop. So I finally wrote the code which became Wizmo's unique "Graviton" screen saver.

Please see the "Graviton Screen Saver Parameters" section below for details about Graviton's optional configuration parameters. Since this is a Wizmo screen saver, the mouse sensitivity "shake=" command can precede the "graviton" command to set or disable subsequent mouse movement unblanking. Other Wizmo commands to change system settings may be placed before and after the "graviton" command to alter the system's operation while the screen saver is running.
Example: wizmo graviton
shake={0-??}  —  set Wizmo unblanking mouse sensitivity
It can be annoying to return to your computer to find that the screen has unblanked itself (probably due to "mouse drift"), or to accidentally bump the mouse and have the screen unblank. To address this annoyance, the mouse movement unblanking sensitivity of Wizmo's screen savers can be set and/or completely disabled. A setting of "0" cancels all mouse unblanking (just press any key on the keyboard). Any higher value specifies how far the mouse must be moved before the screen will unblank. (Note that this can only be used with Wizmo's built-in screen savers.)
Example: wizmo shake=0 graviton



AUDIO CONTROL COMMANDS

quiet  —  suppress the "Gibson sigh" Wizmo sound
Since Wizmo is usually not seen, it generates a soft sound to indicate its performance of a task. This sound may be suppressed by placing the "quiet" command early in Wizmo's command list.
Example: wizmo quiet desktop
volume={0-100}  —  set the system's audio level
If you enjoy associating sounds with system events, you probably grow accustomed to the sounds being at a certain volume level. So, when you need to turn that volume up or down when playing a video clip, or being away from your machine, it is convenient to be able to return the volume to its original level. Wizmo's "volume=" command easily sets the system's volume to a percentage of full volume. Another use for this is creating simple script programs. The example below demonstrates a simple script to turn the volume up while the screen saver is active, then back down after blanking is cancelled.
Example: wizmo volume=90 monoff volume=20
play={wavefile}  —  play the specified file
The "play=" verb gives you the flexibility to associate your own sounds and sound effects with your Wizmo shortcuts and command execution.
Example: wizmo play=c:\windows\media\chimes.wav
wave={0-100}  —  set the system's wave file audio level
The system's wave file playback level can be controlled independently from the overall sound level. The "wave=" command allows this to be independently set.
Example: wizmo wave=25
mute={0|1}  —  control the system's audio muting
The system's audio generation can be easily muted without changing any other level settings. This can be useful to keep the system quiet during screen blanking or while talking on the phone.
Example: wizmo mute=1



GRAVITON SCREEN SAVER PARAMETERS

The following command verbs may be used to specify the operation of Wizmo's built-in Graviton screen saver. Since Wizmo processes commands in the order of their appearance on the command line, these specifications must precede the "graviton" command on the command line.

particles={1-??}  —  specify the number of objects
Since Wizmo was written in 100% pure assembly language, and I spent a lot of time tuning and tweaking the gravitational equation processing, most PCs can compute and animate a surprising number of individual objects. The "particles=" command lets you specify how many Wizmo should create and animate. The number of particles chosen has a dramatic effect upon the overall character of the resulting animation.
Example: wizmo particles=100 graviton
line  —  initial diagonal particle alignment
While Graviton's default initial random particle alignment is interesting, our visual cortex struggles to find patterns in noise. Therefore, providing a more "patterned" display is often visually pleasing. Graviton's "line" option causes the particles to be initially arranged in a single diagonal line. Since the particles begin with a symmetrical arrangement, the symmetry is never lost.
Example: wizmo line gravity=1000 elastic graviton
grid={1-??,1-??}  —  initial grid particle alignment
The "grid" option creates an initial rectangular grid of particles with a specified width and height (grid=w,h). Since every particle gravitationally interacts with every other, large grids are time consuming to process because the number of computations increases by half of the square of the particle count ((Width x Height)^2)/2. However, the gravitational contraction demonstrated by a "uniform sheet" of particles is pretty spectacular.
Example: wizmo grid=40,40 gravity=5 graviton
trails={1-??}  —  specify the length of particle trails
A display of the path taken by each object can be interesting. Many different effects can be obtained with long and short trails. Since the trail is composed of the individual previous positions occupied by the particles, the resulting "trail length" is directly proportional to the object's velocity at that time. The option "trails" without any value creates default 100-dot trails.
Example: wizmo particles=5 trails graviton
gravity={0-??}  —  specify the inter-particle attraction
Different amounts of inter-particle attraction "gravity" result in very different and interesting displays. Graviton's default gravity is 10,000. With low gravity and several thousand particles, a demonstration of "stellar condensation" is created to show how matter forms clumps and condenses out of randomly distributed stellar gasses. On the other hand, very few particles and very high gravity demonstrates Wizmo's "matter/anti-matter" particle interaction where inter-particle collisions under high gravity result in the consumption of (negligible) particle mass for a increase of total system momentum.
Stellar condensation: wizmo particles=1000 gravity=5 graviton
Anti-gravity Collision: wizmo particles=4 gravity=25000 graviton
sun={0-??}  —  create a screen centered gravity well
Additional interesting effects can be obtained by creating a high-gravity field in the screen's center. Watching a large particle grid pour into a blackhole (see next option) is amazing. And with a sun- or blackhole-centric screen you can turn off all inter-particle gravity (gravity=0) to eliminate all particle-particle interactions. The option "sun" without any value creates a sun with default (10,000 strength) gravity.
Nucleotide: grid=4,4 gravity=0 trails sun=50000 graviton
Vortex: grid=10,10 gravity=0 trails=10 sun stop graviton
blackhole={0-??}  —  create an invisible gravity well
While the "sun" option above allows you to see the source and position of the screen's gravity well, it has the problem of creating a fixed object on the screen. An invisible gravity well can be created with the "blackhole" option.
Example: replace "sun" with "blackhole" in examples above
infinite  —  remove screen edge boundaries
Wizmo's graviton particles are normally prevented from leaving the visible screen through the presence of screen edge boundaries that cancel the particle's departure velocity. However, Wizmo's graviton math supports an infinite universe in which particles are allowed to exist outside of visible space. The "infinite" option removes the screen edge boundaries allowing particles to leave and re-enter the screen at any time.
Example: wizmo particles=100 gravity=100 infinite graviton
elastic  —  create elastic screen-edge boundaries
The screen edges become perfectly elastic rather than velocity cancelling. Overall system momentum will be conserved, but may generally increase due to the cumulative effects of matter/enery conversion through Wizmo's matter/anti-matter particle collision effect.
Example: wizmo particles=100 gravity=100 elastic graviton
stop  —  completely stop exiting particles
All velocity of any particle attempting to leave the screen is removed. Rather than the default behavior of "sliding along" the screen edge, particles lose all of their velocity and momentum.
Example: wizmo particles=100 gravity=100 stop graviton


Graviton Screen Saver Discussion

Matter/Anti-Matter Collision Dynamics
For the most part, Wizmo's Graviton screen saver math faithfully reproduces a simulation of n-body mutually gravitationally attracted particles. However, while one intention was faithful simulation, the overarching goal was the production of an interesting and intriguing display. After experimenting with various screen edge boundary handling approaches, I settled upon the "velocity cancellation" approach. This removes the velocity from the "exiting direction" of the particle, allowing it to keep its other direction of travel. The result is more interesting and varying displays of particle motion.

However, "cancelling" one direction of the particle's motion removes momentum from the system every time a particle hits an edge. So I needed some means for adding energy back into the system in a way that would cause the overall environment to find and reach its own equilibrium, regardless of the user's other parameter settings. I designed a "particle collision model" which meets the requirements perfectly and has the added benefit of making the resulting display more interesting.

Normally, an inelastic particle-particle collision would convert some kinetic energy into heat energy by using the collision to deform and flex the particles. Taking an approach which is presumably similar to Disney's "Flubber", Wizmo's Graviton particles consist of a matter/anti-matter composite that converts matter into energy, releasing mechanical energy in direct proportion and counter-reaction to particle flexure. As a result, colliding particles exit the collision event with substantially more velocity (and negligibly less mass) than when they arrived.

This model results in the overall system obtaining and operating at an energy/momentum equilibrium since the Graviton screen edges remove energy in direct proportion to the particle's arrival velocity.

The "Grid" Option
If you have not experimented with Graviton's "grid" option, I urge you to play around with it. The use of an initial grid particle alignment results in some uniquely interesting patterns and very dynamic presentations because the "mirror particles" from the opposite sides of the grid have a high probability of striking each other head-on.

After I discovered and compensated for a least significant bit error in the Pentium's signed multiply instruction the gravity acceleration calculations became so perfect that the symmetry of the initial grid alignment is never lost.

A Few Of My Favorite Graviton Grid Settings
Here are some of my favorite uses of the "grid" option. You can, of course, use them as hopping off points for your own experiments:

 Happy Trails:     grid=4,4 trails=50 gravity=1000 graviton
One tenth gravity (default gravity is 10,000) provides a relaxing pace, yet the high probability of head-on particle-particle collisions creates bursts of excitement which are immediately damped by the default energy-absorbing borders. Modest length trails shows particle path history without filling the screen.

 Trail Mix:     grid=4,4 trails=200 gravity=20000 graviton
Double gravity encourages a highly energetic display with especially explosive particle collisions. The combination of long trails and fast-moving particles creates a slowly evolving trail painting. The use of the default energy-absorbent "sliding borders" prevents excessive energy buildup to keep the system's overall energy constant.

 Escalation:     grid=7,7 trails=20 gravity=100 elastic graviton
Let this one run for a while to watch its energy levels slowly increase. One hundredth gravity compensates for the high gravity density created by so many particles and give this a slow start. However, the use of elastic borders prevents energy dissipation, allowing the system's overall energy to build forever. The use of short trails keeps the overall graphic load reasonable and allows the trail lengths to serve as velocity vectors. The odd grid size (7,7) creates strong center-line symmetry.

 Aztecca:     grid=4,4 trails=250 stop graviton
Long trails fills the screen with after-images. The "stop" type borders prevents energy accumulation and keeps the highly energetic particles from sliding into and over-filling the screen corners as they would with the default "sliding borders."

 Flux Percolator:     grid=16,16 gravity=10 stop graviton
Super-low gravity and a large uniform grid creates an initial "fabric collapse". This rapidly evolves into a symmetrical and fluid flow with particles having minimal influence upon each other. The use of "stop" borders kills the initial fabric collapse energy and gives the display a continuously "percolating" feel.

 Nucleotide:     grid=6,6 gravity=5 trails=150 sun=25000 graviton
Strong sun gravitation causes particles to find stable orbits. A weak inter-particle attraction allows particles to influence each other slightly to prevent particles from becoming stuck in "corner-bounce" cycles. The use of the default "slippery border" imparts the required angular momentum to the particles, allowing them to obtain orbits and cancelling excessive velocity. The long trails paint orbital paths of the particles around the sun.

 Vortex:     grid=10,10 gravity=0 trails=10 sun stop graviton
Zero inter-particle gravity and the use of the "stop" screen border prevents particles from acquiring any angular momentum around the screen's central sun. Particles thus fall directly into the sun, experience the energetic matter/anti-matter interaction, and are flung out to hit the screen edge  . . . where they again fall directly into the sun.

 Arabesque:     particles=10 gravity=1 line trails sun graviton
This uses the "line" arrangement option for diagonal symmetry. A modest particle count and slight inter-particle attraction (gravity=1) pulls the particles out of their initial corner alignment. A default trail length of 100 shows the recent particle paths, and a sun with a default (10000) gravity creates a lazy orbital environment. This take a few seconds to stabilize, but the result is gentle and pleasing.

Getting Graviton to Work
I deliberately wrote Graviton to depend upon only the oldest Windows DirectX application interfaces. It should work with any DirectX capable machine equipped with DirectX 1.0 or later. If your system isn't wanting to run Graviton you might first try upgrading your display adapters drivers, then download and install Microsoft's latest DirectX components.

http://www.microsoft.com/directx/

The installation of the Windows' DirectX system should also install an executable program titled dxdiag.exe. You should find and execute this file (it may have a link under your system's Start button) to see what's going on with your system's DirectX support.

I sincerely hope you will have as much fun with Wizmo, and find it to be as useful, as I have.



The GRC Wizmo Discussion Newsgroup

The "news.grc.com" news server contains a "grc.wizmo" newsgroup where Wizmo fanatics hang out. They share favorite Graviton settings, share tips and tricks, and so forth.

As with all of our newsgroups, a newsreader is required for posting, but you may easily browse the group's entire current and historical content through our web-based interface:

Browse the grc.wizmo newsgroup



Wizmo Update & Enhancement History

2002/01/02  —  Added "hibernate" command.
2002/01/12  —  Added "autoblank=" command.
2002/01/25  —  Added "elastic" and "stop" screen borders.
2002/01/26  —  Added "line" and "grid" initial Graviton particle arrangements.
2002/01/27  —  Added "sun" and "blackhole" screen-centered gravity fields.
2002/01/27  —  Allowed default values for "trails", "sun" and "blackhole".
2002/03/24  —  Added the "play=" verb for playing wave files.
2002/07/27
  • Added "open", "close", "open=" and "close=" commands.
  • Re-engineered unblanking detection to increase reliability.
  • Added unblanking on mouse buttons and mouse wheel.
  • Fixed "Monoff" to prevent lapsing into standby or hibernation.
  • 2008/03/04  —  Added "wanlock" & "wanopen" verbs for WiFi.
    2008/06/25  —  Added “lock” & “blindlock” commands.


    Jump to top of page
    Gibson Research Corporation is owned and operated by Steve Gibson.  The contents
    of this page are Copyright (c) 2014 Gibson Research Corporation. SpinRite, ShieldsUP,
    NanoProbe, and any other indicated trademarks are registered trademarks of Gibson
    Research Corporation, Laguna Hills, CA, USA. GRC's web and customer privacy policy.
    Jump to top of page

    Last Edit: May 04, 2013 at 18:21 (354.35 days ago)Viewed 149 times per day