<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" ><channel><title>Do Know Evil - A Blog by Tyler Mulligan &#187; Images</title> <atom:link href="http://www.doknowevil.net/category/computers/software/images/feed/" rel="self" type="application/rss+xml" /><link>http://www.doknowevil.net</link> <description>Tips and Tricks About Computers, Web Development, Linux, the Internet and the Like</description> <lastBuildDate>Sat, 16 Jul 2011 01:25:35 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.5</generator> <item><title>Generating CSS Based on Images, also SEO-Friendly</title><link>http://www.doknowevil.net/2011/02/20/generating-css-based-on-images-also-seo-friendly/</link> <comments>http://www.doknowevil.net/2011/02/20/generating-css-based-on-images-also-seo-friendly/#comments</comments> <pubDate>Sun, 20 Feb 2011 17:19:05 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Bash]]></category> <category><![CDATA[Computers]]></category> <category><![CDATA[HTML]]></category> <category><![CDATA[Images]]></category> <category><![CDATA[Programming]]></category> <category><![CDATA[Python]]></category> <category><![CDATA[Software]]></category> <category><![CDATA[Web Development]]></category> <category><![CDATA[css]]></category> <category><![CDATA[generation]]></category> <category><![CDATA[tricks]]></category><guid isPermaLink="false">http://www.doknowevil.net/?p=977</guid> <description><![CDATA[I&#8217;ve typed out a lot of CSS that&#8217;s focused on using a background image to replace text. I&#8217;ve been using a cross-browser CSS trick that&#8217;s SEO-friendly, I&#8217;m not sure if it&#8217;s documented anywhere. I came upon the solution myself when I was searching for a clever way to do this years ago and it&#8217;s become]]></description> <content:encoded><![CDATA[<p>I&#8217;ve typed out a lot of CSS that&#8217;s focused on using a background image to replace text.  I&#8217;ve been using a cross-browser CSS trick that&#8217;s SEO-friendly, I&#8217;m not sure if it&#8217;s documented anywhere.  I came upon the solution myself when I was searching for a clever way to do this years ago and it&#8217;s become the standard method for me.  However, I dislike the tedious task of typing out the CSS and referencing the image pixels and at work, I don&#8217;t want my developers wasting that time either.</p><p>I figured it&#8217;d be best to come up with a simple solution, so I started coding something out in bash and it worked:</p><pre class="brush:bash">#!/bin/bash
# css.sh - generate common css and html
# Tyler Mulligan (z@interwebninja.com)
# Last Update: 02/16/2011
# MIT License

