<?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>Travis Miller &#187; XHTML &amp; CSS</title>
	<atom:link href="http://www.electrumdigital.com/category/xhtml-css/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.electrumdigital.com</link>
	<description>Web Developer for Hire</description>
	<lastBuildDate>Mon, 28 Mar 2011 20:03:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Fun with hot dogs!</title>
		<link>http://www.electrumdigital.com/2010/03/fun-with-hot-dogs/</link>
		<comments>http://www.electrumdigital.com/2010/03/fun-with-hot-dogs/#comments</comments>
		<pubDate>Fri, 12 Mar 2010 20:42:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XHTML & CSS]]></category>
		<category><![CDATA[bleeding edge]]></category>
		<category><![CDATA[client-side technologies]]></category>
		<category><![CDATA[data: URIs]]></category>
		<category><![CDATA[hot dogs]]></category>
		<category><![CDATA[page load optimization]]></category>

		<guid isPermaLink="false">http://www.electrumdigital.com/?p=336</guid>
		<description><![CDATA[Check this out: If you're using any modern browser (that rules out IE6 and IE7), you should see a picture of a hot dog above. But no such image file exists on my server&#8212;or on any other server. You're looking at a PNG image, but there's no PNG file anywhere. How is that possible? Right-click [...]]]></description>
			<content:encoded><![CDATA[<p>Check this out:</p>
<p><img src="data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%88%00%00%00%40%08%02%00%00%00Nc%A8%DC%00%00%00%19tEXtSoftware%00Adobe%20ImageReadyq%C9e%3C%00%001%2BIDATx%DA%EC%7Di%AF%25%D7u%5D%9D%A1%C6%3B%BF%B9%E7%26%9B%14e%8A%A2%24%CA%B2%2C%0B%1E%05'A%128v%80%20%01%F2)%DF%F2%93%F29%082%20%08%02%07%01%0C%0FQ%24%DB%8AlYV%2C%8A%F3%D4d%8Fo%BE%EFN5%9D%AASYk%D7%A3%A6H%B0(%C9%B6l%EB%A9Iv%BF%BE%EF%DE%AA%3D%AC%BD%D6%DE%FB%94T%D7u%C1O%BF~L_0%A5%FA1%BD%95%FD%A95%BF%87m%DB%D67e%E7%5C%80%B0uU%E7%7D%9Bo%DA%C6%A9%A0%D3%260%D1%B8%D3*PZ%9B%A8S%F8%8F%EET%60%C2DY%83%3F%04%C6%F4%EF%D1u%1E%FF%C1%97%F8J%FD%D41%1F%C8%09%5D%D0%D4%5D%D3%04%DE%FBj%05%EB7%EB%8B%B6%D8%B8%E5%85%2BV%AD%2B%E8%98%B6%EE%94n%E1%24%98%B8%F3V%07*%D9%F5%BE%09%BA%06F%D7a%8C%B7Q%C6*%13j%1B%F9%B6%F6%AA3F%2B%9B%FA%96%BE%D1%A1%8D%C6%B3%E1%B5%A7%CDp%02O%FE%E0%D7%A6%FE%BE%40%19%9C%D06%BE%CE%7D%5D%C2%F4%CDf%D1%5E%1CU%AB%85%5B%9FtM%AD%03%DF%05%CE%B7%9Dw9%CC%8C_%DAX%98%B5k%9D2%AA%F3%8DIg%9E%5E%F2AU%B6a%02%13%2Be%E09%D5i%A6%87%89%DA%B6%C5%7Ft%14%87%26p%C5%3A%3F%3F5If%B3%B1%89%92(%0CU%E0%EDp%3A%B8%F2%E1%F4%E0%89p0%FA%7B%E4%98o%03%F7%CE%17%B9%9B%1F6%CB%23%18%AAu%81%AF%D6n%B3i%F3ES%5D%B4%95%0B%DA%12Y%10t%CE%D7%95%17%20R%B0%AD6%DA%1A%84%BA16%D0%A1IF%C8%00%15%8D%E0%13%E7J%DF%D4%CA%24%D5%EA%C4-%96M%D3%BA%F5%06%1F%12%D8D%C1W*t%9B%A5RVE%C67%0D%DC%A0%2C%BE%B3Pa%D2%95%1B%3B%1A%0D%AE%DE%C6%7B%03%10%7D%B5%0C%1A%97n%DF%DA%7F%FEW%D2%2B%B7%FE%1E8%86e%C0%B9%D5y%B3%99%D7g%87%CD%EA%AC%BE8q%9B%13e%10%EF%9D%2B%9Do%E0%06%AF4%5E%8A%7F%C3%F8%81%8A%ACIRT%0E8C%C7Cc%E3%C0%0E%B4E%A1%18%893j%D4%8F%FC%ECa%B9%9A%03%9D%AA%F3%F3V%05n%9D%FB%AA%F4-%FC%15%C2WM%8Bw%09%EB%CD%DA%24%83%B6.%9A%D2%99%24%B2p%ADG%5D%C1%E7z%1D%C7%00%3E%13%DBp8%EA%DAR%5B%8D%EF%E8(R%9DK%C7%3B%D7%7F%E1%9F'%DBW%FE%EE9%A6%03%F8%B4%9B%85%9B%9F%D4%A7%F7%8B%F9i%BD%5E7%F9%99R%0D%FC%D0%B1n%B44%BA%09%B4R%DEw%BEmU%9C%20%13%F8%CDP%9Bx%10%26%83%C0f%3A%CA%60%BBx8%D3(%E6%BE%AB%8A%8BruQ-N%AA%F5%AA9%3Bi%8Dm%1B%D5%94U%A0-%FE%DDV%B5%8ES%3B%18%19%1B%B6%AE%A9r%80%98j%AA%AA%F1%B4%5E%B9%3E%B3Q6%98%ED%23F%F0)Q%9AtU%0D%D7%D9d%80%D7%E3JT%96%99%D1%B0mW%81%C2%85%E9l%B4u%FB%97%FF%95%19%8E%D5%DF%16%C7%FC%FFt%13%85%01%BF%9A%7C%85Th%16%F3%06%88%B4%3Am6%17M%B9%F4-%2Bp%E3%1D%89%8F%E7KQ%C3%03%83%D4h%94%8D%95V%06Aj%B3%C0Z%ADZ%13F%80%23%1D%CD%60h%94j%BC%10%25%BFZ%3FV%3A%05%DD%CA%CFN%EB%CD%DCm%F2%40%EB%B6h%DA%BA%C6%1B%B9%AA%C5G%20Gl%94%988%CB%CF%0F5%F0%8D%19G%DE%D5%81%84%D9%B0X.%AA%CD%19R64i%9Cdp%82%B5%24g%9Dk%82%D6%07%3ASall%032%60%92X%0Dc%B5%3B%0E%12%5C%8F%BF%F6%D1_%DEz%E6%E3%3F%D9%19%83%0BPtG%D78%A0%04K%02H%D1r%DE%00%D3%91%16%9B9%8B%01*v%BDB%ED%F5%AE%C6k%11t%E0%3F4%13%F0%23%85%B1%22M%B4%07%BEG%C0%25%04*%EC%08g%E0%05%C8%0C%A5%0D%5D%EB%8A%A6ruQ%B8j%C3H%2F%8B%16iW%BBr%B1%A9Q%81J%17%18%8Blr%20%02%26B%F47H%BF%CA%81'%DB(%02i%40%DEEi%8C%1F%2CW9%3E%03%D9%D8%94%A5a92Q%A8%60%C4%96%5E%04s%03o%B6UQ%23H%CC%C0n%3Fi%5C%D1%1D%BF%B2%C47m%18%E1%7F%F1d%7B%F4%D1g%5DR%D9t%F4%D4%AF%FC%8B0%1D%FC%E4%D1e%A0%0C%A8L%91%17G%EF%D6%F3%23%D8%A8%5E%9E%A2D%83%EA%A0*%B4%AD%D3%ED%1AQ%19%B45%CA%03%C2%9Fu%C2%AA0%22%3D%0Dt%17%85%13e-%9Cda%980%D5%D10%1A%EE*%AA%0C%AD%ED%B0k%AA%16%89P%D7%D5%C9Q%B1%3C%07%D6%D5%F9%06%09%D1%BAJG)%B0M%A3T%D4%C8%94%CAw%AA%ED%92%CEF%88%D1%86T7%F5%C0%A3%BCjk%E4%1FjT%D1%16%88%EF%26%D4%91_o%22U%EF%5EMF%07%B0%BE%EB%9C.%17%C1%C5%BDj%7D%0C%9F%B8%D0%22%BBH%CCP%87%EC%D4%5Ey~%3A%BB%5D%A7%C3C%04M%ED%92%93%D7j%D3%10%027%F8Z%AFw%3E%FE%7Cc%EB%CD%D9%C9%F4%FA%E0o(c%BE%99%0D%88%F6%12*a%09%0ES%9D%1D%96%17%F0%C1%B2)k%24%04h%93%0E%9A%CE%13%3D%A0*P%84%B5jT%14%23p%E1!%96M%40C%9C!%2C%81M%FC%A3N4%CA5%5C%00!%E8%3D%00%05%7F%D1%EA%2CJ%86M%5D%97%05%EA%CD%B2%98%9FT%F3%B3j%5D6U%8D%2CD%FCud%B4%9E%BE%84%09%CB%B6%EDPD%92N%C1%2F%81o%F0%AF%A0%CEs%DD6%60%C1p%83j%1B~%AAkt%87%0B%88%90%06%AD%F3%E3%9B%E9%95OT%F1%F0%C8w%2B%D0ha%D5%91%AF%B2%8B%FB%C3%D37%C2%D5%BD%B2.s%A4Ov%DB%DC%F9%A5a%9C%1E%220F%3B%9F%DB%9C%7F%F9%E8M%FB%DA%EF%02%CBZ%D6%3F%60%5D%18M%F7o%5E%F9%C5%17%EC%D4%DC%FC%F4o%DAl%F0%D7%911%9D%F0U%EA5%E7%DA%CD%BA%3C%3B%AC6%B9%5B%1C%D5%ABs%FC%82%80%F0%0E%BA%ACD0%92%BF%40%05%04%AD%89%AC%1A%0E%8C%02%3E%03%82v%94B%CD%40%9CEt%A8%B2%DA%D2%0D%26%1EK%19%81%80%40%3D%81%E6%AB%C0%9D%EAb%D9%B4%08%F3%BC.%F2%AA%F2%AE(%AB%F5%DA%15E%B3%5EA%D8%89%B0%08%E9%B3%0EQ%DC%06%0Ee%B95%8D%D7%0D%85b%07%CAk%EAP4%23%2BS%D3%26%AA%B3p%1E2%AD%AC%19H(C%0D%F0%CCS%60%9Av%EF%E3%E9%B5%17.%7C%FB%C0U%B16Sd%95%D6%19%F0%AB%E9.%C6%B7%CEgOL%96%0FF%87%2F%0F%BA(%B8%F5%E9%D6%DA%BB%8D%1Bf%D3OmV%87%8B%D3%B9%D3%7B%3A%D3%F5%A6A%C4A%12u%3E%5C%9E%1DM%EF%9F%C6%BAY%DE%7Bq%EB%C3%9F%F9%2BtL%5B%16%F5r%99%9F%1Do%1E%BE%5D%2FQ%15%5Cyq%D2%949%E4%82%06C%85P%40%12%04%00%FD%08%60%13f%B1M%13%84a%07%DC%09Q%17R%93%8E!%9Eu2%B3a%82%1A%EE%1B%FC%947%14%D5%88%E0%D0%03%B9%95%C57%8B%8B%23%94%97%B6%DA%C01%AE%04%3A-%DB%B2)%CF%CE%3D%AD%AB!%BA%11%A4a%3A%AB%3C%E3%22%CA%A6(N%CD%A60M%17%A3%7C%90U%B7%B8%98x%00(%AB%03%13%13M%91a%ABM%07~%DC%05U%01%94K%A2%B1%8A%B6%91%9F%080Pc%ED%B5%8F%87%C1%F4V%90%CC%EE%E2C%8D%DDF%D1%22%17%83%CB%82%1C%F5L%EB%3D%854%2F%E7%C9%EE%C9%93%BF%16%E1%3A%03%8F%BB%1E%CE%AE%FF%86s%D5%F2%DD%FFUm%3A%20dmKrC%D0t%80C%E3*%15%14%CBb%60o%96%F3%C7%1D%82%8C%F8%FCC%3B%E6%3B%09%13%40%A6%C97%D5%E2%7C%F1%DE%9B%D5%C5Y9%07SZ%BA%7C%1D%D4U%00%26%13%C1%DC%81%85K(%7B%F1o%A4%C2%00%F5%120%14(%D0%F9%24%1B%EF%E2%B6%3B%B0W%80%12*%06%AA%07%7Cf%E16p*%5B.%CEP%AD%89%F5%20%02%C5%DA%81%92UH%8B%0A!o%D3A%BD%5C%20%0E%5CY7y%11%40%11%26%03%0A%F5(%0C%12%E5%96%85%B6%FE%DA%CFd%D3%BD2I%EB%B6%CA%9B%22%05%F3%3A%7BuS.K%7C%20%8A%C6j%BD%C9%17%2B%FC%1E%A5%0B%F6m%D9%19%0Btb%A7O%26%07%CFw%A3%FDV%87%AB%20%D8%08%08%E3%1F%87%BA%0ER%E2%EB%14%5EQj%B0D%F6%17%9B%A6%08%DA%96%CA%D4%266L%87%B8l%A5R%F6%CCp%8Fj%94%0C%9F%2C%F3%FB%CB%A3%AF%3B%04P%938%87%FA%E2M%9C%B4%1D%CCS%D3%E6FUU%15F%3B6%C9%80%AE%3FZ%C60%E9%7D5%3F_%3Dzw%F9%E8A~z%5E-%CE%DCz%E1%11%12ue%23%1B%C6%9E%94%7D%0C%F0%B1%D1%205%A6%05%20%85C%08%B7%01%FE%0B%2C%02x%EBp%60%A2%2C0%09.%C8%B3%DB%01%0A%1B%03%FAa!%D0%AD%B6%2C%91%E9%D5%E2%B4%B88%A9%96%17%F5%FA%02%0E%40%11%16%D0C%AA%A4%0D%AAT%E3%02%F0.c%F1%FAh8%06%F7%AD%CB%D2%E7%8B%A0j%11%8D%B7%3F%91%EC%DC%9C%07%FAA%E0V%5D%EDA%CC%A2%91%DE%99f%A3%EB%B3%E3o%0C%1E%7F%3D%F75%8A%0B%81%0DI%01%04k%1Bk%B3n%EF%A3%D9%FEsU%3A%3B%EF%DA%A2%EB%A2.%80%F8%D8G%EC%E1%CA%11F%90%84Hc%DD%F9%D5%E2%DD%B2x%E8%CA2_%84%AB%F3%14%E2%D2%1A%3F%18%15%E9%E8%22%CC%820%84V%0D%A3d%BB%F5%DD%FA%E2%DD%B6y%AB%5C%CF%5D%1D6mzq%DA%AC%D7%DD4%86%87%F1%3F%80%20%0C%D6%9E%DD%BB%3B%7Dk%3B%3E%F8T%F0%7D%1Ah%7F%B9c%40%26%DA%7Cs%F6%E6%1B%F3%BBo%E4'%0F%19%CEU%09%25%80%F2%00v%AAS%E8%E5%10%9C5%04%89%0Fc%9Bea%14%D9d%CC4'A%0A%03%93%01Y%2C2%06%C6%0D%91.%13%8A%00%0F%F4%D0%0D%B2%60%7DZ%AF%96%F0%01%A0%0F5%C3m%AA%26_%03%D8AeA%CD%A8%CC%83P'%09%09%0A*%7B%5E%E3-%B3%E1%88%12%C1%18%0B%D9w~%AA%CA%26%89%C3t%2B%DE%7D%AE%1C%1C%BC%E8%CAScw%C2%EC%E3%C6%0C%10%F3%BE%B9p%C5C%15%BEw%ED%E7'%E3%DB%E3%C3%97%95%BB%80%FD%B6%153u3%BA%1ALo%9F%C4%93%FB%C8Z%85J%60A%1F*%7C%0C%14%23%F03LF%D1%60%D7%C6%3BAu%B8%B9x%A3%5C%9F%BA%06%97l%CE%8E%D2%D7%DF4%8BM%10%87%C1%DEV%BA3kG%936%19%D4aZT%D1%23%8A*h%CF%06%B7%60%CA%22%CA%CB%F4%FE%3Bk%E5%23PDP%0E%C5%D6%5BgL%8DX%CC%CF%17BL%3E%20%2B%83u6%A7%E7%E7o%BDv%F4%F2%D7%8B%B3%A3j9G%3D%0E%15%5E%0C%1C%0F%A3%81%B5I%18%8DF%D10U%A0I(!af%40%60%20%B0%10%60%A8%D8%D1%08%C2%AE%23%01%0D5%FB%7D%B9%09%13%97%9FW%AB%15%10%AF%5C%9E%81%E7%2C%1F%DE%AFVKWCBB%40%B3%0A%80%C6%82U%86q%12S%9C%1B%E5%DB%10%C2%10%15%DB%B5n%BD%C6%ED%86%F04%C8i%09%BA%85%1A%D0%85C%3F%D8%EF%A6O%FBd%07%F1~%84HOg%9F%B4%F1Uh%94js%D4%B8%0DxD%14O%82v%DET%C7%81Z%B6%CD%1C%90oL%EC%3D*%5Ce%01%B3%E1%96%B1%D7u%BC_%ACO%97'%DF%00%9Fue%C0V2%22%DB4Q%A65%5B%90%01C%BDAI%D2%9B%C5%F0K_6%C7%E7%D9(M%D6%EBE%D3U%DB3%7D%E3%C0nM%BB4k%C2%A4%09C%A2%A0k%C2%C6%25%9B%22z%EB%0D%B7%9E%FB%89A%5Ex%D8F%93K%02%E7%93%F1%EC%20%1Df%3F%F7o%FF%CD%F6%CF%BC%F0%012fstv%FF%CF%BEt%FC%FA7%AA%E5%B9%85%D1%9Bz%98%A1%1C%A8h%9C%C4%19%9C1%B41%F0%24%0D%92%AD%88%FD%1F%E8%02%05*%AA%C9h%A3%96%22%11%25%B7%AA%9B%A2%A9%3Db%1F%FF%2C%1F%DD%03%7C%AC%8F%1E%BA%0Dhe%89l%00q%EA%82%905%DFxh%F2%A0%B1%10%98%00%87Q%94%404teea%1AX%A3%BA%F0%AEB%00%02!%C1%E8.%16'*%D2%E9%BE%DEz%DAOo4%E9vebd%18%E2n%AA%93%17%D2%ADO%07z%BC%3C%FC%C2f%FEz%95%AF%20B%95%22%B2F%83%ED%E1%D6G%C2%D0%AA%EA%24%1C%0FZ%B7%822%0A%93k%10%A5*%08%AB%FC%D1%FA%C1%97%8B%D5q%B9%D2e%9E%15%EB%B0%2CA%A2%83(r%E9%B0%82%AD5.%05%F9%5D%22%EA%D3%B7%DF1%A7%C7j%7F%DC%05%CD%85E%CE%EBd~%D6%5E%5C%D4%DB%3B%EA%FAA%04oA%D4%22%1A%40%17O%E7%ED%FD%FBy%95%ABI%0C%D2%D7%B2G%04K(%D5%B2%1F%60%96%EB%E5%EE%B3%1F%1A%DF%B8%FD%FDfk%DF%ED%98%F2bu%EF%AB_%7D%FC%E2%9F%94%A7%8FmP%0FF6N%0D%C3%3FV%CA%A2%D6%A1%06%92%D9%EAx%60%D2%A9%B1%13%85%8FkJ%C5%FED%B4%3E%7DP%ACVZ9H%F7%BA%AC%AA%D5%85%8DF%B0%EA%E2%F8%04Y%85%A4%10%9Dh%7D%87t%8B%C3app'%9Cn%CD%E38%87%8E(%97%E1%F2%AE%5E%BEg%BA%0B%D0%A4%0BT~x%0F%A5%07%B4%15z%9B%5E%EC%BAt%96%1D%FC%9C%D9y%AA%CCv7T%11%5D%A6%A2%2B6%BA%A2%EDV%A0%87Uq4%7F%F0G%E5%FAq%5D%CD%5D%E9%ABUXW%90%08%3EJ%5D%9C%3FDBDQ%82%8BL%A7O!KH%E8%CB%BC.%0F%EB%F5Q%B99r%85%AB%F2t3%1F%1C%1E%DB%87G%DD%F9%B2%01L%5D%3D%08%B7%C7a%9246j%C0%A5%5B%9F%3C~%DC%BE%F2%8AC%16%A9%AA%40%C5EY%89L%9B%84%E1%A6%D4G%8F%DC%D9Y%3D%1A%E8(f%E6%AF%D6%10%0B%3AVA%16%83wk%C4%15%3B%7C%C0G%40%8EQ5%23%A2%DB~%FA%23%E1p%AB%FB%3EcO%FB%ED%D8u%FF%CF%BE%FA%CE%1F%FFA9%7F%14Gj%BAe%C0%9E(%E9%12%D4%0Ci%01%B27U%B0M%07%CE%17%9C%BB%FC%D4%0C%9E%40%25%AF%F3U%B1%5C%20L%DCr1%7Fp7%99%5D_%3E%3C%8C%B2a%BE%A8%93A%11gY%5B%E3r%83%F1tV-%D6%BE('%07%E9%EC%D6rz%7D%19F%9CD)%5E%C3%3A%DE)%C7%BB%83%8B%FD%C1%E1%8B~y%BFDbQ%C6%C0%93%E4q6%BB%A2v%9F1%5BwV%C9%08A0%D2%D1s(%D1%1D%A1%1C%DC%F0%A8%CE_%AE%8B%F3%A6%5E%B7u%03%2B%B4%CEV%EB%F8%F88%3C9%D5%C6%F8%C98%9AN%DB4s6%5E%85q%B79%3BV%9A%25%8At%06%3F%EF%B4s%B6)%C7%EBE%F2%DA%1B%C1%9B%EF%D6%C01%0B%EA%D24%F3%85%BF%BA%AFgc%1B%85%B6i%D4%C9Y%F5%DE%7B.%03%8B%CF%02%0D%D6%11Z%0E%D1%20%81%95%CF%90%F9J%E7%95%3F%D9%B0%8E%00%07%81%CBY%D4%A51%87%0A%AE%09h3~%22%5E%CC%C6%AA%EF%F2l%B0%BF%F7%EC%B3B%AAXM%80%CE(%C0Jz%E0%DFQc%40%24%BF%F6_%FF%CB%F17%BE%94%0D%0Cg%0D!%042j%3B%0A%07Q%9D%97%06%D0G%C9pk%98%A3%DE%14M%0EN%15%DB%DDgT%18%D5%9B%1C%95%03%08%A6%BA%B8%98%1Fe%C3%CDx%2BH%C7%A3%F5%91%5B%BF%977%8B%86%C1R%E4%06DaW%ED%3E%A7FW%0E%B5-%A3%C1GL%FC%24%D0%06%01A%A6%60%A3%F2%E2k%AEx%15*rs%3C%3EyE%17%E7%E0%C2*%DD%AD%B7%9Fi%B3%D99.%C0F7m%F6t~%FEv%B19%AE6%E7%A4%AD%15%60%12%F4%047%AB%DA%16B%D2B.%D4.9%3B%F5%2F%BD%A5%EAv%08%ABE%B6%DA%1AW%07%3Bv%3C%EE%E2%10%E1%DFJW%B1%93%A6%10%8A_%D44%F1%F9E%F7%D2%AB%D5%D9Y7%89U%0Ci%85%EA%D8%A9%D2u%9B%D2%95%60q%C0%20V45%CE%EC(%81%16%20%BB%C7%8F%07%D4%C9%20%FD%01%B0%D8Q%8Dj%D6J%80%95g%83%5B%03%A4%C1%5D%3A%0DR%0E_%90%14%00W%B4%1EO%06%93%E9%E0%C3%9F%F9%CC3%BF%F8%C9r%B9L'%3B%9B%C3wV%E7%87%B3%DB%9F%DC%FF%E4%AF%A9%F7I%9A%F2%8C%D9%E0%B5%DF%FF%FC%DB_%F8%9F%93%ABS%DB%95%5D%9D%DB0%EAj%FC%A6%88G%99%0E%3D%EA%BC%89b%A9%24%BE)%7D%10%0E%EB%BC%5C%3C84q%1Af%C3%A0%F6%9B%A3Sh%C5%FDg%CD%F4%EAa6%D8%80w%E2%F2%B4%1D%B7U%B69%CB6%C7%0D%04%E2pw%13%CF%D6%26t%D6%5E%8D%86%1Fi%5Cwq%F4%17%E5%EA1%A2%0243%9B%5E%1Fn%3F%07%82P%AF%5E%F2%D5%7B%BE%2B%5D%D5%E2%AF%8C%AD%C1%8F%A2%EC%F9(%BD%95%AF%1E%AF%CF_%D9%9C%1F%96k%E3%AA%A8.%C3%B2Pu%1D%3A%0E%5C%60%3C%24%90%87%DA9%3Dk%CF%E7%C1h%B0%B5%3D%CA%10vy%DD%3E%3Ef%96%0CG~61%5B%13%F6%19%20%1E%10%CC%88%E5%D5%AA%B9%FF%B8y%F0%C8%E9Fm%8D%A3%18aM%DCD%25%00_%D6E%D5%3A%D4%B9%96S%E4%08%A5%CFj2%01d%25%82%B4%EFr%C8%7F%40%B3%88%BB%D0)%CC%25b%0F%BE%8F%DC%E1hY%E9%D1(%99M%D2A%A6'%B3%D1%EC%60k4%B4%D90%C6%F5x%15U%05X%0D%02%C5%82%9B%87%D9%F6%FE%F3%BF%BA%FD%D1%9F%FFV%C6%1C%BE%FA%EA%2B%BF%FD%9F%5C%B1%8A%C7%91%0Ep%89%15%99v%0D%ECr%D9t%18%0F%23H%E8j%83%9A%AD%AB%0D%F4%A3%E3%C2%01q%80%FD*%A4%B0%AF%BB%E1~%B8%FF%7C%99N%EF%E3gpA%20mQ%9CU%C5)h%04%C3%1EqB%85%8A%D7N%92%C9'%1Dx%F1%C9K%F9%C5)%E8q%B1%8E9O%CA%9A8%DB%24%A3dr%E5%D3%E9%F8%B6%05%D9%AAO%DB%EA1%F8%8B%B2%C30%DEo%5D9%7F%F8%87%9B%F9%3B%A0%B2%EB%F9%F8b%1E%9D%5D%A8%F9B%AD6AQ%B4%8C2%807%DB%3C%16%E556!%90%3D%D3.b%11n%806e%AB6%A5%2FjP9X%C0%C7q%60-%03%B8%AE%FDj%83%7CP%83H%B3%1Da!%8A%09%F7(%D5%FD%BAE%0D%B7%04%7Cc%98%9C%ED%FC%EEr%C9%82%FE%E8%98%1Dpo%C0%1F%81%8F9%04%82G%F0b%94%E18%0E%B3%2C%BDvm%B2%B5%3D%DC%D9%CDF%D3A%D0%14%06*%D8%800H1%F0%9CM4%B5*s%A0%9C%ACv%A4%A3%C1%FE%9D%9B%BF%F6%5B%F1x%C6%1A%03G%BF%F5%85%DF3Q%95%8ES%3B%18%18Dz%9B%B7%D2FB%40%D5%A06%E7my%0Ei%06%96%19%8D%C2%01%3Ey3%3FG%40EI%5C%C3*a%B3%FD%B4%B9%FA%02%E0%BB5%F1G%CA%D5%89s%F7%20%80%D3%F1%8D%F1%F8c%BEY%E2%97%D2%A9%C6E%A57%5D%BDZ%9F%BF%B4%3Cy%23_7%9By%F6%E0%5Ex%7C%CA%AA%3E%9BEW%F6%C3%D9vYn%FEw%92%24%D1%F8%CAp%F63ar%03%D4%09r%E0%E2%F0%2B%9B%F9%9B(c%F5%3A%5D%2F%D2%BB%EF%DA%87%C7f%BD%0EF%C3%D9l%B4%9D%04%AC%EA%B0W%BEY%82%C7%9B%AE%B5%81%EF%5C%19%07%06%B7%E6%11%8FA%10%B3-%D2%24%A9r%40%FCV%17%05%F8%A2%80%8EVCp%E7%14%F5B%2C%DEu%A0%EET%FC%88fOt%60W%82i%60%D90mZ%11%834%A2T%EB%96%FDq8%84~j%93%2C%89%E38%CD%92%ADi%B6%B53%D8%DEJ%86%83(%1B%E8%0E%3F%C1%9F%C2%8B%E9%3C%FC%D3%D1%83%C8%AF%00%D9%ED%CA%C6%D5%9A%9D'8%B8Z%A9%F0pu%EF%DD%F89%3AF-%1E%BE%F7%E2%7F%FF%F7%3AA%AE%94%90%CA%B1%AE%BAr%A3c%8B%B8%CF%1F%17%D51o%02%B5%A5%AD%2B%C4%9E5%1D%89H%D3%95%AB%0D%12p%EB%89%E8%F6%2F%14%C9%E8%22%1E%DE%89'%BF%90%9F%DF%3D%BD%F7G%9D%AF%0C%14F%92d%5B%CF%24%83%1B%26%DEfG3%3F%AA%D6%F7%8A%E5%C3z%3D%DF%2C%D3%F3%A3%F4%E5%D7%5B%95%3C%7D%EB%CEG%90%14o%BD%F4%A7%AB%F5%FD'n%A8%5B7%FD%60%5C%84(%D4%A6%0DqET%F8%08z%94F%D4%F3%E4%E2%22y%F1Uuzj%AElMS%03%AD%B7%06%C2%24%E0L%8DcG%DA%D5d%B5bA%F6%3A%C1%858H%A1%BD%01%2F%88%7D%E9%7Dq%D5%08a%8E%3F%C2R%AC%13%FC%11%FE%86%EB%15%C4C%C4%BC%7C%1F%1A%87e%1CP%EF%F9%26%9E%C6%14%E8%0A%FA2%80%A2%82%EFl%EF%CD%AE%DD%BEv%E3%F6%5E%D4%AD'%DB6%1BO%94%2F%BB%BE%97QW%A8A%EC%F2i%8BW%E3%1B%C0%97%AE%03%D1p(%8D(%3Cx'%A4%2Cdt%0B%05%005%1EE%F1t6%BA%F1%E1g%FE%D9%BF%C6%7DY%14%ED%D1%B5%2B%E0%1D%D5%A2%ACWeI%FA%DF%D6'%ED%FA%E1iP5%B8%A4%3A%CF%BB%B6Bn%EF%7F8%BA%F6Q%15%C6%AE%5C%81%8Ed%C9%B0M%B6%CFp%3F%D9%F83*%DC%3B%BB%FF%87%CB%C3W%F3%A5m%1BHL%17C%06%17_3%FAEd%3A%01%B7%A9%3B%C7%E8%A8%D6%E9%E1%E3%E4%E5W%DBkw%3E%FB%E9%CF%FD%D3fu%B6%3E%7C%D0%1D%EC%3E8V%F7%1E-%17%EB%D5%ED%EB%C3%F1%B8%89%E22%8CZX%CC%83%A7%3A%05%E2%BBX%84_%7F%A9%5C%AF%B3'%AF%ED%B8%8BCh%E8%98X%046%DEv%B89%A3dq%A2%25%BC%90%DC%90%FB8%16%5D%C4g%07%F2%12%F0%AD(d%05%97P%94%C4%FA%9A%06a%87%A6%07C-%10%05%A3%E3m8%BD%A4%3B%BC%D4%12xZ%B1%E1%8Cw%E0%1C'%8A%C3%D1dv%E7%A3O%BC%F0%F3ON%C6%B1%81B(2%DD%95AW5%8E%3D%26z%93%CDd%A7%A0a%0A%F6%16%1B%E0O%10rb%87%2Bv%F0%B1%E6%0B%5B%B6_%EB%AE%C1%D5%C5%A0%06%25%24%F8%89%DB%E4%D1p%60%E3%C1D%051%90%A5Y%2C%E0%89%D5%85%03%CF%A9NWA%1D%D4U%EE%8A%9C%D8%1A%98%EB%3Fk%9F%F8%F4Y%C7%7D%AA6%9D%86%D2-0Q%FAd%3A%FD%94%AB%16g%F7%FE%603%7F%BC%9E%0F%1F%3F%8C%D7%B9%DF%DD2%93-%17'%40%7F%07%2B%C14l%E4%D5QS'%F3s%FB%DA%9B~%EF%E0%F9%A7%9Fx%F2%CD%DF%FB%8FGw_G%00%22%BDfI%9A%9A%C9%DB%0F%D7%F3%8B%E6%C65%BB%BB3Kc%5E%AE%10%CA%F0%F1%89%7F%E5%F5%AA%DCt%5B%A8%5Cg%0F%2C%0A%5B%17%F4%B7%1F%D0%00%40%08%BE2%D0%B2s%C41%7FoQ%A9%CFZ%3B%A2%3FyX'%3B%60%A2%1C%3A%2BZ%8F%AE%C2%C7x%D8%AD%93B%25%15%E4%FD%DA%CD%B6%23%FE%91%94!%82%05j%3C%1B%3F%FB%A1%2B%CF%BE%F0%C4%EE%C1V%8A%A2%D4.%853%D7%8AU7%E4%3E%8Dfi%E3%A4%87%CD%EE%C0%F27%DC%03%00%95%25%B4%12%FF%D8%7C%C0%7F%A9%B2%03%D3v%0EY%D5iS%3B%AF%8A%DATU%B5%5E%D11%09%81z%FF%F4%8Dw%AA%25%5Da%C1W%D6%DCS%BBX%9E%20s%0C%D7%AB%94%1Av%B3%3B%10%2Bk%E8%E8(%9D%85%83%E78%D9%0DT4x%FA%E2%F1%FF%5D%1F%FFy%B9%01u%C8%DE%7D'%7C%ED%1D%DCI%F8%F8%C8%3Fq%0Bh%0B%939%F2%3ENG%A2%3C7g%E7%ED%FD%87ng%7C%2Bs%8B%97%3F%FF%DF%D8%E2%E02%8B%AF%2F%16mw%0E%157K%EC%3A7%AF%BF%DA%3C%1C%FB%BD%5D%1B%86%F8%C1n%B1p%0F%1FU%C6%07%B3%814%EB%01%D4%B4%248*1%88%F3EN!9%98%A6%7C%E3%CC%23%E8%2Bv%3F%2F%00i%E5%E0%81%0B%60%B0I%80%17k%CD%BE(%92%D8%B7%7D%0F%99%92%B0%87%AC%96%DC%85%8B.N%40%D0%40%26%24v%3A%1Bo%ED%8D'%B3%C1%EE%CE%60k%D4%EE%DF%DC%D1%60%AD%C1%26%A8A%95%91%5D%9A%0B%7F%0C~%CEdioH%A1%C6C%95%B3y%B4Z%02%97%AA%3C%07%82%A1%BCy%5E%00Y6%7C%D4%093%F3%5C%9Ab%9ABT%99%A6s5%12%A3f%F1%C7u%0Fw%F7%1E%FC%D9%CAUx%5B%B0eS%AF%F3%F9%E9i%ED%EAP%2Ba%C8%90%80z%B3%F0%CEr%D7%B0%CE%E7%9B%F9%9F%E0%CD%3DGO_D%F5%A9rU%E4%A3G%0F%BB%FB%C7%93%CF%7C%EE7%EB%93%F7N%0F%1F%BF%F9%E6%BD%24%CB'%E3%146)%2B%7F%3Ao%D7%E7%10%F0%01%CAs%D1%DC%EB%2C%1B%E50%82%92m%1Fv%DE%15%F7%17a%BC%B1%F1%89R%C5%AA%7Dg%E1%05%AB%C9%D2%07%A1N-%A9%A0%97y%80%2C%9E%B2%89OY%EC%DA%3Em%98%5D%10%86%E0%5D%CA%D2%3D%9Co%12%B1hvG%18%A3%0BXE%BC%A0%2B7%8D8%C8%84%19%D9of%DF%D9%86f0%1E%1D%EC!Y%F1%F6%C1%FE%B5%BD%83%FD%C1%D6L%0F%A0%A0%C0%94U%83%94A%AD%15%E9%84%14%89H%18%14%3F%BB%ADV%BC%8DV%D1%26%F8%24%17%B4%15%AE%C2V%E7s%00%9F7%05%CA%01%90%AC%91O%E7%AF%96%95L%FA%99%92%F3%A8%FC%10%EF%3A!E%81%C0%AD%CAK%E5%1Ff%A3(%8Ck%9F%3B%1F%FAM%B9%5E%AD%E0%B6%167%EA%09%19%802x%FD%FE%DB%EA%E0jj%82J%E9%96%FB%89%08A%40p%0B%3E%9A%3A%97%9E%9E%05o%DE%AD%0Fv%B6%83%8B%7Bnq%A4%ABy%A6%A2%D3%C7%E5%E3%7B%85%D0J%CD%B9%09%D4J%DC%85%BA%8BL%C4BM%F0%E1%E4%0A%1E%E9%CB*%BF%D3%F1jc%C3%82%1C%13%89%20%D6%10N%B2%15L%15%DCJ%FAsMO%96%C4%88-%9E3%5B%BC%D2%B2B%A0Vsp%C9%BD%8EN%06%97r%F3%2C%FE%AC%E4%5C4%EBX%96%20M8%9BD8%F84MF%D3%14tng%7B%FC%E4S(%E3%DBI%EC%11Lq(iF%94%C3G9%E0%95%C7%0F%D1%7C%C8b%24-%22%03%F1%84%90wA%07e%17%E1%16%DA%CD%9A%8C%02%A4%23%2F%CAUY%E7%C7lYB%AB%826%D5%1D%07%0EB%B2%9Dk%24A%2Ck%2F%92%17%17%CD%09%09B%94Q%85%A81Qr%E9%18%A0%7C%0D%13s%CE%0BX!%A3%EB%F3%18%3A%05%02%AB%81Mt%F8%C6%CBMYf%BB%7BC%10%1C%E9%CD%F4%B33SV%E6%E4%B4~%EF%3D%1F%06%83%CD%F1%DD%D7%1F%BD)0J5%3F%B4%5D%CC%AC%C5G%A9%10r%1A%88%D21'%82%A6f%B2w%B2%0B%10PE%D2n%90%EE%8C%1E%E2%BC%ECa%F7%E5B%A8P%ED%83%C4Pz%13%FE%B9%96%C29%26%AB%3C%97R%5B%CE%85%89%20%AC%15%1D%DF%8D%FF%E2%1CTR)%20TB%BE%F7%D6%80%C9g%5B%5B%BB%D3%C1p%92l%EF%8C%F0%D2%9B%D7!5%B28%D1%E9%20fc%AE%5E%C3%A9%14%F1q%DC%A9(h%0B%08w%9A%8F%1E%22Ec%F6%81h%E1%E3%1Bn%EAx%AE%D7%C2%3D9%FB%0Eu%85%D8rE%CB%FEm%C9%15%9C%AA%83%264V%EB%B2%26%E7h%D9l%A5%B7%F9%E3%8A%8B%3DA%FF%1B%EEE%18%7C%0A%2F7L%B3%E9%F4%D21%26II%AB%C1m%1A%C0%0BXC%0D%FC%C6'%CB%88Js_%04Fr%E1%2B%2F%15%83%11n%00%BC%CE%08%88we%D9%2C%E6%E5f%D9fa%90%25%B2l%40B%24%5D.%1A%0D%B5%0D(H87M%C39-%B2%5E%B2%83%10%20%0E%A0Tf%CF%037%AE%DB%3E%B9%60%05%A4N%884%89%9C%ECe%E3%D3%5BvlM%10Gl%BDx%89%3De%1C%F8h%D7%B30%A9%1EL%2F%82%12%3F%02%1Fnm%98%EAd%90%E1%AF%D3Q%3C%99%8E%AF%5C%DD%19M%D2%AD%DDA%16k*%7F%25%AD%5E%B9%14%A9t%25%DB%2C.%E7%3E%86!%B5%60%B0%DB%0C%C2P%EA%0E%97%C5Z%0Ex%F0!%AEeG%CA0%D6%B9f%0B%83%FB%B6b63%3Cj%06%01n%B7%E9%8C%E3%18%969%C5%F1%0C%23%DC%083!%123%2C9%E6%20%A9%B0b%06%DCA%18'%D9%CE%5E%3C%1C%BE%0Fe%1Cp%029%F0%9B%C1p6%2C%40J%97%05%10%B9%17%B3%08%07%EDm%24%3C(%3Fk%16'%12%96%BC%3E%82%09%AA%DE8%81%ECa%7Dha%F7%86TJ%7C%D2%D1%A3%90%F5%C0%3E%BC%98%01B%93qD%C0%5DaF%3A%9B%1F%842%AA%08%D0%92V%BD%EF%80%88%CD%02%DEv%BF%C7%8D%7B%14%1CCxz%E1L2N%0D%FA%3A%E1%F9*NO%D2A8L%E3l4%18%8E%D2%E9%F6h%F7%EAl8LQ3%A2%C10B%BEj%07%16%A9%3B%AE%0F%FA6%0F%D8%A3s%92%9D!M'%83l%AE2%A3%8Csc%90%8CJ!%E2U%D2)%8A%DC%B6*%89%96%9D%2CS%80%E7Vl%8B%04%88f%B0c%D6q%C0%26~H%92%82%92S%86%D2-%15%3AMU%B3%C2%E1%9B%3D%02*%16%83%40%FA8%86%E5%8E%E1i%88l%DC%0F%B2%5Bw%9E%91%F9%BA8%06.%1A%1F%5C%5D%3F%7C'%DC%DD%A3%24%08%B3F%AD%F8q%5D%7F%EF%1D%C4%1B%8C%86%9FNm%97t%82%D5Z0%DE%E8%3E%5E-%C3U%C6%0D%C29%05L%88g%12k4%9C%12%96%D3w%8B%1B%F6%03-%FB%82(%D6%80l%CD%D8%04%5E4%A8%9C%97%A7I%C0N%14%89%BF%EA%8FJp%C0%E1%BD!%E9%A5r%E3'%86%E4K%10%B1%F1%D6%CEp4%19%25i2%D9%1ELwF%40%A4%08%D5%2Cf_%17o.%DB%E2%11%C0%12u%B9%A3%CE%80%7D%2Bv%93%82%8A%14%02%97%A8jJB!%DB%BE%93%06%222%1Be%08%18%C5%0D%99e%C0%ED%85%84%B5%A3*%3Cc%07%E2%09X%E1%9A%12!(%01%E39Bc%2B%8A%92%96%B7%CCp%11W%40%FC%B1%D8w%BD%F5%C9W%80%B7%AC%A4%14Nl%09%40Gjn%86F%8A%EB%EC%E1h%EF%E0%DAG%3F%F6%1Dm%FF%2B%1F%FE%D8%E3%AF%7C%11%E9l%C3%AC%AE%0A%F2m%0A.%E1q%88jn%85%C8%5D%B0%FA%19%D2T%D2v2L%EE%07%B3%AB%CA%82)%C8%A4%25%7B%1BA%7F2%3A%BE%09%0F%FC%E0%E7B%C3s%24%86%94%11%EF%C7%0E%AE%E6J%17%E7%E0%B5%17%D1!%7C%05%DF%E0%92%04%A5%07%AB%08%3Bm%60E%D90U%1C%AED%D3%E9%60%7B%7F2%DB%99N%B6%C7%83Q%0A%B0%E2b%24C%04%D7SizZ%CB%3D%7B%96%06%A8%16_%B2D%FB%9A%BF%E0%92%A6%22Ly%A9%17H%A0%3A%07%84%04d%99p%B9%A48%19%5DH%FEP%E4%24X%8D%AC2A%1BB%D1or%26-%95'%97%CE%A8DQ%F3%A1%E6-%E7%02%B5Pe%DF%F3%60%A2*%CD%D1J%D6%23%22%1B%B9%1D%18L6%B0x%FC%89(%A2%B8p%2B%24%80%0B%B7%D7%7F%F63%F1p%F0%1D%8E%D9%7B%FE%85%9Dg%3E%B1%B8%F7j%04%D9.%5D%F8%A2!%7D%D6%24%A8N%A4Y%20%A5%D9HK%95-iY%DCfE1%DC%F8R%92%A6%2CXtC%18%014%C1%97%88%86J%B8)%BB%80%91%E3)!a%FB%9C%19%89gy%D1%04L%81FvD%F0%96%A3%E9t%3A%1A%26)w%3A%F6ol%8F%A6%93t8%8C%8C7%AAL%B3%04%BE%81%97%D8%3C%E4%F0%8E%A7Qh%E6%80%92%08n%E8x%5E%A8%EA%F77%3Ao%82f%D3%AF%BA!%AC%95%AC5%A1%86%82%03%F0%C0%18%8D%87%0F%16%9E)%FA%14%85%04%9E%F4A%CE%B2W%03%A3%2C%D0%AE%AD%E4%C0%06%E3%3El%91%2C%8E%E5%1A%F6w%D0M%81.%AB%0A%3F%19%92%8BhfR%D7%AB%22%2F%A7%C9%90%40dn%C04%10q%19%60%06%82%06%F0%0DP%91%91%87o%0A%C9%8A%10%B2%B3%DBO%5D%F9%D8%C7%BF%7BP%06%8Cy%E6%1F%FF%D6%D7%FE%DD%2B%26Xl%DDx%AA%7Bx%B7%3C%3D%A2%F1iq%2FH%2F%84G%F3%A4%01%F7%F4%98O%12%05%5D%17%25%9C%0Cz%B1%B1c%1B%84%D4%89P%EE%FB%2B%94%CA%82%14)%8BN%E2%8B%F0HRK%24eI%B1%E1p2%1DmM%07%A3d%7Bw2%DD%9B%ED_%99%06nc%BA%3C%C9%82d8%8E%D3!%E2%98%CD%95%60%5Bu%15%A1%0D%B6%13%99(%60%C4%A8%05%9D%F2%DC%E8d%C9%E2%90D%D1%F1%9E%D8!%20%E6k%D6%24%7C*%0782%A9r%B5t%ABX%F7%D9.%EAc%07o%D7r%9B%10o%E0%AB%A6-KQR%92N%E4%26%F0%89%25%BB%F3%F0%13%05i%23m%1B%88PaGJ%3A%0E%BA_%3B%95%F7%D2%FD%B0%0B7H%DB%E0z%C9l%98%1C%81%14%7D%1B%C6%80rh%D5%10%16%D8%DE%7D%EAW%FF!%9B%A9%DF%E5%18%FC%FC%F8%C6%AD%AB%2F%FC%D2%E3%AF%FC%5E2%DA%1A%ED%5E%07%B3%5Bn%16eU%B6J%84%19e%A6eH%03%1Fd%06%84%9Bp%92D%C8%2C%5C%AA%F0'%E9l%B0%13%24*%B8%EFdHhH%F9gQ%C2mL%B6%C6%D3%AD%C9lw2%9E%A2RG%E3Y6%DDJ%E3%24l%AA2%C9%18%3B%AEZ%B4e%85%F0L%06c%1B%A5%9C%8Fx%F6-p%13%08p-%C5JQ%3FoT%E0%C8%FC%D8%E1%60wK%14%9Fn%EA%8A%F7%CEv%99%0D%B8%CC%D7rq%08%D8(%18%C0%EA%05I%AC%FA%D3zN%FC%04%90%EBo%85%8D%06_%D5l%8DE%11%176%3C%E9A%BF%91%D9%08%11jX6L%CFW%25%16%AD%23i%E0%E0%B2%EB%BB%3E%DE%F4%F9%22%24%95%87%CD%1A%C2%00%D1%1Cj%0C%BFgI%C5%C5%85q%18%C76%8A%F1%9A%C1d%F2%D4%AF%FF%93%D9%AD%1B%DFc%B4%DC%0F%9D%EF%FC%C6%BFl%F3%8B%C5%9B%7F%11f%FB%B5%8A%406%87%D9%90b%B3!)%07%BD%87%A7%15%D8%8B6%FD6%05%23%0F%40%D7%BA%BE5%D8%90%A2%B0%40%1B%F6%14%015%C4PX%7C4%8A%F7%AEn%ED%1C%ECA%C8%8EF%E9l%0FI%90%B5%AE%E0%DAM4%60%81%A9a%E2%3A%B4%B4Y%D7%C5Q%94%AAh%88%CF%24%F0%FB%B6%3F%BA%D8%F9%BC%F3%85%E2%A7%E4Z6%CCE%05%15%A2*%A5%B3%02%94h%2B%8En%91(%15%25%90%D4_%E9%E32f(l%C0%C5%EAM%05U%DC1%AE%14_%40%B5%D3R%98%F1%3DxG%A2%A6pc%3D%FER%ABs%EDR1%C7%88%3Fl%A9%88%C3%BA%CBSSl%04%7B%19%8E%F1Pm%C3%BD%5C%1A%9F)-%89%03%0Dg%5B%09RH0%7C%2C%D8H%18E%9A%8EI%60%F6t%3C%BD%FE%C9_%B8%FA%B1%8F%FF%25%EBK%B8%91%A3%2F%FDn%F1%F8%EDE%B5%F7%F2%17%BFp%7CzD%F2%0E%DB%23%E1%CB%82t%85%BC%92%5B%AC%1D%9D%0F3%F5%8D9v%18%26%93l%3C%1B%CE%B6%40.%F6%B2%81%1ELP%09%5C%3ALG%03%13%C6%CC%F1%86%E8%E1%A5%BA%22%1E%1B%0E%E5LD%01%CF%3BF%EC%B7%26%1C%CBLU%93%8Cu%14%D5%B8%ED%BE%B0%F9%B6%94%99%14%E2%13%BA%AF%12%0D%DC%90h%F27%B8%9E%86%A0%84%9A%C0%9F%876B*x%E4A%C0%CD%A9%86%20D%CE%D86E%D3%94%7C%8D%DC%B7z%FF%E2%FBB%D7O%8A%EDe%B7L%C8%0A9%16%B9%89%92%DE%9A4%8C%91(%BD%C7%A8%13y%E1Dw%14%F0%26%E8Y%2C%AB%02%0B%15O2%234HF%24VxV!%60%2B%0A%12%92%E6%60%B9%0F%D3Qv%F5%13%9F%BD%F3%B9%7F%60%93%E8%07%DA%2B%93V%8E%9E%BFs%EFk%BF%FD%3F%5E%F9%EA%9F%1E%3Ez%90%975%F3%9E%0B%C2B%C8E%D2%C1Ri%16O%B7F%FBW%F7%F6%0F%D2k%D7F%A3i%8Cp%00%DBa%F3%07%60ad%FB%80Cr%25%84%92%7C%81%1B%AD%FDj'%60E%F3%EC).%96%19%C0%9Bs%86%93%15ru%99%0DB%DF%80%EC%16%00%D2%CE7%FD%0A8%5EF%A6Mb%1E%B1~!%0B%AA%8A%B0%C1%06%3FH%1F%DB%82%8C%DD%BC%F1%FD%9EM%A7%85%3F%A2%1Ex%BA%8D%15%85%7De%CF%F3%2Fr%2C%99%5D%0F%9AL%84%2F%DFY%84!m%13Gq%3F%3AP%A2%C3%7C%CF%B2%FA%C6%87%8C3%FA%99%8D%8DBn%C7%F1U%24%C1%BC%16%FE%88%12%02%8B%3FZ6%3F%40%86x%88)T%E4%8D%F8m%94%0E%B2%DB%BF%F8%EB7%3E%FB%8B%EA%87%3B%86Qo%CA%C3%B7%EE%BE%F9%FB%FFy%FE%EE%8Bl%14%DB%B4%DCT%EBu%897%9E%EDO%F7%F6%EDl%7F'I!%DD*B%B9C%85'Ah%5C%CD%06%17Ov!%FA%A8%81%FA%13.%94%8D%0D%07-%927%DCbAjSC6N%2B%1EI!%3E%D5%8E%CCEF%B6%C8%0F%D3U%1D%BB.%0D%17%1B%00B0%3D%F3U%96%F6%BD%BA%1Ca%11q%10%F6DR%1EsE%A5%C9kW%B7%D2W3%02F%9A%9D%24%E9uW%9C3%F1%D6%E1%12aG%FD%C5%F5'F%F8%AB%EFCw%241%A05%A6%AE%5C%9F%24%14%E9%9DD%26%B90%15%00%8B%1D%C9%AE%12%11%DF%B1A%20Z%88%5C%95%B9%CE%11%0E%5B%5E%DA%24%EC%C1%81%23%C05q%0C%016%19%DF%FC%A5%7Ft%F5%13%9F%F8a%0E.%F5%0BO%B6%BD%98%99%FBO%DF%EC%EA%83%A7%5Cm%AAZ%D8G%5E%84Qc%B9%89%DF%04%F9Y%9D%F7l_f%0F%14Q%01%D4%BBNB%82%97%E3Y%F7%96%2C%C8%C9%D0%90*%07%CA%B2!e%82%11%3B%CA%87%9A%5D%84P%0B9r%2C%09%3A%86%09%B4%B4%2FDcz%91%05%40%1A%AD%1C%E7%E5%97%8F7%60%2F%13%0E%E1%80%5CD%B6%0C%01(%C1%C0%0F%CB%16*%90%B0b%04%AC%B8S%11%C8%A8%AC%9Fk*%99%D0%C8%AA%00%D5rw%B9V%11%B4%9A%A6%15%EDm9%3Dc%14%99DpU%0B%06%8A4%0C%23%12K%AE%C2%84LC.%A0F%F2%DC%06%BA%89%FE%B1%3Co%CE%C8%13%02%0D%0D%E2%99%CCa%94!S%A2%E1l%FF%DAg%7Fu%EF%23%CF%7D%E0%A3~%92%C7%5D%7D%F2%5E%FE%E8%B5%E3%97%BFXl%9C%2BJ%C4%60%E7*%A2%AC%95%BE%91%CCo%E5%3C%91%84%8D%EFI%3C%9Bt%C6%CA%AD%F3%D4V%DD%EF-HL%02%A887aU0%EC%D9%05%FD%96%03!%40Qm%B1%FBJ%ED%C6e%2C-f%E7%E19%D3%CF%1C%09%DCb%03%F2%D0%A0%2F1%AD%90%16%C1%14%E9u%D0'%14%D8%FC%03%89%18)%0A%B1%C6%91x%C9t%99Fg%C9%EC%FA%82%40%80%BA%AC%E1%A2I%C9%3F%A5%A3%D5rs%9F%9B%00%E0%B3F%16(9%ECdn%A14%22%9A%82~%B6%C9%5Dw%5E%AE%9C%E8%A1%BA%0E-%F1%94%B4X%CB%00OI%DF%82%87%95%E0%E6%D0j%3B%1E%ED%3E%FD%B1%2B%9F%FA%EC%60w%E7%879%B5%8C0%3A%7F%F1%F3%C7%AF%FC%A1%5B%2F%9A%0A%A2%D6U%2B%1E%9E%AB%D9y%F6%B2-%02%B3C%B2%02%0B%BC4Z%60%9DF%F6%12X6%05%EF%FB%07vt%92%E6%A6%95%D6%1D%24%18%87.%D2%BF%93%5E%3Dq%89%9B%B0%B8s2%15%5DW%954Z%05%7F%F8V%AD%BE%0C%14f%8EX9%E8I%9At%2B%7B%ED%D4%C9A%8E%5E%DE%D2D%8D%E3%F8%C5%86%3C%F5%DAo%18%11%08%5B!%B1%97c1%3AV%DA%AD%BD%D0%A3%A8%D2%97%2B%16%97%E5%9B%A1%C1%5E%26%CFT%F6%0D%0Eyo%E2a%9F%0A%C2%CCC%DF%92%BF%C8%7CA%F3%40%8F%92%1E%15%3D%13Jx%87%96%FC%1F%8E%09%C3%24%1B%DF%7C%FA%DA%A7%3E%3B%BEy%E3%03%3C%80%A1%9F%C2%0AY%F1%E5%FC%F8%BD%FF%F3%3B%AB%BB_G%15%EC%20%B2(%96Q)%B9%07%DF%90%FC%F0d.n%06%26%E5y%60%C4%26%07%9DF%E0%80%26%D6%14%9ED5s%89%D8%97%BD%82%96u%83%3D%CDK%D1%DF%13L%E6%1CH%AA7%DC%2C6%B5%2B%25%81%A4fv%BD%1A%17%8D%A6%8C%F4%8C%2F%A3%E6%FD%03%CDJTd%2B%B3%02O%5B%B0%7B%24%25%076%A3%10%81%FFj)%D5%B2%F7%D2w%D9.%1F%F1%A2%83%5Ey%5D%AA%05-%DDwF%3Aw9%8C%E4%AC%04%10%C0J%F7%0B%A1%22%C3%D8%CA%84%96%024Q%B7%F7%BE%EC%FF%DA%CA%16%19%F4O%C2%DB!%FD%B2%26%B2MUG%D9x%F7%D9O%1C%7C%FCS%83%ABWE%80%FD%40%0F%96%F9%A6c%18%84%F3w_%7F%F8g%9F_%BC%FBvS%E4%C4Y%C7%BE%05%FE%B2%AA8%17e%CBD%F8%AEDO%C7H%10%14e~%C8N%15'%0C%D2%3B%C4_%D5eE5%20%B9L%D0%F2%FD%8F%90b%22~X%9C%5D%25%EEa%E5%10H%90%F4%A7%7D%2Fg%0A%81%BC%B7%8C8%3D%9B(%5E%EA%02%AB%85%17%A3%19%19%DE%10Q%E4.%BC%E8%06%82%5C%1F%EF%22B%D9%87%94n%8FD%5E%D7o%12QeHLt%D2%19%BA%84%3E%C9%87%1E%82%84%03hy%93%96%A5%81%CDZy%0D%AE%1F%22%1F%A9%1C%A7%A4%FF%DE9%F9%91%90S%04%9E%A7%A1%0B5%CF8%20%CFB%84F%0A%15%7D%E7%D9%C9%ED%0F%8D%AF%DFP%1F%F01%3F%97%8EAq~%F0%A7%9F%BF%FF%E5%CF%17%CB%8D%EF%BB%D2%08%B0%A6%A2'%C0%96%5C%E99%F5C%CA%3A%25%F0Ld%E5(%5D%BA%87lU%F5%E6%15z%2F%5C%A5%F7V%20%B1%CF1%BD%F8L%16%7B%E5a9%3C%82JDa%A2%09%23%90%FBV2%A8U%12%0D%FD%9F%FB%96%2C%F3M%B1%2B%E3%84e%F7E%AB%8FV%198%F9~%DC%A4%05%A0T%1F%95%81%D8%9CGdd%86%D6%A7H%1F%E6%82eJ%5D%3E%20%89jX%0A%0F%ED%DEWw%15%F4%C9!%3B%05R%F1%FAe%3F%1E%F7%91%F4L%C2%A8%3F%A3%2C%BDG%9E%AA%E6%11s%AE%C5%04%26%89%93%D9%5Evpkv%E7%B9%D1%F5%1B%3C%EA%F6%A3%3C%16k~%F7%9DG_%FF%AA%89F%3Al%D8%C4%AE%5D%DF%87%E0%2F%C7%AE%2B%C7%AA%DC%C1m%E5V%3B%19G%F2w%F8%5C%A1%F2%2C%E2B%B9%D8%BB%C3%E5%06l%DF%F2%18%9D%A0.%C3%94%8DB%E1%B2%A2%DEyJ%1F%3F%E1%B8%C8C%94%8FS%AE%04%E3%FB%82%3B%AA%EB%EB0-%D4w%05%03%99%CE%C8%13uhP%F1%16%F9%07%23U%A0%B1%A7%B0%920L%0C%A3C%8E%96el%03%8C%943%B5%FD%8E6%89%0B%0B%B8%B6%EAr%AC%A1%C8D%2C%F7%C2Ev%B2%F2%85B%3F%0C%0F%89%C8%1CMv%3AB%84%0C%AA8l%16%92%D7x0%15%93Xe%B9lj%93%2C%9E%5D%19%DD%F8%D0%E8%D6%D3%D9%C1%81P%B7%1F%C7%F3%CAfO%3C5%DA%BD%B9%3Cy%C0G%17T%1C)%B2%0D%1AH%FF%A9%23eb%03%CEX'%DDr%19%5D%90%AF%C0%D4M%DDZ%A2%97%EC%5D%F5%85A%1E%17%05%A6%20%FD%88%A0%97%26%7D%5C%93%E14%3D%001%AB%DE%DF%A0%83%01B6%24%8D%B4%25%25%E98%D1%A1%25%AD%2C%86%5D%D6%FF%5En%F4%C3g%F1%15%B7)T%AFx%84b%F5%80O%FDH%DD%12%D8(qU%D1%D3%60%19%7BR%B42%F2%A1'%84%5B%07%3D%3CQ%84XY%B01%00H%ADy%14%D4%C8F%B8%16%91%D8o%F9%F2%22%A9%85%C1M%08%00%3C%B1%C5%7FO%93%D9%D5t%FF%E6%F0%C6%ED%C1%C1u%1D%FD%D8N%81%7F%8B%95m%8EN%BE%F1%DB%FF%A1Z%CC%DB%A2%AE%CA%0D%14%22%B52%F9L-%ED%3B%B6%C2%904lX%C8~%0An%D2%B2%83J%F0%88d%E7%A1%E5CC%98%1E%7C%60N%A0%FA%84%A3c%2F%1F%A7%C65%BC%CB%FC%F2%92Id%92%8CR%A1%9B%CC%40%CE%3Fd%8DK%40_%0E%9Cw%97rEjv%D0O%82%2F%05%8C%BF%84%9A%CB%F5%97%FE%AFYs8%2C%C2%FB%F6%8C%08%24%8D%5D%88%FEx%0EaI%F7%2C%8F%EB%DF%FCX%A9UA%3F%BB%A47T_%5E%40%3B-%1F%3F%C2f%8A%FC%85%09%8D%90L%99%EE%0D%A6%83%83'%06%07%B7%86%B7%9F%89wvzJ%F8c%7C%BC%DFw%D3%E5%93%D7%5E%7B%FB%8B%BF%5B%9D%1F7u%5D%15%9C%E2%F5%DB6%E2%1E%D7p%CFG%94H%CBI%A5%E1%00D%D6%CBi%05M%09%D27(%C4%09%FDrWK*%26CA%D5%AB%84~%01%8FM%0Ba%0A%A6%AF%0A%A2%A9M%E7%A4%91-%9D%0DI%BE%AE%F7%11%DFPJ%3F%0F7H%89V%A2%0D%BDL%9D%A4Ap%C9%A7%FBUoi%B1k%99S%F3%18%0Bw%83%5C%FB~%E2%89%D1%2F%7B%EF%9D%D0%94P%9C%24%AD%06%EEM%F0p%8C%9CsS%3D3%EBT%DF%E0%D2%D1d%96n%ED%C6%A3%E9%E0%EA%D3%D9%8D%3B%E1h(p%F7W%F5%F5%DD%3A%A6%5C%2C%DF%FE%FC%EF%9C%BF%FDr%9D%97uQxi6%F1%40%F5%A5w%9C4l%C9ICY%F9%EFwS%A5c!Z%D1%7B%D9I%EC%23%94%FD%92~B%DF%8B%ADK%F2%13%88%18%95(%C3%2B%0Cyr%D8%D4%0D%8FC)i%90%F5%7BI%EF%E3Z%F0m%22%F0%D2%05%7C%7F%D5C%187M%D8%06%0Dz%F1(%9BZ%8C%83%AE'u%92'%FDZ%26%3E%A5%DF%07%04%89%A22'q%91'%00u%24%7F%96%8F%7B%11H%96gs%18%82%12%E3%2CN%07%83%ABOn%3F%F7%E9%EC%EAu%9D%C4J%A9%E0%AF%E5%EB%7B%08L%E4%C6%A3%AF%FE%F9%FD%AF%7C%C1m%CE%5D%DD%D4%25%F7%0F%A4YE%22%C5%D9P%D7%AF%5Ew%7DOQ0%A1%15%1A%C6%C5%1C!Q%F2%C8%8F%CB%07e%5C%82%12c%BD%C7%22R1%99%87%B2%AF%17%C9%FC%D5%F1%F1%0C%22%05%84SI%A9%96%DFsY%A2W%91%97O%3F%E1FA%BF%F7m%F8%B3%E2w!v%FD%82%00%C7x%12%1F%F2%A4%13i%C8%A9~%F0%CA%A5%A4%90g%A9%7B%60%22%3D%0F%91%1D%3C%02%DA%5E%FE)%B6%22%3Ael4%18%A5%BB%D7G%D7%9E%1C%DE%BC%13o%EF%F5%97%FE%D7%F9%F5%7D%9B%98%17%EF%BEw%EF%8F%FF%60%7D%F4%1E%E5~Us%E5%80%07%A2%9B%BE!%06%FA%A4z%85F%23%91%E8%07%92%5B%B2%D9%A5%DB%1E%D1Y%06%DA~c%EA%B2%1B%25%DB%D9%02e%5E%26%C1%86%BC%89%BB%FA%9D%FE%E6%AD%CB%24%5C%06a%FDf%91%EA)2AEK%89%E99%B1%1C%A2%E8%C4%EC%BD%EA%11%B6J*%C8%8C%E1Gv2%5D'i%8A%22T%C3%B6%AC%D8%E0%89%F8x%8AP%8E%BA%932%B0I%19%F5%82%0C%E2%3C%B5%83%C9%F0%CA%93%E3'%3E%94%EC%1E%84%A3%F1%FBE%E3%C7%5B%3E~%E4gb6Eu%F6%C6k%F3%B7%BE%B1%3C%BCW%5E%CC%B9%82%CCn%87%9C%09%E1R%7B%2B%F5%5CK%DE%B4%BDF%EF%09%90%1Co%E8%E9%DB%A5p%93!5%AD%DF%BD%AF%DE%E4%C0C%2B%23zj%D5%5EY%88%E9E)H%F3%AB%EB%97%8BYr%85N%F4%DF%A6%08%E5%06%14%BD.%F5%86m%08%19v%A8oj%18%7F%19%01p%0DP%8BmD.%18s%BE%C7%07%CC%05FT%3E%1Fh%16%0D%C7%D1h%1CM%B6%07%FB%B7%87%D7nF%5B%3B6M~%12%1E%DD%F6%03%3D%7D)%3F%3E9~%E9%EB%ABG%EFT%17'%5DS%D4E-%7B%7B%9A%CF_%95%D2%CAVT%DB%3B%C6_63%015%BD%1B%04Z%A4%C2h%11%E1%B2%D7%A7d7%A4O%81%BE%ADA%EB%9B~%F7%95%CF%A3%E2%3C%AA%EB9%98%10%A1Pv%E4%C4%E0%5CM%93.%16%81%93%89%D6%93%009%14%D9%AB%11%2Fd%CDH%FA%8AL%E1%F2%9AGY%0F%93%90~%0A%82t%B67%BC%FE%A1%C1%D5%DB%83%EB7m6%E8'D%3FQ_%1F%E0%B1XmQ%AD%1F%3FZ%3Ex%7B%F5%F0.%9FAY%E7%5E%F6%B1%B5%8C%DB%B9%E9P%B7%FD6%9A%F4%83a0%E7%2F%DB%BE%B497%B8%5D%2B%EB%80%3C%23t%89%5D%1C%CC%E8%9Exu%FD%20%40%8E%AD%CAjb_%90.w%D7%FA.%B5%90Z%3E%02%85%D3%84%AE%95%D50%EE%B9%89%EA1%C2%9E%85%22%CA*%22%E5P%CDC%AA%9C%E5%A6%83p%3AM%B7%0F%06%07O%A6%BB%FB%F8%BD%CD%B2%9F%E4%E7K%FE%A0%8E%E9z%B6%DF%7B%A8n%DCrQ%9C%1C%AF%8F%1En%0E%EF%D5%CB%0BW%AD%7C%5DsST%06%ED%B0%A0%D0%E8%BE%F2%CB%09%87%A6%91%C5%2F%98%1E%B0%23%8DB%901%19v%A9P%C6%C3t%18%B7%AC%E4zd%0E%60-%BD%ED%BC%EEw%23%BD%BAl%DB%5C%9E%EB%95Me%D53oV3%99%06%F7%C7_%8Cts%8C%1Dd%E1p%3B%DB%D9%1F%DF~fp%F5%06%3C%A1%AC%0E%FE%96%7C%FD%E0%8E%E9%87~A%2F%06%BE%B5%23%E0Z%B7%5C%95%17g%D5%E2%AC%9A%2F%EB%FC%A2%A9%E4%C1%C6%F9%AA)%2B%EEi%F4%CBtT%FC%FE%92%EB~%EBt%90%8Cau%2Fr%D8%83%EF%1F%F2%CDA%88l%E8%F6%7D%81%C0%F4%5D%059%F8%22*%96%7DG11%1F%D8%04%EAK%8B%B3%C6s%EF!%1BG%C3Y%B2%B5%1B%0E%A7%D1dJ%B5a%FE%D68%E3GpL%CFI%7B%9At9%F0V%DF%23%B7%E4%FC%8E%5B%AF%DB2%07_%E0Bu%5D%F2%816%FD%F1%10y%A6%9B%EA%17%08e%E8.1%AEeOS%B1%7B%8FJmC%F5~g%9A%CCj8%E2%C1%BDV%F6%B1%C1%A8%C2Hj7%5C2%B2%3C%83%2Ck%1A%FD%937%FE%AE%7C%7D%B0G%2F%8A%A4%90N%9F%ECP%F5%ED%96%F7%5B%EA%97%83%AA%BF%01j%F9w%F1%EB%83%A5%F9%B7%F2%A3%3FT-N%FAv%3Ft%97%C7K%7F%C0G%D3u%DF%EF%F1%8D%3F%FDR%3F%FD%BF)%F9%C9%FC%FA%7F%02%0C%00%EC%80Q5%0B%5E%AD%95%00%00%00%00IEND%AEB%60%82" /></p>
<p>If you're using any modern browser (that rules out <abbr title="Internet Explorer 6">IE6</abbr> and <abbr title="Internet Explorer 7">IE7</abbr>), you should<br />
see a picture of a hot dog above.</p>
<p>But no such image file exists on my server&mdash;or on any <em>other</em> server. You're looking at a <acronym title="Portable Network Graphics">PNG</acronym> image, but there's no <acronym title="Portable Network Graphics">PNG</acronym> file anywhere.</p>
<p>How is that possible?</p>
<p>Right-click on the hot dog and view the image properties&mdash;in particular, note the image's <code>src</code>. You'll see a <acronym title="Uniform Resource Indicator">URI</acronym> that begins with <code>data:</code>, followed by a very long string of gibberish.</p>
<p><span id="more-336"></span></p>
<p>That gibberish <em>is</em> the image data. Ordinary <acronym title="Uniform Resource Indicators">URIs</acronym> simply point to data stored somewhere else. But <a href="http://en.wikipedia.org/wiki/Data_URI_scheme" class="external"><acronym title="Uniform Resource Indicators">URIs</acronym> that begin with <code>data:</code></a> contain <em>the data itself</em>, represented as <acronym title="American Standard Code for Information Interchange">ASCII</acronym> text. Instead of downloading an image file from somewhere on the Internet, the browser interprets the <acronym title="Uniform Resource Indicator">URI</acronym> itself as an image file.</p>
<p><code>data:</code> <acronym title="Uniform Resource Indicators">URIs</acronym> can be used to embed <em>any</em> kind of data&mdash;images, <a href="data:text/html;charset=utf-8,&lt;!DOCTYPE%20html%20PUBLIC%20&quot;-%2F%2FW3C%2F%2FDTD%20XHTML%201.0%20Strict%2F%2FEN&quot;%20&quot;http%3A%2F%2Fwww.w3.org%2FTR%2Fxhtml1%2FDTD%2Fxhtml1-strict.dtd&quot;&gt;&lt;html%20xmlns%3D&quot;http%3A%2F%2Fwww.w3.org%2F1999%2Fxhtml&quot;%20xml%3Alang%3D&quot;en&quot;%20lang%3D&quot;en&quot;&gt;&lt;head&gt;&lt;meta%20http-equiv%3D&quot;Content-type&quot;%20content%3D&quot;text%2Fhtml%3Bcharset%3DUTF-8&quot;%20%2F&gt;&lt;title&gt;Ghost%20Page&lt;%2Ftitle&gt;&lt;%2Fhead&gt;&lt;body&gt;&lt;p&gt;Your%20browser%20obtained%20the%20HTML%20source%20of%20this%20page%20from%20the%20text%20of%20the%20data%3A%20URI%20you%20just%20clicked%20on.%20Look%20at%20your%20address%20bar!&lt;%2Fp&gt;&lt;%2Fbody&gt;&lt;%2Fhtml&gt;"><acronym title="HyperText Markup Language">HTML</acronym></a>, JavaScript, <acronym title="Portable Document Format">PDF</acronym> files, MP3s, <em>anything</em>&mdash;and you can use them wherever you'd ordinarily use a standard <code>http:</code> <acronym title="Uniform Resource Indicator">URI</acronym>.</p>
<p>You can even use them in <acronym title="Cascading Style Sheets">CSS</acronym> files&mdash;and that's really the meat of this post. I'm going to show you how to embed image data in a stylesheet. It's actually quite simple.</p>
<p>This page contains the following inline style rule:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">p<span style="color: #6666ff;">.polka</span> <span style="color: #00AA00;">&#123;</span>
	<span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<style type="text/css">
	p.polka {
		background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==");
	}
</style>
<p>And here's a paragraph with the class <code>polka</code>:</p>
<p class="polka">Hi! I'm polka-dotted!</p>
<p>Why would you want to do this? The main advantage is speed. Ordinarily, the browser must download the stylesheet, parse it, and download each image separately. Even if the total payloads are the same, multiple <acronym title="HyperText Transfer Protocol">HTTP</acronym> requests are much slower than a single transfer. Embedding the image data <em>in</em> the stylesheet allows the browser to download everything in a single package.</p>
<p>This is the same motivation behind <a href="http://www.alistapart.com/articles/sprites/" class="external"><acronym title="Cascading Style Sheets">CSS</acronym> spriting</a>, which allows the browser to download a single image instead of many. The method illustrated here simply takes that principle to a logical (and arguably ridiculous) extreme, by eliminating the need for <em>any</em> additional downloads.</p>
<p>There are, naturally, a few limitations:</p>
<ul>
<li>
<p><code>data:</code> <acronym title="Uniform Resource Indicators">URIs</acronym> aren't supported in Internet Explorer 6 or 7. This renders them impractical for real-world use&mdash;unless you're working on an intranet, and can be sure that all users have a supporting browser.</p>
</li>
<li>
<p>Internet Explorer 8 supports <code>data:</code>, but limits <acronym title="Uniform Resource Indicators">URIs</acronym> to 32<abbr title="kilobytes">KB</abbr> in length, and disallows most content types except for images and <acronym title="Cascading Style Sheets">CSS</acronym> (for security reasons).</p>
</li>
<li>
<p>There's also maintenance to consider: new and updated images will have to be re-encoded and pasted into the stylesheet, and the next person who works on your site might look at your code and have no idea what to do with it.</p>
</li>
<li>
<p>If you use the same images in multiple style rules, you'll end up with duplicate image data&mdash;which will <em>increase</em> load times. In this case, you're better off using regular <acronym title="Uniform Resource Indicators">URIs</acronym>, pointing to real image files.</p>
</li>
<li>
<p>This technique forces the browser to download all images on the first page view, rather than as they're needed. This could be a bug or a feature, depending on the type of site you're building.</p>
</li>
</ul>
<p>So&mdash;at least until <abbr title="Internet Explorer 6">IE6</acronym> and <acronym title="Internet Explorer 7">IE7</acronym> go away&mdash;use of this method is limited to experimental projects and parlor tricks.</p>
<p>You can encode your own <code>data:</code> <acronym title="Uniform Resource Indicators">URIs</acronym> with Ian Hickson's <a href="http://software.hixie.ch/utilities/cgi/data/data" class="external"><code>data:</code> <acronym title="Uniform Resource Indicator">URI</acronym> kitchen</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electrumdigital.com/2010/03/fun-with-hot-dogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conditional comments for iPhone</title>
		<link>http://www.electrumdigital.com/2009/10/conditional-comments-for-iphone/</link>
		<comments>http://www.electrumdigital.com/2009/10/conditional-comments-for-iphone/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:31:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Browser Issues]]></category>
		<category><![CDATA[XHTML & CSS]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://www.electrumdigital.com/?p=217</guid>
		<description><![CDATA[You're probably familiar with IE's conditional comments. They allow us to feed special code to that special browser to overcome its many bugs and deficiencies. Is there something similar for iPhone? Not exactly, but we can achieve the same end: &#60;!--[if !IE]&#62;&#60;!--&#62; &#60;link media=&#34;only screen and (max-device-width: 480px)&#34; href=&#34;iphone.css&#34; type=&#34;text/css&#34; rel=&#34;stylesheet&#34; /&#62; &#60;!--&#60;![endif]--&#62; Some versions [...]]]></description>
			<content:encoded><![CDATA[<p>You're probably familiar with <acronym title="Internet Explorer">IE</acronym>'s <a href="http://www.quirksmode.org/css/condcom.html">conditional comments</a>. They allow us to feed special code to that special browser to overcome its many bugs and deficiencies.</p>
<p>Is there something similar for iPhone? Not exactly, but we can achieve the same end:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">&lt;!--[if !IE]&gt;&lt;!--&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">link</span> <span style="color: #000066;">media</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;only screen and (max-device-width: 480px)&quot;</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;iphone.css&quot;</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;text/css&quot;</span> <span style="color: #000066;">rel</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;stylesheet&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span>
<span style="color: #808080; font-style: italic;">&lt;!--&lt;![endif]--&gt;</span></pre></div></div>

<p><span id="more-217"></span></p>
<p>Some versions of <acronym title="Internet Explorer">IE</acronym> will apply stylesheets regardless of the <code class="html">media</code> attribute, so the conditional comments are here merely to tell <acronym title="Internet Explorer">IE</acronym> <em>not</em> to use this code.</p>
<p>As for the value of the <code class="html">media</code> attribute: not all browsers understand the "only" keyword; they will simply ignore this line. Of those that <em>do</em> understand it, the only one width a max-device-width of 480px is the iPhone.</p>
<p>(So I'm told. I'm taking all of this on faith. But it seems to work.)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electrumdigital.com/2009/10/conditional-comments-for-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Forms in HTML5</title>
		<link>http://www.electrumdigital.com/2009/10/forms-in-html5/</link>
		<comments>http://www.electrumdigital.com/2009/10/forms-in-html5/#comments</comments>
		<pubDate>Fri, 02 Oct 2009 18:19:50 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XHTML & CSS]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.electrumdigital.com/?p=163</guid>
		<description><![CDATA[The HTML5 spec continues to grind inexorably toward publication. I've just spent a while with the latest draft, and at least with respect to forms, I like what I see. Here's a roundup. (Most of these features are in "Last call for comments" status, so it's likely they'll make the final spec, but everything you're [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://dev.w3.org/html5/spec/">The <acronym title="HyperText Markup Language">HTML</acronym>5 spec</a> continues to grind inexorably toward publication. I've just spent a while with the latest draft, and at least with respect to <a href="http://dev.w3.org/html5/spec/forms.html#forms">forms</a>, I like what I see. Here's a roundup.</p>
<p><span id="more-163"></span></p>
<p>(Most of these features are in "Last call for comments" status, so it's likely they'll make the final spec, but everything you're about to read is subject to change.)</p>
<ul>
<li>
<p>A couple of the new features are little more than <abbr title="User Interface">UI</abbr> sugar, but they're welcome nonetheless. The <code class="html"><a href="http://dev.w3.org/html5/spec/Overview.html#attr-fe-autofocus">autofocus</a></code> attribute does what it says on the tin. The <code class="html"><a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-placeholder">placeholder</a></code> attribute will display a hint value in a control&#8212;<abbr lang="la" title="exempli gratia">e.g.</abbr>, "you@example.com" in an email field&#8212;which will disappear when the control receives focus.</p>
<p>No more crappy little scripts just to implement these simple <abbr title="User Interface">UI</abbr> behaviors&#8212;a few keystrokes, and you're done!</p>
</li>
<li>
<p>The <code class="html"><a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-autocomplete">autocomplete</a></code> attribute (already implemented by some browsers, including Firefox) will allow us to control whether the browser attempts autocompletion of a particular field. Disabling autocompletion is useful when you don't want a particular value (such as a bank customer's username) to be easily discoverable, or when dealing with a one-time entry (such as a <acronym title="Completely Automated Public Turing Test to Tell Computers and Humans Apart">CAPTCHA</acronym>) where it makes little sense to remember the input value.</p>
<p>Its natural partner is the <code class="html"><a href="http://dev.w3.org/html5/spec/Overview.html#the-list-attribute">list</a></code> attribute, which will allow us to suggest possible values for the control. Presumably user agents will be free to implement this as type-ahead autocompletion (<span lang="fr">&#224; la</span> Google), as a <a href="http://en.wikipedia.org/wiki/Combo_box">combo box</a>, or in any other way they see fit.</p>
</li>
<li>
<p>There's a whole slew of new <code class="html">&lt;input /&gt;</code> types, including <a href="http://dev.w3.org/html5/spec/Overview.html#date-state">calendars</a>, <a href="http://dev.w3.org/html5/spec/Overview.html#color-state">color pickers</a>, <a href="http://dev.w3.org/html5/spec/Overview.html#number-state">numbers</a>, <a href="http://dev.w3.org/html5/spec/Overview.html#e-mail-state">email addresses</a>, and <a href="http://dev.w3.org/html5/spec/Overview.html#url-state"><acronym title="Uniform Resource Locator">URL</acronym>s</a>, among <a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-type">others</a>.</p>
<p>This dovetails nicely with <a href="http://dev.w3.org/html5/spec/forms.html#constraint-validation">the new form validation model</a>, which<br />
(in addition to enforcing syntax for values such as email addresses and <acronym title="Uniform Resource Locator">URL</acronym>s) will allow us to <a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-required">require a value</a>, test it against <a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-pattern">an arbitrary regular expression</a>, and restrict numeric values to <a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-min">a specified range</a> and/or <a href="http://dev.w3.org/html5/spec/Overview.html#attr-input-step">a specified granularity</a>.</p>
</li>
<li>
<p><a href="http://dev.w3.org/html5/spec/interactive-elements.html#menus">Menus</a>, of both the standard and context varieties.</p>
<p>Individual menu items (and buttons, and other <acronym title="User Interface">UI</acronym> elements) will be associated with <code class="html"><a href="http://dev.w3.org/html5/spec/interactive-elements.html#the-command">&lt;command&gt;</a></code> elements. Presumably&#8212;I haven't thoroughly reviewed this part yet&#8212;triggering a menu item or other control will fire a DOM event on the associated command; client-side scripts can register event listeners on the command element, and respond without knowing or caring which element originally triggered the request.</p>
</li>
</ul>
<p>In short, <acronym title="HyperText Markup Language">HTML</acronym>'s role as a document markup language is expanding to include <em>interface</em> markup as well. This is probably as it should be&#8212;there are few pages on the modern web (aside from W3C recommendations and documents repurposed from print) which the existing standards can describe without strain.</p>
<p>Many of the things we now code in JavaScript will be supported natively by browsers&#8212;we'll have to write less code, and users will get a faster, richer, more responsive, and more uniform experience. On the other hand, browsers will continue to grow in size and complexity—especially with the just-in-time JavaScript compilation featured in the latest generation, they're looking less and less like document readers, and more and more like runtime environments for applications.</p>
<p>There will undoubtedly be bugs to contend with in the first generation of <acronym title="HyperText Markup Language">HTML</acronym>5 browsers, but hopefully browser makers have learned the lessons of <acronym title="Internet Explorer 6">IE6</acronym>, and will at least <em>attempt</em> to comply with the spec. We still have a few years before the standard is finalized and widely supported, but (especially once <acronym title="Cascading Style Sheets Level 3">CSS3</acronym> follows suit) it's going to offer some interesting possibilities.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electrumdigital.com/2009/10/forms-in-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Toward Better Buttons</title>
		<link>http://www.electrumdigital.com/2009/09/toward-better-buttons/</link>
		<comments>http://www.electrumdigital.com/2009/09/toward-better-buttons/#comments</comments>
		<pubDate>Tue, 22 Sep 2009 22:31:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[XHTML & CSS]]></category>
		<category><![CDATA[semantic markup]]></category>

		<guid isPermaLink="false">http://www.electrumdigital.com/?p=111</guid>
		<description><![CDATA[I see this a lot: &#60;input type=&#34;submit&#34; class=&#34;button&#34; value=&#34;Save Changes&#34; /&#62; Because the &#60;input /&#62; element can represent many things other than a button&#8212;and because many browsers still don't support attribute selectors, such as input[type=button]&#8212;the author has added class="button" for the sole purpose of giving the stylesheet something to match on. May I suggest a [...]]]></description>
			<content:encoded><![CDATA[<p>I see this a lot:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button&quot;</span> <span style="color: #000066;">value</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Save Changes&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>Because the <code class="html">&#60;input /&#62;</code> element can represent many things <em>other</em> than a button&#8212;and because many browsers still don't support attribute selectors, such as <code class="css">input[type=button]</code>&#8212;the author has added <code class="html">class="button"</code> for the sole purpose of giving the stylesheet something to match on.</p>
<p>May I suggest a better way?</p>
<p><span id="more-111"></span></p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span>&gt;</span>Save Changes<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span></pre></div></div>

<p>Now our stylesheet can simply use the selector <code class="css">button</code>, and we don't have to add any extra classes to our markup. Overall, it makes for cleaner, more concise, and more semantically descriptive code.</p>
<p>That one isn't so bad, but this one is:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">input</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;image&quot;</span> <span style="color: #000066;">src</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;button.gif&quot;</span> <span style="color: #000066;">alt</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;Save Changes&quot;</span> <span style="color: #66cc66;">/</span>&gt;</span></pre></div></div>

<p>This is technically valid under <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> 1.0 Transitional, but not under <acronym title="eXtensible HyperText Markup Language">XHTML</acronym> 1.0 Strict, and it's a bad idea in either case.</p>
<p>Why? Because it couples semantics with presentation, and that's exactly the sort of thing <acronym title="Cascading Style Sheets">CSS</acronym> exists to prevent. If the client later decides to replace <code>button.gif</code> with <code>newbutton.jpg</code>&#8212;or wants to change all image buttons to text buttons&#8212;you'll have to edit every page to make the change.</p>
<p>Instead, use this markup:</p>

<div class="wp_syntax"><div class="code"><pre class="html4strict" style="font-family:monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">button</span> <span style="color: #000066;">type</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">&quot;submit&quot;</span>&gt;</span>Save Changes<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">button</span>&gt;</span></pre></div></div>

<p>...and use your favorite <a href="http://css-tricks.com/css-image-replacement/"><acronym title="Cascading Style Sheets">CSS</acronym> image replacement</a> technique to <a href="http://www.alistapart.com/articles/understandingprogressiveenhancement/">progressively enhance</a> the document for graphical user agents. I typically use something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;">button<span style="color: #6666ff;">.submit</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">border</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* to suppress default button styling */</span>
    <span style="color: #000000; font-weight: bold;">padding</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* to suppress default button styling */</span>
    <span style="color: #000000; font-weight: bold;">background-image</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">url</span><span style="color: #00AA00;">&#40;</span><span style="color: #ff0000;">&quot;button.gif&quot;</span><span style="color: #00AA00;">&#41;</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">width</span><span style="color: #00AA00;">:</span> <span style="color: #933;">128px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">height</span><span style="color: #00AA00;">:</span> <span style="color: #933;">24px</span><span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">text-indent</span><span style="color: #00AA00;">:</span> <span style="color: #933;">-9999px</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* to hide the plain text */</span>
    <span style="color: #000000; font-weight: bold;">outline</span><span style="color: #00AA00;">:</span> <span style="color: #cc66cc;">0</span><span style="color: #00AA00;">;</span> <span style="color: #808080; font-style: italic;">/* suppress the dotted hairline border */</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>Now you'll only have to edit one file&#8212;the stylesheet. Yes, we've re-introduced classes, but in this case it actually <em>helps</em> us separate concerns. You can define a base <code class="css">button</code> style, and then define styles for <code class="css">button.submit</code>, <code class="css">button.cancel</code>, <code class="css">button.delete</code>, <code class="css">button.help</code>, and so on&#8212;each one pulling in the appropriate <code class="css">background-image</code> and specifying the appropriate dimensions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.electrumdigital.com/2009/09/toward-better-buttons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