create_block_image() {
    feh -lr ${1:-.} | awk &#039;{ print $3&quot; &quot;$4&quot; &quot;$8 }&#039; | sed &#039;1d&#039; | while read l; do N=$((N+1));
        cbi_css $l
    done
    feh -lr ${1:-.} | awk &#039;{ print $3&quot; &quot;$4&quot; &quot;$8 }&#039; | sed &#039;1d&#039; | while read l; do N=$((N+1));
        cbi_html_a $l
    done
    feh -lr ${1:-.} | awk &#039;{ print $3&quot; &quot;$4&quot; &quot;$8 }&#039; | sed &#039;1d&#039; | while read l; do N=$((N+1));
        cbi_html_div $l
    done
}
cbi_css() {
    f=${3##*/}
    echo &quot;#${f%.*} {
    display: block;
    background: url(&#039;$3&#039;) no-repeat 0 0;
    width: 0;
    height: $2px;
    padding-left: $1px;
    overflow: hidden;
}&quot;
}
cbi_html_a() {
    f=${3##*/}
    echo &quot;&lt;a href=\&quot;#\&quot; id=\&quot;${f%.*}\&quot; alt=\&quot;$f\&quot; title=\&quot;$f\&quot;&gt;${f%.*}&lt;/a&gt;&quot;
}
cbi_html_div() {
    f=${3##*/}
    echo &quot;
&lt;div id=\&quot;${f%.*}\&quot;&gt;&lt;/div&gt;

&quot;
}

s=$1; shift; case $s in
  --image-block|--cbi|-i) create_block_image $@;;
  *) help help;;
esac</pre><p>Which ouputs something like:</p><pre class="brush:bash">
z@zygon:~/scripts/css$ ./css.sh -i img/
#dumbtubes-fav {
    display: block;
    background: url(&#039;img/dumbtubes-fav.png&#039;) no-repeat 0 0;
    width: 0;
    height: 14px;
    padding-left: 16px;
    overflow: hidden;
}
#submit_new {
    display: block;
    background: url(&#039;img/submit_new.png&#039;) no-repeat 0 0;
    width: 0;
    height: 106px;
    padding-left: 244px;
    overflow: hidden;
}
#dumbtubes-logo {
    display: block;
    background: url(&#039;img/dumbtubes-logo.png&#039;) no-repeat 0 0;
    width: 0;
    height: 70px;
    padding-left: 274px;
    overflow: hidden;
}
&lt;a href=&quot;#&quot; id=&quot;dumbtubes-fav&quot; alt=&quot;dumbtubes-fav.png&quot; title=&quot;dumbtubes-fav.png&quot;&gt;dumbtubes-fav&lt;/a&gt;
&lt;a href=&quot;#&quot; id=&quot;submit_new&quot; alt=&quot;submit_new.png&quot; title=&quot;submit_new.png&quot;&gt;submit_new&lt;/a&gt;
&lt;a href=&quot;#&quot; id=&quot;dumbtubes-logo&quot; alt=&quot;dumbtubes-logo.png&quot; title=&quot;dumbtubes-logo.png&quot;&gt;dumbtubes-logo&lt;/a&gt;
&lt;div id=&quot;dumbtubes-fav&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;submit_new&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;dumbtubes-logo&quot;&gt;&lt;/div&gt;
</pre><p>To explain the way this CSS works, it uses the padding-left as the actual width, setting the width 0 and then pushes whatever content you have out of view using overflow:hidden to hit it from view.  This makes it easy for search engines, keeping your HTML clean and CSS simple.</p><p>The bash script relies of &#8220;feh&#8221; a lightweight image viewer for linux that outputs a list of images and their dimensions.  It also generates some sample HTML to quickly drop in and modify.</p><p>This is not an elegant solution and I&#8217;m not happy with the fact that it relies on feh.  I&#8217;ve been slowly getting into python and I was amazed at how fast I was able to recreate this script in Python.</p><pre class="brush:python">#!/usr/bin/python
# css.py - generate common css and html
# Tyler Mulligan (z@interwebninja.com)
# Last Update: 02/17/2011
# MIT License
from PIL import Image
import sys
import os.path

CSS_FORMAT = &quot;&quot;&quot;#%s {\n\
    display: block;\n\
    background: url(&#039;%s&#039;) no-repeat 0 0;\n\
    height: %spx;\n\
    width: 0;\n\
    padding: %spx;\n\
    overflow: hidden;\n\
}\n&quot;&quot;&quot;

HTML_A_FORMAT = &quot;&quot;&quot;&lt;a href=&quot;#&quot; id=&quot;%s&quot; alt=&quot;%s&quot; title=&quot;%s&quot;&gt;%s&lt;/a&gt;\n&quot;&quot;&quot;
HTML_DIV_FORMAT = &quot;&quot;&quot;
&lt;div id=&quot;%s&quot;&gt;%s&lt;/div&gt;

\n&quot;&quot;&quot;

css=&quot;&quot;
html_a=&quot;&quot;
html_div=&quot;&quot;
for tf in os.listdir(sys.argv[1]):
    f = os.path.join(sys.argv[1],tf)
    if os.path.isfile(f) == True :
        img = Image.open(f)
        fid = os.path.splitext(tf)[0]
        (width, height) = img.size[0:2]
        css += CSS_FORMAT % (fid,f,height,width)
        html_a += HTML_A_FORMAT % (fid,f,fid,fid)
        html_div += HTML_DIV_FORMAT % (fid,fid)

print css
print html_a
print html_div </pre><p>This is just the basic idea, I didn&#8217;t spend more than 15 minutes on this rewrite, it does what I need it to do so far.  It was suggested by friends if I make it any bigger, to look into a templating engine, such as mako.  I hope this script can be useful to someone :). PS, HTML_DIV_FORMAT should be on one line, not sure why my syntax highlighter is trying to put it on 3.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2011/02/20/generating-css-based-on-images-also-seo-friendly/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Taking Screenshots the Easy Way</title><link>http://www.doknowevil.net/2007/12/19/taking-screenshots-the-easy-way/</link> <comments>http://www.doknowevil.net/2007/12/19/taking-screenshots-the-easy-way/#comments</comments> <pubDate>Thu, 20 Dec 2007 00:13:02 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Freeware]]></category> <category><![CDATA[Images]]></category> <category><![CDATA[Windows]]></category><guid isPermaLink="false">http://www.doknowevil.net/2007/12/19/taking-screenshots-the-easy-way/</guid> <description><![CDATA[I&#8217;ve mentioned this software before but I feel compelled to show you all why this software has made my list of software I install on a fresh format. This software is MWSnap, a program for taking and manipulating screenshots. When you first open the program, you&#8217;re greeted with this: On the left, you have your]]></description> <content:encoded><![CDATA[<p>I&#8217;ve mentioned this software before but I feel compelled to show you all why this software has made my list of software I install on a fresh format.  This software is <a href="http://www.mirekw.com/winfreeware/mwsnap.html" target="_blank" title="MWSnap - Free Screenshot Software">MWSnap</a>, a program for taking and manipulating screenshots.  When you first open the program, you&#8217;re greeted with this:</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/12/mwsnap.png' alt='MWSnap - Take Screenshots Easily' /></p><p>On the left, you have your main options for screenshots and on your right, you have a preview.  Each of the screenshots have hotkeys that you can learn by click &#8216;Capture&#8217; on the menu bar.  All of the options are pretty self-explanatory except the &#8216;Window/menu&#8217; option, which you&#8217;ll learn to love fast.</p><p>When you select this option, the screen freezes and you have a dotted box that selects whatever menu or window you&#8217;re cursor is hovering on.</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/12/mwsnap-window.png' alt='MWSnap - Window or Menu' /></p><p>This assures for a clean cut every time, quickly and easily.</p><p>And if you&#8217;re feeling fancy, you can garnish it by adding a cursor from the &#8216;edit&#8217; menu:</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/12/mwsnap-add_cursor.png' alt='MWSnap - Add Cursor' /></p><p>MWSnap has some interesting tools that come in handy at random times:</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/12/mwsnap-tools.png' alt='MWSnap - Tools' /></p><p>I&#8217;d say the ruler is the one I use most often.</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/12/mwsnap-ruler.png' alt='MWSnap - Ruler' /></p><p>It&#8217;s floats above all other windows and lets you measures them by pixels.  Don&#8217;t worry, it goes vertically as well.</p><p>And while I chose to use <a href="http://iconico.com/colorpic/" title="ColorPic - Color Picking Software" target="_blank">ColorPic</a> for my color picking software.  MWSnap&#8217;s color picker isn&#8217;t half bad.</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/12/mwsnap-color_picker.png' alt='MWSnap - Color Picker' /></p><p>There are only two downsides that I&#8217;ve found to this application.  First being the lack of ability to crop&#8230; that to me is odd but I just open it up in <a href="http://www.irfanview.com" target="_blank">IrfanView</a> and take care of it that way.  The other issue is multiple monitors.  Unfortunately, MWSnap only recognizes the primary monitor.  I don&#8217;t really have a work around for this, I just deal with it and drag windows I need to take screenshots of over to my primary monitor.</p><p><a href="http://www.mirekw.com/winfreeware/mwsnap.html" target="_blank">This software</a> has saved me tons of time, I hope you enjoy it as much as I do!</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2007/12/19/taking-screenshots-the-easy-way/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Rename Master: Batch Renaming Utility</title><link>http://www.doknowevil.net/2007/06/28/rename-master-batch-renaming-utility/</link> <comments>http://www.doknowevil.net/2007/06/28/rename-master-batch-renaming-utility/#comments</comments> <pubDate>Thu, 28 Jun 2007 15:57:09 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Freeware]]></category> <category><![CDATA[Images]]></category> <category><![CDATA[Windows]]></category><guid isPermaLink="false">http://www.doknowevil.net/2007/06/28/rename-master-batch-renaming-utility/</guid> <description><![CDATA[I&#8217;ve tried many different batch renamers for all sorts of reasons. More often than not, it&#8217;s for sorting images. The other day I came across a directory of images that I had (stupidly) prefixed and I needed to change that back. With a few simple clicks using Rename Master I was able to restore them]]></description> <content:encoded><![CDATA[<p>I&#8217;ve tried many different batch renamers for all sorts of reasons.  More often than not, it&#8217;s for sorting images.  The other day I came across a directory of images that I had (stupidly) prefixed and I needed to change that back.  With a few simple clicks using <a href="http://www.joejoesoft.com/vcms/108/">Rename Master</a> I was able to restore them quickly and easily.</p><p>Rename master has a very simple but intuitive gui with powerful options behind it.  With some obvious wants and needs of a renamer such as a live preview of the rename and variables&#8230; Rename Master takes it a step further with their support for full regular expressions and thumbnail views.</p><p>Check this out:</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/rename-master-1.jpg' alt='rename-master-1.jpg' /></p><p>Breaking down the screenshot above, we can see that I&#8217;ve chosen to do two things (as denoted by the underlined tabs), I&#8217;m using the &#8220;Add To&#8221; and the &#8220;Replace&#8221; options to formulate the name &#8220;Lemonade Stand ##.jpg&#8221; and remove those ugly S########.JPG names.</p><p>Also, you&#8217;ll see I&#8217;ve brought up the thumbnail preview that I mentioned above.  This is not necessary in this process as I&#8217;ve already moved all the &#8220;Lemon Stand&#8221; to their appropriate folder but I just wanted to let you see how it could come in handy.</p><p>The ?n02? code wasn&#8217;t something I knew by heart when I first starting using this program, these variables can be generated by the program if you click the blue arrow button next to the text field.</p><p>There is so much for me to mention about this program&#8230; but I don&#8217;t want to waste your time, do yourself a favor and <a href="http://www.joejoesoft.com/vcms/108/">download it</a>.  It&#8217;s a single file, coded in delphi so it doesn&#8217;t need to be installed.</p><p>This program all works with mp3 id3 tags.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2007/06/28/rename-master-batch-renaming-utility/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Batch Converting Your Images</title><link>http://www.doknowevil.net/2007/06/11/batch-converting-your-images/</link> <comments>http://www.doknowevil.net/2007/06/11/batch-converting-your-images/#comments</comments> <pubDate>Mon, 11 Jun 2007 15:31:30 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Freeware]]></category> <category><![CDATA[Images]]></category> <category><![CDATA[Windows]]></category><guid isPermaLink="false">http://www.doknowevil.net/2007/06/11/batch-converting-your-images/</guid> <description><![CDATA[While I love Adobe Photoshop and the amount of power it has behind it&#8217;s actions, sometimes I like to use a lightweight alternative. IrfanView is a program I&#8217;ve mentioned before, it&#8217;s great for flipping through series of images but it&#8217;s also great at doing many other things (some of which I&#8217;ll mention in future posts),]]></description> <content:encoded><![CDATA[<p>While I love Adobe Photoshop and the amount of power it has behind it&#8217;s <a href="http://www.photoshopsupport.com/tools/actions.html#Photoshop-Actions-INTRO">actions</a>, sometimes I like to use a lightweight alternative.</p><p><a href="http://www.irfanview.com">IrfanView</a> is a program I&#8217;ve mentioned before, it&#8217;s great for flipping through series of images but it&#8217;s also great at doing many other things (some of which I&#8217;ll mention in future posts), like batch converting.  In the following example, I&#8217;ll do a quick run through on a real life example, creating image thumbnails.</p><p>So, lets start off by opening a folder with pictures you&#8217;d like to thumbnail:</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/thumb_step-1.png' alt='Pictures I’d like to thumbnail' /></p><p>Open a picture with IrfanView and select &#8216;Batch Conversion/Rename&#8217; from the file menu (B is the shortcut key)</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/thumb_step-3.png' alt='Select Batch Conversion/Rename' /></p><p>Click the &#8216;Add All&#8217; button (or optionally pick and choose the images you&#8217;d like to convert).  And set your basic options.  I made my output folder /thumbs, selected &#8216;Batch conversion &#8211; Rename result files&#8217;, made the output format GIF and set my rename mask to $N.t (which means [old image name].t).</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/thumb_step-4.png' alt='Click Add All' /></p><p>Check the &#8216;Use advanced options&#8217; box and click the &#8216;Set advanced options&#8217; button.</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/thumb_step-5.png' alt='Advanced options' /></p><p>I set my thumbnail size to 50% height and width but you can choose whatever you please.  I also checked &#8216;preserve aspect ratio&#8217; and &#8216;use resample function&#8217; but those are optional.</p><p>Click &#8216;OK&#8217; and you&#8217;ll be taken back to the previous window, click &#8216;start&#8217; and bam, you&#8217;re done.</p><p>You can now navigate to your newly create thumbs folder</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/thumb_step-7.png' alt='New thumbs' /></p><p>And marvel in the glory</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/06/s4010111t.gif' alt='Hey, it’s me!' /></p><p>This was a pretty simple example but I&#8217;m sure when you went to the advanced options window, the gears in your head starting turning.  This program is a great tool, you should really play around with it and try to get the most out of it.  I don&#8217;t think a day goes by that I don&#8217;t use it.</p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2007/06/11/batch-converting-your-images/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>Organizing Your Precious Internet Memories</title><link>http://www.doknowevil.net/2007/05/27/organizing-your-precious-internet-memories/</link> <comments>http://www.doknowevil.net/2007/05/27/organizing-your-precious-internet-memories/#comments</comments> <pubDate>Sun, 27 May 2007 18:24:44 +0000</pubDate> <dc:creator>Tyler Mulligan</dc:creator> <category><![CDATA[Firefox]]></category> <category><![CDATA[Freeware]]></category> <category><![CDATA[Images]]></category> <category><![CDATA[Linux]]></category> <category><![CDATA[OSX]]></category><guid isPermaLink="false">http://www.doknowevil.net/2007/05/27/organizing-your-precious-internet-memories/</guid> <description><![CDATA[Back when I first became a part of these internets, I&#8217;d get a lol or two via a link to a picture or a website. With the exception of a few of these pictures (thanks digg) most of these pictures have become distant memories of my past. After a while it occurred to me, why]]></description> <content:encoded><![CDATA[<p>Back when I first became a part of these internets, I&#8217;d get a lol or two via a link to a picture or a website.  With the exception of a few of these pictures (thanks digg) most of these pictures have become distant memories of my past.  After a while it occurred to me, why aren&#8217;t I saving these pictures?</p><p>However obsessive, I made it my job, nay, my duty to summon the strength to save and sort ever picture that strikes the slightest bit of interest.  This, as you could imagine was a tedious task.  Right click, navigate to proper folder, rename image (if needed) and save.  My commitment was strong but apparently no match for this mundane method.  Slowly, I would stop navigating to sub-folders and just drop them all in a folder I like to call &#8220;Internet Garbage&#8221;.  Currently in the root of this folder, there resides over 3,000 unsorted images.</p><p><b>DON&#8217;T WAIT TO SORT YOUR FILES!</b> This is the best advice I can give to anyone.  Sure it&#8217;s easy to save everything to your desktop but chances are, you&#8217;ll mix it up, lose it, delete or whatever.  If you put in the extra 20 seconds navigating/creating a relevant folder, you&#8217;ll save yourself a boatload of suffering.</p><p>Getting back on track though&#8230; I came across a Firefox extension a while back called <a href="https://addons.mozilla.org/en-US/firefox/addon/614">Save Image in Folder</a>.  This extension saves you so much time and trouble, that you&#8217;d actually be wasting resources by saving files the old fashion way.</p><p>Go Install that extension and come back for a tutorial if you too, would like to start saving some &#8216;Internet Garbage&#8217;.</p><p>After Installing the extension, right click an image (it can be any image, we&#8217;re just using this to set things up quickly).  You can use this image if you&#8217;d like:</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/05/omg_spoon_cat.jpg' alt='omg_spoon_cat.jpg' /></p><p>Select &#8220;Save Image in Folder&#8230; >> Edit folders&#8230;&#8221;</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/05/step-1.png' alt='step-1.png' /></p><p>Select &#8220;New&#8221;, click the folder button next to the &#8220;Path&#8221; textbox and create a new folder called &#8220;Internet Garbage&#8221;.  Create all your sub folders inside of that folder.</p><p>For this example, I used:</p><p>- Art<br /> - Funny<br /> - Gross<br /> - Macro<br /> - Nerdy<br /> - Sexy<br /> - Wallpaper</p><p>You can add more whenever you please.</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/05/step-3.png' alt='step-2.png' /></p><p><b>Note:</b> You can prefix or suffice the filenames however you&#8217;d like.  It&#8217;s not a bad idea to prefix the files with a short date&#8230; but it&#8217;s all up to you.</p><p>Once you have all your folders created, it&#8217;s a good idea to sort them alphabetically by using the up and down arrows located on the side of the Options dialog.</p><p><img src='http://www.doknowevil.net/wp-content/uploads/2007/05/step-2.png' alt='step-3.png' /></p><p>Now it&#8217;s as simple as right clicking an image and picking a folder it&#8217;s most relevant to save to.<br /> <img src='http://www.doknowevil.net/wp-content/uploads/2007/05/step-4.png' alt='step-4.png' /></p> ]]></content:encoded> <wfw:commentRss>http://www.doknowevil.net/2007/05/27/organizing-your-precious-internet-memories/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Object Caching 571/595 objects using disk

Served from: www.doknowevil.net @ 2012-02-04 03:42:13 -->
