Created
October 28, 2016 11:06
-
-
Save N0taN3rd/b9157550863ade6a4826eb88ba8bbcac to your computer and use it in GitHub Desktop.
October 28, 2016
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WARC/1.0 | |
WARC-Type: warcinfo | |
WARC-Date: 2016-08-15T21:19:20Z | |
WARC-Filename: WAIL-20160815211920610-00000-20339~misanthropy~8443.warc | |
WARC-Record-ID: <urn:uuid:c8935f63-6a09-4743-892b-03dbc5a0357b> | |
Content-Type: application/warc-fields | |
Content-Length: 423 | |
software: Heritrix/3.3.0-SNAPSHOT-20160708-0038 http://crawler.archive.org | |
ip: 127.0.1.1 | |
hostname: misanthropy | |
format: WARC File Format 1.0 | |
conformsTo: http://bibnum.bnf.fr/WARC/WARC_ISO_28500_version1_latestdraft.pdf | |
isPartOf: MyWAILBasedHeritrixCrawl | |
description: PersonalWebArchival | |
robots: ignore | |
http-header-user-agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: dns:matkelly.com | |
WARC-Date: 2016-08-15T21:19:19Z | |
WARC-IP-Address: 127.0.1.1 | |
WARC-Record-ID: <urn:uuid:ebb313ec-9933-442d-a690-bd28192a4ef5> | |
Content-Type: text/dns | |
Content-Length: 57 | |
20160815211919 | |
matkelly.com. 14400 IN A 173.236.225.186 | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://matkelly.com/robots.txt | |
WARC-Date: 2016-08-15T21:19:23Z | |
WARC-IP-Address: 173.236.225.186 | |
WARC-Payload-Digest: sha1:WUM4DQPHBJKLHVC2FNHYZG5TJDCQXB4Z | |
WARC-Record-ID: <urn:uuid:f2fca64d-748b-4c96-bd22-953a3d0e99bc> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 342 | |
HTTP/1.1 200 OK | |
Date: Mon, 15 Aug 2016 21:19:24 GMT | |
Server: Apache | |
Last-Modified: Mon, 08 Jun 2009 06:23:08 GMT | |
ETag: "58-46bd0468f2b00" | |
Accept-Ranges: bytes | |
Content-Length: 88 | |
Vary: Accept-Encoding | |
Connection: close | |
Content-Type: text/plain | |
User-agent: * | |
Disallow: budget.txt | |
Disallow: /finance | |
Disallow: /money | |
Disallow: /budget | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://matkelly.com/robots.txt | |
WARC-Date: 2016-08-15T21:19:23Z | |
WARC-Concurrent-To: <urn:uuid:f2fca64d-748b-4c96-bd22-953a3d0e99bc> | |
WARC-Record-ID: <urn:uuid:2ecf391b-7423-4d42-8f63-2bb0261e00e2> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 240 | |
GET /robots.txt HTTP/1.0 | |
Connection: Close | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: matkelly.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://matkelly.com/robots.txt | |
WARC-Date: 2016-08-15T21:19:23Z | |
WARC-Concurrent-To: <urn:uuid:f2fca64d-748b-4c96-bd22-953a3d0e99bc> | |
WARC-Record-ID: <urn:uuid:e5365b76-a7d3-4ec7-b58f-1b7df6904ed5> | |
Content-Type: application/warc-fields | |
Content-Length: 175 | |
force-fetch: | |
via: http://matkelly.com/ | |
hopsFromSeed: P | |
fetchTimeMs: 729 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://matkelly.com/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://matkelly.com/ | |
WARC-Date: 2016-08-15T21:19:28Z | |
WARC-IP-Address: 173.236.225.186 | |
WARC-Payload-Digest: sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ | |
WARC-Record-ID: <urn:uuid:6d8ba8c8-03d1-4321-87bb-812022f7d4ca> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 411 | |
HTTP/1.1 301 Moved Permanently | |
Date: Mon, 15 Aug 2016 21:19:28 GMT | |
Server: Apache | |
Memento-Datetime: Mon, 15 Aug 2016 21:19:28 GMT | |
Link: <http://matkelly.com/>; rel="original", <http://matkelly.com/archive/mkdc.tm>; rel="timemap"; type="application/link-format" | |
Location: http://www.cs.odu.edu/~mkelly/ | |
Vary: Accept-Encoding | |
Content-Length: 0 | |
Connection: close | |
Content-Type: text/html; charset=UTF-8 | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://matkelly.com/ | |
WARC-Date: 2016-08-15T21:19:28Z | |
WARC-Concurrent-To: <urn:uuid:6d8ba8c8-03d1-4321-87bb-812022f7d4ca> | |
WARC-Record-ID: <urn:uuid:08cc6efe-465d-4780-aa12-aeaa035450b4> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 230 | |
GET / HTTP/1.0 | |
Connection: Close | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: matkelly.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://matkelly.com/ | |
WARC-Date: 2016-08-15T21:19:28Z | |
WARC-Concurrent-To: <urn:uuid:6d8ba8c8-03d1-4321-87bb-812022f7d4ca> | |
WARC-Record-ID: <urn:uuid:42b3a64b-514d-448c-b449-8ed2fd32ba0f> | |
Content-Type: application/warc-fields | |
Content-Length: 172 | |
seed: | |
fetchTimeMs: 140 | |
charsetForLinkExtraction: UTF-8 | |
outlink: http://www.cs.odu.edu/~mkelly/ R Location: | |
outlink: http://matkelly.com/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: dns:www.cs.odu.edu | |
WARC-Date: 2016-08-15T21:19:28Z | |
WARC-IP-Address: 127.0.1.1 | |
WARC-Record-ID: <urn:uuid:ebb2ea48-deae-4ecb-94f9-1a3267f210bf> | |
Content-Type: text/dns | |
Content-Length: 55 | |
20160815211928 | |
xenon.cs.odu.edu. 86400 IN A 128.82.4.2 | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://matkelly.com/favicon.ico | |
WARC-Date: 2016-08-15T21:19:31Z | |
WARC-IP-Address: 173.236.225.186 | |
WARC-Payload-Digest: sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ | |
WARC-Record-ID: <urn:uuid:9839e3fa-c6d8-49ae-88c0-23eaaf9be574> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 231 | |
HTTP/1.1 200 OK | |
Date: Mon, 15 Aug 2016 21:19:31 GMT | |
Server: Apache | |
Last-Modified: Mon, 08 Jun 2009 06:23:08 GMT | |
ETag: "0-46bd0468f2b00" | |
Accept-Ranges: bytes | |
Content-Length: 0 | |
Connection: close | |
Content-Type: image/x-icon | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://matkelly.com/favicon.ico | |
WARC-Date: 2016-08-15T21:19:31Z | |
WARC-Concurrent-To: <urn:uuid:9839e3fa-c6d8-49ae-88c0-23eaaf9be574> | |
WARC-Record-ID: <urn:uuid:6c8a852e-b495-4ebd-b460-bbbdb54212cc> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 272 | |
GET /favicon.ico HTTP/1.0 | |
Connection: Close | |
Referer: http://matkelly.com/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: matkelly.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://matkelly.com/favicon.ico | |
WARC-Date: 2016-08-15T21:19:31Z | |
WARC-Concurrent-To: <urn:uuid:9839e3fa-c6d8-49ae-88c0-23eaaf9be574> | |
WARC-Record-ID: <urn:uuid:13615f6e-2c6c-4369-ae41-68e393caa147> | |
Content-Type: application/warc-fields | |
Content-Length: 160 | |
via: http://matkelly.com/ | |
hopsFromSeed: I | |
fetchTimeMs: 82 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://matkelly.com/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/robots.txt | |
WARC-Date: 2016-08-15T21:19:31Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:PJ7OVFJC4MDZEY6JXVH4GAE7RRWNALQG | |
WARC-Record-ID: <urn:uuid:8c04ce01-9993-42ad-8887-b847f3a2dfbc> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 348 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:31 GMT | |
Content-Type: text/plain | |
Content-Length: 122 | |
Last-Modified: Sun, 12 Jan 2014 02:50:40 GMT | |
Connection: close | |
ETag: "52d20300-7a" | |
Accept-Ranges: bytes | |
User-Agent: 008 | |
Disallow: / | |
User-agent: * | |
Disallow: /~extract/DocumentCollections | |
Disallow: /~wild/cs333/fall02/students | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/robots.txt | |
WARC-Date: 2016-08-15T21:19:31Z | |
WARC-Concurrent-To: <urn:uuid:8c04ce01-9993-42ad-8887-b847f3a2dfbc> | |
WARC-Record-ID: <urn:uuid:e2e52e58-d73f-4bb4-a900-eae54c719d66> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 242 | |
GET /robots.txt HTTP/1.0 | |
Connection: Close | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/robots.txt | |
WARC-Date: 2016-08-15T21:19:31Z | |
WARC-Concurrent-To: <urn:uuid:8c04ce01-9993-42ad-8887-b847f3a2dfbc> | |
WARC-Record-ID: <urn:uuid:0bdac149-1c1e-406e-9c55-8dffa3b277ed> | |
Content-Type: application/warc-fields | |
Content-Length: 188 | |
force-fetch: | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RP | |
fetchTimeMs: 104 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/ | |
WARC-Date: 2016-08-15T21:19:34Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:QMZEEYTMLMEFYO5PEE4BKEAE2BV57HH2 | |
WARC-Record-ID: <urn:uuid:cff684e0-9204-4cdc-a4ac-d523f2e2d5f7> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 40196 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:35 GMT | |
Content-Type: text/html | |
Connection: close | |
Vary: Accept-Encoding | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="description" content="Academic Homepage of Mat Kelly, Doctoral Degree student at Old Dominion University in Norfolk, Virginia." /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<meta name="theme-color" content="#031fc9" /> | |
<!--[if lt IE 9]> | |
<script src="_js/html5shiv.js"></script> | |
<![endif]--> | |
<title>Mat Kelly, PhD Student</title> | |
<link rel="stylesheet" href="style.css" media="all" /> | |
<link rel="author" href="https://plus.google.com/u/0/103717513886594190386" /> | |
<script src="_js/html2canvas.js"></script> | |
<script> | |
function screenshotTest(){ | |
html2canvas(document.body, { | |
allowTaint: true, | |
onrendered: function(canvas) { | |
if(!document.getElementById('screenshot')){ // Exec below only once | |
canvas.id = "screenshot"; | |
var tf = document.createElement("div"); | |
tf.id = "thumbnailFrame"; | |
document.getElementsByTagName("header")[0].insertBefore(tf,document.getElementsByTagName("h1")[0]); | |
document.getElementById('thumbnailFrame').appendChild(canvas); | |
} | |
} | |
}); | |
} | |
document.addEventListener("DOMContentLoaded", function(event) { | |
document.onscroll = function(){ | |
if(window.innerWidth <= 600){ //responsive design showing | |
if(window.pageYOffset > 400){ | |
document.getElementsByTagName("header")[0].className = "pinned"; | |
//document.getElementsByTagName("nav")[0].className = "vertical"; | |
}else { | |
document.getElementsByTagName("header")[0].className = ""; | |
//document.getElementsByTagName("nav")[0].className = ""; | |
} | |
} | |
} | |
}); | |
</script> | |
<style type="text/css"> | |
/*#screenshot {position: absolute; right: 300px; top: 10px; width: 500px; -webkit-transition: all ease 1s;}*/ | |
#screenshot {width: 200px;} | |
#screenshot:hover { | |
} | |
#thumbnailFrame {height: 100px; overflow: hidden;} | |
</style> | |
</head> | |
<body> | |
<header itemscope itemtype="http://data-vocabulary.org/Person"> | |
<a href="http://www.cs.odu.edu/~mkelly/" onclick="screenshotTest();return false;"> | |
<img src="mofro.png" alt="mug shot" id="mugShot" itemprop="photo" /> | |
</a> | |
<h1 itemprop="name">Mat Kelly</h1> | |
<h2 itemprop="title">PhD Student, Computer Science</h2> | |
<h3 itemprop="affiliation">Web Science & Digital Libraries Research Group</h3> | |
<h3 itemprop="affiliation">Old Dominion University</h3> | |
<!--<a href="http://www.cs.odu.edu/~mkelly" onclick="screenshotTest();return false;"> | |
<img src="amish.jpg" alt="mug shot" id="openMenu" itemprop="photo" /> | |
</a>//future work --> | |
</header> | |
<nav> | |
<ul id="sections"> | |
<li><a href="#currentProjects">Upcoming/Current Projects</a></li> | |
<li><a href="#papersPostersAndPresentations">Papers, Posters & Presentations</a></li> | |
<li><a href="#recognitionAndParticipation">Recognition & Participation</a></li> | |
<li><a href="#teaching">Teaching</a></li> | |
<li><a href="#courseworkHistory">Coursework History</a></li> | |
<li><a href="#projects">Recent Software Projects</a></li> | |
<li><a href="#contact">Contact</a></li> | |
<li id="cv"><a target="_blank" href="http://matkelly.com/cv">C.V.</a></li> | |
</ul> | |
</nav> | |
<section id="currentProjects"> | |
<h2>Current/Upcoming Projects</h2> | |
<ul> | |
<li>Research and paper development on various aspects of personal web archiving.</li> | |
<li>Continued development of <a href="http://warcreate.com">WARCreate</a>, <a href="http://matkelly.com/wail">Web Archiving Integration Layer (WAIL)</a>, and <a href="https://github.com/machawk1/mink">Mink</a> for <a href="http://www.neh.gov/divisions/odh/grant-news/announcing-seven-digital-humanities-implementation-grants-july-2014">NEH Digital Humanities Implementation Grant</a>.</li> | |
<li>Continued development of <a href="http://github.com/oduwsdl/ipwb">InterPlanetary Wayback (ipwb)</a>.</li> | |
</ul> | |
</section> | |
<section id="papersPostersAndPresentations"> | |
<h2>Papers, Posters & Presentations</h2> | |
<ul> | |
<li><em class="me">Mat Kelly</em>, Sawood Alam, Michael L. Nelson, and Michele C. Weigle. "InterPlanetary Wayback: Peer-To-Peer Permanence of Web Archives," To Appear In <em>Proceedings of the International Conference on Theory and Practice of Digital Libraries</em> (TPDL). Hannover, Germany, September 2016.</li> | |
<li><em class="me">Mat Kelly</em>, Sawood Alam, Michael L. Nelson, and Michele C. Weigle, "InterPlanetary Wayback: The Permanent Web Archive," At the <em>Web Archiving and Digital Libraries Workshop (WADL 2016)</em>. Newark, NJ, June 2016.</li> | |
<li>Sawood Alam, <em class="me">Mat Kelly</em>, and Michael L. Nelson, "InterPlanetary Wayback: The Permanent Web Archive," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. Newark, NJ, June 2016, pp. 273-274. (<a href="http://www.cs.odu.edu/~mkelly/papers/2016_jcdl_ipwb.pdf">PDF</a>, <a href="publications/alam-jcdl2016.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, "Exploring Aggregation of Personal, Private, and Institutional Web Archives," Presented At <em>Archives Unleashed 2.0: Web Archive Datathon</em>, 2016 June 15. (<a href="http://www.cs.odu.edu/~mkelly/presentations/2016_archivesUnleashed_aggregation.pptx">PPTX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, "A Framework for Aggregating Private and Public Web Archives," <em>Bulletin of IEEE Technical Committee on Digital Libraries (IEEE-TCDL)</em>, Vol. 11, No. 3, December 2015. (<a href="http://www.ieee-tcdl.org/Bulletin/v11n3/papers/149-Kelly.pdf">PDF</a>, <a href="publications/kelly-tcdl2015.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, "A Framework for Aggregating Private and Public Web Archives," at the <em>ACM/IEEE Joint Conference on Digital Libraries (JCDL)</em>. Doctoral Consortium. Knoxville, TN, June 2015. (<a href="papers/2015_jcdl_aframework.pdf">PDF</a>, <a href="publications/kelly-jcdl2015.bib">BibTeX</a>)</li> | |
<li>Wesley Jordan, <em class="me">Mat Kelly</em>, Justin F. Brunelle, Laura Vobrak, Michele C. Weigle and Michael L. Nelson, "Mobile Mink: Merging Mobile and Desktop Archived Webs," In <em>Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL)</em>. Knoxville, TN, June 2015, pp. 243-244, <em class="best">Best Poster Award</em>. (<a href="papers/2015_jcdl_mobileMink.pdf">PDF</a>, <a href="publications/jordan-jcdl2015.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle, "Visualizing Digital Collections of Web Archives," <em>Web Archiving Collaboration: New Tools and Models</em>; 2015 June 4; New York City, NY. (<a href="presentations/2015_columbiawac_thumbnails.pptx">PPTX</a>)</li> | |
<li>Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen, Michele C. Weigle and Michael L. Nelson, "Not All Mementos Are Created Equal: Measuring the Impact of Missing Resources," <em>International Journal of Digital Libraries (IJDL)</em>, 16(3), pp. 283-301. May 2015. (<a href="http://link.springer.com/article/10.1007/s00799-015-0150-6">article</a>, <a href="publications/brunelle-ijdl2015-damage.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, "Facilitation of the A Posteriori Replication of Web Published Satellite Imagery", <em>Virginia Space Grant Consortium 2015 Student Research Conference</em>. 2015 April 17; Hampton, VA. (<a href="papers/2015_vsgc_imagery.pdf">PDF</a>, <a href="presentations/2015_vsgc_imagery.pptx">PPTX</a>, <a href="publications/kelly-vsgc2015.bib">BibTeX</a>) | |
<li>Justin F. Brunelle, <em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson, "The Impact of JavaScript on Archivability," <em>International Journal of Digital Libraries (IJDL)</em>, 15(1), pp. 95-117. January 2015. (<a href="http://link.springer.com/article/10.1007%2Fs00799-015-0140-8">article</a>, <a href="publications/brunelle-ijdl2015-impact.bib">BibTeX</a>)</li> | |
<li>Michael Ruffing (Old Dominion University, Norfolk, VA), Yangyang He (Clemson University, Clemson, SC), <em class="me">Mat Kelly</em> (Old Dominion University, Norfolk, VA), Jason O. Hallstrom (Clemson University, Clemson, SC), Stephan Olariu (Old Dominion University, Norfolk, VA), and Michele C. Weigle (Old Dominion University, Norfolk, VA). "A Retasking Framework For Wireless Sensor Networks," In <em>Proceedings of the IEEE Military Communications Conference (MILCOM)</em>. Baltimore, MD, 2014 October 6-8, pp. 1066-1071 (<a href="papers/2014_milcom_retasking.pdf">PDF</a>, <a href="publications/ruffing-milcom2014.bib">BibTeX</a>)</li> | |
<li>Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen, Michele C. Weigle, and Michael L. Nelson, "Not All Mementos Are Created Equal: Measuring The Impact Of Missing Resources," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. London, England, September 2014, pp. 321-330, <em class="best">Best Student Paper Award</em>. (<a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_damage.pdf">PDF</a>, <a href="publications/brunelle-dl2014.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle, "The Archival Acid Test: Evaluating Archive Performance on Advanced HTML and JavaScript," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. London, England, September 2014, pp. 25-28. (<a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_acid.pdf">PDF</a>, <a href="publications/kelly-dl2014-acid.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle, "Mink: Integrating the Live and Archived Web Viewing Experience Using Web Browsers and Memento," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. London, England, September 2014, pp. 469-470. (<a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_mink.pdf">PDF</a>, <a href="publications/kelly-dl2014-mink.bib">BibTeX</a>)</li> | |
<li>Michael L. Nelson, Scott G. Ainsworth, Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen, Michele C. Weigle. "Assessing the Quality of Web Archives," <em>Digital Preservation 2014</em>, Future of Web Archiving Panel; 2014 July 23; Washington, DC. (<a href="http://www.cs.odu.edu/~mkelly/presentations/2014_digitalPreservation.ppt">PPT</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle. "Efficient Thumbnail Summarization for Web Archives," Digital Preservation 2014, Poster Session; 2014 July 22; Washington, DC. (<a href="http://www.cs.odu.edu/~mkelly/posters/2014_digpres_thumbnails.pdf">PDF</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Justin F. Brunelle, Michele C. Weigle and Michael L. Nelson. "A Method for Identifying Personalized Representations in the Archives," <em>D-Lib Magazine</em>, 19(11/12), 2013. (<a href="http://www.dlib.org/dlib/november13/kelly/11kelly.html">article</a>, <a href="publications/kelly-dlib2013.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>. "Archive What I See Now," <em>Archive-It Partner Meeting</em>. Salt Lake City, UT, 2013 November 12. (<a href="presentations/2013_archiveItPartnerMeeting_archiveWhatISeeNow.pptx">PPTX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michael L. Nelson and Michele C. Weigle. "Graph-Based Navigation of a Box Office Prediction System," In <em>Proceedings of the IEEE VIS 2013</em>. Atlanta, GA, 2013 October 13-18. (<a href="papers/2013_ieeevis_boxofficeprediction.pdf">PDF</a>, <a href="posters/2013_vis_boxoffice.pdf">Poster</a>, <a href="publications/kelly-vis2013.bib">BibTeX</a>)</li> | |
<li>Michael L. Nelson, Scott G. Ainsworth, Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen and Michele C. Weigle. "Who Will Archive the Archives? Thoughts About the Future of Web Archiving," Wolfram Data Summit 2013. Washington, DC, 2013 September 5-6. (<a href="presentations/2013_wolframDataSumnmit_archiveTheArchives.ppt">PPT</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michael L. Nelson and Michele C. Weigle. "WARCreate and WAIL: WARC, Wayback and Heritrix Made Easy," <em>Digital Preservation 2013</em>, Workshops and Sessions: Web Archiving; 2013 July 24; Alexandria, VA. (<a href="http://www.cs.odu.edu/~mkelly/presentations/2013_digitalPreservation_heritrixMadeEasy.pptx">PPTX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Justin F. Brunelle, Michele C. Weigle and Michael L. Nelson. "On the Change in Archivability of Websites Over Time," In <em>Proceedings of the International Conference on Theory and Practice of Digital Libraries</em> (TPDL). Valletta, Malta, September 2013, pp. 35-47 (<a href="papers/2013_tpdl_archivabilityOverTime_final.pdf">PDF</a>, <a href="publications/kelly-tpdl2013.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson. "Making Enterprise-Level Archive Tools Accessible for Personal Web Archiving," <em>Personal Digital Archiving 2013</em>; 2013 February 21; College Park, MD. (<a href="posters/2013_pda_wail.pdf">PDF</a>, <a href="publications/kelly-pda2013.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson. "WARCreate - Create Wayback-Consumable WARC Files from Any Webpage," Digital Preservation 2012, Tools Demo Session: Web Archiving; 2012 July 25; Washington, DC. (<a href="presentations/2012_digitalPreservation_warcreate.pptx">PPTX</a>, <a href="presentations/2012_digitalPreservation_warcreate.zip">PPTX w/ videos</a>)</li> | |
<li><em class="me">Mat Kelly</em> and Michele C. Weigle, "WARCreate - Create Wayback-Consumable WARC Files from Any Webpage," In <em>Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL)</em>. Washington, DC, June 2012, pp. 437-438 (<a href="papers/2012_jcdl_warcreate.pdf">PDF</a>, <a href="posters/2012_jcdl_warcreate.pdf">Poster</a>, <a href="publications/kelly-jcdl2012.bib">BibTeX</a>)</li> | |
<li>Thad Chee (Science Systems & Applications, Inc., Hampton, VA), <em class="me">Matthew Kelly</em> (Science Systems & Applications, Inc., Hampton, VA), Louis Nguyen (NASA-Langley Research Center, Hampton, VA), Patrick Minnis (NASA-Langley Research Center, Hampton, VA), Rabindra Palikonda, Douglas A. Spagenberg (Science Systems & Applications, Inc., Hampton, VA), J. Kirk Ayers (Science Systems & Applications, Inc., Hampton, VA). Access to Real-time and Historic Satellite Products from a Mobile Application. <em>American Geophysical Union Fall Meeting</em>; 2011 December 5-9; San Francisco, CA. (<a href="posters/2012_agu_cloudproducts.ppt">PPT</a>, <a href="publications/chee-agu2011.bib">BibTeX</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Syed R. Rizvi, Liang Chen, Chinmay Lokesh, Stephan Olariu and Michele C. Weigle. ALERT: A Next-generation Emergency Response System for First Responders using Retasking of Wireless Sensor Networks. <em>13th Annual Tidewater Student Research Poster Session</em>; 2011 November 18; Newport News, VA. (<a href="posters/2011_cnu_alert.pdf">PDF</a>)</li> | |
<li><em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson. Archiving Your Facebook Pages Using Archive Facebook. NDIIPP/NDSA Partners Meeting Special Interest Session: Web Archiving; 2011 July 20; Washington, DC. (<a href="presentations/2011_ndiipp_archivefacebook.pptx">PPTX</a>)</li> | |
<li>David Helman (BMW Group, Greenville, SC), <em class="me">Matthew Kelly</em> (BMW Group, Greenville, SC ), Martin Guttmann (Intel Corporation, Santa Clara, CA), Bill Carter (Intel Corporation, Santa Clara, CA), Enrique Castro-Leon (Intel Corporation, Santa Clara, CA), Thomas Kellerer (Intel Corporation, Santa Clara, CA), Dror Shenkar (Intel Corporation, Santa Clara, CA). "Preserving Performance While Saving Power Using Intel Intelligent Power Node Manager and Intel Data Center Manger". December 2009 (<a href="https://software.intel.com/sites/datacentermanager/node_manager_white_paper_bmw.pdf">article</a>, <a href="papers/2009_intel_node_manager_white_paper_bmw.pdf">PDF</a>)</li> | |
</ul> | |
</section> | |
<section id="recognitionAndParticipation"> | |
<h2>Recognition & Participation</h2> | |
<ul> | |
<li>Invited Participant and Presenter, <a href="http://archivesunleashed.com">Archives Unleashed 2.0: Web Archive Datathon</a>, June 2016.</li> | |
<li>Invited Participant, <a href="http://archivesunleashed.ca">Archives Unleashed: Web Archive Hackathon</a>, March 2016.</li> | |
<li>Sole Presenter, Old Dominion University Department of Computer Science PhD Gathering, November 2015.</li> | |
<li>Best Poster for <a href="papers/2015_jcdl_mobileMink.pdf">"Mobile Mink: Merging Mobile and Desktop Archived Webs"</a> at the ACM/IEEE Joint Conference on Digital Libraries (JCDL), June 2015.</li> | |
<li>Best Student Paper for <a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_damage.pdf">"Not All Mementos Are Created Equal: Measuring The Impact Of Missing Resources"</a> at IEEE/ACM Digital Libraries 2014, September 2014.</li> | |
<li>NASA <a href="http://vsgc.odu.edu/sf/gradfellow/">Virginia Space Grant Consortium</a> <a href="http://vsgc.odu.edu/awardees/20142015/">Graduate Fellow</a>, August 2014.</li> | |
<li><a href="http://www.cs.odu.edu/~mkelly/presentations/2014_pesUniversity_browserBasedDigitalPreservation.pptx">Doctoral Student Presenter</a>, "Browser-Based Digital Preservation" for Visiting <a href="http://pes.edu/">PES University</a> Students, Old Dominion University, July 2014.</li> | |
<li><a href="http://www.cs.odu.edu/~mkelly/presentations/2013_cs595_movieExplorer.pptx">Guest Presenter</a>, CS595 - Intro to Web Science, Old Dominion University, October 2013.</li> | |
<li><a href="http://blogs.loc.gov/digitalpreservation/2012/08/warcreate-and-future-stewardship-an-interview-with-mat-kelly/">Featured Interviewee</a>, The Signal Digital Preservation Blog, August 2012.</li> | |
<li><a href="http://cs.harding.edu/wac-workshop2012/participants.html">Participant</a>, Web Archiving Cooperative (WAC) Summer Workshop, June 2012.</li> | |
<li><a href="http://blogs.loc.gov/digitalpreservation/2012/06/announcing-five-ndsa-innovation-award-winners/">Future Steward Innovation Award Recipient</a>, National Digital Stewardship Alliance (NDSA) / Library of Congress, July 2012.</li> | |
<li><a href="http://www.cs.odu.edu/show_features.shtml?64">Featured Grad Student</a>, Old Dominion University Computer Science Department, June 2012.</li> | |
<li>Reviewer, Joint Conference on Digital Libraries (JCDL) 2012, March 2012.</li> | |
</ul> | |
</section> | |
<section id="teaching"> | |
<h2>Teaching</h2> | |
<ul> | |
<li class="oduphd">Spring 2015: <a href="http://www.cs.odu.edu/~mkelly/semester/2015_spring/cs418/">CS418 - Web Programming</a></li> | |
</ul> | |
</section> | |
<section id="courseworkHistory"> | |
<h2>Coursework History</h2> | |
<ul> | |
<li class="oduphd">Summer 2016 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2016 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2015 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2015 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2015 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2014 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2014 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2014 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2013 | |
<ul> | |
<li>CS595 - <a href="http://www.cs.odu.edu/~mln/teaching/cs595-f13/">Introduction to Web Science</a> (<a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)</li> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
<li>CS690 - Colloquium</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2013 | |
<ul> | |
<li>CS891 - Graduate Seminar (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
<li>CS690 - Colloquium</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2013 | |
<ul> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~mweigle/CS795-S13/Home">Applied Visual Analytics</a> (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>) | |
<ul> | |
<li>Project: You're Gonna Die: Diet Edition (<a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project1/finalReport.pdf">report</a>, <a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project1/">visualization</a>)</li> | |
<li>Project: Box Office Movie Rating and Take Prediction (<a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project2/CS895S13P2_FinalReport_Kelly.pdf">report</a>, <a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project2/">visualization</a>)</li> | |
</ul> | |
</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2012 | |
<ul> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~mweigle/CS795-F12/Home">Information Visualization</a> (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>) | |
<ul> | |
<li>Project: <a href="http://www.cs.odu.edu/~mkelly/cs795f12/final/finalReport.pdf">BibT<sub class="texE">e</sub>X Corpus Visualizer</a></li> | |
</ul> | |
</li> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~olariu/cs795-f-2012.html">Topics: Adventures in Sensor Networks</a> (<a href="http://www.cs.odu.edu/~olariu/">Dr. Stephan Olariu</a>)<ul> | |
<li><a href="http://www.cs.odu.edu/~mkelly/semester/2012_fall/cs895SensorNetworks/CS895_midTermPresentation_matKelly.pdf">Presentation</a> of <a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5585658">a recent paper on sensor networks</a></li> | |
<li>Project/Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2012_fall/cs895SensorNetworks/CS895_projectPresentation_matKelly.pdf">Runtime Reprogramming on TinyOS Sans Deluge Modifications</a></li> | |
</ul></li> | |
</ul></li> | |
<li class="odu">Summer 2012<ul> | |
<li>CS891 - Graduate Seminar (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
<li class="odu">Spring 2012<ul> | |
<li>CS896 - Topics in Computer Science (<a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)</li> | |
<li>CS699 - Thesis Research (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a> & <a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)<ul> | |
<li>Defense Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2012_summer/thesis_presentation.pptx">An Extensible Framework for Creating Personal Web Archives of Content Behind Authentication</a></li> | |
<li>Thesis: <a href="http://www.cs.odu.edu/~mweigle/papers/kelly-thesis-12.pdf">An Extensible Framework for Creating Personal Archives of Web Resources Requiring Authentication</a></li></ul> | |
</li> | |
</ul> | |
</li> | |
<li class="odu">Fall 2011<ul> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~olariu/cs795-895-sm.html">Topics: Stochastic Modeling Performance Evaluation</a> (<a href="http://www.cs.odu.edu/~olariu/">Dr. Stephan Olariu</a>)<ul> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_stochasticModeling_midtermPresentation.pdf">Midterm Presentation on a chosen Stochastic Modeling Problem</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_stochasticModeling_finalPresentation.pdf">Stochastic Modeling Paper</a></li> | |
</ul></li> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~mln/teaching/cs895-f11/">Topics: Web-based Information Retrieval</a> (<a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)<ul> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation1.pptx">Evaluation and Relation</a> of a <a href="http://quod.lib.umich.edu/j/jep/3336451.0007.104?view=text;rgn=main" title="The Deep Web: Surfacing Hidden Value by Michael K. Bergman">Seminal Paper</a> and a <a href="http://web.eecs.umich.edu/~michjc/papers/cafarella-webscale-sigmodrecord08.pdf" title="Web-Scale Extraction of Structured Data by Michael J. Cafarella, Jayant Madhavan & Alon Halevy">Followup Paper</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation2.pptx">Evaluation and Relation</a> of a <a href="http://www.aclweb.org/anthology/A88-1019.pdf" title="A Stochastic Parts Program and Noun Phrase Parser for Unrestricted Text by Kenneth Ward Church">Seminal Paper</a> and a <a href="http://www.aclweb.org/anthology/E93-1046" title="Ambiguity Resolution In A Reductionist Parser by Atro Voutilainen & Pasi Tapanainen">Followup Paper</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation3.pptx">Evaluation and Relation</a> of a <a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5392672&abstractAccess=no&userType=inst" title="The Automatic Creation of Literature Abstracts by H. P. Luhn">Seminal Paper</a> and a <a href="http://dl.acm.org/citation.cfm?id=215333" title="A Trainable Document Summarizer by Julian Kupiec, Jan Pedersen & Francine Chen">Followup Paper</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation4.pptx">Evaluation and Relation</a> of a <a href="http://www.aaai.org/ojs/index.php/aimagazine/article/viewArticle/1294" title="Question Answering from Frequently Asked Question Files by Robin D. Burke, Kristian J Hammond, Valdimir Kulyukin, Steven L. Lytinen, Noriko Tomurom & Scott Schoenberg">Seminal Paper</a> and a <a href="http://dl.acm.org/citation.cfm?id=1099572" title="Finding Similar Questions in large Question and Answer Archives by Jiwoon Jeon, W. Bruce Croft and Joon Ho Lee">Followup Paper</a></li> | |
</ul></li> | |
<li>CS699 - Thesis Research (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
<li>CS690 - Colloquium</li></ul> | |
</li> | |
<li class="odu">Summer 2011<ul> | |
<li>CS697 - Independent Study In CS (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)<ul> | |
<li><a href="http://www.cs.odu.edu/~mkelly/semester/2011_summer/independent_study_report.pdf">Report on work done</a></li> | |
<li>Project: <a href="https://web.archive.org/web/20110831021613/http://hcil.cs.umd.edu/localphp/hcil/vast11/">IEEE VAST Challenge</a> 2011 (<a href="http://matkelly.com/projects/VAST2011/">submission</a>) (<a href="http://www.cs.odu.edu/~mkelly/semester/2011_summer/submission_review_vast.txt">results</a>)</li> | |
<li>Investigation of <a href="http://docs.tinyos.net/index.php/Deluge_T2">Deluge T2</a> on <a href="https://github.com/tinyos/tinyos-main">TinyOS</a>-based motes for project in Fall 2011</li> | |
<li>Validation of <a href="http://www.cs.odu.edu/~mweigle/papers/tmix-nsdoc.pdf">Tmix</a> for ns-2 and porting of delaybox for <a href="http://www.nsnam.org/">ns-3</a></li> | |
<li>Initial investigation of <a href="https://en.wikipedia.org/wiki/Universal_Software_Radio_Peripheral">USRP</a>s for <a href="http://www.cs.odu.edu/~nadeem/">Dr. Tamer Nadeem</a>. Ongoing into Fall 2011.</li> | |
<li>Further programming of <a href="https://github.com/machawk1/archivefacebook">Archive Facebook</a> for <a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>/<a href="http://ws-dl.blogspot.com">Web Science and Digital Libraries Research Group</a>.<ul> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/archivefb/presentation.pptx">Archive Facebook</a> at NDIIPP/NDSA Partner Meetup in Washington, DC (<a href="http://ws-dl.blogspot.com/2011/07/2011-07-25-ndsandiipp-partner-meetup.html">blog post</a>)</li></ul> | |
</li></ul> | |
</li> | |
</ul></li> | |
<li class="odu">Spring 2011<ul> | |
<li>CS665 - <a href="http://www.cs.odu.edu/~olariu/cs665.html">Computer Architecture</a> (<a href="http://www.cs.odu.edu/~olariu/">Dr. Stephan Olariu</a>)<ul> | |
<li><a href="https://github.com/machawk1/scoreboarding">Project: An illustration of Scoreboarding dynamics</a></li></ul> | |
</li> | |
<li>CS695 - <!--<a href="http://www.cs.odu.edu/~yaohang/cs695/">-->Topics: Monte Carlo Simulation<!--</a>--> (<a href="http://www.cs.odu.edu/~yaohang/">Dr. Yaohang Li</a>)<ul> | |
<li><a href="http://www.cs.odu.edu/~mkelly/semester/2011_spring/cs695_montecarlosimulation_20110426_paper.docx">Paper</a>/<a href="http://www.cs.odu.edu/~mkelly/semester/2011_spring/cs695_montecarlosimulation_20110412_presentation.pptx">Presentation</a>: Simulated Annealing and N Generals as applied to a Synchronized Distributed Operation</li></ul> | |
</li> | |
</ul></li> | |
<li class="odu">Fall 2010 | |
<ul> | |
<li>CS600 - Algorithms and Data Structures (Dr. Desh Ranjan)</li> | |
<li>CS795 - Topics: Machine Learning (<a href="http://www.cs.odu.edu/~zeil/">Dr. Steven J. Zeil</a>) | |
<ul> | |
<li>Paper/Presentation: A Subjectivity Free Analysis and Predictive Scheme for Ranking College Football Teams Using Perceptrons</li> | |
</ul> | |
</li> | |
</ul> | |
</li> | |
<li class="citadel">Spring 2009 | |
<ul> | |
<li>CSCI603 - Object-Oriented Design Patterns (Dr. Christopher W. Starr) | |
<ul> | |
<li>Project: Object-Oriented Design Patterns in OCaml</li> | |
</ul> | |
</li> | |
<li>CSCI618 - <!--<a href="http://macs.citadel.edu/rudolphg/csci618/091/index.html">-->Programming Languages<!--</a>--> (<a href="http://www.mathcs.citadel.edu/rudolphg/">Dr. George Rudolph</a>)<ul> | |
<li>Project: <a href="http://csci618.matkelly.com/">An Exploration of OCaml</a></li></ul> | |
</li> | |
</ul></li> | |
<li class="citadel">Fall 2008<ul> | |
<li>CSCI602 - Foundations of Software Engineering (<a href="http://www.mathcs.citadel.edu/rudolphg/">Dr. George Rudolph</a>)<ul> | |
<li>Projects: Extensive Documentation for the open source <a href="http://spaz.ca/cronometer/">CRON-O-Meter</a> Project</li></ul> | |
</li> | |
<li>CSCI601 - Data Modeling and Database Design (<a href="http://www.cs.cofc.edu/~bowring/">Dr. Jim Bowring</a>)</li> | |
</ul></li> | |
<li class="citadel">Spring 2008<ul> | |
<li>CSCI616 - Automata (<a href="http://www.cs.cofc.edu/~mccauley/">Dr. Renée McCauley</a>)</li> | |
</ul></li> | |
<li class="uf">Spring 2006<ul> | |
<li>EEL4744C - Microprocessor Applications (<a href="http://www.ece.ufl.edu/users/gugel-karl">Dr. Karl Gugel</a>)</li> | |
</ul></li> | |
<li class="uf">Fall 2005<ul> | |
<li>CAP4800 - Systems Simulation (<a href="http://www.cise.ufl.edu/~fishwick/">Dr. Paul Fishwick</a>)<ul> | |
<li>Project: Deadlocked Philosophers, a simulation illustrating the Dining Philosophers and Resource Deadlock ideas</li></ul> | |
</li> | |
<li>CIS4914 - Senior Project (<a href="http://www.cise.ufl.edu/~mssz/">Dr. Mark S. Schmalz</a>, <a href="http://www.cise.ufl.edu/~dts/">Dave Small</a>)<ul> | |
<li>Project: "<a href="https://sourceforge.net/projects/ufseniorproject/">Project: Bob</a>" - a team-based rapidly developed networked 3-D turn-based strategy game.</li></ul> | |
</li> | |
<li>COT4501 - Numerical Analysis - A Computational Approach (<a href="http://www.math.ufl.edu/~rs/">Dr. Rick L. Smith</a>)</li> | |
</ul></li> | |
<li class="uf">Summer 2005<ul> | |
<li>GEO1010 - Geography for a Changing World</li> | |
<li>CEN4500C - Computer Networking Fundamentals (<a href="http://www.cise.ufl.edu/~dts/">Dave Small</a>)</li> | |
<li>ENC1102 - Argument and Persuasion</li> | |
<li>STA4321 - Introduction to Probability</li> | |
</ul></li> | |
<li class="uf">Spring 2005<ul> | |
<li>CEN3031 - Introduction to Software Engineering (<a href="http://www.cise.ufl.edu/~tyavuz/">Dr. Tuba Yavuz</a>)</li> | |
<li>COP4600 - Operating Systems (Dr. Rob Cubert)</li> | |
<li>WIS2040 - Wildlife Issues</li> | |
</ul></li> | |
<li class="uf">Fall 2004<ul> | |
<li>PHY2054 - Physics 2</li> | |
<li>MAS3114 - Computational Linear Algebra</li> | |
</ul></li> | |
<li class="uf">Summer 2004<ul> | |
<li>CDA3101 - Introduction to Computer Organization</li> | |
<li>COP3530 - Data Structures and Algorithms (<a href="http://www.cise.ufl.edu/~sahni/">Dr. Sartaj K. Sahni</a>)</li> | |
</ul></li> | |
<li class="uf">Spring 2004<ul> | |
<li>EEL3701C - <a href="http://mil.ufl.edu/4744/">Digital Logic and Computer Systems</a> (<a href="http://www.mil.ufl.edu/~ems/">Dr. Eric M. Schwartz</a>)</li> | |
<li>PHY4320 - Philosophy of Mind (<a href="http://www.clas.ufl.edu/users/gwitmer/">Dr. D. Gene Witmer</a>)</li> | |
<li>SPN1131 - Beginning Spanish 2</li> | |
</ul></li> | |
<li class="uf">Fall 2003<ul> | |
<li>PHI3130 - Symbolic Logic (<a href="http://faculty.arts.ubc.ca/maydede/">Dr. Murat Aydede</a>)</li> | |
<li>SPN1130 - Beginning Spanish 1</li> | |
</ul></li> | |
<li class="uf">Summer 2003<ul> | |
<li>COT3100 - Applied Discrete Structures</li> | |
<li>PHY2049L - Physics 2 Lab</li> | |
</ul></li> | |
<li class="uf">Spring 2003<ul> | |
<li>ENC2210 - Technical Writing</li> | |
<li>PHI3500 - Metaphysics (<a href="http://www.clas.ufl.edu/users/gwitmer/">Dr. D. Gene Witmer</a>)<ul> | |
<li>Paper: Redefenere Universalia - a proposed solution of the identification of universals through correlating the understanding of universals with Flat Landers</li></ul> | |
</li> | |
<li>PHY2048 - Physics 1</li> | |
<li>POS2041 - American Federal Government</li> | |
</ul></li> | |
<li class="uf">Fall 2002<ul> | |
<li>BSC2008 - Biological Sciences: Evolution, Ecology and Behavior</li> | |
<li>MAC2312 - Calculus 2</li> | |
<li>PHI2630 - Contemporary Moral Issues</li> | |
</ul></li> | |
<li class="uf">Summer 2002<ul> | |
<li>MAC2313 - Calculus 3</li> | |
<li>PHY2048L - Physics 1 Lab</li> | |
</ul></li> | |
<li class="uf">Spring 2002<ul> | |
<li>CGS2414 - Computer Programming Using Java (<a href="http://www.cise.ufl.edu/~pjd/">Peter J. Dobbins</a>)</li> | |
<li>CIS3020 - Advanced Programming Fundamentals/Intro to CIS</li> | |
</ul></li> | |
<li class="uf">Fall 2001<ul> | |
<li>CHM2045L - Chemistry 1 Lab</li> | |
<li>ENC1101 - Expositional and Argumentative Writing</li> | |
<li>MAC2311 - Calculus 1</li> | |
</ul></li> | |
<li>Spring 2001<ul> | |
<li>CHM2030 - Introduction to College Chemistry 1</li> | |
<li>CHM2030L - Introduction to College Chemistry 1 Lab</li> | |
</ul></li> | |
</ul> | |
<h3>Coursework Key</h3> | |
<ul> | |
<li class="oduphd">Doctor of Philosophy, Computer Science; Old Dominion University, Norfolk, Virginia, Expected 2016</li> | |
<li class="odu">Master of Science, Computer Science; Old Dominion University, Norfolk, Virginia, August 2012</li> | |
<li class="citadel">Coursework for Master of Science, Computer Science; The Citadel, Charleston, South Carolina</li> | |
<li class="uf">Bachelor of Science, Computer Science; University of Florida, Gainesville, Florida, June 2006</li> | |
</ul> | |
</section> | |
<section id="projects"> | |
<h2>Recent Software Projects</h2> | |
<ul> | |
<li><a href="https://github.com/oduwsdl/ipwb"><em>Interplanetary Wayback (ipwb)</em></a> - Partition and integration of WARCs into IPFS for more redundant and persistent web archives</li> | |
<li><a href="https://github.com/thing342/mobilememento"><em>Mobile Mink</em></a> - Android application for aggregating and accessing mobile and desktop mementos</li> | |
<li><a href="https://github.com/machawk1/mink"><em>Mink</em></a> - Chrome extension to integrate the live and archived web using Memento</li> | |
<li><a href="https://github.com/machawk1/tachyon"><em>Tachyon</em></a> - Time travel for the web. Memento browser plugin for Google Chrome</li> | |
<li><a href="http://matkelly.com/wail"><em>Web Archiving Integration Layer (WAIL)</em></a> - One-Click User Instigated Preservation</li> | |
<li><a href="http://matkelly.com/warcreate"><em>WARCreate</em></a> - Google Chrome extension to allow a user to create a Web ARCive (WARC) file from any webpage.</li> | |
<li><a href="http://www.cs.odu.edu/~mkelly/reversearchiveit/reverseArchiveIt05102011.crx"><em>Reverse Archive-It</em></a> - Quick prototype to determine the collections to which a webpage has been associated by <a href="https://archive-it.org">Archive-It</a>. (<a href="http://www.cs.odu.edu/~mkelly/reversearchiveit/reverseArchiveItDemo.avi">video demo</a>)</li> | |
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/archivefacebook/"><em>ArchiveFacebook</em></a> - Mozilla Firefox add-on to allow a user to easily download and save the contents of his/her Facebook profile.</li> | |
</ul> | |
</section> | |
<section id="contact"> | |
<h2>Contact</h2> | |
<ul> | |
<li>mkelly at cs.odu.edu (E-mail)</li> | |
<li><a href="https://twitter.com/machawk1" rel="me">@machawk1</a> (Twitter)</li> | |
<li><a href="https://github.com/machawk1" rel="me">GitHub</a></li> | |
<li><a href="http://orcid.org/0000-0002-0236-7389">orcid:0000-0002-0236-7389</a></li> | |
</ul> | |
<p>Further information including employment history can be found at <a href="http://matkelly.com" rel="me">matkelly.com</a></p> | |
</section> | |
</body> | |
</html> | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/ | |
WARC-Date: 2016-08-15T21:19:34Z | |
WARC-Concurrent-To: <urn:uuid:cff684e0-9204-4cdc-a4ac-d523f2e2d5f7> | |
WARC-Record-ID: <urn:uuid:c7f75672-d1e6-4cd4-9a68-cdbe3a1a6a4a> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 271 | |
GET /~mkelly/ HTTP/1.0 | |
Connection: Close | |
Referer: http://matkelly.com/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/ | |
WARC-Date: 2016-08-15T21:19:34Z | |
WARC-Concurrent-To: <urn:uuid:cff684e0-9204-4cdc-a4ac-d523f2e2d5f7> | |
WARC-Record-ID: <urn:uuid:3163185e-8d42-4ca3-be91-092becfb2516> | |
Content-Type: application/warc-fields | |
Content-Length: 12224 | |
seed: | |
fetchTimeMs: 337 | |
charsetForLinkExtraction: UTF-8 | |
usingCharsetInHTML: UTF-8 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
outlink: http://www.cs.odu.edu/~mkelly/_js/html5shiv.js E script/@src | |
outlink: http://www.cs.odu.edu/~mkelly/style.css E link/@href | |
outlink: https://plus.google.com/u/0/103717513886594190386 E link/@href | |
outlink: http://www.cs.odu.edu/~mkelly/_js/html2canvas.js E script/@src | |
outlink: http://www.cs.odu.edu/~mkelly/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/mofro.png E img/@src | |
outlink: http://matkelly.com/cv L a/@href | |
outlink: http://warcreate.com/ L a/@href | |
outlink: http://matkelly.com/wail L a/@href | |
outlink: https://github.com/machawk1/mink L a/@href | |
outlink: http://www.neh.gov/divisions/odh/grant-news/announcing-seven-digital-humanities-implementation-grants-july-2014 L a/@href | |
outlink: http://github.com/oduwsdl/ipwb L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2016_jcdl_ipwb.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/alam-jcdl2016.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2016_archivesUnleashed_aggregation.pptx L a/@href | |
outlink: http://www.ieee-tcdl.org/Bulletin/v11n3/papers/149-Kelly.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-tcdl2015.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2015_jcdl_aframework.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-jcdl2015.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2015_jcdl_mobileMink.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/jordan-jcdl2015.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2015_columbiawac_thumbnails.pptx L a/@href | |
outlink: http://link.springer.com/article/10.1007/s00799-015-0150-6 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/brunelle-ijdl2015-damage.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2015_vsgc_imagery.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2015_vsgc_imagery.pptx L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-vsgc2015.bib L a/@href | |
outlink: http://link.springer.com/article/10.1007%2Fs00799-015-0140-8 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/brunelle-ijdl2015-impact.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2014_milcom_retasking.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/ruffing-milcom2014.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2014_dl_damage.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/brunelle-dl2014.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2014_dl_acid.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-dl2014-acid.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2014_dl_mink.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-dl2014-mink.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2014_digitalPreservation.ppt L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/posters/2014_digpres_thumbnails.pdf L a/@href | |
outlink: http://www.dlib.org/dlib/november13/kelly/11kelly.html L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-dlib2013.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2013_archiveItPartnerMeeting_archiveWhatISeeNow.pptx L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2013_ieeevis_boxofficeprediction.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/posters/2013_vis_boxoffice.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-vis2013.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2013_wolframDataSumnmit_archiveTheArchives.ppt L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2013_digitalPreservation_heritrixMadeEasy.pptx L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2013_tpdl_archivabilityOverTime_final.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-tpdl2013.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/posters/2013_pda_wail.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-pda2013.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2012_digitalPreservation_warcreate.pptx L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2012_digitalPreservation_warcreate.zip L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2012_jcdl_warcreate.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/posters/2012_jcdl_warcreate.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/kelly-jcdl2012.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/posters/2012_agu_cloudproducts.ppt L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/publications/chee-agu2011.bib L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/posters/2011_cnu_alert.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2011_ndiipp_archivefacebook.pptx L a/@href | |
outlink: https://software.intel.com/sites/datacentermanager/node_manager_white_paper_bmw.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/papers/2009_intel_node_manager_white_paper_bmw.pdf L a/@href | |
outlink: http://archivesunleashed.com/ L a/@href | |
outlink: http://archivesunleashed.ca/ L a/@href | |
outlink: http://vsgc.odu.edu/sf/gradfellow/ L a/@href | |
outlink: http://vsgc.odu.edu/awardees/20142015/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2014_pesUniversity_browserBasedDigitalPreservation.pptx L a/@href | |
outlink: http://pes.edu/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/presentations/2013_cs595_movieExplorer.pptx L a/@href | |
outlink: http://blogs.loc.gov/digitalpreservation/2012/08/warcreate-and-future-stewardship-an-interview-with-mat-kelly/ L a/@href | |
outlink: http://cs.harding.edu/wac-workshop2012/participants.html L a/@href | |
outlink: http://blogs.loc.gov/digitalpreservation/2012/06/announcing-five-ndsa-innovation-award-winners/ L a/@href | |
outlink: http://www.cs.odu.edu/show_features.shtml?64 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2015_spring/cs418/ L a/@href | |
outlink: http://www.cs.odu.edu/~mweigle/ L a/@href | |
outlink: http://www.cs.odu.edu/~mln/teaching/cs595-f13/ L a/@href | |
outlink: http://www.cs.odu.edu/~mln/ L a/@href | |
outlink: http://www.cs.odu.edu/~mweigle/CS795-S13/Home L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2013_spring/project1/finalReport.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2013_spring/project1/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2013_spring/project2/CS895S13P2_FinalReport_Kelly.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2013_spring/project2/ L a/@href | |
outlink: http://www.cs.odu.edu/~mweigle/CS795-F12/Home L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/cs795f12/final/finalReport.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~olariu/cs795-f-2012.html L a/@href | |
outlink: http://www.cs.odu.edu/~olariu/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2012_fall/cs895SensorNetworks/CS895_midTermPresentation_matKelly.pdf L a/@href | |
outlink: http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5585658 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2012_fall/cs895SensorNetworks/CS895_projectPresentation_matKelly.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2012_summer/thesis_presentation.pptx L a/@href | |
outlink: http://www.cs.odu.edu/~mweigle/papers/kelly-thesis-12.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~olariu/cs795-895-sm.html L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_stochasticModeling_midtermPresentation.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_stochasticModeling_finalPresentation.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mln/teaching/cs895-f11/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation1.pptx L a/@href | |
outlink: http://quod.lib.umich.edu/j/jep/3336451.0007.104?view=text;rgn=main L a/@href | |
outlink: http://web.eecs.umich.edu/~michjc/papers/cafarella-webscale-sigmodrecord08.pdf L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation2.pptx L a/@href | |
outlink: http://www.aclweb.org/anthology/A88-1019.pdf L a/@href | |
outlink: http://www.aclweb.org/anthology/E93-1046 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation3.pptx L a/@href | |
outlink: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5392672&abstractAccess=no&userType=inst L a/@href | |
outlink: http://dl.acm.org/citation.cfm?id=215333 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation4.pptx L a/@href | |
outlink: http://www.aaai.org/ojs/index.php/aimagazine/article/viewArticle/1294 L a/@href | |
outlink: http://dl.acm.org/citation.cfm?id=1099572 L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_summer/independent_study_report.pdf L a/@href | |
outlink: https://web.archive.org/web/20110831021613/http://hcil.cs.umd.edu/localphp/hcil/vast11/ L a/@href | |
outlink: http://matkelly.com/projects/VAST2011/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_summer/submission_review_vast.txt L a/@href | |
outlink: http://docs.tinyos.net/index.php/Deluge_T2 L a/@href | |
outlink: https://github.com/tinyos/tinyos-main L a/@href | |
outlink: http://www.cs.odu.edu/~mweigle/papers/tmix-nsdoc.pdf L a/@href | |
outlink: http://www.nsnam.org/ L a/@href | |
outlink: https://en.wikipedia.org/wiki/Universal_Software_Radio_Peripheral L a/@href | |
outlink: http://www.cs.odu.edu/~nadeem/ L a/@href | |
outlink: https://github.com/machawk1/archivefacebook L a/@href | |
outlink: http://ws-dl.blogspot.com/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/archivefb/presentation.pptx L a/@href | |
outlink: http://ws-dl.blogspot.com/2011/07/2011-07-25-ndsandiipp-partner-meetup.html L a/@href | |
outlink: http://www.cs.odu.edu/~olariu/cs665.html L a/@href | |
outlink: https://github.com/machawk1/scoreboarding L a/@href | |
outlink: http://www.cs.odu.edu/~yaohang/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_spring/cs695_montecarlosimulation_20110426_paper.docx L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/semester/2011_spring/cs695_montecarlosimulation_20110412_presentation.pptx L a/@href | |
outlink: http://www.cs.odu.edu/~zeil/ L a/@href | |
outlink: http://www.mathcs.citadel.edu/rudolphg/ L a/@href | |
outlink: http://csci618.matkelly.com/ L a/@href | |
outlink: http://spaz.ca/cronometer/ L a/@href | |
outlink: http://www.cs.cofc.edu/~bowring/ L a/@href | |
outlink: http://www.cs.cofc.edu/~mccauley/ L a/@href | |
outlink: http://www.ece.ufl.edu/users/gugel-karl L a/@href | |
outlink: http://www.cise.ufl.edu/~fishwick/ L a/@href | |
outlink: http://www.cise.ufl.edu/~mssz/ L a/@href | |
outlink: http://www.cise.ufl.edu/~dts/ L a/@href | |
outlink: https://sourceforge.net/projects/ufseniorproject/ L a/@href | |
outlink: http://www.math.ufl.edu/~rs/ L a/@href | |
outlink: http://www.cise.ufl.edu/~tyavuz/ L a/@href | |
outlink: http://www.cise.ufl.edu/~sahni/ L a/@href | |
outlink: http://mil.ufl.edu/4744/ L a/@href | |
outlink: http://www.mil.ufl.edu/~ems/ L a/@href | |
outlink: http://www.clas.ufl.edu/users/gwitmer/ L a/@href | |
outlink: http://faculty.arts.ubc.ca/maydede/ L a/@href | |
outlink: http://www.cise.ufl.edu/~pjd/ L a/@href | |
outlink: https://github.com/oduwsdl/ipwb L a/@href | |
outlink: https://github.com/thing342/mobilememento L a/@href | |
outlink: https://github.com/machawk1/tachyon L a/@href | |
outlink: http://matkelly.com/warcreate L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/reversearchiveit/reverseArchiveIt05102011.crx L a/@href | |
outlink: https://archive-it.org/ L a/@href | |
outlink: http://www.cs.odu.edu/~mkelly/reversearchiveit/reverseArchiveItDemo.avi L a/@href | |
outlink: https://addons.mozilla.org/en-US/firefox/addon/archivefacebook/ L a/@href | |
outlink: https://twitter.com/machawk1 L a/@href | |
outlink: https://github.com/machawk1 L a/@href | |
outlink: http://orcid.org/0000-0002-0236-7389 L a/@href | |
outlink: http://matkelly.com/ L a/@href | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: dns:plus.google.com | |
WARC-Date: 2016-08-15T21:19:35Z | |
WARC-IP-Address: 127.0.1.1 | |
WARC-Record-ID: <urn:uuid:53dad764-d9d4-49e4-bce9-25f35b11f0f0> | |
Content-Type: text/dns | |
Content-Length: 261 | |
20160815211935 | |
plus.google.com. 300 IN A 64.233.176.113 | |
plus.google.com. 300 IN A 64.233.176.101 | |
plus.google.com. 300 IN A 64.233.176.100 | |
plus.google.com. 300 IN A 64.233.176.138 | |
plus.google.com. 300 IN A 64.233.176.139 | |
plus.google.com. 300 IN A 64.233.176.102 | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/favicon.ico | |
WARC-Date: 2016-08-15T21:19:38Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:REFT5WMTCAKQ5YGE5FHA2OTTESAAL4CS | |
WARC-Record-ID: <urn:uuid:1387faf9-65f3-4c18-9cff-b349554e0ff1> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 1453 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:38 GMT | |
Content-Type: image/x-icon | |
Content-Length: 1150 | |
Last-Modified: Sun, 12 Jan 2014 02:50:23 GMT | |
Connection: close | |
ETag: "52d202ef-47e" | |
Expires: Thu, 10 Aug 2017 21:19:38 GMT | |
Cache-Control: max-age=31104000 | |
Accept-Ranges: bytes | |
\00\00\00\00\00\00\00 \00h\00\00\00\00\00(\00\00\00\00\00\00 \00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00\00\00\00\00����̼��\00\00\00\00���������ɿ��ɿ���������\00\00\00\00̼������\00\00\00\00\00\00\00\00\00\00\00\00����}R0��������i8��ɿ��mP��z`��ɿ�i8��������}R0�����\00\00\00\00\00\00\00\00�z`�_+\00���p�}R0�_+\00�¯��_+\00�_+\00�¯��_+\00�}R0���p�_+\00��z`�\00\00\00\00\00\00\00\00_+\00�_+\00�}R0�_+\00�_+\00��`@�_+\00�_+\00��`@�_+\00�_+\00��`@�_+\00�_+\00�\00\00\00\00\00\00\00\00i8�_+\00��mP�_+\00�_+\00��mP�_+\00�_+\00��mP�_+\00�_+\00��mP�_+\00�i8�\00\00\00\00\00\00\00\00�����ɿ����������ɿ�\00\00\00\00�`@��`@�\00\00\00\00�ɿ����������ɿ�����\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00�`@��`@�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00_+\00�_+\00�_+\00�\00\00\00\00\00\00\00\00\00\00\00\00�\00\00�\00\00�\00\00�\00\00�\00\00�\00\00�\00\00�A\00\00�\00\00��\00\00ݻ\00\00��\00\00��\00\00߿\00\00ݻ\00\00���� | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/favicon.ico | |
WARC-Date: 2016-08-15T21:19:38Z | |
WARC-Concurrent-To: <urn:uuid:1387faf9-65f3-4c18-9cff-b349554e0ff1> | |
WARC-Record-ID: <urn:uuid:b2bb8b91-2fe6-4550-9c53-9381a29da549> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 284 | |
GET /favicon.ico HTTP/1.0 | |
Connection: Close | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/favicon.ico | |
WARC-Date: 2016-08-15T21:19:38Z | |
WARC-Concurrent-To: <urn:uuid:1387faf9-65f3-4c18-9cff-b349554e0ff1> | |
WARC-Record-ID: <urn:uuid:4b4b4080-80dc-4572-b3f8-5320434caba6> | |
Content-Type: application/warc-fields | |
Content-Length: 174 | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RI | |
fetchTimeMs: 107 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: https://plus.google.com/robots.txt | |
WARC-Date: 2016-08-15T21:19:38Z | |
WARC-IP-Address: 64.233.176.113 | |
WARC-Payload-Digest: sha1:O7YMEOY3DDQM4URABDQBDY4C4DJHUBJK | |
WARC-Record-ID: <urn:uuid:8846a58c-71ef-41d6-bbf9-fd135b37cbc5> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 1674 | |
HTTP/1.0 200 OK | |
Content-Type: text/plain; charset=utf-8 | |
Cache-Control: no-cache, no-store, max-age=0, must-revalidate | |
Pragma: no-cache | |
Expires: Mon, 01 Jan 1990 00:00:00 GMT | |
Date: Mon, 15 Aug 2016 21:19:38 GMT | |
Strict-Transport-Security: max-age=10886400 | |
P3P: CP="This is not a P3P policy! See https://support.google.com/accounts/answer/151657?hl=en for more info." | |
Content-Security-Policy: report-uri /_/PlusAppUi/cspreport;script-src 'unsafe-inline' 'self' 'unsafe-eval' https://apis.google.com https://ssl.gstatic.com https://www.google.com https://www.gstatic.com https://s.ytimg.com https://www.googleapis.com https://support.google.com https://youtube.com https://youtube.googleapis.com | |
Server: ESF | |
X-XSS-Protection: 1; mode=block | |
X-Frame-Options: SAMEORIGIN | |
X-Content-Type-Options: nosniff | |
Set-Cookie: NID=84=SbG6NcKHHuYZpCXMX6jSaM7dyTI2lLh0SEiu-lU6fRUj9H3GEpYPSUf9G51MqYIfal8D5dhRzZ-a_IqnLh1bZ5buLRhsADH2XwQNGdgq9tFvPifPYO5Ym_LYjL59lL75;Domain=.google.com;Path=/;Expires=Tue, 14-Feb-2017 21:19:38 GMT;HttpOnly | |
Alternate-Protocol: 443:quic | |
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32,31,30" | |
Accept-Ranges: none | |
Vary: Accept-Encoding | |
User-agent: * | |
Allow: /_/PlusAppUi/ | |
Allow: /_/apps-static/ | |
Allow: /_/blank | |
Allow: /_/data | |
Allow: /_/explore | |
Allow: /_/im/_widget/render/ | |
Allow: /_/initialdata | |
Allow: /_/scs/ | |
Allow: /_/setbrowserprefs | |
Allow: /_/socialgraph/lookup/hovercards | |
Allow: /_/stream | |
Allow: /_/widget/render/ | |
Disallow: /_/ | |
Disallow: /s/ | |
Disallow: /app/basic/s/ | |
Disallow: /up/accesssuspended | |
Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xml | |
Sitemap: http://www.gstatic.com/communities/sitemap/communities-sitemap.xml | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: https://plus.google.com/robots.txt | |
WARC-Date: 2016-08-15T21:19:38Z | |
WARC-Concurrent-To: <urn:uuid:8846a58c-71ef-41d6-bbf9-fd135b37cbc5> | |
WARC-Record-ID: <urn:uuid:463cf5dc-fe50-4e88-a339-9d2f88fec9d1> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 243 | |
GET /robots.txt HTTP/1.0 | |
Connection: Close | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: plus.google.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: https://plus.google.com/robots.txt | |
WARC-Date: 2016-08-15T21:19:38Z | |
WARC-Concurrent-To: <urn:uuid:8846a58c-71ef-41d6-bbf9-fd135b37cbc5> | |
WARC-Record-ID: <urn:uuid:11abc173-ebc8-43b4-9413-47e98a6eb2be> | |
Content-Type: application/warc-fields | |
Content-Length: 205 | |
force-fetch: | |
via: https://plus.google.com/u/0/103717513886594190386 | |
hopsFromSeed: REP | |
fetchTimeMs: 233 | |
charsetForLinkExtraction: UTF-8 | |
outlink: https://plus.google.com/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html5shiv.js | |
WARC-Date: 2016-08-15T21:19:41Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:N3RVIFLVBNI52ZNGKIOR3WI2XI7CV2BI | |
WARC-Record-ID: <urn:uuid:6f108a29-89df-48ab-966c-ba529bce7524> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 2648 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:41 GMT | |
Content-Type: application/javascript | |
Content-Length: 2380 | |
Connection: close | |
Last-Modified: Tue, 06 Aug 2013 14:41:32 GMT | |
ETag: "94c-4e3486bc3ff10" | |
Accept-Ranges: bytes | |
Vary: Accept-Encoding | |
/* | |
HTML5 Shiv v3.6.2 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed | |
*/ | |
(function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag(); | |
a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x<style>article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}</style>"; | |
c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="<xyz></xyz>";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode|| | |
"undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup main mark meter nav output progress section summary time video",version:"3.6.2",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment(); | |
for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;d<h;d++)c.createElement(e[d]);return c}};l.html5=e;q(f)})(this,document); | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html5shiv.js | |
WARC-Date: 2016-08-15T21:19:41Z | |
WARC-Concurrent-To: <urn:uuid:6f108a29-89df-48ab-966c-ba529bce7524> | |
WARC-Record-ID: <urn:uuid:862cbc31-66a5-44a0-a5da-55390ce0f071> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 297 | |
GET /~mkelly/_js/html5shiv.js HTTP/1.0 | |
Connection: Close | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html5shiv.js | |
WARC-Date: 2016-08-15T21:19:41Z | |
WARC-Concurrent-To: <urn:uuid:6f108a29-89df-48ab-966c-ba529bce7524> | |
WARC-Record-ID: <urn:uuid:e332725f-c77d-43f2-92a6-c5fc3244155f> | |
Content-Type: application/warc-fields | |
Content-Length: 174 | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RE | |
fetchTimeMs: 141 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: https://plus.google.com/u/0/103717513886594190386 | |
WARC-Date: 2016-08-15T21:19:41Z | |
WARC-IP-Address: 64.233.176.113 | |
WARC-Payload-Digest: sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ | |
WARC-Record-ID: <urn:uuid:4005c3c7-64f3-4aee-a02a-294210ccef5d> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 488 | |
HTTP/1.0 302 Found | |
Content-Type: application/binary | |
Cache-Control: no-cache, no-store, max-age=0, must-revalidate | |
Pragma: no-cache | |
Expires: Mon, 01 Jan 1990 00:00:00 GMT | |
Date: Mon, 15 Aug 2016 21:19:41 GMT | |
Location: https://plus.google.com/103717513886594190386 | |
Server: ESF | |
Content-Length: 0 | |
X-XSS-Protection: 1; mode=block | |
X-Frame-Options: SAMEORIGIN | |
X-Content-Type-Options: nosniff | |
Alternate-Protocol: 443:quic | |
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32,31,30" | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: https://plus.google.com/u/0/103717513886594190386 | |
WARC-Date: 2016-08-15T21:19:41Z | |
WARC-Concurrent-To: <urn:uuid:4005c3c7-64f3-4aee-a02a-294210ccef5d> | |
WARC-Record-ID: <urn:uuid:bd4f1d45-bba4-4dbf-91da-e664908a4043> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 444 | |
GET /u/0/103717513886594190386 HTTP/1.0 | |
Connection: Close | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: plus.google.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
Cookie: NID=84=SbG6NcKHHuYZpCXMX6jSaM7dyTI2lLh0SEiu-lU6fRUj9H3GEpYPSUf9G51MqYIfal8D5dhRzZ-a_IqnLh1bZ5buLRhsADH2XwQNGdgq9tFvPifPYO5Ym_LYjL59lL75 | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: https://plus.google.com/u/0/103717513886594190386 | |
WARC-Date: 2016-08-15T21:19:41Z | |
WARC-Concurrent-To: <urn:uuid:4005c3c7-64f3-4aee-a02a-294210ccef5d> | |
WARC-Record-ID: <urn:uuid:dfc7abca-0025-42ec-af73-fe06b527eda7> | |
Content-Type: application/warc-fields | |
Content-Length: 244 | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RE | |
fetchTimeMs: 143 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: https://plus.google.com/103717513886594190386 R Location: | |
outlink: https://plus.google.com/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/style.css | |
WARC-Date: 2016-08-15T21:19:44Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:MCRPDMX7QG6EXZBUQPUOTBUJMG2XT3AP | |
WARC-Record-ID: <urn:uuid:e0cafe0b-6b19-47f3-acc5-29b06968ca1b> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 5044 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:45 GMT | |
Content-Type: text/css | |
Content-Length: 4789 | |
Connection: close | |
Last-Modified: Thu, 03 Dec 2015 03:16:04 GMT | |
ETag: "12b5-525f5cf9de503" | |
Accept-Ranges: bytes | |
Vary: Accept-Encoding | |
body {background-color: white; font-size: 16px;} | |
header{font-family: sans-serif; margin-bottom: 1.0em;} | |
h1 {color: #031fc9;} | |
h1,h2,h3 {margin: 0; padding: 0;} | |
section {width: 80%;} | |
img#mugShot {width: 200px; padding: 2px; border: 1px solid #003366; position: fixed; right: 5px; top: 5px; z-index: 2;} | |
li.uf {list-style-image: url(bullet_uf.png);} | |
li.odu {list-style-image: url(bullet_odu.png);} | |
li.citadel {list-style-image: url(bullet_citadel.png);} | |
li.oduphd {list-style-image: url(bullet_oduphd.png);} | |
ul li ul li {list-style-image: none;} /* only show icon for semesters, not courses */ | |
a {color: #031fc9;} | |
nav {position: fixed; right: 5px; top: 205px; text-align: center; z-index: 2;} | |
nav ul {list-style-type: none; width: 206px; } | |
nav ul#sections li {margin: 0; padding: 0; border-bottom: 1px dashed #003366;} | |
nav ul#sections li a {text-decoration: none; color: #031fc9; font-weight: bold; font-family: sans-serif; font-size: 0.8em; display: block;} | |
nav ul#sections li a:hover {color: white; background-color: #031fc9;} | |
nav ul#software {list-style-type: none; width: 70%; text-align: center; padding-left: 20px; display: block;} | |
nav ul#software li {float: left;} | |
nav ul#software li a {border: 0; display: block;} | |
nav ul#software li a img {width: 50px;} | |
nav ul li#cv {margin-top: 2.0em; font-size: 2.0em; border: 0;} | |
nav ul li#cv a {border: 1px solid #031fc9; border-radius: 10px; background-color: rgba(255,255,255,0.8);} | |
em.me {font-weight: bolder; font-style: normal;} | |
em.best {font-weight: bolder; color: red;} | |
#openMenu {display: none;} | |
/* Adapted from http://stackoverflow.com/questions/8160514/is-there-css-for-typesetting-the-latex-logo-in-html */ | |
sub.texE {text-transform: uppercase; vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em; } | |
a.goToTop {display: none;} | |
@media only screen and (-webkit-device-pixel-ratio:1.5) { | |
/*img#mugShot {position: relative; top: auto; right: auto;} | |
nav {position: relative; text-align: left; top: auto; right: auto;} | |
nav ul {margin: 0; padding: 0;} | |
header {margin-bottom: 0;}*/ | |
} | |
@media only screen and (-webkit-device-pixel-ratio:1.5) and (min-width: 400px){ | |
/*nav {top: 5px; left: 250px; right: auto; position: absolute;} | |
nav ul {list-style-type: disc; font-size: 1.25em;} | |
nav ul li {border-width: 0; width: 300px;}*/ | |
} | |
@media only screen and (min-width: 100px) and (max-width: 650px) { | |
img#mugShot {position: relative; top: auto; right: auto; margin: 0 auto; display: block;} | |
header h1, header h2, header h3 {text-align: center;} | |
h1 {margin-top: 0.25em;} | |
h2 {width: 100%; white-space: nowrap; font-size: 1.25em;} | |
h3 {font-size: 0.8em;} | |
ul, li {padding-left: 0; margin-left: 0; width: 100%;} | |
nav {position: relative; text-align: left; top: auto; right: auto;} | |
nav ul#sections {margin: 1.0em 0 1.0em 0; padding: 0; width: 100%;} | |
nav ul#sections li {border-bottom: none; background-color: white; border-bottom: 1px solid #ddd;} | |
nav ul#sections:first-child {border-top: 1px solid #ddd;} | |
nav ul#sections li a {text-decoration: none; padding: 2px 0px;} | |
header {margin-bottom: 0;} | |
a.goToTop {display: inline; margin-left: 1.0em; font-size: 0.8em; color: white; background-color: blue; text-decoration: none; font-family: sans-serif; white-space: nowrap;} | |
section ul {list-style-type: none; margin-left: 0;} | |
section ul li {margin-bottom: 1.0em;} | |
section#courseworkHistory ul {list-style-type: disc; margin-left: 1.0em;} | |
section#courseworkHistory ul ul li {margin-bottom: 0;} | |
.pinned {background: linear-gradient(to bottom, rgba(255,255,255,1) 80%,rgba(255,255,255,0) 100%); position: fixed; z-index: 3; top: 0; width: 100%; padding-bottom: 1.5em;} | |
.pinned h1, .pinned h2, .pinned h3 {font-size: 1.0em; width: 100%;} | |
.pinned h2 {font-size: 0.8em;} | |
.pinned h3 {font-size: 0.6em;} | |
.pinned img#mugShot {position: absolute; width: 50px; height: 50px; left: 0px; top: 5px; border: 1px solid #031fc9; padding: 0;} | |
.pinned img#openMenu {z-index: 99;position: absolute; width: 24px; height: 24px; right: 0px; top: 5px; border: 1px solid #031fc9; padding: 0;} | |
nav.vertical {position: fixed; top: 10px; right: 5px; z-index: 100; } | |
nav.vertical ul#sections {} | |
nav.vertical li {transform: rotate(90deg); position: relative; clear: both; float: left; width: 115px; display: block; font-size: 1.0em; height: 115px; } | |
nav.vertical li a {height: 2.0em;} | |
nav.vertical ul#sections li {background-color: transparent; text-align: center;} | |
nav.vertical ul#sections:first-child {padding-left: 100px;} | |
section {position: relative; z-index: 2;} | |
nav ul li#cv {font-size: 1.0em; margin-top: 1.0em; border: 0; text-align center;} | |
nav ul li#cv a:before{content: '⇩ DOWNLOAD ';} | |
} | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/style.css | |
WARC-Date: 2016-08-15T21:19:44Z | |
WARC-Concurrent-To: <urn:uuid:e0cafe0b-6b19-47f3-acc5-29b06968ca1b> | |
WARC-Record-ID: <urn:uuid:333c4c6f-669c-470b-8260-07ba3b980b2d> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 290 | |
GET /~mkelly/style.css HTTP/1.0 | |
Connection: Close | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/style.css | |
WARC-Date: 2016-08-15T21:19:44Z | |
WARC-Concurrent-To: <urn:uuid:e0cafe0b-6b19-47f3-acc5-29b06968ca1b> | |
WARC-Record-ID: <urn:uuid:0f1218a0-4583-42e2-896b-06b2bb0151ba> | |
Content-Type: application/warc-fields | |
Content-Length: 456 | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RE | |
fetchTimeMs: 288 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
outlink: http://www.cs.odu.edu/~mkelly/bullet_uf.png E =EMBED_MISC | |
outlink: http://www.cs.odu.edu/~mkelly/bullet_odu.png E =EMBED_MISC | |
outlink: http://www.cs.odu.edu/~mkelly/bullet_citadel.png E =EMBED_MISC | |
outlink: http://www.cs.odu.edu/~mkelly/bullet_oduphd.png E =EMBED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: https://plus.google.com/103717513886594190386 | |
WARC-Date: 2016-08-15T21:19:44Z | |
WARC-IP-Address: 64.233.176.113 | |
WARC-Payload-Digest: sha1:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ | |
WARC-Record-ID: <urn:uuid:b7188818-087b-4874-b34e-a0e383d7eb14> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 512 | |
HTTP/1.0 302 Found | |
Content-Type: application/binary | |
x-ua-compatible: IE=edge, chrome=1 | |
Cache-Control: no-cache, no-store, max-age=0, must-revalidate | |
Pragma: no-cache | |
Expires: Mon, 01 Jan 1990 00:00:00 GMT | |
Date: Mon, 15 Aug 2016 21:19:45 GMT | |
Location: https://plus.google.com/+MatKelly | |
Server: ESF | |
Content-Length: 0 | |
X-XSS-Protection: 1; mode=block | |
X-Frame-Options: SAMEORIGIN | |
X-Content-Type-Options: nosniff | |
Alternate-Protocol: 443:quic | |
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32,31,30" | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: https://plus.google.com/103717513886594190386 | |
WARC-Date: 2016-08-15T21:19:44Z | |
WARC-Concurrent-To: <urn:uuid:b7188818-087b-4874-b34e-a0e383d7eb14> | |
WARC-Record-ID: <urn:uuid:c9b98037-c2f7-40d4-957d-6917bcbddcbd> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 459 | |
GET /103717513886594190386 HTTP/1.0 | |
Connection: Close | |
Referer: https://plus.google.com/u/0/103717513886594190386 | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: plus.google.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
Cookie: NID=84=SbG6NcKHHuYZpCXMX6jSaM7dyTI2lLh0SEiu-lU6fRUj9H3GEpYPSUf9G51MqYIfal8D5dhRzZ-a_IqnLh1bZ5buLRhsADH2XwQNGdgq9tFvPifPYO5Ym_LYjL59lL75 | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: https://plus.google.com/103717513886594190386 | |
WARC-Date: 2016-08-15T21:19:44Z | |
WARC-Concurrent-To: <urn:uuid:b7188818-087b-4874-b34e-a0e383d7eb14> | |
WARC-Record-ID: <urn:uuid:abd00b08-61a9-43aa-b199-5457bbea84e1> | |
Content-Type: application/warc-fields | |
Content-Length: 252 | |
via: https://plus.google.com/u/0/103717513886594190386 | |
hopsFromSeed: RER | |
fetchTimeMs: 656 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: https://plus.google.com/+MatKelly R Location: | |
outlink: https://plus.google.com/favicon.ico I =INFERRED_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html2canvas.js | |
WARC-Date: 2016-08-15T21:19:48Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:K6X3TJQ6TVADTLVTMV2ZQGHFWNSLM46K | |
WARC-Record-ID: <urn:uuid:b6b64687-da90-4e9e-9cc0-fe213dfc74ec> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 91758 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:48 GMT | |
Content-Type: application/javascript | |
Content-Length: 91487 | |
Connection: close | |
Last-Modified: Thu, 16 Oct 2014 14:43:30 GMT | |
ETag: "1655f-5058b459c0891" | |
Accept-Ranges: bytes | |
Vary: Accept-Encoding | |
/* | |
html2canvas 0.4.1 <http://html2canvas.hertzen.com> | |
Copyright (c) 2013 Niklas von Hertzen | |
Released under MIT License | |
*/ | |
(function(window, document, undefined){ | |
"use strict"; | |
var _html2canvas = {}, | |
previousElement, | |
computedCSS, | |
html2canvas; | |
_html2canvas.Util = {}; | |
_html2canvas.Util.log = function(a) { | |
if (_html2canvas.logging && window.console && window.console.log) { | |
window.console.log(a); | |
} | |
}; | |
_html2canvas.Util.trimText = (function(isNative){ | |
return function(input) { | |
return isNative ? isNative.apply(input) : ((input || '') + '').replace( /^\s+|\s+$/g , '' ); | |
}; | |
})(String.prototype.trim); | |
_html2canvas.Util.asFloat = function(v) { | |
return parseFloat(v); | |
}; | |
(function() { | |
// TODO: support all possible length values | |
var TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g; | |
var TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g; | |
_html2canvas.Util.parseTextShadows = function (value) { | |
if (!value || value === 'none') { | |
return []; | |
} | |
// find multiple shadow declarations | |
var shadows = value.match(TEXT_SHADOW_PROPERTY), | |
results = []; | |
for (var i = 0; shadows && (i < shadows.length); i++) { | |
var s = shadows[i].match(TEXT_SHADOW_VALUES); | |
results.push({ | |
color: s[0], | |
offsetX: s[1] ? s[1].replace('px', '') : 0, | |
offsetY: s[2] ? s[2].replace('px', '') : 0, | |
blur: s[3] ? s[3].replace('px', '') : 0 | |
}); | |
} | |
return results; | |
}; | |
})(); | |
_html2canvas.Util.parseBackgroundImage = function (value) { | |
var whitespace = ' \r\n\t', | |
method, definition, prefix, prefix_i, block, results = [], | |
c, mode = 0, numParen = 0, quote, args; | |
var appendResult = function(){ | |
if(method) { | |
if(definition.substr( 0, 1 ) === '"') { | |
definition = definition.substr( 1, definition.length - 2 ); | |
} | |
if(definition) { | |
args.push(definition); | |
} | |
if(method.substr( 0, 1 ) === '-' && | |
(prefix_i = method.indexOf( '-', 1 ) + 1) > 0) { | |
prefix = method.substr( 0, prefix_i); | |
method = method.substr( prefix_i ); | |
} | |
results.push({ | |
prefix: prefix, | |
method: method.toLowerCase(), | |
value: block, | |
args: args | |
}); | |
} | |
args = []; //for some odd reason, setting .length = 0 didn't work in safari | |
method = | |
prefix = | |
definition = | |
block = ''; | |
}; | |
appendResult(); | |
for(var i = 0, ii = value.length; i<ii; i++) { | |
c = value[i]; | |
if(mode === 0 && whitespace.indexOf( c ) > -1){ | |
continue; | |
} | |
switch(c) { | |
case '"': | |
if(!quote) { | |
quote = c; | |
} | |
else if(quote === c) { | |
quote = null; | |
} | |
break; | |
case '(': | |
if(quote) { break; } | |
else if(mode === 0) { | |
mode = 1; | |
block += c; | |
continue; | |
} else { | |
numParen++; | |
} | |
break; | |
case ')': | |
if(quote) { break; } | |
else if(mode === 1) { | |
if(numParen === 0) { | |
mode = 0; | |
block += c; | |
appendResult(); | |
continue; | |
} else { | |
numParen--; | |
} | |
} | |
break; | |
case ',': | |
if(quote) { break; } | |
else if(mode === 0) { | |
appendResult(); | |
continue; | |
} | |
else if (mode === 1) { | |
if(numParen === 0 && !method.match(/^url$/i)) { | |
args.push(definition); | |
definition = ''; | |
block += c; | |
continue; | |
} | |
} | |
break; | |
} | |
block += c; | |
if(mode === 0) { method += c; } | |
else { definition += c; } | |
} | |
appendResult(); | |
return results; | |
}; | |
_html2canvas.Util.Bounds = function (element) { | |
var clientRect, bounds = {}; | |
if (element.getBoundingClientRect){ | |
clientRect = element.getBoundingClientRect(); | |
// TODO add scroll position to bounds, so no scrolling of window necessary | |
bounds.top = clientRect.top; | |
bounds.bottom = clientRect.bottom || (clientRect.top + clientRect.height); | |
bounds.left = clientRect.left; | |
bounds.width = element.offsetWidth; | |
bounds.height = element.offsetHeight; | |
} | |
return bounds; | |
}; | |
// TODO ideally, we'd want everything to go through this function instead of Util.Bounds, | |
// but would require further work to calculate the correct positions for elements with offsetParents | |
_html2canvas.Util.OffsetBounds = function (element) { | |
var parent = element.offsetParent ? _html2canvas.Util.OffsetBounds(element.offsetParent) : {top: 0, left: 0}; | |
return { | |
top: element.offsetTop + parent.top, | |
bottom: element.offsetTop + element.offsetHeight + parent.top, | |
left: element.offsetLeft + parent.left, | |
width: element.offsetWidth, | |
height: element.offsetHeight | |
}; | |
}; | |
function toPX(element, attribute, value ) { | |
var rsLeft = element.runtimeStyle && element.runtimeStyle[attribute], | |
left, | |
style = element.style; | |
// Check if we are not dealing with pixels, (Opera has issues with this) | |
// Ported from jQuery css.js | |
// From the awesome hack by Dean Edwards | |
// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 | |
// If we're not dealing with a regular pixel number | |
// but a number that has a weird ending, we need to convert it to pixels | |
if ( !/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test( value ) && /^-?\d/.test(value) ) { | |
// Remember the original values | |
left = style.left; | |
// Put in the new values to get a computed value out | |
if (rsLeft) { | |
element.runtimeStyle.left = element.currentStyle.left; | |
} | |
style.left = attribute === "fontSize" ? "1em" : (value || 0); | |
value = style.pixelLeft + "px"; | |
// Revert the changed values | |
style.left = left; | |
if (rsLeft) { | |
element.runtimeStyle.left = rsLeft; | |
} | |
} | |
if (!/^(thin|medium|thick)$/i.test(value)) { | |
return Math.round(parseFloat(value)) + "px"; | |
} | |
return value; | |
} | |
function asInt(val) { | |
return parseInt(val, 10); | |
} | |
function parseBackgroundSizePosition(value, element, attribute, index) { | |
value = (value || '').split(','); | |
value = value[index || 0] || value[0] || 'auto'; | |
value = _html2canvas.Util.trimText(value).split(' '); | |
if(attribute === 'backgroundSize' && (!value[0] || value[0].match(/cover|contain|auto/))) { | |
//these values will be handled in the parent function | |
} else { | |
value[0] = (value[0].indexOf( "%" ) === -1) ? toPX(element, attribute + "X", value[0]) : value[0]; | |
if(value[1] === undefined) { | |
if(attribute === 'backgroundSize') { | |
value[1] = 'auto'; | |
return value; | |
} else { | |
// IE 9 doesn't return double digit always | |
value[1] = value[0]; | |
} | |
} | |
value[1] = (value[1].indexOf("%") === -1) ? toPX(element, attribute + "Y", value[1]) : value[1]; | |
} | |
return value; | |
} | |
_html2canvas.Util.getCSS = function (element, attribute, index) { | |
if (previousElement !== element) { | |
computedCSS = document.defaultView.getComputedStyle(element, null); | |
} | |
var value = computedCSS[attribute]; | |
if (/^background(Size|Position)$/.test(attribute)) { | |
return parseBackgroundSizePosition(value, element, attribute, index); | |
} else if (/border(Top|Bottom)(Left|Right)Radius/.test(attribute)) { | |
var arr = value.split(" "); | |
if (arr.length <= 1) { | |
arr[1] = arr[0]; | |
} | |
return arr.map(asInt); | |
} | |
return value; | |
}; | |
_html2canvas.Util.resizeBounds = function( current_width, current_height, target_width, target_height, stretch_mode ){ | |
var target_ratio = target_width / target_height, | |
current_ratio = current_width / current_height, | |
output_width, output_height; | |
if(!stretch_mode || stretch_mode === 'auto') { | |
output_width = target_width; | |
output_height = target_height; | |
} else if(target_ratio < current_ratio ^ stretch_mode === 'contain') { | |
output_height = target_height; | |
output_width = target_height * current_ratio; | |
} else { | |
output_width = target_width; | |
output_height = target_width / current_ratio; | |
} | |
return { | |
width: output_width, | |
height: output_height | |
}; | |
}; | |
function backgroundBoundsFactory( prop, el, bounds, image, imageIndex, backgroundSize ) { | |
var bgposition = _html2canvas.Util.getCSS( el, prop, imageIndex ) , | |
topPos, | |
left, | |
percentage, | |
val; | |
if (bgposition.length === 1){ | |
val = bgposition[0]; | |
bgposition = []; | |
bgposition[0] = val; | |
bgposition[1] = val; | |
} | |
if (bgposition[0].toString().indexOf("%") !== -1){ | |
percentage = (parseFloat(bgposition[0])/100); | |
left = bounds.width * percentage; | |
if(prop !== 'backgroundSize') { | |
left -= (backgroundSize || image).width*percentage; | |
} | |
} else { | |
if(prop === 'backgroundSize') { | |
if(bgposition[0] === 'auto') { | |
left = image.width; | |
} else { | |
if (/contain|cover/.test(bgposition[0])) { | |
var resized = _html2canvas.Util.resizeBounds(image.width, image.height, bounds.width, bounds.height, bgposition[0]); | |
left = resized.width; | |
topPos = resized.height; | |
} else { | |
left = parseInt(bgposition[0], 10); | |
} | |
} | |
} else { | |
left = parseInt( bgposition[0], 10); | |
} | |
} | |
if(bgposition[1] === 'auto') { | |
topPos = left / image.width * image.height; | |
} else if (bgposition[1].toString().indexOf("%") !== -1){ | |
percentage = (parseFloat(bgposition[1])/100); | |
topPos = bounds.height * percentage; | |
if(prop !== 'backgroundSize') { | |
topPos -= (backgroundSize || image).height * percentage; | |
} | |
} else { | |
topPos = parseInt(bgposition[1],10); | |
} | |
return [left, topPos]; | |
} | |
_html2canvas.Util.BackgroundPosition = function( el, bounds, image, imageIndex, backgroundSize ) { | |
var result = backgroundBoundsFactory( 'backgroundPosition', el, bounds, image, imageIndex, backgroundSize ); | |
return { left: result[0], top: result[1] }; | |
}; | |
_html2canvas.Util.BackgroundSize = function( el, bounds, image, imageIndex ) { | |
var result = backgroundBoundsFactory( 'backgroundSize', el, bounds, image, imageIndex ); | |
return { width: result[0], height: result[1] }; | |
}; | |
_html2canvas.Util.Extend = function (options, defaults) { | |
for (var key in options) { | |
if (options.hasOwnProperty(key)) { | |
defaults[key] = options[key]; | |
} | |
} | |
return defaults; | |
}; | |
/* | |
* Derived from jQuery.contents() | |
* Copyright 2010, John Resig | |
* Dual licensed under the MIT or GPL Version 2 licenses. | |
* http://jquery.org/license | |
*/ | |
_html2canvas.Util.Children = function( elem ) { | |
var children; | |
try { | |
children = (elem.nodeName && elem.nodeName.toUpperCase() === "IFRAME") ? elem.contentDocument || elem.contentWindow.document : (function(array) { | |
var ret = []; | |
if (array !== null) { | |
(function(first, second ) { | |
var i = first.length, | |
j = 0; | |
if (typeof second.length === "number") { | |
for (var l = second.length; j < l; j++) { | |
first[i++] = second[j]; | |
} | |
} else { | |
while (second[j] !== undefined) { | |
first[i++] = second[j++]; | |
} | |
} | |
first.length = i; | |
return first; | |
})(ret, array); | |
} | |
return ret; | |
})(elem.childNodes); | |
} catch (ex) { | |
_html2canvas.Util.log("html2canvas.Util.Children failed with exception: " + ex.message); | |
children = []; | |
} | |
return children; | |
}; | |
_html2canvas.Util.isTransparent = function(backgroundColor) { | |
return (backgroundColor === "transparent" || backgroundColor === "rgba(0, 0, 0, 0)"); | |
}; | |
_html2canvas.Util.Font = (function () { | |
var fontData = {}; | |
return function(font, fontSize, doc) { | |
if (fontData[font + "-" + fontSize] !== undefined) { | |
return fontData[font + "-" + fontSize]; | |
} | |
var container = doc.createElement('div'), | |
img = doc.createElement('img'), | |
span = doc.createElement('span'), | |
sampleText = 'Hidden Text', | |
baseline, | |
middle, | |
metricsObj; | |
container.style.visibility = "hidden"; | |
container.style.fontFamily = font; | |
container.style.fontSize = fontSize; | |
container.style.margin = 0; | |
container.style.padding = 0; | |
doc.body.appendChild(container); | |
// http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever (handtinywhite.gif) | |
img.src = "data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs="; | |
img.width = 1; | |
img.height = 1; | |
img.style.margin = 0; | |
img.style.padding = 0; | |
img.style.verticalAlign = "baseline"; | |
span.style.fontFamily = font; | |
span.style.fontSize = fontSize; | |
span.style.margin = 0; | |
span.style.padding = 0; | |
span.appendChild(doc.createTextNode(sampleText)); | |
container.appendChild(span); | |
container.appendChild(img); | |
baseline = (img.offsetTop - span.offsetTop) + 1; | |
container.removeChild(span); | |
container.appendChild(doc.createTextNode(sampleText)); | |
container.style.lineHeight = "normal"; | |
img.style.verticalAlign = "super"; | |
middle = (img.offsetTop-container.offsetTop) + 1; | |
metricsObj = { | |
baseline: baseline, | |
lineWidth: 1, | |
middle: middle | |
}; | |
fontData[font + "-" + fontSize] = metricsObj; | |
doc.body.removeChild(container); | |
return metricsObj; | |
}; | |
})(); | |
(function(){ | |
var Util = _html2canvas.Util, | |
Generate = {}; | |
_html2canvas.Generate = Generate; | |
var reGradients = [ | |
/^(-webkit-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-o-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-webkit-gradient)\((linear|radial),\s((?:\d{1,3}%?)\s(?:\d{1,3}%?),\s(?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)\-]+)\)$/, | |
/^(-moz-linear-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-webkit-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s?([a-z\-]*)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-o-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/ | |
]; | |
/* | |
* TODO: Add IE10 vendor prefix (-ms) support | |
* TODO: Add W3C gradient (linear-gradient) support | |
* TODO: Add old Webkit -webkit-gradient(radial, ...) support | |
* TODO: Maybe some RegExp optimizations are possible ;o) | |
*/ | |
Generate.parseGradient = function(css, bounds) { | |
var gradient, i, len = reGradients.length, m1, stop, m2, m2Len, step, m3, tl,tr,br,bl; | |
for(i = 0; i < len; i+=1){ | |
m1 = css.match(reGradients[i]); | |
if(m1) { | |
break; | |
} | |
} | |
if(m1) { | |
switch(m1[1]) { | |
case '-webkit-linear-gradient': | |
case '-o-linear-gradient': | |
gradient = { | |
type: 'linear', | |
x0: null, | |
y0: null, | |
x1: null, | |
y1: null, | |
colorStops: [] | |
}; | |
// get coordinates | |
m2 = m1[2].match(/\w+/g); | |
if(m2){ | |
m2Len = m2.length; | |
for(i = 0; i < m2Len; i+=1){ | |
switch(m2[i]) { | |
case 'top': | |
gradient.y0 = 0; | |
gradient.y1 = bounds.height; | |
break; | |
case 'right': | |
gradient.x0 = bounds.width; | |
gradient.x1 = 0; | |
break; | |
case 'bottom': | |
gradient.y0 = bounds.height; | |
gradient.y1 = 0; | |
break; | |
case 'left': | |
gradient.x0 = 0; | |
gradient.x1 = bounds.width; | |
break; | |
} | |
} | |
} | |
if(gradient.x0 === null && gradient.x1 === null){ // center | |
gradient.x0 = gradient.x1 = bounds.width / 2; | |
} | |
if(gradient.y0 === null && gradient.y1 === null){ // center | |
gradient.y0 = gradient.y1 = bounds.height / 2; | |
} | |
// get colors and stops | |
m2 = m1[3].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g); | |
if(m2){ | |
m2Len = m2.length; | |
step = 1 / Math.max(m2Len - 1, 1); | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/); | |
if(m3[2]){ | |
stop = parseFloat(m3[2]); | |
if(m3[3] === '%'){ | |
stop /= 100; | |
} else { // px - stupid opera | |
stop /= bounds.width; | |
} | |
} else { | |
stop = i * step; | |
} | |
gradient.colorStops.push({ | |
color: m3[1], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
case '-webkit-gradient': | |
gradient = { | |
type: m1[2] === 'radial' ? 'circle' : m1[2], // TODO: Add radial gradient support for older mozilla definitions | |
x0: 0, | |
y0: 0, | |
x1: 0, | |
y1: 0, | |
colorStops: [] | |
}; | |
// get coordinates | |
m2 = m1[3].match(/(\d{1,3})%?\s(\d{1,3})%?,\s(\d{1,3})%?\s(\d{1,3})%?/); | |
if(m2){ | |
gradient.x0 = (m2[1] * bounds.width) / 100; | |
gradient.y0 = (m2[2] * bounds.height) / 100; | |
gradient.x1 = (m2[3] * bounds.width) / 100; | |
gradient.y1 = (m2[4] * bounds.height) / 100; | |
} | |
// get colors and stops | |
m2 = m1[4].match(/((?:from|to|color-stop)\((?:[0-9\.]+,\s)?(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)\))+/g); | |
if(m2){ | |
m2Len = m2.length; | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/(from|to|color-stop)\(([0-9\.]+)?(?:,\s)?((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\)/); | |
stop = parseFloat(m3[2]); | |
if(m3[1] === 'from') { | |
stop = 0.0; | |
} | |
if(m3[1] === 'to') { | |
stop = 1.0; | |
} | |
gradient.colorStops.push({ | |
color: m3[3], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
case '-moz-linear-gradient': | |
gradient = { | |
type: 'linear', | |
x0: 0, | |
y0: 0, | |
x1: 0, | |
y1: 0, | |
colorStops: [] | |
}; | |
// get coordinates | |
m2 = m1[2].match(/(\d{1,3})%?\s(\d{1,3})%?/); | |
// m2[1] == 0% -> left | |
// m2[1] == 50% -> center | |
// m2[1] == 100% -> right | |
// m2[2] == 0% -> top | |
// m2[2] == 50% -> center | |
// m2[2] == 100% -> bottom | |
if(m2){ | |
gradient.x0 = (m2[1] * bounds.width) / 100; | |
gradient.y0 = (m2[2] * bounds.height) / 100; | |
gradient.x1 = bounds.width - gradient.x0; | |
gradient.y1 = bounds.height - gradient.y0; | |
} | |
// get colors and stops | |
m2 = m1[3].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+/g); | |
if(m2){ | |
m2Len = m2.length; | |
step = 1 / Math.max(m2Len - 1, 1); | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%)?/); | |
if(m3[2]){ | |
stop = parseFloat(m3[2]); | |
if(m3[3]){ // percentage | |
stop /= 100; | |
} | |
} else { | |
stop = i * step; | |
} | |
gradient.colorStops.push({ | |
color: m3[1], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
case '-webkit-radial-gradient': | |
case '-moz-radial-gradient': | |
case '-o-radial-gradient': | |
gradient = { | |
type: 'circle', | |
x0: 0, | |
y0: 0, | |
x1: bounds.width, | |
y1: bounds.height, | |
cx: 0, | |
cy: 0, | |
rx: 0, | |
ry: 0, | |
colorStops: [] | |
}; | |
// center | |
m2 = m1[2].match(/(\d{1,3})%?\s(\d{1,3})%?/); | |
if(m2){ | |
gradient.cx = (m2[1] * bounds.width) / 100; | |
gradient.cy = (m2[2] * bounds.height) / 100; | |
} | |
// size | |
m2 = m1[3].match(/\w+/); | |
m3 = m1[4].match(/[a-z\-]*/); | |
if(m2 && m3){ | |
switch(m3[0]){ | |
case 'farthest-corner': | |
case 'cover': // is equivalent to farthest-corner | |
case '': // mozilla removes "cover" from definition :( | |
tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
gradient.rx = gradient.ry = Math.max(tl, tr, br, bl); | |
break; | |
case 'closest-corner': | |
tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
gradient.rx = gradient.ry = Math.min(tl, tr, br, bl); | |
break; | |
case 'farthest-side': | |
if(m2[0] === 'circle'){ | |
gradient.rx = gradient.ry = Math.max( | |
gradient.cx, | |
gradient.cy, | |
gradient.x1 - gradient.cx, | |
gradient.y1 - gradient.cy | |
); | |
} else { // ellipse | |
gradient.type = m2[0]; | |
gradient.rx = Math.max( | |
gradient.cx, | |
gradient.x1 - gradient.cx | |
); | |
gradient.ry = Math.max( | |
gradient.cy, | |
gradient.y1 - gradient.cy | |
); | |
} | |
break; | |
case 'closest-side': | |
case 'contain': // is equivalent to closest-side | |
if(m2[0] === 'circle'){ | |
gradient.rx = gradient.ry = Math.min( | |
gradient.cx, | |
gradient.cy, | |
gradient.x1 - gradient.cx, | |
gradient.y1 - gradient.cy | |
); | |
} else { // ellipse | |
gradient.type = m2[0]; | |
gradient.rx = Math.min( | |
gradient.cx, | |
gradient.x1 - gradient.cx | |
); | |
gradient.ry = Math.min( | |
gradient.cy, | |
gradient.y1 - gradient.cy | |
); | |
} | |
break; | |
// TODO: add support for "30px 40px" sizes (webkit only) | |
} | |
} | |
// color stops | |
m2 = m1[5].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g); | |
if(m2){ | |
m2Len = m2.length; | |
step = 1 / Math.max(m2Len - 1, 1); | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/); | |
if(m3[2]){ | |
stop = parseFloat(m3[2]); | |
if(m3[3] === '%'){ | |
stop /= 100; | |
} else { // px - stupid opera | |
stop /= bounds.width; | |
} | |
} else { | |
stop = i * step; | |
} | |
gradient.colorStops.push({ | |
color: m3[1], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
} | |
} | |
return gradient; | |
}; | |
function addScrollStops(grad) { | |
return function(colorStop) { | |
try { | |
grad.addColorStop(colorStop.stop, colorStop.color); | |
} | |
catch(e) { | |
Util.log(['failed to add color stop: ', e, '; tried to add: ', colorStop]); | |
} | |
}; | |
} | |
Generate.Gradient = function(src, bounds) { | |
if(bounds.width === 0 || bounds.height === 0) { | |
return; | |
} | |
var canvas = document.createElement('canvas'), | |
ctx = canvas.getContext('2d'), | |
gradient, grad; | |
canvas.width = bounds.width; | |
canvas.height = bounds.height; | |
// TODO: add support for multi defined background gradients | |
gradient = _html2canvas.Generate.parseGradient(src, bounds); | |
if(gradient) { | |
switch(gradient.type) { | |
case 'linear': | |
grad = ctx.createLinearGradient(gradient.x0, gradient.y0, gradient.x1, gradient.y1); | |
gradient.colorStops.forEach(addScrollStops(grad)); | |
ctx.fillStyle = grad; | |
ctx.fillRect(0, 0, bounds.width, bounds.height); | |
break; | |
case 'circle': | |
grad = ctx.createRadialGradient(gradient.cx, gradient.cy, 0, gradient.cx, gradient.cy, gradient.rx); | |
gradient.colorStops.forEach(addScrollStops(grad)); | |
ctx.fillStyle = grad; | |
ctx.fillRect(0, 0, bounds.width, bounds.height); | |
break; | |
case 'ellipse': | |
var canvasRadial = document.createElement('canvas'), | |
ctxRadial = canvasRadial.getContext('2d'), | |
ri = Math.max(gradient.rx, gradient.ry), | |
di = ri * 2; | |
canvasRadial.width = canvasRadial.height = di; | |
grad = ctxRadial.createRadialGradient(gradient.rx, gradient.ry, 0, gradient.rx, gradient.ry, ri); | |
gradient.colorStops.forEach(addScrollStops(grad)); | |
ctxRadial.fillStyle = grad; | |
ctxRadial.fillRect(0, 0, di, di); | |
ctx.fillStyle = gradient.colorStops[gradient.colorStops.length - 1].color; | |
ctx.fillRect(0, 0, canvas.width, canvas.height); | |
ctx.drawImage(canvasRadial, gradient.cx - gradient.rx, gradient.cy - gradient.ry, 2 * gradient.rx, 2 * gradient.ry); | |
break; | |
} | |
} | |
return canvas; | |
}; | |
Generate.ListAlpha = function(number) { | |
var tmp = "", | |
modulus; | |
do { | |
modulus = number % 26; | |
tmp = String.fromCharCode((modulus) + 64) + tmp; | |
number = number / 26; | |
}while((number*26) > 26); | |
return tmp; | |
}; | |
Generate.ListRoman = function(number) { | |
var romanArray = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"], | |
decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], | |
roman = "", | |
v, | |
len = romanArray.length; | |
if (number <= 0 || number >= 4000) { | |
return number; | |
} | |
for (v=0; v < len; v+=1) { | |
while (number >= decimal[v]) { | |
number -= decimal[v]; | |
roman += romanArray[v]; | |
} | |
} | |
return roman; | |
}; | |
})(); | |
function h2cRenderContext(width, height) { | |
var storage = []; | |
return { | |
storage: storage, | |
width: width, | |
height: height, | |
clip: function() { | |
storage.push({ | |
type: "function", | |
name: "clip", | |
'arguments': arguments | |
}); | |
}, | |
translate: function() { | |
storage.push({ | |
type: "function", | |
name: "translate", | |
'arguments': arguments | |
}); | |
}, | |
fill: function() { | |
storage.push({ | |
type: "function", | |
name: "fill", | |
'arguments': arguments | |
}); | |
}, | |
save: function() { | |
storage.push({ | |
type: "function", | |
name: "save", | |
'arguments': arguments | |
}); | |
}, | |
restore: function() { | |
storage.push({ | |
type: "function", | |
name: "restore", | |
'arguments': arguments | |
}); | |
}, | |
fillRect: function () { | |
storage.push({ | |
type: "function", | |
name: "fillRect", | |
'arguments': arguments | |
}); | |
}, | |
createPattern: function() { | |
storage.push({ | |
type: "function", | |
name: "createPattern", | |
'arguments': arguments | |
}); | |
}, | |
drawShape: function() { | |
var shape = []; | |
storage.push({ | |
type: "function", | |
name: "drawShape", | |
'arguments': shape | |
}); | |
return { | |
moveTo: function() { | |
shape.push({ | |
name: "moveTo", | |
'arguments': arguments | |
}); | |
}, | |
lineTo: function() { | |
shape.push({ | |
name: "lineTo", | |
'arguments': arguments | |
}); | |
}, | |
arcTo: function() { | |
shape.push({ | |
name: "arcTo", | |
'arguments': arguments | |
}); | |
}, | |
bezierCurveTo: function() { | |
shape.push({ | |
name: "bezierCurveTo", | |
'arguments': arguments | |
}); | |
}, | |
quadraticCurveTo: function() { | |
shape.push({ | |
name: "quadraticCurveTo", | |
'arguments': arguments | |
}); | |
} | |
}; | |
}, | |
drawImage: function () { | |
storage.push({ | |
type: "function", | |
name: "drawImage", | |
'arguments': arguments | |
}); | |
}, | |
fillText: function () { | |
storage.push({ | |
type: "function", | |
name: "fillText", | |
'arguments': arguments | |
}); | |
}, | |
setVariable: function (variable, value) { | |
storage.push({ | |
type: "variable", | |
name: variable, | |
'arguments': value | |
}); | |
return value; | |
} | |
}; | |
} | |
_html2canvas.Parse = function (images, options) { | |
window.scroll(0,0); | |
var element = (( options.elements === undefined ) ? document.body : options.elements[0]), // select body by default | |
numDraws = 0, | |
doc = element.ownerDocument, | |
Util = _html2canvas.Util, | |
support = Util.Support(options, doc), | |
ignoreElementsRegExp = new RegExp("(" + options.ignoreElements + ")"), | |
body = doc.body, | |
getCSS = Util.getCSS, | |
pseudoHide = "___html2canvas___pseudoelement", | |
hidePseudoElements = doc.createElement('style'); | |
hidePseudoElements.innerHTML = '.' + pseudoHide + '-before:before { content: "" !important; display: none !important; }' + | |
'.' + pseudoHide + '-after:after { content: "" !important; display: none !important; }'; | |
body.appendChild(hidePseudoElements); | |
images = images || {}; | |
function documentWidth () { | |
return Math.max( | |
Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth), | |
Math.max(doc.body.offsetWidth, doc.documentElement.offsetWidth), | |
Math.max(doc.body.clientWidth, doc.documentElement.clientWidth) | |
); | |
} | |
function documentHeight () { | |
return Math.max( | |
Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight), | |
Math.max(doc.body.offsetHeight, doc.documentElement.offsetHeight), | |
Math.max(doc.body.clientHeight, doc.documentElement.clientHeight) | |
); | |
} | |
function getCSSInt(element, attribute) { | |
var val = parseInt(getCSS(element, attribute), 10); | |
return (isNaN(val)) ? 0 : val; // borders in old IE are throwing 'medium' for demo.html | |
} | |
function renderRect (ctx, x, y, w, h, bgcolor) { | |
if (bgcolor !== "transparent"){ | |
ctx.setVariable("fillStyle", bgcolor); | |
ctx.fillRect(x, y, w, h); | |
numDraws+=1; | |
} | |
} | |
function capitalize(m, p1, p2) { | |
if (m.length > 0) { | |
return p1 + p2.toUpperCase(); | |
} | |
} | |
function textTransform (text, transform) { | |
switch(transform){ | |
case "lowercase": | |
return text.toLowerCase(); | |
case "capitalize": | |
return text.replace( /(^|\s|:|-|\(|\))([a-z])/g, capitalize); | |
case "uppercase": | |
return text.toUpperCase(); | |
default: | |
return text; | |
} | |
} | |
function noLetterSpacing(letter_spacing) { | |
return (/^(normal|none|0px)$/.test(letter_spacing)); | |
} | |
function drawText(currentText, x, y, ctx){ | |
if (currentText !== null && Util.trimText(currentText).length > 0) { | |
ctx.fillText(currentText, x, y); | |
numDraws+=1; | |
} | |
} | |
function setTextVariables(ctx, el, text_decoration, color) { | |
var align = false, | |
bold = getCSS(el, "fontWeight"), | |
family = getCSS(el, "fontFamily"), | |
size = getCSS(el, "fontSize"), | |
shadows = Util.parseTextShadows(getCSS(el, "textShadow")); | |
switch(parseInt(bold, 10)){ | |
case 401: | |
bold = "bold"; | |
break; | |
case 400: | |
bold = "normal"; | |
break; | |
} | |
ctx.setVariable("fillStyle", color); | |
ctx.setVariable("font", [getCSS(el, "fontStyle"), getCSS(el, "fontVariant"), bold, size, family].join(" ")); | |
ctx.setVariable("textAlign", (align) ? "right" : "left"); | |
if (shadows.length) { | |
// TODO: support multiple text shadows | |
// apply the first text shadow | |
ctx.setVariable("shadowColor", shadows[0].color); | |
ctx.setVariable("shadowOffsetX", shadows[0].offsetX); | |
ctx.setVariable("shadowOffsetY", shadows[0].offsetY); | |
ctx.setVariable("shadowBlur", shadows[0].blur); | |
} | |
if (text_decoration !== "none"){ | |
return Util.Font(family, size, doc); | |
} | |
} | |
function renderTextDecoration(ctx, text_decoration, bounds, metrics, color) { | |
switch(text_decoration) { | |
case "underline": | |
// Draws a line at the baseline of the font | |
// TODO As some browsers display the line as more than 1px if the font-size is big, need to take that into account both in position and size | |
renderRect(ctx, bounds.left, Math.round(bounds.top + metrics.baseline + metrics.lineWidth), bounds.width, 1, color); | |
break; | |
case "overline": | |
renderRect(ctx, bounds.left, Math.round(bounds.top), bounds.width, 1, color); | |
break; | |
case "line-through": | |
// TODO try and find exact position for line-through | |
renderRect(ctx, bounds.left, Math.ceil(bounds.top + metrics.middle + metrics.lineWidth), bounds.width, 1, color); | |
break; | |
} | |
} | |
function getTextBounds(state, text, textDecoration, isLast, transform) { | |
var bounds; | |
if (support.rangeBounds && !transform) { | |
if (textDecoration !== "none" || Util.trimText(text).length !== 0) { | |
bounds = textRangeBounds(text, state.node, state.textOffset); | |
} | |
state.textOffset += text.length; | |
} else if (state.node && typeof state.node.nodeValue === "string" ){ | |
var newTextNode = (isLast) ? state.node.splitText(text.length) : null; | |
bounds = textWrapperBounds(state.node, transform); | |
state.node = newTextNode; | |
} | |
return bounds; | |
} | |
function textRangeBounds(text, textNode, textOffset) { | |
var range = doc.createRange(); | |
range.setStart(textNode, textOffset); | |
range.setEnd(textNode, textOffset + text.length); | |
return range.getBoundingClientRect(); | |
} | |
function textWrapperBounds(oldTextNode, transform) { | |
var parent = oldTextNode.parentNode, | |
wrapElement = doc.createElement('wrapper'), | |
backupText = oldTextNode.cloneNode(true); | |
wrapElement.appendChild(oldTextNode.cloneNode(true)); | |
parent.replaceChild(wrapElement, oldTextNode); | |
var bounds = transform ? Util.OffsetBounds(wrapElement) : Util.Bounds(wrapElement); | |
parent.replaceChild(backupText, wrapElement); | |
return bounds; | |
} | |
function renderText(el, textNode, stack) { | |
var ctx = stack.ctx, | |
color = getCSS(el, "color"), | |
textDecoration = getCSS(el, "textDecoration"), | |
textAlign = getCSS(el, "textAlign"), | |
metrics, | |
textList, | |
state = { | |
node: textNode, | |
textOffset: 0 | |
}; | |
if (Util.trimText(textNode.nodeValue).length > 0) { | |
textNode.nodeValue = textTransform(textNode.nodeValue, getCSS(el, "textTransform")); | |
textAlign = textAlign.replace(["-webkit-auto"],["auto"]); | |
textList = (!options.letterRendering && /^(left|right|justify|auto)$/.test(textAlign) && noLetterSpacing(getCSS(el, "letterSpacing"))) ? | |
textNode.nodeValue.split(/(\b| )/) | |
: textNode.nodeValue.split(""); | |
metrics = setTextVariables(ctx, el, textDecoration, color); | |
if (options.chinese) { | |
textList.forEach(function(word, index) { | |
if (/.*[\u4E00-\u9FA5].*$/.test(word)) { | |
word = word.split(""); | |
word.unshift(index, 1); | |
textList.splice.apply(textList, word); | |
} | |
}); | |
} | |
textList.forEach(function(text, index) { | |
var bounds = getTextBounds(state, text, textDecoration, (index < textList.length - 1), stack.transform.matrix); | |
if (bounds) { | |
drawText(text, bounds.left, bounds.bottom, ctx); | |
renderTextDecoration(ctx, textDecoration, bounds, metrics, color); | |
} | |
}); | |
} | |
} | |
function listPosition (element, val) { | |
var boundElement = doc.createElement( "boundelement" ), | |
originalType, | |
bounds; | |
boundElement.style.display = "inline"; | |
originalType = element.style.listStyleType; | |
element.style.listStyleType = "none"; | |
boundElement.appendChild(doc.createTextNode(val)); | |
element.insertBefore(boundElement, element.firstChild); | |
bounds = Util.Bounds(boundElement); | |
element.removeChild(boundElement); | |
element.style.listStyleType = originalType; | |
return bounds; | |
} | |
function elementIndex(el) { | |
var i = -1, | |
count = 1, | |
childs = el.parentNode.childNodes; | |
if (el.parentNode) { | |
while(childs[++i] !== el) { | |
if (childs[i].nodeType === 1) { | |
count++; | |
} | |
} | |
return count; | |
} else { | |
return -1; | |
} | |
} | |
function listItemText(element, type) { | |
var currentIndex = elementIndex(element), text; | |
switch(type){ | |
case "decimal": | |
text = currentIndex; | |
break; | |
case "decimal-leading-zero": | |
text = (currentIndex.toString().length === 1) ? currentIndex = "0" + currentIndex.toString() : currentIndex.toString(); | |
break; | |
case "upper-roman": | |
text = _html2canvas.Generate.ListRoman( currentIndex ); | |
break; | |
case "lower-roman": | |
text = _html2canvas.Generate.ListRoman( currentIndex ).toLowerCase(); | |
break; | |
case "lower-alpha": | |
text = _html2canvas.Generate.ListAlpha( currentIndex ).toLowerCase(); | |
break; | |
case "upper-alpha": | |
text = _html2canvas.Generate.ListAlpha( currentIndex ); | |
break; | |
} | |
return text + ". "; | |
} | |
function renderListItem(element, stack, elBounds) { | |
var x, | |
text, | |
ctx = stack.ctx, | |
type = getCSS(element, "listStyleType"), | |
listBounds; | |
if (/^(decimal|decimal-leading-zero|upper-alpha|upper-latin|upper-roman|lower-alpha|lower-greek|lower-latin|lower-roman)$/i.test(type)) { | |
text = listItemText(element, type); | |
listBounds = listPosition(element, text); | |
setTextVariables(ctx, element, "none", getCSS(element, "color")); | |
if (getCSS(element, "listStylePosition") === "inside") { | |
ctx.setVariable("textAlign", "left"); | |
x = elBounds.left; | |
} else { | |
return; | |
} | |
drawText(text, x, listBounds.bottom, ctx); | |
} | |
} | |
function loadImage (src){ | |
var img = images[src]; | |
return (img && img.succeeded === true) ? img.img : false; | |
} | |
function clipBounds(src, dst){ | |
var x = Math.max(src.left, dst.left), | |
y = Math.max(src.top, dst.top), | |
x2 = Math.min((src.left + src.width), (dst.left + dst.width)), | |
y2 = Math.min((src.top + src.height), (dst.top + dst.height)); | |
return { | |
left:x, | |
top:y, | |
width:x2-x, | |
height:y2-y | |
}; | |
} | |
function setZ(element, stack, parentStack){ | |
var newContext, | |
isPositioned = stack.cssPosition !== 'static', | |
zIndex = isPositioned ? getCSS(element, 'zIndex') : 'auto', | |
opacity = getCSS(element, 'opacity'), | |
isFloated = getCSS(element, 'cssFloat') !== 'none'; | |
// https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context | |
// When a new stacking context should be created: | |
// the root element (HTML), | |
// positioned (absolutely or relatively) with a z-index value other than "auto", | |
// elements with an opacity value less than 1. (See the specification for opacity), | |
// on mobile WebKit and Chrome 22+, position: fixed always creates a new stacking context, even when z-index is "auto" (See this post) | |
stack.zIndex = newContext = h2czContext(zIndex); | |
newContext.isPositioned = isPositioned; | |
newContext.isFloated = isFloated; | |
newContext.opacity = opacity; | |
newContext.ownStacking = (zIndex !== 'auto' || opacity < 1); | |
if (parentStack) { | |
parentStack.zIndex.children.push(stack); | |
} | |
} | |
function renderImage(ctx, element, image, bounds, borders) { | |
var paddingLeft = getCSSInt(element, 'paddingLeft'), | |
paddingTop = getCSSInt(element, 'paddingTop'), | |
paddingRight = getCSSInt(element, 'paddingRight'), | |
paddingBottom = getCSSInt(element, 'paddingBottom'); | |
drawImage( | |
ctx, | |
image, | |
0, //sx | |
0, //sy | |
image.width, //sw | |
image.height, //sh | |
bounds.left + paddingLeft + borders[3].width, //dx | |
bounds.top + paddingTop + borders[0].width, // dy | |
bounds.width - (borders[1].width + borders[3].width + paddingLeft + paddingRight), //dw | |
bounds.height - (borders[0].width + borders[2].width + paddingTop + paddingBottom) //dh | |
); | |
} | |
function getBorderData(element) { | |
return ["Top", "Right", "Bottom", "Left"].map(function(side) { | |
return { | |
width: getCSSInt(element, 'border' + side + 'Width'), | |
color: getCSS(element, 'border' + side + 'Color') | |
}; | |
}); | |
} | |
function getBorderRadiusData(element) { | |
return ["TopLeft", "TopRight", "BottomRight", "BottomLeft"].map(function(side) { | |
return getCSS(element, 'border' + side + 'Radius'); | |
}); | |
} | |
var getCurvePoints = (function(kappa) { | |
return function(x, y, r1, r2) { | |
var ox = (r1) * kappa, // control point offset horizontal | |
oy = (r2) * kappa, // control point offset vertical | |
xm = x + r1, // x-middle | |
ym = y + r2; // y-middle | |
return { | |
topLeft: bezierCurve({ | |
x:x, | |
y:ym | |
}, { | |
x:x, | |
y:ym - oy | |
}, { | |
x:xm - ox, | |
y:y | |
}, { | |
x:xm, | |
y:y | |
}), | |
topRight: bezierCurve({ | |
x:x, | |
y:y | |
}, { | |
x:x + ox, | |
y:y | |
}, { | |
x:xm, | |
y:ym - oy | |
}, { | |
x:xm, | |
y:ym | |
}), | |
bottomRight: bezierCurve({ | |
x:xm, | |
y:y | |
}, { | |
x:xm, | |
y:y + oy | |
}, { | |
x:x + ox, | |
y:ym | |
}, { | |
x:x, | |
y:ym | |
}), | |
bottomLeft: bezierCurve({ | |
x:xm, | |
y:ym | |
}, { | |
x:xm - ox, | |
y:ym | |
}, { | |
x:x, | |
y:y + oy | |
}, { | |
x:x, | |
y:y | |
}) | |
}; | |
}; | |
})(4 * ((Math.sqrt(2) - 1) / 3)); | |
function bezierCurve(start, startControl, endControl, end) { | |
var lerp = function (a, b, t) { | |
return { | |
x:a.x + (b.x - a.x) * t, | |
y:a.y + (b.y - a.y) * t | |
}; | |
}; | |
return { | |
start: start, | |
startControl: startControl, | |
endControl: endControl, | |
end: end, | |
subdivide: function(t) { | |
var ab = lerp(start, startControl, t), | |
bc = lerp(startControl, endControl, t), | |
cd = lerp(endControl, end, t), | |
abbc = lerp(ab, bc, t), | |
bccd = lerp(bc, cd, t), | |
dest = lerp(abbc, bccd, t); | |
return [bezierCurve(start, ab, abbc, dest), bezierCurve(dest, bccd, cd, end)]; | |
}, | |
curveTo: function(borderArgs) { | |
borderArgs.push(["bezierCurve", startControl.x, startControl.y, endControl.x, endControl.y, end.x, end.y]); | |
}, | |
curveToReversed: function(borderArgs) { | |
borderArgs.push(["bezierCurve", endControl.x, endControl.y, startControl.x, startControl.y, start.x, start.y]); | |
} | |
}; | |
} | |
function parseCorner(borderArgs, radius1, radius2, corner1, corner2, x, y) { | |
if (radius1[0] > 0 || radius1[1] > 0) { | |
borderArgs.push(["line", corner1[0].start.x, corner1[0].start.y]); | |
corner1[0].curveTo(borderArgs); | |
corner1[1].curveTo(borderArgs); | |
} else { | |
borderArgs.push(["line", x, y]); | |
} | |
if (radius2[0] > 0 || radius2[1] > 0) { | |
borderArgs.push(["line", corner2[0].start.x, corner2[0].start.y]); | |
} | |
} | |
function drawSide(borderData, radius1, radius2, outer1, inner1, outer2, inner2) { | |
var borderArgs = []; | |
if (radius1[0] > 0 || radius1[1] > 0) { | |
borderArgs.push(["line", outer1[1].start.x, outer1[1].start.y]); | |
outer1[1].curveTo(borderArgs); | |
} else { | |
borderArgs.push([ "line", borderData.c1[0], borderData.c1[1]]); | |
} | |
if (radius2[0] > 0 || radius2[1] > 0) { | |
borderArgs.push(["line", outer2[0].start.x, outer2[0].start.y]); | |
outer2[0].curveTo(borderArgs); | |
borderArgs.push(["line", inner2[0].end.x, inner2[0].end.y]); | |
inner2[0].curveToReversed(borderArgs); | |
} else { | |
borderArgs.push([ "line", borderData.c2[0], borderData.c2[1]]); | |
borderArgs.push([ "line", borderData.c3[0], borderData.c3[1]]); | |
} | |
if (radius1[0] > 0 || radius1[1] > 0) { | |
borderArgs.push(["line", inner1[1].end.x, inner1[1].end.y]); | |
inner1[1].curveToReversed(borderArgs); | |
} else { | |
borderArgs.push([ "line", borderData.c4[0], borderData.c4[1]]); | |
} | |
return borderArgs; | |
} | |
function calculateCurvePoints(bounds, borderRadius, borders) { | |
var x = bounds.left, | |
y = bounds.top, | |
width = bounds.width, | |
height = bounds.height, | |
tlh = borderRadius[0][0], | |
tlv = borderRadius[0][1], | |
trh = borderRadius[1][0], | |
trv = borderRadius[1][1], | |
brh = borderRadius[2][0], | |
brv = borderRadius[2][1], | |
blh = borderRadius[3][0], | |
blv = borderRadius[3][1], | |
topWidth = width - trh, | |
rightHeight = height - brv, | |
bottomWidth = width - brh, | |
leftHeight = height - blv; | |
return { | |
topLeftOuter: getCurvePoints( | |
x, | |
y, | |
tlh, | |
tlv | |
).topLeft.subdivide(0.5), | |
topLeftInner: getCurvePoints( | |
x + borders[3].width, | |
y + borders[0].width, | |
Math.max(0, tlh - borders[3].width), | |
Math.max(0, tlv - borders[0].width) | |
).topLeft.subdivide(0.5), | |
topRightOuter: getCurvePoints( | |
x + topWidth, | |
y, | |
trh, | |
trv | |
).topRight.subdivide(0.5), | |
topRightInner: getCurvePoints( | |
x + Math.min(topWidth, width + borders[3].width), | |
y + borders[0].width, | |
(topWidth > width + borders[3].width) ? 0 :trh - borders[3].width, | |
trv - borders[0].width | |
).topRight.subdivide(0.5), | |
bottomRightOuter: getCurvePoints( | |
x + bottomWidth, | |
y + rightHeight, | |
brh, | |
brv | |
).bottomRight.subdivide(0.5), | |
bottomRightInner: getCurvePoints( | |
x + Math.min(bottomWidth, width + borders[3].width), | |
y + Math.min(rightHeight, height + borders[0].width), | |
Math.max(0, brh - borders[1].width), | |
Math.max(0, brv - borders[2].width) | |
).bottomRight.subdivide(0.5), | |
bottomLeftOuter: getCurvePoints( | |
x, | |
y + leftHeight, | |
blh, | |
blv | |
).bottomLeft.subdivide(0.5), | |
bottomLeftInner: getCurvePoints( | |
x + borders[3].width, | |
y + leftHeight, | |
Math.max(0, blh - borders[3].width), | |
Math.max(0, blv - borders[2].width) | |
).bottomLeft.subdivide(0.5) | |
}; | |
} | |
function getBorderClip(element, borderPoints, borders, radius, bounds) { | |
var backgroundClip = getCSS(element, 'backgroundClip'), | |
borderArgs = []; | |
switch(backgroundClip) { | |
case "content-box": | |
case "padding-box": | |
parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftInner, borderPoints.topRightInner, bounds.left + borders[3].width, bounds.top + borders[0].width); | |
parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightInner, borderPoints.bottomRightInner, bounds.left + bounds.width - borders[1].width, bounds.top + borders[0].width); | |
parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightInner, borderPoints.bottomLeftInner, bounds.left + bounds.width - borders[1].width, bounds.top + bounds.height - borders[2].width); | |
parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftInner, borderPoints.topLeftInner, bounds.left + borders[3].width, bounds.top + bounds.height - borders[2].width); | |
break; | |
default: | |
parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftOuter, borderPoints.topRightOuter, bounds.left, bounds.top); | |
parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightOuter, borderPoints.bottomRightOuter, bounds.left + bounds.width, bounds.top); | |
parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightOuter, borderPoints.bottomLeftOuter, bounds.left + bounds.width, bounds.top + bounds.height); | |
parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftOuter, borderPoints.topLeftOuter, bounds.left, bounds.top + bounds.height); | |
break; | |
} | |
return borderArgs; | |
} | |
function parseBorders(element, bounds, borders){ | |
var x = bounds.left, | |
y = bounds.top, | |
width = bounds.width, | |
height = bounds.height, | |
borderSide, | |
bx, | |
by, | |
bw, | |
bh, | |
borderArgs, | |
// http://www.w3.org/TR/css3-background/#the-border-radius | |
borderRadius = getBorderRadiusData(element), | |
borderPoints = calculateCurvePoints(bounds, borderRadius, borders), | |
borderData = { | |
clip: getBorderClip(element, borderPoints, borders, borderRadius, bounds), | |
borders: [] | |
}; | |
for (borderSide = 0; borderSide < 4; borderSide++) { | |
if (borders[borderSide].width > 0) { | |
bx = x; | |
by = y; | |
bw = width; | |
bh = height - (borders[2].width); | |
switch(borderSide) { | |
case 0: | |
// top border | |
bh = borders[0].width; | |
borderArgs = drawSide({ | |
c1: [bx, by], | |
c2: [bx + bw, by], | |
c3: [bx + bw - borders[1].width, by + bh], | |
c4: [bx + borders[3].width, by + bh] | |
}, borderRadius[0], borderRadius[1], | |
borderPoints.topLeftOuter, borderPoints.topLeftInner, borderPoints.topRightOuter, borderPoints.topRightInner); | |
break; | |
case 1: | |
// right border | |
bx = x + width - (borders[1].width); | |
bw = borders[1].width; | |
borderArgs = drawSide({ | |
c1: [bx + bw, by], | |
c2: [bx + bw, by + bh + borders[2].width], | |
c3: [bx, by + bh], | |
c4: [bx, by + borders[0].width] | |
}, borderRadius[1], borderRadius[2], | |
borderPoints.topRightOuter, borderPoints.topRightInner, borderPoints.bottomRightOuter, borderPoints.bottomRightInner); | |
break; | |
case 2: | |
// bottom border | |
by = (by + height) - (borders[2].width); | |
bh = borders[2].width; | |
borderArgs = drawSide({ | |
c1: [bx + bw, by + bh], | |
c2: [bx, by + bh], | |
c3: [bx + borders[3].width, by], | |
c4: [bx + bw - borders[3].width, by] | |
}, borderRadius[2], borderRadius[3], | |
borderPoints.bottomRightOuter, borderPoints.bottomRightInner, borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner); | |
break; | |
case 3: | |
// left border | |
bw = borders[3].width; | |
borderArgs = drawSide({ | |
c1: [bx, by + bh + borders[2].width], | |
c2: [bx, by], | |
c3: [bx + bw, by + borders[0].width], | |
c4: [bx + bw, by + bh] | |
}, borderRadius[3], borderRadius[0], | |
borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner, borderPoints.topLeftOuter, borderPoints.topLeftInner); | |
break; | |
} | |
borderData.borders.push({ | |
args: borderArgs, | |
color: borders[borderSide].color | |
}); | |
} | |
} | |
return borderData; | |
} | |
function createShape(ctx, args) { | |
var shape = ctx.drawShape(); | |
args.forEach(function(border, index) { | |
shape[(index === 0) ? "moveTo" : border[0] + "To" ].apply(null, border.slice(1)); | |
}); | |
return shape; | |
} | |
function renderBorders(ctx, borderArgs, color) { | |
if (color !== "transparent") { | |
ctx.setVariable( "fillStyle", color); | |
createShape(ctx, borderArgs); | |
ctx.fill(); | |
numDraws+=1; | |
} | |
} | |
function renderFormValue (el, bounds, stack){ | |
var valueWrap = doc.createElement('valuewrap'), | |
cssPropertyArray = ['lineHeight','textAlign','fontFamily','color','fontSize','paddingLeft','paddingTop','width','height','border','borderLeftWidth','borderTopWidth'], | |
textValue, | |
textNode; | |
cssPropertyArray.forEach(function(property) { | |
try { | |
valueWrap.style[property] = getCSS(el, property); | |
} catch(e) { | |
// Older IE has issues with "border" | |
Util.log("html2canvas: Parse: Exception caught in renderFormValue: " + e.message); | |
} | |
}); | |
valueWrap.style.borderColor = "black"; | |
valueWrap.style.borderStyle = "solid"; | |
valueWrap.style.display = "block"; | |
valueWrap.style.position = "absolute"; | |
if (/^(submit|reset|button|text|password)$/.test(el.type) || el.nodeName === "SELECT"){ | |
valueWrap.style.lineHeight = getCSS(el, "height"); | |
} | |
valueWrap.style.top = bounds.top + "px"; | |
valueWrap.style.left = bounds.left + "px"; | |
textValue = (el.nodeName === "SELECT") ? (el.options[el.selectedIndex] || 0).text : el.value; | |
if(!textValue) { | |
textValue = el.placeholder; | |
} | |
textNode = doc.createTextNode(textValue); | |
valueWrap.appendChild(textNode); | |
body.appendChild(valueWrap); | |
renderText(el, textNode, stack); | |
body.removeChild(valueWrap); | |
} | |
function drawImage (ctx) { | |
ctx.drawImage.apply(ctx, Array.prototype.slice.call(arguments, 1)); | |
numDraws+=1; | |
} | |
function getPseudoElement(el, which) { | |
var elStyle = window.getComputedStyle(el, which); | |
if(!elStyle || !elStyle.content || elStyle.content === "none" || elStyle.content === "-moz-alt-content" || elStyle.display === "none") { | |
return; | |
} | |
var content = elStyle.content + '', | |
first = content.substr( 0, 1 ); | |
//strips quotes | |
if(first === content.substr( content.length - 1 ) && first.match(/'|"/)) { | |
content = content.substr( 1, content.length - 2 ); | |
} | |
var isImage = content.substr( 0, 3 ) === 'url', | |
elps = document.createElement( isImage ? 'img' : 'span' ); | |
elps.className = pseudoHide + "-before " + pseudoHide + "-after"; | |
Object.keys(elStyle).filter(indexedProperty).forEach(function(prop) { | |
// Prevent assigning of read only CSS Rules, ex. length, parentRule | |
try { | |
elps.style[prop] = elStyle[prop]; | |
} catch (e) { | |
Util.log(['Tried to assign readonly property ', prop, 'Error:', e]); | |
} | |
}); | |
if(isImage) { | |
elps.src = Util.parseBackgroundImage(content)[0].args[0]; | |
} else { | |
elps.innerHTML = content; | |
} | |
return elps; | |
} | |
function indexedProperty(property) { | |
return (isNaN(window.parseInt(property, 10))); | |
} | |
function injectPseudoElements(el, stack) { | |
var before = getPseudoElement(el, ':before'), | |
after = getPseudoElement(el, ':after'); | |
if(!before && !after) { | |
return; | |
} | |
if(before) { | |
el.className += " " + pseudoHide + "-before"; | |
el.parentNode.insertBefore(before, el); | |
parseElement(before, stack, true); | |
el.parentNode.removeChild(before); | |
el.className = el.className.replace(pseudoHide + "-before", "").trim(); | |
} | |
if (after) { | |
el.className += " " + pseudoHide + "-after"; | |
el.appendChild(after); | |
parseElement(after, stack, true); | |
el.removeChild(after); | |
el.className = el.className.replace(pseudoHide + "-after", "").trim(); | |
} | |
} | |
function renderBackgroundRepeat(ctx, image, backgroundPosition, bounds) { | |
var offsetX = Math.round(bounds.left + backgroundPosition.left), | |
offsetY = Math.round(bounds.top + backgroundPosition.top); | |
ctx.createPattern(image); | |
ctx.translate(offsetX, offsetY); | |
ctx.fill(); | |
ctx.translate(-offsetX, -offsetY); | |
} | |
function backgroundRepeatShape(ctx, image, backgroundPosition, bounds, left, top, width, height) { | |
var args = []; | |
args.push(["line", Math.round(left), Math.round(top)]); | |
args.push(["line", Math.round(left + width), Math.round(top)]); | |
args.push(["line", Math.round(left + width), Math.round(height + top)]); | |
args.push(["line", Math.round(left), Math.round(height + top)]); | |
createShape(ctx, args); | |
ctx.save(); | |
ctx.clip(); | |
renderBackgroundRepeat(ctx, image, backgroundPosition, bounds); | |
ctx.restore(); | |
} | |
function renderBackgroundColor(ctx, backgroundBounds, bgcolor) { | |
renderRect( | |
ctx, | |
backgroundBounds.left, | |
backgroundBounds.top, | |
backgroundBounds.width, | |
backgroundBounds.height, | |
bgcolor | |
); | |
} | |
function renderBackgroundRepeating(el, bounds, ctx, image, imageIndex) { | |
var backgroundSize = Util.BackgroundSize(el, bounds, image, imageIndex), | |
backgroundPosition = Util.BackgroundPosition(el, bounds, image, imageIndex, backgroundSize), | |
backgroundRepeat = getCSS(el, "backgroundRepeat").split(",").map(Util.trimText); | |
image = resizeImage(image, backgroundSize); | |
backgroundRepeat = backgroundRepeat[imageIndex] || backgroundRepeat[0]; | |
switch (backgroundRepeat) { | |
case "repeat-x": | |
backgroundRepeatShape(ctx, image, backgroundPosition, bounds, | |
bounds.left, bounds.top + backgroundPosition.top, 99999, image.height); | |
break; | |
case "repeat-y": | |
backgroundRepeatShape(ctx, image, backgroundPosition, bounds, | |
bounds.left + backgroundPosition.left, bounds.top, image.width, 99999); | |
break; | |
case "no-repeat": | |
backgroundRepeatShape(ctx, image, backgroundPosition, bounds, | |
bounds.left + backgroundPosition.left, bounds.top + backgroundPosition.top, image.width, image.height); | |
break; | |
default: | |
renderBackgroundRepeat(ctx, image, backgroundPosition, { | |
top: bounds.top, | |
left: bounds.left, | |
width: image.width, | |
height: image.height | |
}); | |
break; | |
} | |
} | |
function renderBackgroundImage(element, bounds, ctx) { | |
var backgroundImage = getCSS(element, "backgroundImage"), | |
backgroundImages = Util.parseBackgroundImage(backgroundImage), | |
image, | |
imageIndex = backgroundImages.length; | |
while(imageIndex--) { | |
backgroundImage = backgroundImages[imageIndex]; | |
if (!backgroundImage.args || backgroundImage.args.length === 0) { | |
continue; | |
} | |
var key = backgroundImage.method === 'url' ? | |
backgroundImage.args[0] : | |
backgroundImage.value; | |
image = loadImage(key); | |
// TODO add support for background-origin | |
if (image) { | |
renderBackgroundRepeating(element, bounds, ctx, image, imageIndex); | |
} else { | |
Util.log("html2canvas: Error loading background:", backgroundImage); | |
} | |
} | |
} | |
function resizeImage(image, bounds) { | |
if(image.width === bounds.width && image.height === bounds.height) { | |
return image; | |
} | |
var ctx, canvas = doc.createElement('canvas'); | |
canvas.width = bounds.width; | |
canvas.height = bounds.height; | |
ctx = canvas.getContext("2d"); | |
drawImage(ctx, image, 0, 0, image.width, image.height, 0, 0, bounds.width, bounds.height ); | |
return canvas; | |
} | |
function setOpacity(ctx, element, parentStack) { | |
return ctx.setVariable("globalAlpha", getCSS(element, "opacity") * ((parentStack) ? parentStack.opacity : 1)); | |
} | |
function removePx(str) { | |
return str.replace("px", ""); | |
} | |
var transformRegExp = /(matrix)\((.+)\)/; | |
function getTransform(element, parentStack) { | |
var transform = getCSS(element, "transform") || getCSS(element, "-webkit-transform") || getCSS(element, "-moz-transform") || getCSS(element, "-ms-transform") || getCSS(element, "-o-transform"); | |
var transformOrigin = getCSS(element, "transform-origin") || getCSS(element, "-webkit-transform-origin") || getCSS(element, "-moz-transform-origin") || getCSS(element, "-ms-transform-origin") || getCSS(element, "-o-transform-origin") || "0px 0px"; | |
transformOrigin = transformOrigin.split(" ").map(removePx).map(Util.asFloat); | |
var matrix; | |
if (transform && transform !== "none") { | |
var match = transform.match(transformRegExp); | |
if (match) { | |
switch(match[1]) { | |
case "matrix": | |
matrix = match[2].split(",").map(Util.trimText).map(Util.asFloat); | |
break; | |
} | |
} | |
} | |
return { | |
origin: transformOrigin, | |
matrix: matrix | |
}; | |
} | |
function createStack(element, parentStack, bounds, transform) { | |
var ctx = h2cRenderContext((!parentStack) ? documentWidth() : bounds.width , (!parentStack) ? documentHeight() : bounds.height), | |
stack = { | |
ctx: ctx, | |
opacity: setOpacity(ctx, element, parentStack), | |
cssPosition: getCSS(element, "position"), | |
borders: getBorderData(element), | |
transform: transform, | |
clip: (parentStack && parentStack.clip) ? Util.Extend( {}, parentStack.clip ) : null | |
}; | |
setZ(element, stack, parentStack); | |
// TODO correct overflow for absolute content residing under a static position | |
if (options.useOverflow === true && /(hidden|scroll|auto)/.test(getCSS(element, "overflow")) === true && /(BODY)/i.test(element.nodeName) === false){ | |
stack.clip = (stack.clip) ? clipBounds(stack.clip, bounds) : bounds; | |
} | |
return stack; | |
} | |
function getBackgroundBounds(borders, bounds, clip) { | |
var backgroundBounds = { | |
left: bounds.left + borders[3].width, | |
top: bounds.top + borders[0].width, | |
width: bounds.width - (borders[1].width + borders[3].width), | |
height: bounds.height - (borders[0].width + borders[2].width) | |
}; | |
if (clip) { | |
backgroundBounds = clipBounds(backgroundBounds, clip); | |
} | |
return backgroundBounds; | |
} | |
function getBounds(element, transform) { | |
var bounds = (transform.matrix) ? Util.OffsetBounds(element) : Util.Bounds(element); | |
transform.origin[0] += bounds.left; | |
transform.origin[1] += bounds.top; | |
return bounds; | |
} | |
function renderElement(element, parentStack, pseudoElement, ignoreBackground) { | |
var transform = getTransform(element, parentStack), | |
bounds = getBounds(element, transform), | |
image, | |
stack = createStack(element, parentStack, bounds, transform), | |
borders = stack.borders, | |
ctx = stack.ctx, | |
backgroundBounds = getBackgroundBounds(borders, bounds, stack.clip), | |
borderData = parseBorders(element, bounds, borders), | |
backgroundColor = (ignoreElementsRegExp.test(element.nodeName)) ? "#efefef" : getCSS(element, "backgroundColor"); | |
createShape(ctx, borderData.clip); | |
ctx.save(); | |
ctx.clip(); | |
if (backgroundBounds.height > 0 && backgroundBounds.width > 0 && !ignoreBackground) { | |
renderBackgroundColor(ctx, bounds, backgroundColor); | |
renderBackgroundImage(element, backgroundBounds, ctx); | |
} else if (ignoreBackground) { | |
stack.backgroundColor = backgroundColor; | |
} | |
ctx.restore(); | |
borderData.borders.forEach(function(border) { | |
renderBorders(ctx, border.args, border.color); | |
}); | |
if (!pseudoElement) { | |
injectPseudoElements(element, stack); | |
} | |
switch(element.nodeName){ | |
case "IMG": | |
if ((image = loadImage(element.getAttribute('src')))) { | |
renderImage(ctx, element, image, bounds, borders); | |
} else { | |
Util.log("html2canvas: Error loading <img>:" + element.getAttribute('src')); | |
} | |
break; | |
case "INPUT": | |
// TODO add all relevant type's, i.e. HTML5 new stuff | |
// todo add support for placeholder attribute for browsers which support it | |
if (/^(text|url|email|submit|button|reset)$/.test(element.type) && (element.value || element.placeholder || "").length > 0){ | |
renderFormValue(element, bounds, stack); | |
} | |
break; | |
case "TEXTAREA": | |
if ((element.value || element.placeholder || "").length > 0){ | |
renderFormValue(element, bounds, stack); | |
} | |
break; | |
case "SELECT": | |
if ((element.options||element.placeholder || "").length > 0){ | |
renderFormValue(element, bounds, stack); | |
} | |
break; | |
case "LI": | |
renderListItem(element, stack, backgroundBounds); | |
break; | |
case "CANVAS": | |
renderImage(ctx, element, element, bounds, borders); | |
break; | |
} | |
return stack; | |
} | |
function isElementVisible(element) { | |
return (getCSS(element, 'display') !== "none" && getCSS(element, 'visibility') !== "hidden" && !element.hasAttribute("data-html2canvas-ignore")); | |
} | |
function parseElement (element, stack, pseudoElement) { | |
if (isElementVisible(element)) { | |
stack = renderElement(element, stack, pseudoElement, false) || stack; | |
if (!ignoreElementsRegExp.test(element.nodeName)) { | |
parseChildren(element, stack, pseudoElement); | |
} | |
} | |
} | |
function parseChildren(element, stack, pseudoElement) { | |
Util.Children(element).forEach(function(node) { | |
if (node.nodeType === node.ELEMENT_NODE) { | |
parseElement(node, stack, pseudoElement); | |
} else if (node.nodeType === node.TEXT_NODE) { | |
renderText(element, node, stack); | |
} | |
}); | |
} | |
function init() { | |
var background = getCSS(document.documentElement, "backgroundColor"), | |
transparentBackground = (Util.isTransparent(background) && element === document.body), | |
stack = renderElement(element, null, false, transparentBackground); | |
parseChildren(element, stack); | |
if (transparentBackground) { | |
background = stack.backgroundColor; | |
} | |
body.removeChild(hidePseudoElements); | |
return { | |
backgroundColor: background, | |
stack: stack | |
}; | |
} | |
return init(); | |
}; | |
function h2czContext(zindex) { | |
return { | |
zindex: zindex, | |
children: [] | |
}; | |
} | |
_html2canvas.Preload = function( options ) { | |
var images = { | |
numLoaded: 0, // also failed are counted here | |
numFailed: 0, | |
numTotal: 0, | |
cleanupDone: false | |
}, | |
pageOrigin, | |
Util = _html2canvas.Util, | |
methods, | |
i, | |
count = 0, | |
element = options.elements[0] || document.body, | |
doc = element.ownerDocument, | |
domImages = element.getElementsByTagName('img'), // Fetch images of the present element only | |
imgLen = domImages.length, | |
link = doc.createElement("a"), | |
supportCORS = (function( img ){ | |
return (img.crossOrigin !== undefined); | |
})(new Image()), | |
timeoutTimer; | |
link.href = window.location.href; | |
pageOrigin = link.protocol + link.host; | |
function isSameOrigin(url){ | |
link.href = url; | |
link.href = link.href; // YES, BELIEVE IT OR NOT, that is required for IE9 - http://jsfiddle.net/niklasvh/2e48b/ | |
var origin = link.protocol + link.host; | |
return (origin === pageOrigin); | |
} | |
function start(){ | |
Util.log("html2canvas: start: images: " + images.numLoaded + " / " + images.numTotal + " (failed: " + images.numFailed + ")"); | |
if (!images.firstRun && images.numLoaded >= images.numTotal){ | |
Util.log("Finished loading images: # " + images.numTotal + " (failed: " + images.numFailed + ")"); | |
if (typeof options.complete === "function"){ | |
options.complete(images); | |
} | |
} | |
} | |
// TODO modify proxy to serve images with CORS enabled, where available | |
function proxyGetImage(url, img, imageObj){ | |
var callback_name, | |
scriptUrl = options.proxy, | |
script; | |
link.href = url; | |
url = link.href; // work around for pages with base href="" set - WARNING: this may change the url | |
callback_name = 'html2canvas_' + (count++); | |
imageObj.callbackname = callback_name; | |
if (scriptUrl.indexOf("?") > -1) { | |
scriptUrl += "&"; | |
} else { | |
scriptUrl += "?"; | |
} | |
scriptUrl += 'url=' + encodeURIComponent(url) + '&callback=' + callback_name; | |
script = doc.createElement("script"); | |
window[callback_name] = function(a){ | |
if (a.substring(0,6) === "error:"){ | |
imageObj.succeeded = false; | |
images.numLoaded++; | |
images.numFailed++; | |
start(); | |
} else { | |
setImageLoadHandlers(img, imageObj); | |
img.src = a; | |
} | |
window[callback_name] = undefined; // to work with IE<9 // NOTE: that the undefined callback property-name still exists on the window object (for IE<9) | |
try { | |
delete window[callback_name]; // for all browser that support this | |
} catch(ex) {} | |
script.parentNode.removeChild(script); | |
script = null; | |
delete imageObj.script; | |
delete imageObj.callbackname; | |
}; | |
script.setAttribute("type", "text/javascript"); | |
script.setAttribute("src", scriptUrl); | |
imageObj.script = script; | |
window.document.body.appendChild(script); | |
} | |
function loadPseudoElement(element, type) { | |
var style = window.getComputedStyle(element, type), | |
content = style.content; | |
if (content.substr(0, 3) === 'url') { | |
methods.loadImage(_html2canvas.Util.parseBackgroundImage(content)[0].args[0]); | |
} | |
loadBackgroundImages(style.backgroundImage, element); | |
} | |
function loadPseudoElementImages(element) { | |
loadPseudoElement(element, ":before"); | |
loadPseudoElement(element, ":after"); | |
} | |
function loadGradientImage(backgroundImage, bounds) { | |
var img = _html2canvas.Generate.Gradient(backgroundImage, bounds); | |
if (img !== undefined){ | |
images[backgroundImage] = { | |
img: img, | |
succeeded: true | |
}; | |
images.numTotal++; | |
images.numLoaded++; | |
start(); | |
} | |
} | |
function invalidBackgrounds(background_image) { | |
return (background_image && background_image.method && background_image.args && background_image.args.length > 0 ); | |
} | |
function loadBackgroundImages(background_image, el) { | |
var bounds; | |
_html2canvas.Util.parseBackgroundImage(background_image).filter(invalidBackgrounds).forEach(function(background_image) { | |
if (background_image.method === 'url') { | |
methods.loadImage(background_image.args[0]); | |
} else if(background_image.method.match(/\-?gradient$/)) { | |
if(bounds === undefined) { | |
bounds = _html2canvas.Util.Bounds(el); | |
} | |
loadGradientImage(background_image.value, bounds); | |
} | |
}); | |
} | |
function getImages (el) { | |
var elNodeType = false; | |
// Firefox fails with permission denied on pages with iframes | |
try { | |
Util.Children(el).forEach(getImages); | |
} | |
catch( e ) {} | |
try { | |
elNodeType = el.nodeType; | |
} catch (ex) { | |
elNodeType = false; | |
Util.log("html2canvas: failed to access some element's nodeType - Exception: " + ex.message); | |
} | |
if (elNodeType === 1 || elNodeType === undefined) { | |
loadPseudoElementImages(el); | |
try { | |
loadBackgroundImages(Util.getCSS(el, 'backgroundImage'), el); | |
} catch(e) { | |
Util.log("html2canvas: failed to get background-image - Exception: " + e.message); | |
} | |
loadBackgroundImages(el); | |
} | |
} | |
function setImageLoadHandlers(img, imageObj) { | |
img.onload = function() { | |
if ( imageObj.timer !== undefined ) { | |
// CORS succeeded | |
window.clearTimeout( imageObj.timer ); | |
} | |
images.numLoaded++; | |
imageObj.succeeded = true; | |
img.onerror = img.onload = null; | |
start(); | |
}; | |
img.onerror = function() { | |
if (img.crossOrigin === "anonymous") { | |
// CORS failed | |
window.clearTimeout( imageObj.timer ); | |
// let's try with proxy instead | |
if ( options.proxy ) { | |
var src = img.src; | |
img = new Image(); | |
imageObj.img = img; | |
img.src = src; | |
proxyGetImage( img.src, img, imageObj ); | |
return; | |
} | |
} | |
images.numLoaded++; | |
images.numFailed++; | |
imageObj.succeeded = false; | |
img.onerror = img.onload = null; | |
start(); | |
}; | |
} | |
methods = { | |
loadImage: function( src ) { | |
var img, imageObj; | |
if ( src && images[src] === undefined ) { | |
img = new Image(); | |
if ( src.match(/data:image\/.*;base64,/i) ) { | |
img.src = src.replace(/url\(['"]{0,}|['"]{0,}\)$/ig, ''); | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
setImageLoadHandlers(img, imageObj); | |
} else if ( isSameOrigin( src ) || options.allowTaint === true ) { | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
setImageLoadHandlers(img, imageObj); | |
img.src = src; | |
} else if ( supportCORS && !options.allowTaint && options.useCORS ) { | |
// attempt to load with CORS | |
img.crossOrigin = "anonymous"; | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
setImageLoadHandlers(img, imageObj); | |
img.src = src; | |
} else if ( options.proxy ) { | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
proxyGetImage( src, img, imageObj ); | |
} | |
} | |
}, | |
cleanupDOM: function(cause) { | |
var img, src; | |
if (!images.cleanupDone) { | |
if (cause && typeof cause === "string") { | |
Util.log("html2canvas: Cleanup because: " + cause); | |
} else { | |
Util.log("html2canvas: Cleanup after timeout: " + options.timeout + " ms."); | |
} | |
for (src in images) { | |
if (images.hasOwnProperty(src)) { | |
img = images[src]; | |
if (typeof img === "object" && img.callbackname && img.succeeded === undefined) { | |
// cancel proxy image request | |
window[img.callbackname] = undefined; // to work with IE<9 // NOTE: that the undefined callback property-name still exists on the window object (for IE<9) | |
try { | |
delete window[img.callbackname]; // for all browser that support this | |
} catch(ex) {} | |
if (img.script && img.script.parentNode) { | |
img.script.setAttribute("src", "about:blank"); // try to cancel running request | |
img.script.parentNode.removeChild(img.script); | |
} | |
images.numLoaded++; | |
images.numFailed++; | |
Util.log("html2canvas: Cleaned up failed img: '" + src + "' Steps: " + images.numLoaded + " / " + images.numTotal); | |
} | |
} | |
} | |
// cancel any pending requestForJob | |
if(window.stop !== undefined) { | |
window.stop(); | |
} else if(document.execCommand !== undefined) { | |
document.execCommand("Stop", false); | |
} | |
if (document.close !== undefined) { | |
document.close(); | |
} | |
images.cleanupDone = true; | |
if (!(cause && typeof cause === "string")) { | |
start(); | |
} | |
} | |
}, | |
renderingDone: function() { | |
if (timeoutTimer) { | |
window.clearTimeout(timeoutTimer); | |
} | |
} | |
}; | |
if (options.timeout > 0) { | |
timeoutTimer = window.setTimeout(methods.cleanupDOM, options.timeout); | |
} | |
Util.log('html2canvas: Preload starts: finding background-images'); | |
images.firstRun = true; | |
getImages(element); | |
Util.log('html2canvas: Preload: Finding images'); | |
// load <img> images | |
for (i = 0; i < imgLen; i+=1){ | |
methods.loadImage( domImages[i].getAttribute( "src" ) ); | |
} | |
images.firstRun = false; | |
Util.log('html2canvas: Preload: Done.'); | |
if (images.numTotal === images.numLoaded) { | |
start(); | |
} | |
return methods; | |
}; | |
_html2canvas.Renderer = function(parseQueue, options){ | |
// http://www.w3.org/TR/CSS21/zindex.html | |
function createRenderQueue(parseQueue) { | |
var queue = [], | |
rootContext; | |
rootContext = (function buildStackingContext(rootNode) { | |
var rootContext = {}; | |
function insert(context, node, specialParent) { | |
var zi = (node.zIndex.zindex === 'auto') ? 0 : Number(node.zIndex.zindex), | |
contextForChildren = context, // the stacking context for children | |
isPositioned = node.zIndex.isPositioned, | |
isFloated = node.zIndex.isFloated, | |
stub = {node: node}, | |
childrenDest = specialParent; // where children without z-index should be pushed into | |
if (node.zIndex.ownStacking) { | |
// '!' comes before numbers in sorted array | |
contextForChildren = stub.context = { '!': [{node:node, children: []}]}; | |
childrenDest = undefined; | |
} else if (isPositioned || isFloated) { | |
childrenDest = stub.children = []; | |
} | |
if (zi === 0 && specialParent) { | |
specialParent.push(stub); | |
} else { | |
if (!context[zi]) { context[zi] = []; } | |
context[zi].push(stub); | |
} | |
node.zIndex.children.forEach(function(childNode) { | |
insert(contextForChildren, childNode, childrenDest); | |
}); | |
} | |
insert(rootContext, rootNode); | |
return rootContext; | |
})(parseQueue); | |
function sortZ(context) { | |
Object.keys(context).sort().forEach(function(zi) { | |
var nonPositioned = [], | |
floated = [], | |
positioned = [], | |
list = []; | |
// positioned after static | |
context[zi].forEach(function(v) { | |
if (v.node.zIndex.isPositioned || v.node.zIndex.opacity < 1) { | |
// http://www.w3.org/TR/css3-color/#transparency | |
// non-positioned element with opactiy < 1 should be stacked as if it were a positioned element with ‘z-index: 0’ and ‘opacity: 1’. | |
positioned.push(v); | |
} else if (v.node.zIndex.isFloated) { | |
floated.push(v); | |
} else { | |
nonPositioned.push(v); | |
} | |
}); | |
(function walk(arr) { | |
arr.forEach(function(v) { | |
list.push(v); | |
if (v.children) { walk(v.children); } | |
}); | |
})(nonPositioned.concat(floated, positioned)); | |
list.forEach(function(v) { | |
if (v.context) { | |
sortZ(v.context); | |
} else { | |
queue.push(v.node); | |
} | |
}); | |
}); | |
} | |
sortZ(rootContext); | |
return queue; | |
} | |
function getRenderer(rendererName) { | |
var renderer; | |
if (typeof options.renderer === "string" && _html2canvas.Renderer[rendererName] !== undefined) { | |
renderer = _html2canvas.Renderer[rendererName](options); | |
} else if (typeof rendererName === "function") { | |
renderer = rendererName(options); | |
} else { | |
throw new Error("Unknown renderer"); | |
} | |
if ( typeof renderer !== "function" ) { | |
throw new Error("Invalid renderer defined"); | |
} | |
return renderer; | |
} | |
return getRenderer(options.renderer)(parseQueue, options, document, createRenderQueue(parseQueue.stack), _html2canvas); | |
}; | |
_html2canvas.Util.Support = function (options, doc) { | |
function supportSVGRendering() { | |
var img = new Image(), | |
canvas = doc.createElement("canvas"), | |
ctx = (canvas.getContext === undefined) ? false : canvas.getContext("2d"); | |
if (ctx === false) { | |
return false; | |
} | |
canvas.width = canvas.height = 10; | |
img.src = [ | |
"data:image/svg+xml,", | |
"<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'>", | |
"<foreignObject width='10' height='10'>", | |
"<div xmlns='http://www.w3.org/1999/xhtml' style='width:10;height:10;'>", | |
"sup", | |
"</div>", | |
"</foreignObject>", | |
"</svg>" | |
].join(""); | |
try { | |
ctx.drawImage(img, 0, 0); | |
canvas.toDataURL(); | |
} catch(e) { | |
return false; | |
} | |
_html2canvas.Util.log('html2canvas: Parse: SVG powered rendering available'); | |
return true; | |
} | |
// Test whether we can use ranges to measure bounding boxes | |
// Opera doesn't provide valid bounds.height/bottom even though it supports the method. | |
function supportRangeBounds() { | |
var r, testElement, rangeBounds, rangeHeight, support = false; | |
if (doc.createRange) { | |
r = doc.createRange(); | |
if (r.getBoundingClientRect) { | |
testElement = doc.createElement('boundtest'); | |
testElement.style.height = "123px"; | |
testElement.style.display = "block"; | |
doc.body.appendChild(testElement); | |
r.selectNode(testElement); | |
rangeBounds = r.getBoundingClientRect(); | |
rangeHeight = rangeBounds.height; | |
if (rangeHeight === 123) { | |
support = true; | |
} | |
doc.body.removeChild(testElement); | |
} | |
} | |
return support; | |
} | |
return { | |
rangeBounds: supportRangeBounds(), | |
svgRendering: options.svgRendering && supportSVGRendering() | |
}; | |
}; | |
window.html2canvas = function(elements, opts) { | |
elements = (elements.length) ? elements : [elements]; | |
var queue, | |
canvas, | |
options = { | |
// general | |
logging: false, | |
elements: elements, | |
background: "#fff", | |
// preload options | |
proxy: null, | |
timeout: 0, // no timeout | |
useCORS: false, // try to load images as CORS (where available), before falling back to proxy | |
allowTaint: false, // whether to allow images to taint the canvas, won't need proxy if set to true | |
// parse options | |
svgRendering: false, // use svg powered rendering where available (FF11+) | |
ignoreElements: "IFRAME|OBJECT|PARAM", | |
useOverflow: true, | |
letterRendering: false, | |
chinese: false, | |
// render options | |
width: null, | |
height: null, | |
taintTest: true, // do a taint test with all images before applying to canvas | |
renderer: "Canvas" | |
}; | |
options = _html2canvas.Util.Extend(opts, options); | |
_html2canvas.logging = options.logging; | |
options.complete = function( images ) { | |
if (typeof options.onpreloaded === "function") { | |
if ( options.onpreloaded( images ) === false ) { | |
return; | |
} | |
} | |
queue = _html2canvas.Parse( images, options ); | |
if (typeof options.onparsed === "function") { | |
if ( options.onparsed( queue ) === false ) { | |
return; | |
} | |
} | |
canvas = _html2canvas.Renderer( queue, options ); | |
if (typeof options.onrendered === "function") { | |
options.onrendered( canvas ); | |
} | |
}; | |
// for pages without images, we still want this to be async, i.e. return methods before executing | |
window.setTimeout( function(){ | |
_html2canvas.Preload( options ); | |
}, 0 ); | |
return { | |
render: function( queue, opts ) { | |
return _html2canvas.Renderer( queue, _html2canvas.Util.Extend(opts, options) ); | |
}, | |
parse: function( images, opts ) { | |
return _html2canvas.Parse( images, _html2canvas.Util.Extend(opts, options) ); | |
}, | |
preload: function( opts ) { | |
return _html2canvas.Preload( _html2canvas.Util.Extend(opts, options) ); | |
}, | |
log: _html2canvas.Util.log | |
}; | |
}; | |
window.html2canvas.log = _html2canvas.Util.log; // for renderers | |
window.html2canvas.Renderer = { | |
Canvas: undefined // We are assuming this will be used | |
}; | |
_html2canvas.Renderer.Canvas = function(options) { | |
options = options || {}; | |
var doc = document, | |
safeImages = [], | |
testCanvas = document.createElement("canvas"), | |
testctx = testCanvas.getContext("2d"), | |
Util = _html2canvas.Util, | |
canvas = options.canvas || doc.createElement('canvas'); | |
function createShape(ctx, args) { | |
ctx.beginPath(); | |
args.forEach(function(arg) { | |
ctx[arg.name].apply(ctx, arg['arguments']); | |
}); | |
ctx.closePath(); | |
} | |
function safeImage(item) { | |
if (safeImages.indexOf(item['arguments'][0].src ) === -1) { | |
testctx.drawImage(item['arguments'][0], 0, 0); | |
try { | |
testctx.getImageData(0, 0, 1, 1); | |
} catch(e) { | |
testCanvas = doc.createElement("canvas"); | |
testctx = testCanvas.getContext("2d"); | |
return false; | |
} | |
safeImages.push(item['arguments'][0].src); | |
} | |
return true; | |
} | |
function renderItem(ctx, item) { | |
switch(item.type){ | |
case "variable": | |
ctx[item.name] = item['arguments']; | |
break; | |
case "function": | |
switch(item.name) { | |
case "createPattern": | |
if (item['arguments'][0].width > 0 && item['arguments'][0].height > 0) { | |
try { | |
ctx.fillStyle = ctx.createPattern(item['arguments'][0], "repeat"); | |
} | |
catch(e) { | |
Util.log("html2canvas: Renderer: Error creating pattern", e.message); | |
} | |
} | |
break; | |
case "drawShape": | |
createShape(ctx, item['arguments']); | |
break; | |
case "drawImage": | |
if (item['arguments'][8] > 0 && item['arguments'][7] > 0) { | |
if (!options.taintTest || (options.taintTest && safeImage(item))) { | |
ctx.drawImage.apply( ctx, item['arguments'] ); | |
} | |
} | |
break; | |
default: | |
ctx[item.name].apply(ctx, item['arguments']); | |
} | |
break; | |
} | |
} | |
return function(parsedData, options, document, queue, _html2canvas) { | |
var ctx = canvas.getContext("2d"), | |
newCanvas, | |
bounds, | |
fstyle, | |
zStack = parsedData.stack; | |
canvas.width = canvas.style.width = options.width || zStack.ctx.width; | |
canvas.height = canvas.style.height = options.height || zStack.ctx.height; | |
fstyle = ctx.fillStyle; | |
ctx.fillStyle = (Util.isTransparent(zStack.backgroundColor) && options.background !== undefined) ? options.background : parsedData.backgroundColor; | |
ctx.fillRect(0, 0, canvas.width, canvas.height); | |
ctx.fillStyle = fstyle; | |
queue.forEach(function(storageContext) { | |
// set common settings for canvas | |
ctx.textBaseline = "bottom"; | |
ctx.save(); | |
if (storageContext.transform.matrix) { | |
ctx.translate(storageContext.transform.origin[0], storageContext.transform.origin[1]); | |
ctx.transform.apply(ctx, storageContext.transform.matrix); | |
ctx.translate(-storageContext.transform.origin[0], -storageContext.transform.origin[1]); | |
} | |
if (storageContext.clip){ | |
ctx.beginPath(); | |
ctx.rect(storageContext.clip.left, storageContext.clip.top, storageContext.clip.width, storageContext.clip.height); | |
ctx.clip(); | |
} | |
if (storageContext.ctx.storage) { | |
storageContext.ctx.storage.forEach(function(item) { | |
renderItem(ctx, item); | |
}); | |
} | |
ctx.restore(); | |
}); | |
Util.log("html2canvas: Renderer: Canvas renderer done - returning canvas obj"); | |
if (options.elements.length === 1) { | |
if (typeof options.elements[0] === "object" && options.elements[0].nodeName !== "BODY") { | |
// crop image to the bounds of selected (single) element | |
bounds = _html2canvas.Util.Bounds(options.elements[0]); | |
newCanvas = document.createElement('canvas'); | |
newCanvas.width = Math.ceil(bounds.width); | |
newCanvas.height = Math.ceil(bounds.height); | |
ctx = newCanvas.getContext("2d"); | |
ctx.drawImage(canvas, bounds.left, bounds.top, bounds.width, bounds.height, 0, 0, bounds.width, bounds.height); | |
canvas = null; | |
return newCanvas; | |
} | |
} | |
return canvas; | |
}; | |
}; | |
})(window,document); | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html2canvas.js | |
WARC-Date: 2016-08-15T21:19:48Z | |
WARC-Concurrent-To: <urn:uuid:b6b64687-da90-4e9e-9cc0-fe213dfc74ec> | |
WARC-Record-ID: <urn:uuid:6e804543-cf81-43c3-98ec-5e024a90d3de> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 299 | |
GET /~mkelly/_js/html2canvas.js HTTP/1.0 | |
Connection: Close | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html2canvas.js | |
WARC-Date: 2016-08-15T21:19:48Z | |
WARC-Concurrent-To: <urn:uuid:b6b64687-da90-4e9e-9cc0-fe213dfc74ec> | |
WARC-Record-ID: <urn:uuid:db274d93-4ab2-464d-bc57-e20fe1b692b6> | |
Content-Type: application/warc-fields | |
Content-Length: 272 | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RE | |
fetchTimeMs: 276 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
outlink: http://www.w3.org/2000/svg X =JS_MISC | |
outlink: http://www.w3.org/1999/xhtml X =JS_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: https://plus.google.com/+MatKelly | |
WARC-Date: 2016-08-15T21:19:49Z | |
WARC-IP-Address: 64.233.176.113 | |
WARC-Payload-Digest: sha1:WAGPDPVYIHST3NM3WXRBYSKI4CS2QNCV | |
WARC-Record-ID: <urn:uuid:a5961bf3-f0bd-4e8c-a3bd-32f6457a31e9> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 92302 | |
HTTP/1.0 200 OK | |
Content-Type: text/html; charset=utf-8 | |
x-ua-compatible: IE=edge, chrome=1 | |
Cache-Control: no-cache, no-store, max-age=0, must-revalidate | |
Pragma: no-cache | |
Expires: Mon, 01 Jan 1990 00:00:00 GMT | |
Date: Mon, 15 Aug 2016 21:19:50 GMT | |
Server: ESF | |
X-XSS-Protection: 1; mode=block | |
X-Frame-Options: SAMEORIGIN | |
X-Content-Type-Options: nosniff | |
Alternate-Protocol: 443:quic | |
Alt-Svc: quic=":443"; ma=2592000; v="36,35,34,33,32,31,30" | |
Accept-Ranges: none | |
Vary: User-Agent,Accept-Encoding | |
<!DOCTYPE html><html lang="en" dir="ltr" itemscope itemtype="http://schema.org/Person" ><head><meta name="referrer" content="origin"><base href="https://plus.google.com/"><style> | |
body { | |
visibility: hidden; | |
} | |
</style><script>(function(){(function(){function e(a){this.t={};this.tick=function(a,c,b){var d=void 0!=b?b:(new Date).getTime();this.t[a]=[d,c];if(void 0==b)try{window.console.timeStamp("CSI/"+a)}catch(e){}};this.tick("start",null,a)}var a,d;window.performance&&(d=(a=window.performance.timing)&&a.responseStart);var f=0<d?new e(d):new e;window.jstiming={Timer:e,load:f};if(a){var c=a.navigationStart;0<c&&d>=c&&(window.jstiming.srt=d-c)}if(a){var b=window.jstiming.load;0<c&&d>=c&&(b.tick("_wtsrt",void 0,c),b.tick("wtsrt_","_wtsrt", | |
d),b.tick("tbsd_","wtsrt_"))}try{a=null,window.chrome&&window.chrome.csi&&(a=Math.floor(window.chrome.csi().pageT),b&&0<c&&(b.tick("_tbnd",void 0,window.chrome.csi().startE),b.tick("tbnd_","_tbnd",c))),null==a&&window.gtbExternal&&(a=window.gtbExternal.pageT()),null==a&&window.external&&(a=window.external.pageT,b&&0<c&&(b.tick("_tbnd",void 0,window.external.startE),b.tick("tbnd_","_tbnd",c))),a&&(window.jstiming.pt=a)}catch(g){}})();})(); | |
var loadTimer = window.jstiming.load; loadTimer.name = 'profload_streamv2_noauth_prod';</script><script>var OZ_pageStartTime = (new Date()).getTime(); var OZ_buildLabel = 'es_oz_20160811.10_p0'; var OZ_pathPrefix = ''; var OZ_jsVersion = 'S0zubYtyP20.en_US.'; var OZ_windowName = 'oz'; var OZ_lang = 'en'; var OZ_afsid = '1162296716997385714';var OZ_initWidget = 1;var OZ_footerLocale = 1;var OZ_cssUrl = '\/_\/scs\/apps-static\/_\/ss\/k\x3doz.home.-d9x04e2iyui8.L.X.O\/am\x3dHIjDITJAAQ\/d\x3d0\/rs\x3dAGLTcCPIVIi75ri_sn3E_zEC5qK0-HZ0fA';(function(){var l=this,q=function(b,a,c){b=b.split(".");c=c||l;b[0]in c||!c.execScript||c.execScript("var "+b[0]);for(var d;b.length&&(d=b.shift());)b.length||void 0===a?c[d]?c=c[d]:c=c[d]={}:c[d]=a},aa=function(){},ba=function(b,a){var c=Array.prototype.slice.call(arguments,1);return function(){var a=c.slice();a.push.apply(a,arguments);return b.apply(this,a)}},ca=Date.now||function(){return+new Date},da=function(b,a){q("OZ_wizbind",b,a)};var ea=function(b,a){da({trigger:function(a){var d=b.g(a.type);d||(t(b,a.type),d=b.g(a.type));d.call((a.target||a.srcElement).ownerDocument.documentElement,a)},bind:function(a){b.b=a;b.f&&(0<b.f.length&&a(b.f),b.f=null)}},a)};var fa=function(b,a){if(null===a)return!1;if("contains"in b&&1==a.nodeType)return b.contains(a);if("compareDocumentPosition"in b)return b==a||!!(b.compareDocumentPosition(a)&16);for(;a&&b!=a;)a=a.parentNode;return a==b};var ga={};var ha=function(b,a){return function(c){c||(c=window.event);return a.call(b,c)}},u=function(b){b=b.target||b.srcElement;!b.getAttribute&&b.parentNode&&(b=b.parentNode);return b},ia="undefined"!=typeof navigator&&/Macintosh/.test(navigator.userAgent),ja="undefined"!=typeof navigator&&!/Opera/.test(navigator.userAgent)&&/WebKit/.test(navigator.userAgent),ka={A:1,INPUT:1,TEXTAREA:1,SELECT:1,BUTTON:1},ma=function(){this._mouseEventsPrevented=!0},na={A:13,BUTTON:0,CHECKBOX:32,COMBOBOX:13,GRIDCELL:13,LINK:13, | |
LISTBOX:13,MENU:0,MENUBAR:0,MENUITEM:0,MENUITEMCHECKBOX:0,MENUITEMRADIO:0,OPTION:0,RADIO:32,RADIOGROUP:32,RESET:0,SUBMIT:0,TAB:0,TREE:13,TREEITEM:13},pa=function(b){return(b.getAttribute("type")||b.tagName).toUpperCase()in oa},ra=function(b){return(b.getAttribute("type")||b.tagName).toUpperCase()in qa},oa={CHECKBOX:!0,OPTION:!0,RADIO:!0},qa={COLOR:!0,DATE:!0,DATETIME:!0,"DATETIME-LOCAL":!0,EMAIL:!0,MONTH:!0,NUMBER:!0,PASSWORD:!0,RANGE:!0,SEARCH:!0,TEL:!0,TEXT:!0,TEXTAREA:!0,TIME:!0,URL:!0,WEEK:!0}, | |
sa={A:!0,AREA:!0,BUTTON:!0,DIALOG:!0,IMG:!0,INPUT:!0,LINK:!0,MENU:!0,OPTGROUP:!0,OPTION:!0,PROGRESS:!0,SELECT:!0,TEXTAREA:!0};var ta=function(){this.j=[];this.a=[];this.c=[];this.i={};this.b=null;this.f=[]},ua="undefined"!=typeof navigator&&/iPhone|iPad|iPod/.test(navigator.userAgent),va=String.prototype.trim?function(b){return b.trim()}:function(b){return b.replace(/^\s+/,"").replace(/\s+$/,"")},wa=/\s*;\s*/,ya=function(b,a){return function(c){var d;var f=a,e;if("click"==f&&(ia&&c.metaKey||!ia&&c.ctrlKey||2==c.which||null==c.which&&4==c.button||c.shiftKey))f="clickmod";else{var g;g=c.which||c.keyCode||c.key;ja&&3==g&&(g= | |
13);if(13!=g&&32!=g)g=!1;else{var k=u(c);e=(k.getAttribute("role")||k.type||k.tagName).toUpperCase();var h;(h="keydown"!=c.type)||("getAttribute"in k?(h=(k.getAttribute("role")||k.tagName).toUpperCase(),h=!ra(k)&&("COMBOBOX"!=h||"INPUT"!=h)&&!k.isContentEditable):h=!1,h=!h);(h=h||c.ctrlKey||c.shiftKey||c.altKey||c.metaKey||pa(k)&&32==g)||((h=k.tagName in ka)||(h=k.getAttributeNode("tabindex"),h=null!=h&&h.specified),h=!(h&&!k.disabled));h?g=!1:(k="INPUT"!=k.tagName.toUpperCase()||k.type,h=!(e in na)&& | |
13==g,g=(0==na[e]%g||h)&&!!k)}g&&(f="clickkey")}k=c.srcElement||c.target;g=v(f,c,k,"",null);var m;for(e=k;e&&e!=this;e=e.__owner||e.parentNode){m=d=e;h=f;var n=m.__jsaction;if(!n){var A,n=null;"getAttribute"in m&&(n=m.getAttribute("jsaction"));if(A=n){n=ga[A];if(!n){for(var n={},M=A.split(wa),N=0,Pa=M?M.length:0;N<Pa;N++){var r=M[N];if(r){var O=r.indexOf(":"),la=-1!=O,Qa=la?va(r.substr(0,O)):"click",r=la?va(r.substr(O+1)):r;n[Qa]=r}}ga[A]=n}m.__jsaction=n}else n=xa,m.__jsaction=n}"clickkey"==h?h= | |
"click":"click"!=h||n.click||(h="clickonly");m={h:h,action:n[h]||"",event:null,m:!1};if(m.m||m.action)break}m&&(g=v(m.h,m.event||c,k,m.action||"",d,g.timeStamp));g&&"touchend"==g.eventType&&(g.event._preventMouseEvents=ma);if(m&&m.action){if(e="clickkey"==f)e=u(c),e=(e.type||e.tagName).toUpperCase(),(e=32==(c.which||c.keyCode||c.key)&&"CHECKBOX"!=e)||(e=u(c),k=(e.getAttribute("role")||e.tagName).toUpperCase(),e=e.tagName.toUpperCase()in sa&&"A"!=k&&!pa(e)&&!ra(e)||"BUTTON"==k);e&&(c.preventDefault? | |
c.preventDefault():c.returnValue=!1);if("mouseenter"==f||"mouseleave"==f)if(e=c.relatedTarget,!("mouseover"==c.type&&"mouseenter"==f||"mouseout"==c.type&&"mouseleave"==f)||e&&(e===d||fa(d,e)))g.action="",g.actionElement=null;else{var f={},p;for(p in c)"function"!==typeof c[p]&&"srcElement"!==p&&"target"!==p&&(f[p]=c[p]);f.type="mouseover"==c.type?"mouseenter":"mouseleave";f.target=f.srcElement=d;f.bubbles=!1;g.event=f;g.targetElement=d}}else g.action="",g.actionElement=null;d=g;b.b&&(p=v(d.eventType, | |
d.event,d.targetElement,d.action,d.actionElement,d.timeStamp),"clickonly"==p.eventType&&(p.eventType="click"),b.b(p,!0));if(d.actionElement){"A"!=d.actionElement.tagName||"click"!=d.eventType&&"clickmod"!=d.eventType||(c.preventDefault?c.preventDefault():c.returnValue=!1);if(b.b)b.b(d);else{var B;if((p=l.document)&&!p.createEvent&&p.createEventObject)try{B=p.createEventObject(c)}catch($a){B=c}else B=c;d.event=B;b.f.push(d)}if("touchend"==d.event.type&&d.event._mouseEventsPrevented){c=d.event;for(var ab in c); | |
ca()}}}},v=function(b,a,c,d,f,e){return{eventType:b,event:a,targetElement:c,action:d,actionElement:f,timeStamp:e||ca()}},xa={},za=function(b,a){return function(c){var d=b,f=a,e=!1;"mouseenter"==d?d="mouseover":"mouseleave"==d&&(d="mouseout");if(c.addEventListener){if("focus"==d||"blur"==d||"error"==d||"load"==d)e=!0;c.addEventListener(d,f,e)}else c.attachEvent&&("focus"==d?d="focusin":"blur"==d&&(d="focusout"),f=ha(c,f),c.attachEvent("on"+d,f));return{h:d,g:f,l:e}}},t=function(b,a){if(!b.i.hasOwnProperty(a)){var c= | |
ya(b,a),d=za(a,c);b.i[a]=c;b.j.push(d);for(c=0;c<b.a.length;++c){var f=b.a[c];f.b.push(d.call(null,f.a))}"click"==a&&t(b,"keydown")}};ta.prototype.g=function(b){return this.i[b]};var Aa=function(b,a){var c=a.a;ua&&(c.style.cursor="pointer");for(c=0;c<b.j.length;++c)a.b.push(b.j[c].call(null,a.a))},Ba=function(b){this.a=b;this.b=[]},Da=function(b,a){for(var c=0;c<a.length;++c)if(a[c].a!=b.a&&Ca(a[c].a,b.a))return!0;return!1},Ca=function(b,a){for(;b!=a&&a.parentNode;)a=a.parentNode;return b==a};q("OZ_wizstart",function(b){var a=new ta;b=b||window;var c=b.document.documentElement,d=new Ba(c);b:{for(var f=0;f<a.a.length;f++)if(Ca(a.a[f].a,c)){c=!0;break b}c=!1}if(c)a.c.push(d);else{Aa(a,d);a.a.push(d);for(var d=a.c.concat(a.a),c=[],f=[],e=0;e<a.a.length;++e){var g=a.a[e];if(Da(g,d)){c.push(g);for(var k=0;k<g.b.length;++k){var h=g.a,m=g.b[k];h.removeEventListener?h.removeEventListener(m.h,m.g,m.l):h.detachEvent&&h.detachEvent("on"+m.h,m.g)}g.b=[]}else f.push(g)}for(e=0;e<a.c.length;++e)g=a.c[e], | |
Da(g,d)?c.push(g):(f.push(g),Aa(a,g));a.a=f;a.c=c}t(a,"click");t(a,"focus");t(a,"focusin");t(a,"blur");t(a,"focusout");t(a,"keydown");t(a,"keypress");t(a,"mouseover");t(a,"mouseout");t(a,"mouseenter");t(a,"mouseleave");window.a&&"mobilebasic"===window.a&&(t(a,"touchstart"),t(a,"touchmove"),t(a,"touchend"),t(a,"cut"),t(a,"paste"));t(a,"change");t(a,"keyup");t(a,"mousedown");t(a,"mouseup");t(a,"input");ea(a,b)},void 0);var Ea=function(b,a,c,d){for(var f=c.length;0<=(a=b.indexOf(c,a))&&a<d;){var e=b.charCodeAt(a-1);if(38==e||63==e)if(e=b.charCodeAt(a+f),!e||61==e||38==e||35==e)return a;a+=f+1}return-1},Fa=/#|$/,Ga=/[?&]($|#)/;var w=function(b,a,c,d){(new Image).src="/_/resourcefailure?type="+b+"&hl="+encodeURIComponent(c)+(d?"&reason="+encodeURIComponent(d):"")+"&url="+encodeURIComponent(a);if("css"==b&&(b=window,a=b.document.body,b.getComputedStyle&&"hidden"==b.getComputedStyle(a,null).visibility))for(c=document.createElement("div"),c.setAttribute("style","display: none;"),c.innerHTML=a.innerHTML,d=document.createElement("iframe"),d.setAttribute("src","/_/css-load-error/"),d.setAttribute("frameborder",0),d.setAttribute("height", | |
b.innerHeight-40),d.setAttribute("width","100%"),a.innerHTML="",a.appendChild(d),a.appendChild(c),b=document.getElementsByTagName("style"),a=0,c=b.length;a<c;a++)(d=b[a])&&d.parentNode&&d.parentNode.removeChild(d)};q("oz.reportError",w,void 0);var x=function(b){var a=document.createElement("style");a.type="text/css";document.getElementsByTagName("head")[0].appendChild(a);a.styleSheet?a.styleSheet.cssText=b:a.appendChild(document.createTextNode(b))};var Ha,y=window.OZ_prog=0,Ia=function(){var b=window;!b._jsl&&y<=Ha?w("js",(document.getElementById("js")||document.getElementById("base-js")).src,b.OZ_lang,y+"%"):(Ha=y,b.setTimeout(Ia,3E4))},Ja="gpcaz tab gpsrc gpsls wwc plsa plsatok prsrc apisrc vnl socpid socfid phselids ppsu rdipvld".split(" "),Ka={};q("OZ_savedQueryParams",Ka,void 0); | |
var La=function(){var b=window,a=b.location.href,c=a.indexOf("#");b.location.hash||-1==c||(a=a.substr(0,c)+"%23"+a.substr(c+1,a.length));return a},Ma=window==top?null:"about:blank";if(Ma){var z=Ma;if(!/[?&]rdipvld=1/.test(z))var Na=z.match(/^([^#]*)(.*)$/),z=Na[1]+(0>z.indexOf("?")?"?":"&")+"rdipvld=1"+Na[2];window.location=z} | |
for(var C=La(),D=0;D<Ja.length;++D){var E=Ja[D],F;var G=C,Oa=E,H=G.search(Fa),I=Ea(G,0,Oa,H);if(0>I)F=null;else{var J=G.indexOf("&",I);if(0>J||J>H)J=H;I+=Oa.length+1;F=decodeURIComponent(G.substr(I,J-I).replace(/\+/g," "))}F&&(Ka[E]=F);for(var K=C,Ra=E,L=K.search(Fa),P=0,Q=void 0,R=[];0<=(Q=Ea(K,P,Ra,L));)R.push(K.substring(P,Q)),P=Math.min(K.indexOf("&",Q)+1||L,L);R.push(K.substr(P));C=R.join("").replace(Ga,"$1")}var Sa=window; | |
if(Sa.history&&Sa.history.pushState){var S=window;S.opera||S.history.replaceState(null,S.document.title||"",C)}var T=l.OZ_pathPrefix,Ta=La().match(/^(?:([^:/?#.]+):)?(?:\/\/(?:([^/?#]*)@)?([^/#?]*?)(?::([0-9]+))?(?=[/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#([\s\S]*))?$/),U=Ta[5]||"",Ua=Ta[7]||"";Ua&&(T&&0==U.indexOf(T)&&(U=U.substr(T.length)),0==U.indexOf("/")&&(U=U.substr(1)),U!=Ua&&x(".maybe-hide {visibility:hidden}"));window.setTimeout(Ia,3E4); | |
var V=window,W=ba(function(b){b.OZ_clickCount+=1},V),Va=ba(function(b,a){b.removeEventListener?b.removeEventListener("click",a,!1):b.detachEvent&&b.detachEvent("onclick",a)},V,W);window.OZ_clickCount=0;V.addEventListener?(V.addEventListener("click",W,!1),V.addEventListener("load",Va,!1)):V.attachEvent&&(V.attachEvent("onclick",W),V.attachEvent("onload",Va));var X=function(){};X.prototype.a=function(){throw Error("unimplemented abstract method");};var Y,Z=function(){};(function(){function b(){}b.prototype=X.prototype;Z.b=X.prototype;Z.prototype=new b;Z.a=function(a,b,d){for(var f=Array(arguments.length-2),e=2;e<arguments.length;e++)f[e-2]=arguments[e];return X.prototype[b].apply(a,f)}})(); | |
Z.prototype.a=function(){var b;a:{if(!this.b&&"undefined"==typeof XMLHttpRequest&&"undefined"!=typeof ActiveXObject){for(var a=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"],c=0;c<a.length;c++){var d=a[c];try{new ActiveXObject(d);b=this.b=d;break a}catch(f){}}throw Error("Could not create ActiveXObject. ActiveX might be disabled, or MSXML might not be installed");}b=this.b}return b?new ActiveXObject(b):new XMLHttpRequest};Y=new Z;var Ya=function(b,a){if(4==a.readyState){var c=window;Wa("xcl");a.onreadystatechange=aa;var d=a.status;if(400>d)try{var d=0,f=a.getResponseHeader("X-Framework-CSS-Blocks"),e=a.responseText;f||(f="/"==e.charAt(0)&&"*"==e.charAt(1)?e.substring(2,e.indexOf("*/")):null)&&(d=2+f.length+2);if(f){for(var f=f.split(","),g=0;g<f.length;g++){var k=Number(f[g]);x(e.substr(d,k));d+=k}d<e.length&&x(e.substr(d))}else x(e),Xa()&&w("css",b,c.OZ_lang,"nooffsets");c.setTimeout(function(){for(var a=!1,d=0,f=document.styleSheets.length;d< | |
f;d++){var g=document.styleSheets[d];if((g=g.cssRules||g.rules)&&0<g.length&&"sentinel"==g[g.length-1].selectorText){a=!0;break}}if(a)if(Wa("xcr"),c.onCssLoaded)c.onCssLoaded();else c.onCssLoaded=!0;else w("css",b,c.OZ_lang,"truncated."+e.length)},1E3)}catch(h){throw c.console&&c.console.warn(h),w("css",b,c.OZ_lang,"error"),h;}else w("css",b,c.OZ_lang,"status."+d)}},Xa=function(){var b=window.navigator.userAgent;return-1!=b.indexOf("MSIE")&&0!=b.indexOf("Opera")},Za=function(){var b=window.OZ_cssUrl; | |
Wa("xcs");var a=Y.a();a.open("GET",b,!0);a.onreadystatechange=function(){Ya(b,a)};a.send(null)},Wa=function(b){var a=window;a.jstiming&&a.jstiming.load&&a.jstiming.load.tick(b)};window.OZ_cssUrl&&(window.OZ_loadCssViaLinkTag||Za());q("OZ_requestJs",function(b,a,c,d){var f=Y.a();f.open("GET",a,!0);f.onreadystatechange=function(){if(4==f.readyState){var b=window;f.onreadystatechange=aa;var g=f.status;if(200==g)b[c](f.responseText,a);else b[d](g),w("js",a,b.OZ_lang,"latejsxhr: "+g)}};f.send(null)},void 0);})(); | |
</script><title itemprop="name">Mat Kelly - Google+</title><meta property="og:title" content="Mat Kelly - Google+"><meta name="twitter:title" content="Mat Kelly - Google+"><script>loadTimer.tick('vl');</script><style>#gb{font:13px/27px Arial,sans-serif;height:30px}#gbz,#gbg{position:absolute;white-space:nowrap;top:0;height:30px;z-index:1000}#gbz{left:0;padding-left:4px}#gbg{right:0;padding-right:5px}#gbs{background:transparent;position:absolute;top:-999px;visibility:hidden;z-index:998;right:0}.gbto #gbs{background:#fff}#gbx3,#gbx4{background-color:#2d2d2d;background-image:none;_background-image:none;background-position:0 -138px;background-repeat:repeat-x;border-bottom:1px solid #000;font-size:24px;height:29px;_height:30px;opacity:1;filter:alpha(opacity=100);position:absolute;top:0;width:100%;z-index:990}#gbx3{left:0}#gbx4{right:0}#gbb{position:relative}#gbbw{left:0;position:absolute;top:30px;width:100%}.gbtcb{position:absolute;visibility:hidden}#gbz .gbtcb{right:0}#gbg .gbtcb{left:0}.gbxx{display:none !important}.gbxo{opacity:0 !important;filter:alpha(opacity=0) !important}.gbm{position:absolute;z-index:999;top:-999px;visibility:hidden;text-align:left;border:1px solid #bebebe;background:#fff;-moz-box-shadow:-1px 1px 1px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2);box-shadow:0 2px 4px rgba(0,0,0,.2)}.gbrtl .gbm{-moz-box-shadow:1px 1px 1px rgba(0,0,0,.2)}.gbto .gbm,.gbto #gbs{top:29px;visibility:visible}#gbz .gbm{left:0}#gbg .gbm{right:0}.gbxms{background-color:#ccc;display:block;position:absolute;z-index:1;top:-1px;left:-2px;right:-2px;bottom:-2px;opacity:.4;-moz-border-radius:3px;filter:progid:DXImageTransform.Microsoft.Blur(pixelradius=5);*opacity:1;*top:-2px;*left:-5px;*right:5px;*bottom:4px;-ms-filter:"progid:DXImageTransform.Microsoft.Blur(pixelradius=5)";opacity:1\0/;top:-4px\0/;left:-6px\0/;right:5px\0/;bottom:4px\0/}.gbma{position:relative;top:-1px;border-style:solid dashed dashed;border-color:transparent;border-top-color:#c0c0c0;display:-moz-inline-box;display:inline-block;font-size:0;height:0;line-height:0;width:0;border-width:3px 3px 0;padding-top:1px;left:4px}#gbztms1,#gbi4m1,#gbi4s,#gbi4t{zoom:1}.gbtc,.gbmc,.gbmcc{display:block;list-style:none;margin:0;padding:0}.gbmc{background:#fff;padding:10px 0;position:relative;z-index:2;zoom:1}.gbt{position:relative;display:-moz-inline-box;display:inline-block;line-height:27px;padding:0;vertical-align:top}.gbt{*display:inline}.gbto{box-shadow:0 2px 4px rgba(0,0,0,.2);-moz-box-shadow:0 2px 4px rgba(0,0,0,.2);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.2)}.gbzt,.gbgt{cursor:pointer;display:block;text-decoration:none !important}span#gbg6,span#gbg4{cursor:default}.gbts{border-left:1px solid transparent;border-right:1px solid transparent;display:block;*display:inline-block;padding:0 5px;position:relative;z-index:1000}.gbts{*display:inline}.gbzt .gbts{display:inline;zoom:1}.gbto .gbts{background:#fff;border-color:#bebebe;color:#36c;padding-bottom:1px;padding-top:2px}.gbz0l .gbts{color:#fff;font-weight:bold}.gbtsa{padding-right:9px}#gbz .gbzt,#gbz .gbgt,#gbg .gbgt{color:#ccc!important}.gbtb2{display:block;border-top:2px solid transparent}.gbto .gbzt .gbtb2,.gbto .gbgt .gbtb2{border-top-width:0}.gbtb .gbts{background:url(//ssl.gstatic.com/gb/images/b_8d5afc09.png);_background:url(//ssl.gstatic.com/gb/images/b8_3615d64d.png);background-position:-27px -22px;border:0;font-size:0;padding:29px 0 0;*padding:27px 0 0;width:1px}.gbzt:hover,.gbzt:focus,.gbgt-hvr,.gbgt:focus{background-color:#4c4c4c;background-image:none;_background-image:none;background-position:0 -102px;background-repeat:repeat-x;outline:none;text-decoration:none !important}.gbpdjs .gbto .gbm{min-width:99%}.gbz0l .gbtb2{border-top-color:#dd4b39!important}#gbi4s,#gbi4s1{font-weight:bold}#gbg6.gbgt-hvr,#gbg6.gbgt:focus{background-color:transparent;background-image:none}.gbg4a{font-size:0;line-height:0}.gbg4a .gbts{padding:27px 5px 0;*padding:25px 5px 0}.gbto .gbg4a .gbts{padding:29px 5px 1px;*padding:27px 5px 1px}#gbi4i,#gbi4id{left:5px;border:0;height:24px;position:absolute;top:1px;width:24px}.gbto #gbi4i,.gbto #gbi4id{top:3px}.gbi4p{display:block;width:24px}#gbi4id{background-position:-44px -101px}#gbmpid{background-position:0 0}#gbmpi,#gbmpid{border:none;display:inline-block;height:48px;width:48px}#gbmpiw{display:inline-block;line-height:9px;padding-left:20px;margin-top:10px;position:relative}#gbmpi,#gbmpid,#gbmpiw{*display:inline}#gbg5{font-size:0}#gbgs5{padding:5px !important}.gbto #gbgs5{padding:7px 5px 6px !important}#gbi5{background:url(//ssl.gstatic.com/gb/images/b_8d5afc09.png);_background:url(//ssl.gstatic.com/gb/images/b8_3615d64d.png);background-position:0 0;display:block;font-size:0;height:17px;width:16px}.gbto #gbi5{background-position:-6px -22px}.gbn .gbmt,.gbn .gbmt:visited,.gbnd .gbmt,.gbnd .gbmt:visited{color:#dd8e27 !important}.gbf .gbmt,.gbf .gbmt:visited{color:#900 !important}.gbmt,.gbml1,.gbmlb,.gbmt:visited,.gbml1:visited,.gbmlb:visited{color:#36c !important;text-decoration:none !important}.gbmt,.gbmt:visited{display:block}.gbml1,.gbmlb,.gbml1:visited,.gbmlb:visited{display:inline-block;margin:0 10px}.gbml1,.gbmlb,.gbml1:visited,.gbmlb:visited{*display:inline}.gbml1,.gbml1:visited{padding:0 10px}.gbml1-hvr,.gbml1:focus{outline:none;text-decoration:underline !important}#gbpm .gbml1{display:inline;margin:0;padding:0;white-space:nowrap}.gbmlb,.gbmlb:visited{line-height:27px}.gbmlb-hvr,.gbmlb:focus{outline:none;text-decoration:underline !important}.gbmlbw{color:#ccc;margin:0 10px}.gbmt{padding:0 20px}.gbmt:hover,.gbmt:focus{background:#eee;cursor:pointer;outline:0 solid black;text-decoration:none !important}.gbm0l,.gbm0l:visited{color:#000 !important;font-weight:bold}.gbmh{border-top:1px solid #bebebe;font-size:0;margin:10px 0}#gbd4 .gbmc{background:#f5f5f5;padding-top:0}#gbd4 .gbsbic::-webkit-scrollbar-track:vertical{background-color:#f5f5f5;margin-top:2px}#gbmpdv{background:#fff;border-bottom:1px solid #bebebe;-moz-box-shadow:0 2px 4px rgba(0,0,0,.12);-o-box-shadow:0 2px 4px rgba(0,0,0,.12);-webkit-box-shadow:0 2px 4px rgba(0,0,0,.12);box-shadow:0 2px 4px rgba(0,0,0,.12);position:relative;z-index:1}#gbd4 .gbmh{margin:0}.gbmtc{padding:0;margin:0;line-height:27px}.GBMCC:last-child:after,#GBMPAL:last-child:after{content:'\0A\0A';white-space:pre;position:absolute}#gbmps{*zoom:1}#gbd4 .gbpc,#gbmpas .gbmt{line-height:17px}#gbd4 .gbpgs .gbmtc{line-height:27px}#gbd4 .gbmtc{border-bottom:1px solid #bebebe}#gbd4 .gbpc{display:inline-block;margin:16px 0 10px;padding-right:50px;vertical-align:top}#gbd4 .gbpc{*display:inline}.gbpc .gbps,.gbpc .gbps2{display:block;margin:0 20px}#gbmplp.gbps{margin:0 10px}.gbpc .gbps{color:#000;font-weight:bold}.gbpc .gbpd{margin-bottom:5px}.gbpd .gbmt,.gbpd .gbps{color:#666 !important}.gbpd .gbmt{opacity:.4;filter:alpha(opacity=40)}.gbps2{color:#666;display:block}.gbp0{display:none}.gbp0 .gbps2{font-weight:bold}#gbd4 .gbmcc{margin-top:5px}.gbpmc{background:#fef9db}.gbpmc .gbpmtc{padding:10px 20px}#gbpm{border:0;*border-collapse:collapse;border-spacing:0;margin:0;white-space:normal}#gbpm .gbpmtc{border-top:none;color:#000 !important;font:11px Arial,sans-serif}#gbpms{*white-space:nowrap}.gbpms2{font-weight:bold;white-space:nowrap}#gbmpal{*border-collapse:collapse;border-spacing:0;border:0;margin:0;white-space:nowrap;width:100%}.gbmpala,.gbmpalb{font:13px Arial,sans-serif;line-height:27px;padding:10px 20px 0;white-space:nowrap}.gbmpala{padding-left:0;text-align:left}.gbmpalb{padding-right:0;text-align:right}#gbmpasb .gbps{color:#000}#gbmpal .gbqfbb{margin:0 20px}.gbp0 .gbps{*display:inline}a.gbiba{margin:8px 20px 10px}.gbmpiaw{display:inline-block;padding-right:10px;margin-bottom:6px;margin-top:10px}.gbxv{visibility:hidden}.gbmpiaa{display:block;margin-top:10px}.gbmpia{border:none;display:block;height:48px;width:48px}.gbmpnw{display:inline-block;height:auto;margin:10px 0;vertical-align:top} | |
.gbqfb,.gbqfba,.gbqfbb{-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;cursor:default !important;display:inline-block;font-weight:bold;height:29px;line-height:29px;min-width:54px;*min-width:70px;padding:0 8px;text-align:center;text-decoration:none !important;-moz-user-select:none;-webkit-user-select:none}.gbqfb:focus,.gbqfba:focus,.gbqfbb:focus{border:1px solid #4d90fe;-moz-box-shadow:inset 0 0 0 1px rgba(255, 255, 255, 0.5);-webkit-box-shadow:inset 0 0 0 1px rgba(255, 255, 255, 0.5);box-shadow:inset 0 0 0 1px rgba(255, 255, 255, 0.5);outline:none}.gbqfb-hvr:focus,.gbqfba-hvr:focus,.gbqfbb-hvr:focus{-webkit-box-shadow:inset 0 0 0 1px #fff,0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:inset 0 0 0 1px #fff,0 1px 1px rgba(0,0,0,.1);box-shadow:inset 0 0 0 1px #fff,0 1px 1px rgba(0,0,0,.1)}.gbqfb-no-focus:focus{border:1px solid #3079ed;-moz-box-shadow:none;-webkit-box-shadow:none;box-shadow:none}.gbqfb-hvr,.gbqfba-hvr,.gbqfbb-hvr{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1)}.gbqfb::-moz-focus-inner,.gbqfba::-moz-focus-inner,.gbqfbb::-moz-focus-inner{border:0}.gbqfba,.gbqfbb{border:1px solid #dcdcdc;border-color:rgba(0,0,0,.1);color:#444 !important;font-size:11px}.gbqfb{background-color:#4d90fe;background-image:-webkit-gradient(linear,left top,left bottom,from(#4d90fe),to(#4787ed));background-image:-webkit-linear-gradient(top,#4d90fe,#4787ed);background-image:-moz-linear-gradient(top,#4d90fe,#4787ed);background-image:-ms-linear-gradient(top,#4d90fe,#4787ed);background-image:-o-linear-gradient(top,#4d90fe,#4787ed);background-image:linear-gradient(top,#4d90fe,#4787ed);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#4d90fe',EndColorStr='#4787ed');border:1px solid #3079ed;color:#fff!important;margin:0 0}.gbqfb-hvr{border-color:#2f5bb7}.gbqfb-hvr:focus{border-color:#2f5bb7}.gbqfb-hvr,.gbqfb-hvr:focus{background-color:#357ae8;background-image:-webkit-gradient(linear,left top,left bottom,from(#4d90fe),to(#357ae8));background-image:-webkit-linear-gradient(top,#4d90fe,#357ae8);background-image:-moz-linear-gradient(top,#4d90fe,#357ae8);background-image:-ms-linear-gradient(top,#4d90fe,#357ae8);background-image:-o-linear-gradient(top,#4d90fe,#357ae8);background-image:linear-gradient(top,#4d90fe,#357ae8)}.gbqfb:active{background-color:inherit;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.3);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.3);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.3)}.gbqfba{background-color:#f5f5f5;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#f5f5f5,#f1f1f1);background-image:-moz-linear-gradient(top,#f5f5f5,#f1f1f1);background-image:-ms-linear-gradient(top,#f5f5f5,#f1f1f1);background-image:-o-linear-gradient(top,#f5f5f5,#f1f1f1);background-image:linear-gradient(top,#f5f5f5,#f1f1f1);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#f5f5f5',EndColorStr='#f1f1f1')}.gbqfba-hvr,.gbqfba-hvr:active{background-color:#f8f8f8;background-image:-webkit-gradient(linear,left top,left bottom,from(#f8f8f8),to(#f1f1f1));background-image:-webkit-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-moz-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-ms-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:-o-linear-gradient(top,#f8f8f8,#f1f1f1);background-image:linear-gradient(top,#f8f8f8,#f1f1f1);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#f8f8f8',EndColorStr='#f1f1f1')}.gbqfbb{background-color:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#fbfbfb));background-image:-webkit-linear-gradient(top,#fff,#fbfbfb);background-image:-moz-linear-gradient(top,#fff,#fbfbfb);background-image:-ms-linear-gradient(top,#fff,#fbfbfb);background-image:-o-linear-gradient(top,#fff,#fbfbfb);background-image:linear-gradient(top,#fff,#fbfbfb);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#fbfbfb')}.gbqfbb-hvr,.gbqfbb-hvr:active{background-color:#fff;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:-webkit-linear-gradient(top,#fff,#f8f8f8);background-image:-moz-linear-gradient(top,#fff,#f8f8f8);background-image:-ms-linear-gradient(top,#fff,#f8f8f8);background-image:-o-linear-gradient(top,#fff,#f8f8f8);background-image:linear-gradient(top,#fff,#f8f8f8);filter:progid:DXImageTransform.Microsoft.gradient(startColorStr='#ffffff',EndColorStr='#f8f8f8')}.gbqfba-hvr,.gbqfba-hvr:active,.gbqfbb-hvr,.gbqfbb-hvr:active{border-color:#c6c6c6;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);color:#222 !important}.gbqfba:active,.gbqfbb:active{-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);-moz-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)} | |
#gbmpas{max-height:220px}#gbmm{max-height:530px}.gbsb{-webkit-box-sizing:border-box;display:block;position:relative;*zoom:1}.gbsbic{overflow:auto}.gbsbis .gbsbt,.gbsbis .gbsbb{-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(0,0,0,.1)),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,rgba(0,0,0,.1)));left:0;margin-right:0;opacity:0;position:absolute;width:100%}.gbsb .gbsbt:after,.gbsb .gbsbb:after{content:"";display:block;height:0;left:0;position:absolute;width:100%}.gbsbis .gbsbt{background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.2)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(top,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:-moz-linear-gradient(top,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:-ms-linear-gradient(top,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:-o-linear-gradient(top,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:linear-gradient(top,rgba(0,0,0,.2),rgba(0,0,0,0));height:6px;top:0}.gbsb .gbsbt:after{border-top:1px solid #ebebeb;border-color:rgba(0,0,0,.3);top:0}.gbsb .gbsbb{-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(0,0,0,.1)),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,rgba(0,0,0,.1)));background:-webkit-gradient(linear,left bottom,left top,from(rgba(0,0,0,.2)),to(rgba(0,0,0,0)));background-image:-webkit-linear-gradient(bottom,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:-moz-linear-gradient(bottom,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:-ms-linear-gradient(bottom,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:-o-linear-gradient(bottom,rgba(0,0,0,.2),rgba(0,0,0,0));background-image:linear-gradient(bottom,rgba(0,0,0,.2),rgba(0,0,0,0));bottom:0;height:4px}.gbsb .gbsbb:after{border-bottom:1px solid #ebebeb;border-color:rgba(0,0,0,.3);bottom:0} | |
</style><style>body {-webkit-font-smoothing: antialiased;}@font-face { | |
font-family: 'Roboto'; | |
font-style: normal; | |
font-weight: 400; | |
src: url(//fonts.gstatic.com/s/roboto/v15/W5F8_SL0XFawnjxHGsZjJA.ttf) format('truetype'); | |
} | |
@font-face { | |
font-family: 'Roboto'; | |
font-style: normal; | |
font-weight: 700; | |
src: url(//fonts.gstatic.com/s/roboto/v15/bdHGHleUa-ndQCOrdpfxfw.ttf) format('truetype'); | |
} | |
@font-face { | |
font-family: 'Roboto'; | |
font-style: normal; | |
font-weight: 300; | |
src: url(//fonts.gstatic.com/s/roboto/v15/dtpHsbgPEm2lVWciJZ0P-A.ttf) format('truetype'); | |
} | |
</style><link rel="shortcut icon" href="https://ssl.gstatic.com/images/branding/product/ico/google_plus_alldp.ico"><meta name="Description" content="Mat Kelly - Software Developer, Research Scientist - NASA Langley Research Center - Old Dominion University Research Foundation - Blade Agency"><link rel="canonical" href="https://plus.google.com/+MatKelly"><meta itemprop="name" content="Mat Kelly"><meta itemprop="description" content="Works at NASA Langley Research Center as Software Developer, Research Scientist. Worked at Old Dominion University Research Foundation - Blade Agency."><meta itemprop="image" content="//lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg"><meta itemprop="url" content="https://plus.google.com/+MatKelly"><link rel="alternate" href="android-app://com.google.android.apps.plus/https/plus.google.com/+MatKelly"><link rel="alternate" href="ios-app://447119634/gplus/plus.google.com/+MatKelly"><noscript><link rel="stylesheet" id="ss" href="/_/scs/apps-static/_/ss/k=oz.home.-d9x04e2iyui8.L.X.O/am=HIjDITJAAQ/d=0/rs=AGLTcCPIVIi75ri_sn3E_zEC5qK0-HZ0fA"></noscript></head><body class="Td lj"><input type="text" name="hist_state" id="hist_state" style="display:none;"><iframe id="hist_frame" name="hist_frame603758897" class="ss" tabindex="-1"></iframe><script>window['OZ_wizstart'] && window['OZ_wizstart']()</script><script> | |
function ozIpStart() { | |
OZ_start && OZ_start(); | |
} | |
</script><script id="base-js" src="/_/scs/apps-static/_/js/k=oz.home.en_US.S0zubYtyP20.O/m=b,prc/am=HIjDITJAAQ/rt=j/d=1/rs=AGLTcCNtoJhMLwJ4Zzadzg8ou0gbt7ELsA" async onload="ozIpStart();"></script><div id="notify-widget-pane" class="Fba PzIwMb" aria-live="assertive"></div><div class="Z0"><div class="Of ooe"><div id=gb><script>window.gbar&&gbar.eli&&gbar.eli()</script><div id=gbw><div id=gbz><span class=gbtcb></span><ol id=gbzc class=gbtc><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:1}); class=gbzt id=gb_1 href="https://www.google.com/webhp?tab=Xw"><span class=gbtb2></span><span class=gbts>Search</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:2}); class=gbzt id=gb_2 href="http://www.google.com/imghp?hl=en&tab=Xi"><span class=gbtb2></span><span class=gbts>Images</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:8}); class=gbzt id=gb_8 href="https://maps.google.com/maps?hl=en&tab=Xl"><span class=gbtb2></span><span class=gbts>Maps</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:78}); class=gbzt id=gb_78 href="https://play.google.com/?hl=en&tab=X8"><span class=gbtb2></span><span class=gbts>Play</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:36}); class=gbzt id=gb_36 href="https://www.youtube.com/?tab=X1"><span class=gbtb2></span><span class=gbts>YouTube</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:5}); class=gbzt id=gb_5 href="https://news.google.com/nwshp?hl=en&tab=Xn"><span class=gbtb2></span><span class=gbts>News</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:23}); class=gbzt id=gb_23 href="https://mail.google.com/mail/?tab=Xm"><span class=gbtb2></span><span class=gbts>Gmail</span></a></li><li class=gbt><a target=_blank onclick=gbar.logger.il(1,{t:49}); class=gbzt id=gb_49 href="https://drive.google.com/?tab=Xo"><span class=gbtb2></span><span class=gbts>Drive</span></a></li><li class=gbt><a class=gbgt id=gbztm href="https://www.google.com/intl/en/options/" onclick="gbar.tg(event,this)" aria-haspopup=true aria-owns=gbd><span class=gbtb2></span><span id=gbztms class="gbts gbtsa"><span id=gbztms1>More</span><span class=gbma></span></span></a><div class=gbm id=gbd aria-owner=gbztm><div id=gbmmb class="gbmc gbsb gbsbis"><ol id=gbmm class="gbmcc gbsbic"><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:24}); class=gbmt id=gb_24 href="https://www.google.com/calendar?tab=Xc">Calendar</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:51}); class=gbmt id=gb_51 href="https://translate.google.com/?hl=en&tab=XT">Translate</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:17}); class=gbmt id=gb_17 href="http://www.google.com/mobile/?hl=en&tab=XD">Mobile</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:10}); class=gbmt id=gb_10 href="https://books.google.com/bkshp?hl=en&tab=Xp">Books</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:212}); class=gbmt id=gb_212 href="https://wallet.google.com/manage/?tab=Xa">Wallet</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:6}); class=gbmt id=gb_6 href="http://www.google.com/shopping?hl=en&tab=Xf">Shopping</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:30}); class=gbmt id=gb_30 href="https://www.blogger.com/?tab=Xj">Blogger</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:27}); class=gbmt id=gb_27 href="https://www.google.com/finance?tab=Xe">Finance</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:31}); class=gbmt id=gb_31 href="https://photos.google.com/?tab=Xq">Photos</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:12}); class=gbmt id=gb_12 href="http://video.google.com/?hl=en&tab=Xv">Videos</a></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:25}); class=gbmt id=gb_25 href="https://docs.google.com/document/?usp=docs_alc">Docs</a></li><li class=gbmtc><div class="gbmt gbmh"></div></li><li class=gbmtc><a target=_blank onclick=gbar.logger.il(1,{t:66}); href="https://www.google.com/intl/en/options/" class=gbmt>Even more »</a></li></ol><div class=gbsbt></div><div class=gbsbb></div></div></div></li></ol></div><div id=gbg><h2 class=gbxx>Account Options</h2><span class=gbtcb></span><ol class=gbtc><li class=gbt><a target=_top href="https://accounts.google.com/ServiceLogin?service=oz&passive=1209600&continue=https://plus.google.com/%2BMatKelly?gpsrc%3Dgplp0" onclick="gbar.logger.il(9,{l:'i'})" id=gb_70 class=gbgt><span class=gbtb2></span><span id=gbgs4 class=gbts><span id=gbi4s1>Sign in</span></span></a></li><li class="gbt gbtb"><span class=gbts></span></li><li class=gbt><a class=gbgt id=gbg5 href="http://www.google.com/preferences?hl=en" title="Options" onclick="gbar.tg(event,this)" aria-haspopup=true aria-owns=gbd5><span class=gbtb2></span><span id=gbgs5 class=gbts><span id=gbi5></span></span></a><div class=gbm id=gbd5 aria-owner=gbg5><div class=gbmc><ol id=gbom class=gbmcc><li class="gbkc gbmtc"><a target=_blank class=gbmt href="https://www.google.com/support/profiles/?p=help_center&hl=en-US">Help</a></li><li class=gbmtc><div class="gbmt gbmh"></div></li><li class="gbe gbmtc"><a onclick="return appfeedback.startFeedback(event);" class=gbmt href="http://www.google.com/intl/en-US/+/learnmore/forum/">Send Feedback</a></li><li class=gbmtc><div class="gbmt gbmh"></div></li><li class="gbkp gbmtc"><a target=_blank class=gbmt href="http://www.google.com/history/optout?hl=en">Web History</a></li></ol></div></div></li></ol></div></div><div id=gbx3></div><div id=gbx4></div><script>window.gbar&&gbar.elp&&gbar.elp()</script></div></div><div class="vyd"></div><div id="content" class="maybe-hide Yo DWa"><div class="Oza t3"><div class="GY"></div></div><div class="x4a u3"><script>var AF_initDataKeys = ["199","4","123","5","1","118","99","29","77","42","2","47","79","36","115","12","37","175","64"] | |
; var AF_dataServiceRequests = {}; var AF_initDataChunkQueue = []; var AF_initDataCallback; var AF_initDataInitializeCallback; if (AF_initDataInitializeCallback) {AF_initDataInitializeCallback(AF_initDataKeys, AF_initDataChunkQueue, AF_dataServiceRequests);}if (!AF_initDataCallback) {AF_initDataCallback = function(chunk) {AF_initDataChunkQueue.push(chunk);};}</script><div class="Dge fOa"><a href="/stream" target="_top" class="d-s ob xld" title="Home" tabindex="0"><div class="VVa"></div></a><div class="Ege qMc" guidedhelpid="appindicator_content"><div class="SOb"><div class="utb"><div class="Hde x0a"></div></div><div class="pMc">Profile</div><div class="UVa"></div></div></div></div><div class="Msd Fge Ide b-K b-K-Xb"><div class="kCd Jse"><div class="jCd Ise" tabIndex="0" role="region" aria-label="Ribbon"><div guidedhelpid="ribbon_home" class="jga uVd" navid="1" isAllowSkinny="false"><a tabIndex="-1" aria-label="Home (active)"href="/stream" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd Nua aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Home</div></a></div><div guidedhelpid="ribbon_profile" class="jga uVd" navid="11" isAllowSkinny="false"><a tabIndex="-1" aria-label="Profile (active)"href="/me" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd x0a aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Profile</div></a></div><div guidedhelpid="circles" class="jga uVd" navid="2" isAllowSkinny="false"><a tabIndex="-1" aria-label="People (active)"href="/people" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd nBa aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">People</div></a></div><div guidedhelpid="ribbon_collexions" class="jga uVd" navid="17" isAllowSkinny="false"><a tabIndex="-1" href="/collections" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd iIyWEd m7c aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Collections</div></a></div><div guidedhelpid="ribbon_communities" class="jga uVd" navid="8" isAllowSkinny="false"><a tabIndex="-1" href="/communities" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd Fmb aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Communities</div></a></div><div guidedhelpid="ribbon_events" class="jga uVd" navid="10" isAllowSkinny="false"><a tabIndex="-1" aria-label="Events (active)"href="/events" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd ymb aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Events</div></a></div><div guidedhelpid="ribbon_hangouts" class="jga uVd" navid="5" isAllowSkinny="false"><a tabIndex="-1" aria-label="Hangouts (active)"href="/hangouts?n=1" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd Amb aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Hangouts</div></a></div><div guidedhelpid="ribbon_pages" class="jga uVd" navid="7" isAllowSkinny="true"><a tabIndex="-1" aria-label="Pages (active)"href="/dashboard?ppsrc=gpnv0" asrc="ribbon" class="oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd Dmb pCd aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Pages</div></a></div><div guidedhelpid="ribbon_settings" class="jga uVd" navid="16" isAllowSkinny="false"><a tabIndex="-1" aria-label="Settings (active)"href="/settings/plus" asrc="ribbon" class="ob oCd BIa"><div class="wVd" aria-hidden="true"><div class="nCd vVd gJb aOdVec"></div></div><div class="lCd Hyc" aria-hidden="true">Settings</div></a></div></div></div><div class="Hge Lde"><div class="Nde"><span role="button" class="d-s Hke U1d" tabindex="0">Feedback</span></div><div class="Jge Ode"><span role="button" class="d-s Ike V1d" tabindex="0">Help</span> · <span jscontroller="vT2XF" jsaction="click:KjsqPd" data-usedialog="true"><span role="button" class="d-s UGd" tabindex="0" jsname="TU70Kd">Region</span></span></div><div class="Mde"></div><div class="Ode"><a href="https://www.google.com/intl/en-US/+/policy/" target="_blank" class="d-s BSIQ3b" tabindex="0">Privacy</a> · <a href="https://www.google.com/intl/en-US/+/policy/content.html" target="_blank" class="d-s g9cdLb" tabindex="0">Terms</a> · <a href="https://www.google.com/intl/en-US/help/terms_maps.html" target="_blank" class="d-s LLd" tabindex="0">Maps Terms</a></div></div></div><div class="GSc n7c DJb Qzc"><div class="CJb"><div class="kje dte"><div componentid="2" class="uCd o7c"><div class="vCd"><div class="TVd" guidedhelpid="starthangout"><div role="button" class="d-k-l b-c b-c-R ygc EJb" tabindex="0"><div class="RVd d-k-l"></div><span class="SVd">Start a hangout</span></div></div></div></div></div><div class="Pzc"></div></div><div id="ozIdRtRibbonChatRoster" class="HSc BJb"></div></div><div class="V8d"><span role="button" class="d-s QSc V3" aria-label="Screen readers, click here to enable accessibility mode." tabindex="0" data-accessibility-mode-enabled="false"> </span></div><div class="Pza B3a QA mw vn"><div id="contentPane" class="Dh"><div class="o-B-Ra fq-Ra" token="+MatKelly/posts"><div class="Nn"><div class="rw Uc" role="region" aria-label="View selector"><div class="Zi"><div class="HNc mhe" style="display: none;"><div class="eQb tvd"><div class="fpd KXa">Mat Kelly</div><div class="el0gDb ZJKOO"><div class="Bla"><div class="n0c cZa dnUszc" style="display: none"><div class="O4 d-k-l kIa Jua zyb wanuCf iXa" aria-label=""><div class="wR Fz d-k-l"><div class="wY " style="display: none"></div></div><div class="xR OA g0a d-k-l NA"></div></div></div></div></div><span class="EZszNc ztgk7d"></span><div class="qFa aZa"><div class="ckb yZHLQd n5Dq9"><div class="bZa Krc Rhb"><div class="rkb"></div></div></div><div class="rFa XFb" style="display:none"><div class="UVb"></div></div></div></div></div><div class="V9b nhe" style="display: none;"><div class="tQE8Kd BnqoOb"><div class="Qhb eZa"><div class="Zmjtc"><span class="BOfSxb" data-tooltip="Views of profile and its content. Values are approximate">284,045</span> views</div></div><div class="W0Vccc spmt9c"><div class="prc dZa Xqa"><div class="jXa d-k-l"></div></div></div></div></div></div></div></div><div role="main" class="CF he"><div class="REQeGe"></div><div class="fZa vcard"><h2 class="o-Bd">Profile</h2><div class="fa-Neb drc gXa"><div class="ega Lab URc" jslog="14567"><div class="k5 U9b kXa"><div class="lHa m5a"><div class="ENc"><div class="sFa" style="display:none"></div><div class="xLa Wza"><img class="aGb hXa z3Hx4b" alt="Cover photo"src="https://lh3.googleusercontent.com/c5dqxl-2uHZ82ah9p7yxrVF1ZssrJNSV_15Nu0TUZwzCWqmtoLxCUJgEzLGtxsrJ6-v6R6rKU_-FYm881TTiMCJ_=s1600"></img></div></div></div><div class="M3 fPa xWa qna" guidedhelpid="profile_card"><div class="xna Uza"><div class="Wia T9b"><div class="CAa"><div class="okb o-oa-Eb-J"><div class="dkb photo" guidedhelpid="profile_photo"><img src="//lh3.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/s120-c/photo.jpg" class="fa-kz Zxa"></div></div></div></div><div class="rHa"><div class="Yia"><div class="gZa"><div class="rna KXa Xia fn" guidedhelpid="profile_name">Mat Kelly</div></div><div class="EXa Plb" style="display: none;"></div></div><div class="Yia Frc VQc"><div class="Nyb"><div class="Ny"><span class="J9a">Works at </span><span class="K9a">NASA Langley Research Center</span></div><div class="wyb FVb"></div></div></div></div><div class="DAa Vza" guidedhelpid="profiles_social_bar"><div class="sHa"><div class="jXa Erc Xqa"></div></div><div class="O9a s5a"><div class="Zmjtc"><span class="BOfSxb" data-tooltip="Views of profile and its content. Values are approximate">284,045</span> views</div></div></div></div><div class="qFa aZa"><div class="n0c cZa dnUszc" style="display: none"><div class="O4 d-k-l kIa Jua zyb wanuCf Xwa" aria-label=""><div class="wR Fz d-k-l"><div class="wY " style="display: none"></div></div><div class="xR OA g0a d-k-l NA"></div></div></div><div class="ckb b4a"><div class="bZa Krc Rhb"><div class="rkb"></div></div></div><div class="rFa XFb" style="display:none"><div class="UVb"></div></div></div></div></div><div class="KNc"><div class="INc GPc xKa"><div id="103717513886594190386-tab-bar" class="Ima pSc g5VnDb"><span role="button" class="d-s Cy k4c aSc d-xc" id="103717513886594190386-about-tab" tabindex="0" data-dest="about"guidedhelpid="about_tab_profile">About</span><span role="button" aria-pressed="true" class="d-s Cy P4 k4c aSc d-xc" id="103717513886594190386-posts-tab" tabindex="0" data-dest="posts"guidedhelpid="posts_tab_profile">Posts</span><span role="button" class="d-s Cy k4c aSc d-xc" id="103717513886594190386-photos-tab" tabindex="0" data-dest="photos"guidedhelpid="photos_tab_profile">Photos</span></div></div></div></div><div class="Ryb Bha v0c"><div id="103717513886594190386-posts-page" class="o-xc-Sya tSa"role="tabpanel"><div class="b6c"><div class="o5"><div class="fa-dad c6c"></div><script>window.jstiming.load.tick('streamStart');</script><div class="tna UMa"></div><div guidedhelpid="streamcontent" class="VW Bn k0a" jsname="bndkSe"><h2 class="o-Bd">Stream</h2><div class="xqa Ei"></div><div class="pga" ><div class="ona Fdb bsa" style="width:900px"><div class="Ypa jw Yc am"><div id="update-z13gxjbbfvruhleir04ch1upuzinxzczsns0k" tabindex="-1" class="Yp yt Xa" jscontroller="LeWvCf" jsmodel="XNmfOc"jslog="6941; 1:update-z13gxjbbfvruhleir04ch1upuzinxzczsns0k; track:impression,click"data-render-context="%.@.3,null,null,null,null,null,null,true,null,null,null,null,null,[] | |
,null,[null,440,520] | |
] | |
" jsaction=" click:Qrv4Te(RTPDDc),zzwwld(lUFH9b),iQMaZe(A5O8Yc);O1htCb:BpK2Q;PR4gi:I6kmac;UJtr3c:vwifpf;wA70zd:Fz0Y3e;"><div class="sda je" jsname="GpsYP" aria-hidden="true" tabindex="0"></div><div class="Ee BK ge" aria-hidden="false" jsname="P3RoXc" role="article"><div class="ki ve" jsname="MxEsy"><div class="ys"><a href="./103717513886594190386"class="ob Jk"oid="103717513886594190386"aria-hidden="true"><img src="https://lh3.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/s46-c-k-no/photo.jpg" width="46px" height="46px" alt="" class="Uk wi hE" oid="103717513886594190386" /></a><div class="f5 wy"><header class="lea"><h3 class="zi"><a href="./103717513886594190386" class="ob tv Ub Hf" oid="103717513886594190386">Mat Kelly</a></h3><span class="uG Ve"><span role="button" class="d-s Vt Hm dk Q9" title="Sharing details" tabindex="0" jsname="lUFH9b" aria-haspopup="true">Shared publicly</span> - <span class="uv PL"><a href="+MatKelly/posts/d1vuVrSENHE" target="_blank" rel="noreferrer" class="o-U-s FI Rg" style="display:none" >2014-09-09</a></span></span></header></div></div><div class="Al pf"><div class="Xx xJ"><div class="Ig At dn"><div class=""><div class="tG QF"> </div><div class="Ct"></div></div></div></div><div class="yx Nf"><div itemscope itemtype="http://schema.org/VideoObject" class="j9"><div class="q9 yg"><div class="sp ej bc Ai"style="width:426px;height:240px;"><img src="//lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3=w426-h240-n" class="ar Mc bc kf" style="max-height:240px; max-width:426px;" itemprop="image"><meta name="twitter:image:src" content="//lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3=w426-h240-n"><div class="bc vf" role="button" tabindex="0" aria-label="Play"></div><div class="yh Rl RJ"><div class="yh Sl SJ"></div><div class="yh Du"><a class="kq ot-anchor" href="https://www.youtube.com/watch?v=DoSiPDujIiM&feature=autoshare" target="_blank">Mink Demo</a></div></div></div><div class="lr"></div><div class="ko"></div><div class="kr"></div><div class="jo"></div></div></div></div></div><div class="Qg"><div id="po-z13gxjbbfvruhleir04ch1upuzinxzczsns0k" href="javascript:void(0);" tabindex="0" role="button" jscontroller="qG1h8c" jsaction="click:JIbuQc;gcRodd:mVjlY;" class="esw eswd qk Gc"g:token="AEIZW7RWaKeNHYpGkhfwO/7vOMzWWYOuZeR/bcsBBrIHr9Ct3++ZKYG3K/O7nxZL/SdswFGHY7fH"aria-pressed="false" aria-label="+1 this post"><span dir="ltr" class="tf yda"><span class="gr"></span><span class="H3" jsname="NnAfwf">1</span></span></div><div class="Ut Dg" role="button" tabindex="0" aria-label="Share this post"jscontroller="tH7URd"jsaction="click:KjsqPd; mouseenter:OPtno; focus:OPtno;wA70zd:AX4Iqd;JO8x0b:mTq7Qc"><span class="tf"><span class="iI"></span><span class="MM jI"></span></span></div><div role="button" tabindex="0" class="LK LH"></div><div class="Tt bj"><div class="Dt wu" tabindex="0" role="button">Add a comment...</div></div></div><div class="DM"><div class="Cx fr"><div class="Ar vt" style="display:none;"></div><div class="Wp O9" style="display:none;"><div class="GK HK TC" style="display:none"><div class="WR"><span role="button" class="d-s vy" tabindex="0"></span><div class="TR"><span class="d-s vq Bl "></span></div></div></div><div class="Dx EP lC"><div class="KK gR"><span role="button" class="d-s ww ZR" style="display:none;" tabindex="0"></span><div class="JK"></div></div></div></div></div></div></div></div></div></div><div class="Ypa jw Yc am"></div></div></div><div class="R4 b2 Xha"style="display: none"><span role="button" class="d-s L5 r0" title="Load more posts" tabindex="0">More</span><span class="dP PA"style="display: none"><span class="Uv">Loading...</span></span></div><div class="w8" style="display:none"></div></div><script>window.jstiming.load.tick('streamEnd');</script></div></div></div><div id="103717513886594190386-about-page" class="o-xc-Sya tSa o-xc-Bd"role="tabpanel"><div class="i4c Bn"><div><div class="Cec rga"><div class="lib" style="width:900px;"><div class="ona Fdb bsa" style="width:900px"><div class="Ypa jw Yc am"><div id="8" class="Ee l5a vna Tqc" role="article"><div class="ZYa ukoEtf"><div class="Lqc"><div class="F9a">Work</div><div class="miIoOb Cdmn9d"></div></div></div><div class="Uia"><div class="Bec Iqc"><div class="wna"><div class="Cr">Occupation</div><div class="y4">Software Developer, Research Scientist</div></div><div class="wna"><div class="Cr Aha">Employment</div><div class="y4"><ul class="Kla"><li class="UZa"><div class="PLa org">NASA Langley Research Center</div><div class="ija">Mobile Applications Developer, 2011 - present</div></li><li class="UZa"><div class="PLa org">Old Dominion University Research Foundation</div><div class="ija">Research Assistant, 2011 - present</div></li><li class="UZa"><div class="PLa org">Blade Agency</div><div class="ija">Software Developer, 2006 - present</div></li></ul></div></div></div></div><div class="Iqc"></div></div><div id="13" class="Ee g5a vna Yjb" role="article"><div class="ZYa ukoEtf"><div class="Lqc"><div class="F9a">Links</div><div class="miIoOb Cdmn9d"></div></div></div><div class="Uia"><div class="jec Iqc"><div class="Zka wna" style="display: none"></div><div class="wna fa-V3b Ala"><div class="Cr">YouTube</div><div class="y4"><ul class="Kla yVa"><li><img alt="" class="xfa" src="//s2.googleusercontent.com/s2/favicons?alt=p&domain=www.youtube.com"/><div class="fIa s"><a class="OLa url Xvc" href="http://www.youtube.com/channel/UCYxIqzBJEuisbUZ6LCYW1mA" rel="me nofollow" target="_blank" title="Mat Kelly">Mat Kelly</a></div></li></ul></div></div><div class="wna fa-SCa Ala"><div class="Cr Aha">Contributor to</div><div class="y4"><ul class="Kla yVa"><li><img alt="" class="xfa" src="//s2.googleusercontent.com/s2/favicons?domain=ws-dl.blogspot.com&alt=p"/><div class="fIa s"><a class="OLa url Xvc" href="http://ws-dl.blogspot.com/" rel="contributor-to nofollow" target="_blank" title="Web Science and Digital Libraries Research Group">Web Science and Digital Libraries Research Group</a><span class="css ozProfilesAboutContributorLinkTag"> (current)</span></div></li></ul></div></div></div></div><div class="Iqc"></div></div></div><div class="Ypa jw Yc am"><div id="11" class="Ee e5a vna Hqc" guidedhelpid="about_basic_information" role="article"><div class="ZYa ukoEtf"><div class="Lqc"><div class="F9a">Basic Information</div><div class="miIoOb Cdmn9d"></div></div></div><div class="Uia"><div class="iec Iqc"><div class="Qqc"><div class="wna DVb"><div class="E9a G9a Rqc">Gender</div><div class="y4 G9a">Male</div></div></div></div></div><div class="Iqc"></div></div></div></div><div class="RZc"><div class="fa-Dea"></div></div></div></div></div></div><script>window.jstiming.load.tick('aboutEnd');</script></div><div id="103717513886594190386-photos-page" class="o-xc-Sya o-xc-Bd"role="tabpanel"><div class="hoJ0Md p93lf" style="display: none;"></div><div class="hoJ0Md X6t9V"></div><div class="hoJ0Md GCb4uc"></div><div class="hoJ0Md tsmlgf"></div><div class="hoJ0Md jwd5Ve"></div><div class="hoJ0Md RmLi1d"></div><div style="display:none;" data-photos-json="[[] | |
,[] | |
,[] | |
,[] | |
,[] | |
,null,null,[] | |
,null,[] | |
,0,[] | |
,null,1,0] | |
"></div></div></div></div></div></div></div></div></div></div></div></div><script>var OZ_domReady = 1;</script><script>window.jstiming.load.tick('bl');</script><script>(function(){try{var e=this;var aa=function(a,b,c,d){d=d||{};d._sn=["cfg",b,c].join(".");window.gbar.logger.ml(a,d)};var h=window.gbar=window.gbar||{},k=window.gbar.i=window.gbar.i||{},ba;function _tvn(a,b){var c=parseInt(a,10);return isNaN(c)?b:c}function _tvf(a,b){var c=parseFloat(a);return isNaN(c)?b:c}function _tvv(a){return!!a}function p(a,b,c){(c||h)[a]=b}h.bv={n:_tvn("2",0),r:"",f:".66.41.",e:"0",m:_tvn("1",1)}; | |
function ca(a,b,c){var d="on"+b;if(a.addEventListener)a.addEventListener(b,c,!1);else if(a.attachEvent)a.attachEvent(d,c);else{var f=a[d];a[d]=function(){var a=f.apply(this,arguments),b=c.apply(this,arguments);return void 0==a?b:void 0==b?a:b&&a}}}var da=function(a){return function(){return h.bv.m==a}},ea=da(1),fa=da(2);p("sb",ea);p("kn",fa);k.a=_tvv;k.b=_tvf;k.c=_tvn;k.i=aa;var q=window.gbar.i.i;var t=function(){},u=function(){},ia=function(a){var b=new Image,c=ga;b.onerror=b.onload=b.onabort=function(){try{delete ha[c]}catch(a){}};ha[c]=b;b.src=a;ga=c+1},ha=[],ga=0;p("logger",{il:u,ml:t,log:ia});var v=window.gbar.logger;var y={},ja={},A=[],ka=k.b("0.1",.1),la=k.a("1",!0),ma=function(a,b){A.push([a,b])},na=function(a,b){y[a]=b},oa=function(a){return a in y},B={},C=function(a,b){B[a]||(B[a]=[]);B[a].push(b)},D=function(a){C("m",a)},pa=function(a,b){var c=document.createElement("script");c.src=a;c.async=la;Math.random()<ka&&(c.onerror=function(){c.onerror=null;t(Error("Bundle load failed: name="+(b||"UNK")+" url="+a))});(document.getElementById("xjsc")||document.getElementsByTagName("body")[0]|| | |
document.getElementsByTagName("head")[0]).appendChild(c)},F=function(a){for(var b=0,c;(c=A[b])&&c[0]!=a;++b);!c||c[1].l||c[1].s||(c[1].s=!0,qa(2,a),c[1].url&&pa(c[1].url,a),c[1].libs&&E&&E(c[1].libs))},ra=function(a){C("gc",a)},sa=null,ta=function(a){sa=a},qa=function(a,b,c){if(sa){a={t:a,b:b};if(c)for(var d in c)a[d]=c[d];try{sa(a)}catch(f){}}};p("mdc",y);p("mdi",ja);p("bnc",A);p("qGC",ra);p("qm",D);p("qd",B);p("lb",F);p("mcf",na);p("bcf",ma);p("aq",C);p("mdd",""); | |
p("has",oa);p("trh",ta);p("tev",qa);if(k.a("1")){var ua=k.a("1"),va=k.a(""),wa=k.a(""),xa=window.gapi={},ya=function(a,b){var c=function(){h.dgl(a,b)};ua?D(c):(C("gl",c),F("gl"))},za={},Aa=function(a){a=a.split(":");for(var b;(b=a.pop())&&za[b];);return!b},E=function(a){function b(){for(var b=a.split(":"),d=0,f;f=b[d];++d)za[f]=1;for(b=0;d=A[b];++b)d=d[1],(f=d.libs)&&!d.l&&d.i&&Aa(f)&&d.i()}h.dgl(a,b)},H=window.___jsl={};H.h="m;/_/scs/apps-static/_/js/k=oz.gapi.en_US.1NmAA2ULNsY.O/m=__features__/rt=j/d=1/rs=AGLTcCMpAn8_x26XB61dOuwiGsJEN1cAmg";H.ms="https://apis.google.com"; | |
H.m="";H.l=[];ua||A.push(["gl",{url:"//ssl.gstatic.com/gb/js/abc/glm_e7bb39a7e1a24581ff4f8d199678b1b9.js"}]);var Ba={pu:va,sh:"",si:wa,hl:"en"};y.gl=Ba;p("load",ya,xa);p("dgl",ya);p("agl",Aa);k.o=ua};var Ca=k.b("0.1",.001),Da=0; | |
function _mlToken(a,b){try{if(1>Da){Da++;var c,d=a,f=b||{},g=encodeURIComponent,l=["//www.google.com/gen_204?atyp=i&zx=",(new Date).getTime(),"&jexpid=",g("28834"),"&srcpg=",g("prop=119"),"&jsr=",Math.round(1/Ca),"&ogev=",g("9jGyV8WZB8Sq-AHrtpSIBA"),"&ogf=",h.bv.f,"&ogrp=",g(""),"&ogv=",g("1470968812.0"),"&oggv="+g("unknown_version"),"&ogd=",g("com"),"&ogc=",g("USA"),"&ogl=",g("en")];f._sn&&(f._sn= | |
"og."+f._sn);for(var n in f)l.push("&"),l.push(g(n)),l.push("="),l.push(g(f[n]));l.push("&emsg=");l.push(g(d.name+":"+d.message));var m=l.join("");Ea(m)&&(m=m.substr(0,2E3));c=m;var r=window.gbar.logger._aem(a,c);ia(r)}}catch(z){}}var Ea=function(a){return 2E3<=a.length},Fa=function(a,b){return b};function Ga(a){t=a;p("_itl",Ea,v);p("_aem",Fa,v);p("ml",t,v);a={};y.er=a}k.a("")?Ga(function(a){throw a;}):k.a("1")&&Math.random()<Ca&&Ga(_mlToken);var _E="left",Ha=k.a(""),J=function(a,b){var c=a.className;I(a,b)||(a.className+=(""!=c?" ":"")+b)},K=function(a,b){var c=a.className,d=new RegExp("\\s?\\b"+b+"\\b");c&&c.match(d)&&(a.className=c.replace(d,""))},I=function(a,b){var c=new RegExp("\\b"+b+"\\b"),d=a.className;return!(!d||!d.match(c))},Ia=function(a,b){I(a,b)?K(a,b):J(a,b)},Ja=function(a,b){a[b]=function(c){var d=arguments;h.qm(function(){a[b].apply(this,d)})}},Ka=function(a){a=["//www.gstatic.com", | |
"/og/_/js/d=1/k=","og.og.en_US.Ge24v73aUVc.O","/rt=j/m=",a,"/rs=","AA2YrTsC3bIxoiGL1aQD_ECPw8HUOZw4jQ"];Ha&&a.push("?host=www.gstatic.com&bust=og.og.en_US.QpL8zKkSA3k.DU");a=a.join("");pa(a)};p("ca",J);p("cr",K);p("cc",I);k.k=J;k.l=K;k.m=I;k.n=Ia;k.p=Ka;k.q=Ja;var La=["gb_71","gb_155"],Ma;function Na(a){Ma=a}function Oa(a){var b=Ma&&!a.href.match(/.*\/accounts\/ClearSID[?]/)&&encodeURIComponent(Ma());b&&(a.href=a.href.replace(/([?&]continue=)[^&]*/,"$1"+b))}function Pa(a){window.gApplication&&(a.href=window.gApplication.getTabUrl(a.href))}function Qa(a){try{var b=(document.forms[0].q||"").value;b&&(a.href=a.href.replace(/([?&])q=[^&]*|$/,function(a,d){return(d||"&")+"q="+encodeURIComponent(b)}))}catch(c){q(c,"sb","pq")}} | |
var Ra=function(){for(var a=[],b=0,c;c=La[b];++b)(c=document.getElementById(c))&&a.push(c);return a},Sa=function(){var a=Ra();return 0<a.length?a[0]:null},Ta=function(){return document.getElementById("gb_70")},L={},M={},Ua={},N={},O=void 0,Za=function(a,b){try{var c=document.getElementById("gb");J(c,"gbpdjs");P();Va(document.getElementById("gb"))&&J(c,"gbrtl");if(b&&b.getAttribute){var d=b.getAttribute("aria-owns");if(d.length){var f=document.getElementById(d);if(f){var g=b.parentNode;if(O==d)O=void 0, | |
K(g,"gbto");else{if(O){var l=document.getElementById(O);if(l&&l.getAttribute){var n=l.getAttribute("aria-owner");if(n.length){var m=document.getElementById(n);m&&m.parentNode&&K(m.parentNode,"gbto")}}}Wa(f)&&Xa(f);O=d;J(g,"gbto")}}}}D(function(){h.tg(a,b,!0)});Ya(a)}catch(r){q(r,"sb","tg")}},$a=function(a){D(function(){h.close(a)})},ab=function(a){D(function(){h.rdd(a)})},Va=function(a){var b,c=document.defaultView;c&&c.getComputedStyle?(a=c.getComputedStyle(a,""))&&(b=a.direction):b=a.currentStyle? | |
a.currentStyle.direction:a.style.direction;return"rtl"==b},cb=function(a,b,c){if(a)try{var d=document.getElementById("gbd5");if(d){var f=d.firstChild,g=f.firstChild,l=document.createElement("li");l.className=b+" gbmtc";l.id=c;a.className="gbmt";l.appendChild(a);if(g.hasChildNodes()){c=[["gbkc"],["gbf","gbe","gbn"],["gbkp"],["gbnd"]];for(var d=0,n=g.childNodes.length,f=!1,m=-1,r=0,z;z=c[r];r++){for(var T=0,G;G=z[T];T++){for(;d<n&&I(g.childNodes[d],G);)d++;if(G==b){g.insertBefore(l,g.childNodes[d]|| | |
null);f=!0;break}}if(f){if(d+1<g.childNodes.length){var U=g.childNodes[d+1];I(U.firstChild,"gbmh")||bb(U,z)||(m=d+1)}else if(0<=d-1){var V=g.childNodes[d-1];I(V.firstChild,"gbmh")||bb(V,z)||(m=d)}break}0<d&&d+1<n&&d++}if(0<=m){var w=document.createElement("li"),x=document.createElement("div");w.className="gbmtc";x.className="gbmt gbmh";w.appendChild(x);g.insertBefore(w,g.childNodes[m])}h.addHover&&h.addHover(a)}else g.appendChild(l)}}catch(Ab){q(Ab,"sb","al")}},bb=function(a,b){for(var c=b.length, | |
d=0;d<c;d++)if(I(a,b[d]))return!0;return!1},db=function(a,b,c){cb(a,b,c)},eb=function(a,b){cb(a,"gbe",b)},fb=function(){D(function(){h.pcm&&h.pcm()})},gb=function(){D(function(){h.pca&&h.pca()})},hb=function(a,b,c,d,f,g,l,n,m,r){D(function(){h.paa&&h.paa(a,b,c,d,f,g,l,n,m,r)})},ib=function(a,b){L[a]||(L[a]=[]);L[a].push(b)},jb=function(a,b){M[a]||(M[a]=[]);M[a].push(b)},kb=function(a,b){Ua[a]=b},lb=function(a,b){N[a]||(N[a]=[]);N[a].push(b)},Ya=function(a){a.preventDefault&&a.preventDefault();a.returnValue= | |
!1;a.cancelBubble=!0},mb=null,Xa=function(a,b){P();if(a){nb(a,"Opening…");Q(a,!0);var c="undefined"!=typeof b?b:1E4,d=function(){ob(a)};mb=window.setTimeout(d,c)}},pb=function(a){P();a&&(Q(a,!1),nb(a,""))},ob=function(a){try{P();var b=a||document.getElementById(O);b&&(nb(b,"This service is currently unavailable.%1$sPlease try again later.","%1$s"),Q(b,!0))}catch(c){q(c,"sb","sdhe")}},nb=function(a,b,c){if(a&&b){var d=Wa(a);if(d){if(c){d.innerHTML="";b=b.split(c);c=0;for(var f;f=b[c];c++){var g=document.createElement("div"); | |
g.innerHTML=f;d.appendChild(g)}}else d.innerHTML=b;Q(a,!0)}}},Q=function(a,b){var c=void 0!==b?b:!0;c?J(a,"gbmsgo"):K(a,"gbmsgo")},Wa=function(a){for(var b=0,c;c=a.childNodes[b];b++)if(I(c,"gbmsg"))return c},P=function(){mb&&window.clearTimeout(mb)},qb=function(a){var b="inner"+a;a="offset"+a;return window[b]?window[b]:document.documentElement&&document.documentElement[a]?document.documentElement[a]:0},rb=function(){return!1},sb=function(){return!!O};p("so",Sa);p("sos",Ra);p("si",Ta);p("tg",Za); | |
p("close",$a);p("rdd",ab);p("addLink",db);p("addExtraLink",eb);p("pcm",fb);p("pca",gb);p("paa",hb);p("ddld",Xa);p("ddrd",pb);p("dderr",ob);p("rtl",Va);p("op",sb);p("bh",L);p("abh",ib);p("dh",M);p("adh",jb);p("ch",N);p("ach",lb);p("eh",Ua);p("aeh",kb);ba=k.a("")?Pa:Qa;p("qs",ba);p("setContinueCb",Na);p("pc",Oa);p("bsy",rb);k.d=Ya;k.j=qb;var tb={};y.base=tb;A.push(["m",{url:"//ssl.gstatic.com/gb/js/sem_1c1ffc36f0f54fda9275080308d2dba7.js"}]);h.sg={c:""};p("wg",{rg:{}});var ub={tiw:k.c("15000",0),tie:k.c("30000",0)};y.wg=ub;var vb={thi:k.c("10000",0),thp:k.c("180000",0),tho:k.c("5000",0),tet:k.b("0.5",0)};y.wm=vb;if(k.a("1")){var wb=k.a("1");A.push(["gc",{auto:wb,url:"//ssl.gstatic.com/gb/js/abc/gci_91f30755d6a6b787dcc2a4062e6e9824.js",libs:"googleapis.client:plusone:gapi.iframes"}]);var xb={version:"gci_91f30755d6a6b787dcc2a4062e6e9824.js",index:"",lang:"en"};y.gc=xb;var yb=function(a){window.googleapis&&window.iframes?a&&a():(a&&ra(a),F("gc"))};p("lGC",yb);k.a("1")&&p("lPWF",yb)};window.__PVT="";if(k.a("1")&&k.a("1")){var zb=function(a){yb(function(){C("pw",a);F("pw")})};p("lPW",zb);A.push(["pw",{url:"//ssl.gstatic.com/gb/js/abc/pwm_45f73e4df07a0e388b0fa1f3d30e7280.js"}]);var Bb=[],Cb=function(a){Bb[0]=a},Db=function(a,b){var c=b||{};c._sn="pw";t(a,c)},Eb={signed:Bb,elog:Db,base:"https://plusone.google.com/u/0",loadTime:(new Date).getTime()};y.pw=Eb;var Fb=function(a,b){for(var c=b.split("."),d=function(){var b=arguments;a(function(){for(var a=h,d=0,f=c.length-1;d<f;++d)a=a[c[d]];a[c[d]].apply(a,b)})},f=h,g=0,l=c.length-1;g< | |
l;++g)f=f[c[g]]=f[c[g]]||{};return f[c[g]]=d};Fb(zb,"pw.clk");Fb(zb,"pw.hvr");p("su",Cb,h.pw)};var Gb=[1,2,3,4,5,6,9,10,11,13,14,28,29,30,34,35,37,38,39,40,41,42,43,48,49,500];var Hb=k.b("0.001",1E-4),Ib=k.b("1",1),Jb=!1,Kb=!1;if(k.a("1")){var Lb=Math.random();Lb<Hb&&(Jb=!0);Lb<Ib&&(Kb=!0)}var R=null; | |
function Mb(a,b){var c=Hb,d=Jb,f;f=a;if(!R){R={};for(var g=0;g<Gb.length;g++){var l=Gb[g];R[l]=!0}}if(f=!!R[f])c=Ib,d=Kb;if(d){var d=encodeURIComponent,n="unknown_version",m;h.rp?(m=h.rp(),m="-1"!=m?m:""):m="";f=(new Date).getTime();var g=d("28834"),l=d("9jGyV8WZB8Sq-AHrtpSIBA"),r=h.bv.f,z=d("119");m=d(m);var c=Math.round(1/c),T=d("1470968812.0"),n=n?"&oggv="+d(n):"",G=d("com"),U=d("en"), | |
V=d("USA"),w;w=0;k.a("")&&(w|=1);k.a("")&&(w|=2);k.a("")&&(w|=4);f=["//www.google.com/gen_204?atyp=i&zx=",f,"&oge=",a,"&ogex=",g,"&ogev=",l,"&ogf=",r,"&ogp=",z,"&ogrp=",m,"&ogsr=",c,"&ogv=",T,n,"&ogd=",G,"&ogl=",U,"&ogc=",V,"&ogus=",w];if(b){"ogw"in b&&(f.push("&ogw="+b.ogw),delete b.ogw);var x,g=b,l=[];for(x in g)0!=l.length&&l.push(","),l.push(Nb(x)),l.push("."),l.push(Nb(g[x]));x=l.join("");""!=x&&(f.push("&ogad="),f.push(d(x)))}ia(f.join(""))}} | |
function Nb(a){"number"==typeof a&&(a+="");return"string"==typeof a?a.replace(".","%2E").replace(",","%2C"):a}u=Mb;p("il",u,v);var Ob={};y.il=Ob;var Pb=function(a,b,c,d,f,g,l,n,m,r){D(function(){h.paa(a,b,c,d,f,g,l,n,m,r)})},Qb=function(){D(function(){h.prm()})},Rb=function(a){D(function(){h.spn(a)})},Sb=function(a){D(function(){h.sps(a)})},Tb=function(a){D(function(){h.spp(a)})},Ub={"27":"//ssl.gstatic.com/gb/images/silhouette_24.png","27":"//ssl.gstatic.com/gb/images/silhouette_24.png","27":"//ssl.gstatic.com/gb/images/silhouette_24.png"},Vb=function(a){return(a=Ub[a])||"//ssl.gstatic.com/gb/images/silhouette_24.png"}, | |
Wb=function(){D(function(){h.spd()})};p("spn",Rb);p("spp",Tb);p("sps",Sb);p("spd",Wb);p("paa",Pb);p("prm",Qb);ib("gbd4",Qb); | |
if(k.a("")){var Xb={d:k.a(""),e:"",sanw:k.a("1"),p:"//ssl.gstatic.com/gb/images/silhouette_96.png",cp:"1",xp:k.a("1"),mg:"%1$s (delegated)",md:"%1$s (default)",mh:"220",s:"1",pp:Vb,ppl:k.a(""),ppa:k.a(""), | |
ppm:"Google+ page"};y.prf=Xb};var S,Yb,W,Zb,X=0,$b=function(a,b,c){if(a.indexOf)return a.indexOf(b,c);if(Array.indexOf)return Array.indexOf(a,b,c);for(c=null==c?0:0>c?Math.max(0,a.length+c):c;c<a.length;c++)if(c in a&&a[c]===b)return c;return-1},Y=function(a,b){return-1==$b(a,X)?(q(Error(X+"_"+b),"up","caa"),!1):!0},bc=function(a,b){Y([1,2],"r")&&(S[a]=S[a]||[],S[a].push(b),2==X&&window.setTimeout(function(){b(ac(a))},0))},cc=function(a,b,c){if(Y([1],"nap")&&c){for(var d=0;d<c.length;d++)Yb[c[d]]=!0;h.up.spl(a,b,"nap",c)}},dc= | |
function(a,b,c){if(Y([1],"aop")&&c){if(W)for(var d in W)W[d]=W[d]&&-1!=$b(c,d);else for(W={},d=0;d<c.length;d++)W[c[d]]=!0;h.up.spl(a,b,"aop",c)}},ec=function(){try{if(X=2,!Zb){Zb=!0;for(var a in S)for(var b=S[a],c=0;c<b.length;c++)try{b[c](ac(a))}catch(d){q(d,"up","tp")}}}catch(d){q(d,"up","mtp")}},ac=function(a){if(Y([2],"ssp")){var b=!Yb[a];W&&(b=b&&!!W[a]);return b}};Zb=!1;S={};Yb={};W=null; | |
var X=1,fc=function(a){var b=!1;try{b=a.cookie&&a.cookie.match("PREF")}catch(c){}return!b},gc=function(){try{return!!e.localStorage&&"object"==typeof e.localStorage}catch(a){return!1}},hc=function(a){return a&&a.style&&a.style.behavior&&"undefined"!=typeof a.load},ic=function(a,b,c,d){try{fc(document)||(d||(b="og-up-"+b),gc()?e.localStorage.setItem(b,c):hc(a)&&(a.setAttribute(b,c),a.save(a.id)))}catch(f){f.code!=DOMException.QUOTA_EXCEEDED_ERR&&q(f,"up","spd")}},jc=function(a,b,c){try{if(fc(document))return""; | |
c||(b="og-up-"+b);if(gc())return e.localStorage.getItem(b);if(hc(a))return a.load(a.id),a.getAttribute(b)}catch(d){d.code!=DOMException.QUOTA_EXCEEDED_ERR&&q(d,"up","gpd")}return""},kc=function(a,b,c){a.addEventListener?a.addEventListener(b,c,!1):a.attachEvent&&a.attachEvent("on"+b,c)},lc=function(a){for(var b=0,c;c=a[b];b++){var d=h.up;c=c in d&&d[c];if(!c)return!1}return!0},mc=function(a,b){try{if(fc(a))return-1;var c=a.cookie.match(/OGPC=([^;]*)/);if(c&&c[1]){var d=c[1].match(new RegExp("\\b"+ | |
b+"-([0-9]+):"));if(d&&d[1])return parseInt(d[1],10)}}catch(f){f.code!=DOMException.QUOTA_EXCEEDED_ERR&&q(f,"up","gcc")}return-1};p("up",{r:bc,nap:cc,aop:dc,tp:ec,ssp:ac,spd:ic,gpd:jc,aeh:kc,aal:lc,gcc:mc});var Z=function(a,b){a[b]=function(c){var d=arguments;h.qm(function(){a[b].apply(this,d)})}};Z(h.up,"sl");Z(h.up,"si");Z(h.up,"spl");Z(h.up,"dpc");Z(h.up,"iic");h.mcf("up",{sp:k.b("0.01",1),tld:"com",prid:"119"});function nc(){function a(){for(var b;(b=g[l++])&&"m"!=b[0]&&!b[1].auto;);b&&(qa(2,b[0]),b[1].url&&pa(b[1].url,b[0]),b[1].libs&&E&&E(b[1].libs));l<g.length&&setTimeout(a,0)}function b(){0<f--?setTimeout(b,0):a()}var c=k.a("1"),d=k.a(""),f=3,g=A,l=0,n=window.gbarOnReady;if(n)try{n()}catch(m){q(m,"ml","or")}d?p("ldb",a):c?ca(window,"load",b):b()}p("rdl",nc);}catch(e){window.gbar&&gbar.logger&&gbar.logger.ml(e,{"_sn":"cfg.init"});}})(); | |
(function(){try{var a=window.gbar;a.mcf("pm",{p:""});}catch(e){window.gbar&&gbar.logger&&gbar.logger.ml(e,{"_sn":"cfg.init"});}})(); | |
(function(){try{var a=window.gbar;a.mcf("mm",{s:"1"});}catch(e){window.gbar&&gbar.logger&&gbar.logger.ml(e,{"_sn":"cfg.init"});}})(); | |
(function(){try{var a=this;var b=window.gbar;var c=b.i;var d=c.a,e=c.c,f={cty:"USA",cv:"1470968812",dbg:d(""),ecv:"0",ei:e("9jGyV8WZB8Sq-AHrtpSIBA"),ele:d("1"),esr:e("0.1"),evts:["mousedown","touchstart","touchmove","wheel","keydown"],gbl:"unknown_version",hd:"com",hl:"en",irp:d(""),pid:e("119"), | |
snid:e("28834"),to:e("300000"),u:e(""),vf:".66.41."},g=f,h=["bndcfg"],k=a;h[0]in k||!k.execScript||k.execScript("var "+h[0]);for(var l;h.length&&(l=h.shift());)h.length||void 0===g?k=k[l]?k[l]:k[l]={}:k[l]=g;}catch(e){window.gbar&&gbar.logger&&gbar.logger.ml(e,{"_sn":"cfg.init"});}})(); | |
(function(){try{window.gbar.rdl();}catch(e){window.gbar&&gbar.logger&&gbar.logger.ml(e,{"_sn":"cfg.init"});}})(); | |
window.jstiming.load.tick('ogjl');</script><script type="text/javascript">window.__GOOGLEAPIS = {googleapis: {versions: {pos: 'v1'}}};window.__GOOGLEAPIS = window.__GOOGLEAPIS || {}; window.__GOOGLEAPIS.iframes = window.__GOOGLEAPIS.iframes || {}; window.__GOOGLEAPIS.iframes[':socialhost:'] = 'https:\/\/apis.google.com';</script><script>var OZ_lateJs; var OZ_lateJsError; | |
var OZ_jsLoadSuccess = function(jsCode, url) { | |
OZ_lateJs = [jsCode, url]; | |
}; | |
var OZ_jsLoadError = function(status) { | |
OZ_lateJsError = status; | |
}; | |
var OZ_lateModuleIds = ["srbx"] | |
; OZ_requestJs(OZ_lateModuleIds, '\/_\/scs\/apps-static\/_\/js\/k\x3doz.home.en_US.S0zubYtyP20.O\/m\x3dsrbx\/am\x3dHIjDITJAAQ\/rt\x3dj\/d\x3d1\/exm\x3db,prc\/ed\x3d1\/rs\x3dAGLTcCNtoJhMLwJ4Zzadzg8ou0gbt7ELsA', 'OZ_jsLoadSuccess', 'OZ_jsLoadError');</script><script>AF_initDataCallback({key: '199', isError: false , hash: '1', data:[0,0] | |
});</script><script>AF_initDataCallback({key: '4', isError: false , hash: '2', data:[[] | |
,"",[1,2,"103717513886594190386",null,null,12,null,"social.google.com",[] | |
,null,null,null,null,null,null,[] | |
,null,0,2,null,null,0,null,15,null,[[1002,2] | |
,[119,127,110,120,132,135,115,138,142] | |
,0,0] | |
,null,null,0,null,null,0,null,null,null,1,1,1] | |
,null,[] | |
,null,null,[[1002,null,null,null,null,[1001,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k"] | |
,{"33558957":["","","","Mat Kelly","",1410271017655,null,[] | |
,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k","","a:ext:client.sharebox.261207059221.apps.googleusercontent.com",[] | |
,[] | |
,"",null,[] | |
,"103717513886594190386",[] | |
,"https://lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg",null,"","+MatKelly/posts/d1vuVrSENHE",0,0.0,"./103717513886594190386",[] | |
,null,null,"",0,0,0,1,null,0,1,null,0,1410271017655,null,null,0,null,null,null,0,null,null,null,[] | |
,null,null,0,0,null,null,0,null,null,null,null,0,null,null,null,null,[] | |
,null,null,null,null,null,null,["4/jcsnatvshdla4tnqiduqkv35h5t30h33h0srew3pjdoqwy3ughxbavnna1pk/",4,null,null,null,null,1.411174799999999E12,null,null,null,null,null,[[1.0,null,[] | |
] | |
] | |
,0,null,null,1,[] | |
,0,0,null,"AEIZW7RWaKeNHYpGkhfwO/7vOMzWWYOuZeR/bcsBBrIHr9Ct3++ZKYG3K/O7nxZL/SdswFGHY7fH"] | |
,null,null,1,null,1,0,null,null,null,null,"social.google.com",0,0,null,null,1,0,null,"2014-09-09",0,0,null,0,[[354,338,336,335,0] | |
,"https://www.youtube.com/watch?v\u003dDoSiPDujIiM\u0026feature\u003dautoshare",null,null,null,"AOl+Xe92H39PEMUr/z/3AtZwk/GKPwPSUg\u003d\u003d",null,"https://www.youtube.com/watch?v\u003dDoSiPDujIiM\u0026feature\u003dautoshare",{"41186541":["https://www.youtube.com/watch?v\u003dDoSiPDujIiM\u0026feature\u003dautoshare","http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg","Mink Demo","",null,["//lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw506-h284-n",506,284,1,1,null,null,284,[2,"https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw800-h800"] | |
] | |
,null,[] | |
,null,null,[] | |
,null,null,[] | |
,[] | |
,[] | |
,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"https://www.youtube.com/v/DoSiPDujIiM?version\u003d3\u0026autohide\u003d1\u0026autoplay\u003d1\u0026feature\u003dautoshare-u",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[339,338,336,335,0] | |
,"http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg",{"40265033":["http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg","http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg",null,null,null,["//lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw506-h284-n",506,284,1,1,null,null,284,[2,"https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw800-h800"] | |
] | |
,null,[] | |
,null,null,[] | |
,null,null,[] | |
,[] | |
,[] | |
,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
] | |
}] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"UCYxIqzBJEuisbUZ6LCYW1mA"] | |
}] | |
,null,null,0,0,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,0,9,null,0,[] | |
,0,[] | |
,0,0,null,null,[] | |
,null,null,null,"https://plus.google.com/+MatKelly/posts/d1vuVrSENHE",null,null,1,null,["Mat Kelly","103717513886594190386",0,0,"https://lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg","./103717513886594190386","male",null,0] | |
,null,null,null,null,["en",0,"English"] | |
,null,[] | |
,null,[null,0] | |
,null,[] | |
,null,0,null,null,[0] | |
,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",null,null,null,null,null,[[] | |
] | |
] | |
}] | |
] | |
,null,"CAA\u003d",[440,2,[] | |
] | |
,[[[[null,[[[[] | |
,[[0,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",0,465] | |
] | |
] | |
] | |
] | |
,[0,520,520] | |
] | |
] | |
,1] | |
,[[[null,[[[[] | |
,[[0,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",0,465] | |
] | |
] | |
,[[] | |
,[] | |
] | |
] | |
] | |
,[0,440,520] | |
] | |
] | |
,2] | |
,[[[null,[[[[] | |
,[[0,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",0,465] | |
] | |
] | |
,[[] | |
,[] | |
] | |
,[[] | |
,[] | |
] | |
] | |
] | |
,[0,360,520] | |
] | |
] | |
,3] | |
] | |
] | |
});</script><script>AF_initDataCallback({key: '123', isError: false , hash: '3', data:[null,[] | |
,null,0] | |
});</script><script>AF_initDataCallback({key: '5', isError: false , hash: '4', data:["103717513886594190386",0,[null,null,"https://plus.google.com/+MatKelly","//lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg",[[null,null,null,null,[] | |
,6] | |
,"Mat","Kelly","Mat Kelly",0] | |
,[[null,null,null,null,[] | |
,6] | |
,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,"Software Developer, Research Scientist"] | |
,[[null,null,null,null,[] | |
,6] | |
,[["NASA Langley Research Center","Mobile Applications Developer",[[1,1,2011] | |
,[1,1,2013] | |
,1] | |
,"",""] | |
,["Old Dominion University Research Foundation","Research Assistant",[[1,1,2011] | |
,[1,1,2013] | |
,1] | |
,"",""] | |
,["Blade Agency","Software Developer",[[1,1,2006] | |
,[1,1,2013] | |
,1] | |
,"",""] | |
] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,"",[] | |
,null,null,[] | |
] | |
,"//maps-api-ssl.google.com/maps/api/staticmap?size\u003d375x175\u0026sensor\u003dfalse\u0026language\u003den\u0026client\u003dgoogle-profiles\u0026signature\u003dfNZUcgnPo-kwulgpmUhuA1MK6sE%3D",[[] | |
,[null,null,null,null,[] | |
,6] | |
,[null,null,null,null,[] | |
,6] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,[] | |
,[] | |
,[] | |
,[] | |
,null,[] | |
,[] | |
,null,[] | |
,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,[] | |
,[] | |
,[] | |
,[] | |
,null,[] | |
,[] | |
,null,[] | |
,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,""] | |
,[] | |
,[[null,null,null,null,[] | |
,6] | |
,"",0] | |
,[[null,null,null,null,[] | |
,6] | |
,1] | |
,null,[[null,null,null,null,[] | |
,6] | |
,""] | |
,null,null,[[null,null,null,null,[] | |
,6] | |
,0,1] | |
,[[null,null,null,null,[] | |
,6] | |
,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,0] | |
,[[null,null,null,null,[] | |
,6] | |
,0] | |
,[[null,null,null,null,[] | |
,6] | |
,0] | |
,[] | |
,[] | |
,null,"103717513886594190386",1,null,[[null,null,null,null,[] | |
,6] | |
,""] | |
,null,[[null,null,null,null,[] | |
,6] | |
,[] | |
] | |
,null,[[null,null,null,null,[] | |
,6] | |
,0] | |
,null,[null,0] | |
,0,null,null,null,[null,1,0,null,0,1,null,null,1,1,1] | |
,0,[4,null,0,null,0,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,""] | |
,1,null,1,[[] | |
,null,[null,null,null,null,[] | |
,6] | |
] | |
,[[[[null,null,null,null,[] | |
,6] | |
,"http://ws-dl.blogspot.com/","//s2.googleusercontent.com/s2/favicons?domain\u003dws-dl.blogspot.com\u0026alt\u003dp","Web Science and Digital Libraries Research Group","contributor-to",0,["http://ws-dl.blogspot.com/","sgn://blogspot.com/?ident\u003dws-dl"] | |
,[] | |
] | |
] | |
,null,[null,null,null,null,[] | |
,6] | |
] | |
,[[] | |
,null,[null,null,null,null,[] | |
,6] | |
] | |
,1,[null,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,0] | |
,null,null,[] | |
,[null,null,null,null,null,null,[] | |
,[] | |
] | |
,[[null,null,null,null,[] | |
,6] | |
,0] | |
,0,[1,[] | |
] | |
,null,null,[1,1] | |
,1,[] | |
,[[] | |
] | |
,[null,[] | |
,null,0] | |
,[[] | |
] | |
,[[[[null,"http://www.youtube.com/channel/UCYxIqzBJEuisbUZ6LCYW1mA","//s2.googleusercontent.com/s2/favicons?alt\u003dp\u0026domain\u003dwww.youtube.com","Mat Kelly","me",null,[] | |
,[] | |
] | |
] | |
] | |
,0,38,0] | |
,[null,[] | |
] | |
,[[0] | |
] | |
,"+MatKelly",[[null,null,null,null,[] | |
,6] | |
,""] | |
,1298580687445,[["//maps-api-ssl.google.com/maps/api/staticmap?size\u003d320x175\u0026sensor\u003dfalse\u0026language\u003den\u0026client\u003dgoogle-profiles\u0026signature\u003d6g52SawoDCxI9y9wUdgvjpCc9kM%3D","//maps-api-ssl.google.com/maps/api/staticmap?size\u003d400x175\u0026sensor\u003dfalse\u0026language\u003den\u0026client\u003dgoogle-profiles\u0026signature\u003dyiZlEaoMtlr_Rq4pItNdASlV8xM%3D","//maps-api-ssl.google.com/maps/api/staticmap?size\u003d480x175\u0026sensor\u003dfalse\u0026language\u003den\u0026client\u003dgoogle-profiles\u0026signature\u003dXFx9UcLT04n6gPg4XIBeel7N_P4%3D"] | |
] | |
,[null,null,[] | |
,[] | |
,[] | |
,[] | |
,[] | |
,null,null,null,[] | |
,null,null,null,[] | |
,null,[] | |
,[] | |
,[] | |
,[] | |
,null,null,[] | |
,[] | |
,null,null,null,[] | |
] | |
,0,1,0,[0] | |
] | |
,null,[[] | |
,"",[1,2,"103717513886594190386",null,null,12,null,"social.google.com",[] | |
,null,null,null,null,null,null,[] | |
,null,0,2,null,null,0,null,15,null,[[1002,2] | |
,[119,127,110,120,132,135,115,138,142] | |
,0,0] | |
,null,null,0,null,null,0,null,null,null,1,1,1] | |
,null,[] | |
,null,null,[[1002,null,null,null,null,[1001,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k"] | |
,{"33558957":["","","","Mat Kelly","",1410271017655,null,[] | |
,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k","","a:ext:client.sharebox.261207059221.apps.googleusercontent.com",[] | |
,[] | |
,"",null,[] | |
,"103717513886594190386",[] | |
,"https://lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg",null,"","+MatKelly/posts/d1vuVrSENHE",0,0.0,"./103717513886594190386",[] | |
,null,null,"",0,0,0,1,null,0,1,null,0,1410271017655,null,null,0,null,null,null,0,null,null,null,[] | |
,null,null,0,0,null,null,0,null,null,null,null,0,null,null,null,null,[] | |
,null,null,null,null,null,null,["4/jcsnatvshdla4tnqiduqkv35h5t30h33h0srew3pjdoqwy3ughxbavnna1pk/",4,null,null,null,null,1.411174799999999E12,null,null,null,null,null,[[1.0,null,[] | |
] | |
] | |
,0,null,null,1,[] | |
,0,0,null,"AEIZW7RWaKeNHYpGkhfwO/7vOMzWWYOuZeR/bcsBBrIHr9Ct3++ZKYG3K/O7nxZL/SdswFGHY7fH"] | |
,null,null,1,null,1,0,null,null,null,null,"social.google.com",0,0,null,null,1,0,null,"2014-09-09",0,0,null,0,[[354,338,336,335,0] | |
,"https://www.youtube.com/watch?v\u003dDoSiPDujIiM\u0026feature\u003dautoshare",null,null,null,"AOl+Xe92H39PEMUr/z/3AtZwk/GKPwPSUg\u003d\u003d",null,"https://www.youtube.com/watch?v\u003dDoSiPDujIiM\u0026feature\u003dautoshare",{"41186541":["https://www.youtube.com/watch?v\u003dDoSiPDujIiM\u0026feature\u003dautoshare","http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg","Mink Demo","",null,["//lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw506-h284-n",506,284,1,1,null,null,284,[2,"https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw800-h800"] | |
] | |
,null,[] | |
,null,null,[] | |
,null,null,[] | |
,[] | |
,[] | |
,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"https://www.youtube.com/v/DoSiPDujIiM?version\u003d3\u0026autohide\u003d1\u0026autoplay\u003d1\u0026feature\u003dautoshare-u",null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[[339,338,336,335,0] | |
,"http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg",{"40265033":["http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg","http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg",null,null,null,["//lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw506-h284-n",506,284,1,1,null,null,284,[2,"https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3\u003dw800-h800"] | |
] | |
,null,[] | |
,null,null,[] | |
,null,null,[] | |
,[] | |
,[] | |
,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,[] | |
] | |
}] | |
,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"UCYxIqzBJEuisbUZ6LCYW1mA"] | |
}] | |
,null,null,0,0,null,null,null,null,null,null,null,null,null,null,null,[] | |
,null,null,0,9,null,0,[] | |
,0,[] | |
,0,0,null,null,[] | |
,null,null,null,"https://plus.google.com/+MatKelly/posts/d1vuVrSENHE",null,null,1,null,["Mat Kelly","103717513886594190386",0,0,"https://lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg","./103717513886594190386","male",null,0] | |
,null,null,null,null,["en",0,"English"] | |
,null,[] | |
,null,[null,0] | |
,null,[] | |
,null,0,null,null,[0] | |
,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",null,null,null,null,null,[[] | |
] | |
] | |
}] | |
] | |
,null,"CAA\u003d",[440,2,[] | |
] | |
,[[[[null,[[[[] | |
,[[0,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",0,465] | |
] | |
] | |
] | |
] | |
,[0,520,520] | |
] | |
] | |
,1] | |
,[[[null,[[[[] | |
,[[0,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",0,465] | |
] | |
] | |
,[[] | |
,[] | |
] | |
] | |
] | |
,[0,440,520] | |
] | |
] | |
,2] | |
,[[[null,[[[[] | |
,[[0,"z13gxjbbfvruhleir04ch1upuzinxzczsns0k",0,465] | |
] | |
] | |
,[[] | |
,[] | |
] | |
,[[] | |
,[] | |
] | |
] | |
] | |
,[0,360,520] | |
] | |
] | |
,3] | |
] | |
] | |
,null,"AMP3uWabfeUXxEeGfuC4y7R00X3z9K3rBgPpTywHIUAdb_PiziSCFNshtATQQFVlD3FS-FKEaY4l",null,null,null,[null,[] | |
,null,null,null,"https://lh3.googleusercontent.com/c5dqxl-2uHZ82ah9p7yxrVF1ZssrJNSV_15Nu0TUZwzCWqmtoLxCUJgEzLGtxsrJ6-v6R6rKU_-FYm881TTiMCJ_\u003ds1600","https://lh3.googleusercontent.com/c5dqxl-2uHZ82ah9p7yxrVF1ZssrJNSV_15Nu0TUZwzCWqmtoLxCUJgEzLGtxsrJ6-v6R6rKU_-FYm881TTiMCJ_\u003ds1600-fSoften\u003d1,60,0"] | |
,null,null,null,null,"https://profiles.google.com",[null,1,0,null,0,1,null,null,0,null,0] | |
,null,null,0,null,null,null,[1,[] | |
] | |
,[[] | |
,null,null,[] | |
,0,0,0] | |
,null,null,0,[] | |
,null,null,[[] | |
,[] | |
,[[] | |
] | |
,[[[[null,[[[[] | |
,[[0,"8",0,300] | |
,[0,"11",0,300] | |
,[0,"13",0,300] | |
] | |
] | |
] | |
] | |
,[0,520,520] | |
] | |
] | |
,1] | |
,[[[null,[[[[] | |
,[[0,"8",0,300] | |
,[0,"13",0,300] | |
] | |
] | |
,[[] | |
,[[0,"11",0,300] | |
] | |
] | |
] | |
] | |
,[0,440,520] | |
] | |
] | |
,2] | |
,[[[null,[[[[] | |
,[[0,"8",0,300] | |
] | |
] | |
,[[] | |
,[[0,"11",0,300] | |
] | |
] | |
,[[] | |
,[[0,"13",0,300] | |
] | |
] | |
] | |
] | |
,[0,360,520] | |
] | |
] | |
,3] | |
] | |
,[8,11,13] | |
,[] | |
,[440,2,[] | |
] | |
] | |
,null,0,"posts",null,null,null,0,[null,[[] | |
] | |
] | |
,null,[[284045] | |
] | |
,null,null,0,0,null,[[[] | |
] | |
] | |
] | |
});</script><script>AF_initDataCallback({key: '1', isError: false , hash: '5', data:["/c/","docs.google.com/picker",null,[["e1a3ade5","99",1] | |
,["3075e8a9","pages/settings/plus",2] | |
,["5ad7396c","pages/settings/admin",2] | |
,["a0c13a02","notifications/all",2] | |
,["15f084ae"] | |
,["fb4e2fc4"] | |
,["345ff995"] | |
,["b60ba4d6","//www.youtube.com/embed/l0qfHq_Qva8?wmode\u003dopaque",2] | |
,["58cc0ecc","100",1] | |
,["2837709a","250",1] | |
,["12881b0b"] | |
,["ca2c7f4"] | |
,["5eca3fd8"] | |
,["21fa5ea3"] | |
,["3bdfc36"] | |
,["53905784"] | |
,["361a82fe","20",1] | |
,["acbf0ffc","6",1] | |
,["30dc41c4"] | |
,["5cd08d3e"] | |
,["a7258d35","5",1] | |
,["a8e523a3","1000",1] | |
,["153fc4e3"] | |
,["40acc4f7"] | |
,["96a53e1a","80",1] | |
,["d6697028","//www.youtube.com/embed/GUywKEtXX2c",2] | |
,["d582a4f8","25",1] | |
,["66c83ef2","",2] | |
,["2b8b0743","10",1] | |
,["4dc524c0","import,suggest,follow,profile",2] | |
,["7615555e","100",1] | |
,["c05ef682","5",1] | |
,["e975220","5",1] | |
,["f892a1f6","750",1] | |
,["da271db1","//ssl.gstatic.com/s2/oz/images/hangouts/hangouts_onair_promo_live-dffa4529a32c693283924cd12ffbc4e4.png",2] | |
,["f85d7a75","//ssl.gstatic.com/s2/oz/images/hangouts/hangouts_onair_promo_recorded-7453f2c3b2160c984e5cd7c017effd49.png",2] | |
,["dc47b7e1","https://www.google.com",2] | |
,["48b332f1","//www.google.com/maps?layer\u003dc\u0026ie\u003dUTF8\u0026source\u003dembed\u0026output\u003dsvembed",2] | |
,["b549d814","10000",1] | |
,["4ca66953","300000",1] | |
,["242aea5","5000",1] | |
,["1ddddfd5","1.0",1] | |
,["300feef9","0.5",1] | |
,["bf3c2a2d","0.05",1] | |
,["1ea69d6d","-1",1] | |
,["51e3db92","https://photos.google.com",2] | |
,["ac806264"] | |
,["63c8aa1c","43200000",1] | |
,["b3d65284","1800000",1] | |
,["32a36dc7","15000",1] | |
,["c40522f","2000",1] | |
,["aaf52903","0.3",1] | |
,["8c85289b","2",1] | |
,["e46643a","3",1] | |
,["4ea6b8e3","2000",1] | |
,["b2186565","400",1] | |
,["c1daf5cd","10",1] | |
,["703730af","15",1] | |
,["463afe84","10",1] | |
,["5a10b9d9","//ssl.gstatic.com/s2/oz/images/notifications/jingles_eb4e5306b38f83915d82034fa93390d9/",2] | |
,["18f1cdf9","250",1] | |
,["86f3341a","10",1] | |
,["8012fae7","20",1] | |
,["a9a3e797","25",1] | |
,["b378b70a","25",1] | |
,["a68807db"] | |
,["5715347d"] | |
,["a2e5195e"] | |
,["2f65daed"] | |
,["6f8cc541"] | |
,["44a20323"] | |
,["7372f164","//www.youtube.com/watch?v\u003d",2] | |
,["1a3786fb","2000",1] | |
,["90c3e763"] | |
,["887aa6bb"] | |
,["2bca337"] | |
,["dff71358"] | |
,["542595e1","0",1] | |
,["96942408","10",1] | |
,["12885cf2","40",1] | |
,["c4a65487","3",1] | |
,["cfa495ac"] | |
,["25b05df1","60",1] | |
,["7a92f75c","20",1] | |
,["dd75ff49","0",1] | |
,["5cf6e450"] | |
,["c696ffc3","//www.youtube.com/embed/bo390-3ohW4",2] | |
,["c5eb23d7","//www.youtube.com/embed/ylZg43Meick",2] | |
,["62f9e96d","//www.youtube.com/embed/8aCYZ3gXfy8",2] | |
,["f5caebd8","Widget[gmail.rhs],Widget[gmail.plusnotifycard],Widget[gmail.pview],Widget[gmail.rhspp]",2] | |
,["92cebb77"] | |
,["d59d524b"] | |
,["ed2ddf08","2500",1] | |
,["56af9af6","1000",1] | |
,["b07d93ca","500",1] | |
,["a05aeb35","500",1] | |
,["2125014e","600",1] | |
,["371ccd09","0.025",1] | |
,["7ecdfea5"] | |
,["c99cf54c"] | |
,["415edc4f"] | |
,["6005610c","40",1] | |
,["d8e528b3","200",1] | |
,["bdfc96d5"] | |
,["109a38d3"] | |
,["269eceba","100",1] | |
,["a45cf373","4",1] | |
,["5e6ae07f","2",1] | |
,["1d6b6a06","4",1] | |
,["4ab88f97","4",1] | |
,["554ac1cc","3",1] | |
,["5c19a49e","2",1] | |
,["15f3a3a0","8",1] | |
,["787163ac","4",1] | |
,["9f44a2f3","8",1] | |
,["520ff8c4","5",1] | |
,["2c833439","5",1] | |
,["98f0a38b","4",1] | |
,["8ed40ce0","20",1] | |
,["f28ca27a","44",1] | |
,["da72c0db","500",1] | |
,["a181a097","3",1] | |
,["119e347a","1000",1] | |
,["65b9aa26","google.com/+",2] | |
,["1ec68444","youtube.com/c",2] | |
,["40d4b6d8"] | |
,["88d90359","1000:3000:1000",2] | |
,["c8595228","https://support.google.com/plus/?p\u003dplus_embeds",2] | |
,["8d2087d6"] | |
] | |
,0,"","//ssl.gstatic.com/images/branding/google_plus/1x/gplus_word_108x30dp.png","https://accounts.google.com/ServiceLogin?service\u003doz\u0026hl\u003den-US\u0026continue\u003dhttps://plus.google.com/%2BMatKelly?gpsrc%3Dgplp0",0,"","",null,null,null,"https://csi.gstatic.com/csi",null,null,null,"https://hangouts.google.com","/complete/search","plus.url.google.com","https://hangouts.google.com/hangouts/_/",[81,97,100,122,124,30,79,127] | |
,null,null,"https://accounts.google.com/TOS?hl\u003den-US",null,"https://hangouts.google.com/hangouts/_/extras/",null,"https://hangouts.google.com/hangouts/_/stream/","",1471295989675,"picasaweb.google.com","https://www.google.com/contacts","us","http://www.google.com/intl/en-US/+/learnmore/forum/","https://www.google.com/intl/en-US/+/policy/content.html",null,"https://www.google.com/intl/en-US/+/policy/",null,"https://www.google.com/intl/en-US/help/terms_maps.html","https://accounts.google.com/SignUp?service\u003doz\u0026hl\u003den-US\u0026continue\u003dhttps://plus.google.com/%2BMatKelly",null,null,null,"RfFSqZDcFaqBMSOAs6kL3pu3WVE","1471295978"] | |
});</script><script>AF_initDataCallback({key: '118', isError: false , data:null});</script><script>AF_initDataCallback({key: '99', isError: false , hash: '6', data:[] | |
});</script><script>AF_initDataCallback({key: '29', isError: false , hash: '7', data:[] | |
});</script><script>AF_initDataCallback({key: '77', isError: false , hash: '8', data:[[] | |
,"/+MatKelly"] | |
});</script><script>AF_initDataCallback({key: '42', isError: false , hash: '9', data:["https://plus.google.com/?wwc\u003d1",[5,1,2,3] | |
] | |
});</script><script>AF_initDataCallback({key: '2', isError: false , data:null});</script><script>AF_initDataCallback({key: '47', isError: false , hash: '10', data:[] | |
});</script><script>AF_initDataCallback({key: '79', isError: false , hash: '11', data:[[[1,[[[2] | |
] | |
] | |
] | |
,[7,[[[2] | |
] | |
] | |
] | |
] | |
] | |
});</script><script>AF_initDataCallback({key: '36', isError: false , hash: '12', data:["US",0,"Suffolk"] | |
});</script><script>AF_initDataCallback({key: '115', isError: false , hash: '13', data:["plus.google.com","plus.google.com","//plus.google.com/"] | |
});</script><script>AF_initDataCallback({key: '12', isError: false , data:null});</script><script>AF_initDataCallback({key: '37', isError: false , hash: '14', data:["/all",1,0,0,null,null,0,0,0,0,2,null,null,0,null,1,null,0,null,0,0,0,null,0,0] | |
});</script><script>AF_initDataCallback({key: '175', isError: false , hash: '15', data:[[[] | |
,[[29] | |
,[11] | |
,[3025768] | |
,[22] | |
,[6194809] | |
] | |
,0] | |
] | |
});</script><script>AF_initDataCallback({key: '64', isError: false , hash: '16', data:["https://talkgadget.google.com/talkgadget/mediaplayer"] | |
});</script></body></html> | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: https://plus.google.com/+MatKelly | |
WARC-Date: 2016-08-15T21:19:49Z | |
WARC-Concurrent-To: <urn:uuid:a5961bf3-f0bd-4e8c-a3bd-32f6457a31e9> | |
WARC-Record-ID: <urn:uuid:9afce7c8-4b01-44fa-8baf-bebb72cb1844> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 443 | |
GET /+MatKelly HTTP/1.0 | |
Connection: Close | |
Referer: https://plus.google.com/103717513886594190386 | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: plus.google.com | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
Cookie: NID=84=SbG6NcKHHuYZpCXMX6jSaM7dyTI2lLh0SEiu-lU6fRUj9H3GEpYPSUf9G51MqYIfal8D5dhRzZ-a_IqnLh1bZ5buLRhsADH2XwQNGdgq9tFvPifPYO5Ym_LYjL59lL75 | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: https://plus.google.com/+MatKelly | |
WARC-Date: 2016-08-15T21:19:49Z | |
WARC-Concurrent-To: <urn:uuid:a5961bf3-f0bd-4e8c-a3bd-32f6457a31e9> | |
WARC-Record-ID: <urn:uuid:9f86eb14-58c2-4a5a-b563-707e31986846> | |
Content-Type: application/warc-fields | |
Content-Length: 11788 | |
via: https://plus.google.com/103717513886594190386 | |
hopsFromSeed: RERR | |
fetchTimeMs: 649 | |
charsetForLinkExtraction: UTF-8 | |
outlink: https://plus.google.com/favicon.ico I =INFERRED_MISC | |
outlink: https://plus.google.com/ L base/@href | |
outlink: https://plus.google.com/CSI/ X =JS_MISC | |
outlink: https://plus.google.com/es_oz_20160811.10_p0 X =JS_MISC | |
outlink: https://plus.google.com/_/resourcefailure?type= X =JS_MISC | |
outlink: https://plus.google.com/_/css-load-error/ X =JS_MISC | |
outlink: https://plus.google.com/oz.reportError X =JS_MISC | |
outlink: https://plus.google.com/ X =JS_MISC | |
outlink: https://plus.google.com/MSXML2.XMLHTTP X =JS_MISC | |
outlink: https://plus.google.com/Microsoft.XMLHTTP X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/images/b_8d5afc09.png E =EMBED_MISC | |
outlink: https://ssl.gstatic.com/gb/images/b8_3615d64d.png E =EMBED_MISC | |
outlink: https://fonts.gstatic.com/s/roboto/v15/W5F8_SL0XFawnjxHGsZjJA.ttf E =EMBED_MISC | |
outlink: https://fonts.gstatic.com/s/roboto/v15/bdHGHleUa-ndQCOrdpfxfw.ttf E =EMBED_MISC | |
outlink: https://fonts.gstatic.com/s/roboto/v15/dtpHsbgPEm2lVWciJZ0P-A.ttf E =EMBED_MISC | |
outlink: https://ssl.gstatic.com/images/branding/product/ico/google_plus_alldp.ico E link/@href | |
outlink: https://plus.google.com/+MatKelly E link/@href | |
outlink: https://lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg X meta | |
outlink: https://plus.google.com/+MatKelly X meta | |
outlink: android-app://com.google.android.apps.plus/https/plus.google.com/+MatKelly E link/@href | |
outlink: ios-app://447119634/gplus/plus.google.com/+MatKelly E link/@href | |
outlink: https://plus.google.com/_/scs/apps-static/_/ss/k=oz.home.-d9x04e2iyui8.L.X.O/am=HIjDITJAAQ/d=0/rs=AGLTcCPIVIi75ri_sn3E_zEC5qK0-HZ0fA E link/@href | |
outlink: https://plus.google.com/_/scs/apps-static/_/js/k=oz.home.en_US.S0zubYtyP20.O/m=b,prc/am=HIjDITJAAQ/rt=j/d=1/rs=AGLTcCNtoJhMLwJ4Zzadzg8ou0gbt7ELsA E script/@src | |
outlink: https://www.google.com/webhp?tab=Xw L a/@href | |
outlink: http://www.google.com/imghp?hl=en&tab=Xi L a/@href | |
outlink: https://maps.google.com/maps?hl=en&tab=Xl L a/@href | |
outlink: https://play.google.com/?hl=en&tab=X8 L a/@href | |
outlink: https://www.youtube.com/?tab=X1 L a/@href | |
outlink: https://news.google.com/nwshp?hl=en&tab=Xn L a/@href | |
outlink: https://mail.google.com/mail/?tab=Xm L a/@href | |
outlink: https://drive.google.com/?tab=Xo L a/@href | |
outlink: https://www.google.com/intl/en/options/ L a/@href | |
outlink: https://www.google.com/calendar?tab=Xc L a/@href | |
outlink: https://translate.google.com/?hl=en&tab=XT L a/@href | |
outlink: http://www.google.com/mobile/?hl=en&tab=XD L a/@href | |
outlink: https://books.google.com/bkshp?hl=en&tab=Xp L a/@href | |
outlink: https://wallet.google.com/manage/?tab=Xa L a/@href | |
outlink: http://www.google.com/shopping?hl=en&tab=Xf L a/@href | |
outlink: https://www.blogger.com/?tab=Xj L a/@href | |
outlink: https://www.google.com/finance?tab=Xe L a/@href | |
outlink: https://photos.google.com/?tab=Xq L a/@href | |
outlink: http://video.google.com/?hl=en&tab=Xv L a/@href | |
outlink: https://docs.google.com/document/?usp=docs_alc L a/@href | |
outlink: https://accounts.google.com/ServiceLogin?service=oz&passive=1209600&continue=https://plus.google.com/%2BMatKelly?gpsrc%3Dgplp0 L a/@href | |
outlink: http://www.google.com/preferences?hl=en L a/@href | |
outlink: https://www.google.com/support/profiles/?p=help_center&hl=en-US L a/@href | |
outlink: http://www.google.com/intl/en-US/+/learnmore/forum/ L a/@href | |
outlink: http://www.google.com/history/optout?hl=en L a/@href | |
outlink: https://plus.google.com/stream L a/@href | |
outlink: https://plus.google.com/me L a/@href | |
outlink: https://plus.google.com/people L a/@href | |
outlink: https://plus.google.com/collections L a/@href | |
outlink: https://plus.google.com/communities L a/@href | |
outlink: https://plus.google.com/events L a/@href | |
outlink: https://plus.google.com/hangouts?n=1 L a/@href | |
outlink: https://plus.google.com/dashboard?ppsrc=gpnv0 L a/@href | |
outlink: https://plus.google.com/settings/plus L a/@href | |
outlink: https://www.google.com/intl/en-US/+/policy/ L a/@href | |
outlink: https://www.google.com/intl/en-US/+/policy/content.html L a/@href | |
outlink: https://www.google.com/intl/en-US/help/terms_maps.html L a/@href | |
outlink: https://lh3.googleusercontent.com/c5dqxl-2uHZ82ah9p7yxrVF1ZssrJNSV_15Nu0TUZwzCWqmtoLxCUJgEzLGtxsrJ6-v6R6rKU_-FYm881TTiMCJ_=s1600 E img/@src | |
outlink: https://lh3.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/s120-c/photo.jpg E img/@src | |
outlink: https://plus.google.com/103717513886594190386 L a/@href | |
outlink: https://lh3.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/s46-c-k-no/photo.jpg E img/@src | |
outlink: https://plus.google.com/+MatKelly/posts/d1vuVrSENHE L a/@href | |
outlink: https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3=w426-h240-n E img/@src | |
outlink: https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3=w426-h240-n X meta | |
outlink: https://www.youtube.com/watch?v=DoSiPDujIiM&feature=autoshare L a/@href | |
outlink: https://s2.googleusercontent.com/s2/favicons?alt=p&domain=www.youtube.com E img/@src | |
outlink: http://www.youtube.com/channel/UCYxIqzBJEuisbUZ6LCYW1mA L a/@href | |
outlink: https://s2.googleusercontent.com/s2/favicons?domain=ws-dl.blogspot.com&alt=p E img/@src | |
outlink: http://ws-dl.blogspot.com/ L a/@href | |
outlink: https://apis.google.com/ X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/js/abc/glm_e7bb39a7e1a24581ff4f8d199678b1b9.js X =JS_MISC | |
outlink: https://www.google.com/gen_204?atyp=i&zx= X =JS_MISC | |
outlink: https://www.gstatic.com/ X =JS_MISC | |
outlink: https://plus.google.com/?host=www.gstatic.com&bust=og.og.en_US.QpL8zKkSA3k.DU X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/js/sem_1c1ffc36f0f54fda9275080308d2dba7.js X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/js/abc/gci_91f30755d6a6b787dcc2a4062e6e9824.js X =JS_MISC | |
outlink: https://plus.google.com/gci_91f30755d6a6b787dcc2a4062e6e9824.js X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/js/abc/pwm_45f73e4df07a0e388b0fa1f3d30e7280.js X =JS_MISC | |
outlink: https://plusone.google.com/u/0 X =JS_MISC | |
outlink: https://plus.google.com/pw.clk X =JS_MISC | |
outlink: https://plus.google.com/pw.hvr X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/images/silhouette_24.png X =JS_MISC | |
outlink: https://ssl.gstatic.com/gb/images/silhouette_96.png X =JS_MISC | |
outlink: https://plus.google.com/cfg.init X =JS_MISC | |
outlink: http://social.google.com/ X =JS_MISC | |
outlink: https://lh6.googleusercontent.com/-iNDr29fIsWM/AAAAAAAAAAI/AAAAAAAAMR0/b0M788l81Wk/photo.jpg X =JS_MISC | |
outlink: https://plus.google.com/103717513886594190386 X =JS_MISC | |
outlink: https://plus.google.com/4/jcsnatvshdla4tnqiduqkv35h5t30h33h0srew3pjdoqwy3ughxbavnna1pk/ X =JS_MISC | |
outlink: https://www.youtube.com/watch?v=DoSiPDujIiM&feature=autoshare X =JS_MISC | |
outlink: http://i.ytimg.com/vi/DoSiPDujIiM/hqdefault.jpg X =JS_MISC | |
outlink: https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3=w506-h284-n X =JS_MISC | |
outlink: https://lh3.googleusercontent.com/proxy/BO3jIgfyRIODqU-4TzCs4dCd0oyks1pRvZvXEKtL8C8EFLDpNUmspvXCnzqO-8E-nSvLfOv7PGK04fArFfQ3=w800-h800 X =JS_MISC | |
outlink: https://www.youtube.com/v/DoSiPDujIiM?version=3&autohide=1&autoplay=1&feature=autoshare-u X =JS_MISC | |
outlink: https://plus.google.com/+MatKelly/posts/d1vuVrSENHE X =JS_MISC | |
outlink: https://plus.google.com/+MatKelly X =JS_MISC | |
outlink: https://maps-api-ssl.google.com/maps/api/staticmap?size=375x175&sensor=false&language=en&client=google-profiles&signature=fNZUcgnPo-kwulgpmUhuA1MK6sE%3D X =JS_MISC | |
outlink: http://ws-dl.blogspot.com/ X =JS_MISC | |
outlink: https://s2.googleusercontent.com/s2/favicons?domain=ws-dl.blogspot.com&alt=p X =JS_MISC | |
outlink: http://www.youtube.com/channel/UCYxIqzBJEuisbUZ6LCYW1mA X =JS_MISC | |
outlink: https://s2.googleusercontent.com/s2/favicons?alt=p&domain=www.youtube.com X =JS_MISC | |
outlink: https://maps-api-ssl.google.com/maps/api/staticmap?size=320x175&sensor=false&language=en&client=google-profiles&signature=6g52SawoDCxI9y9wUdgvjpCc9kM%3D X =JS_MISC | |
outlink: https://maps-api-ssl.google.com/maps/api/staticmap?size=400x175&sensor=false&language=en&client=google-profiles&signature=yiZlEaoMtlr_Rq4pItNdASlV8xM%3D X =JS_MISC | |
outlink: https://maps-api-ssl.google.com/maps/api/staticmap?size=480x175&sensor=false&language=en&client=google-profiles&signature=XFx9UcLT04n6gPg4XIBeel7N_P4%3D X =JS_MISC | |
outlink: https://lh3.googleusercontent.com/c5dqxl-2uHZ82ah9p7yxrVF1ZssrJNSV_15Nu0TUZwzCWqmtoLxCUJgEzLGtxsrJ6-v6R6rKU_-FYm881TTiMCJ_=s1600 X =JS_MISC | |
outlink: https://lh3.googleusercontent.com/c5dqxl-2uHZ82ah9p7yxrVF1ZssrJNSV_15Nu0TUZwzCWqmtoLxCUJgEzLGtxsrJ6-v6R6rKU_-FYm881TTiMCJ_=s1600-fSoften=1,60,0 X =JS_MISC | |
outlink: https://profiles.google.com/ X =JS_MISC | |
outlink: https://plus.google.com/c/ X =JS_MISC | |
outlink: http://docs.google.com/picker X =JS_MISC | |
outlink: https://plus.google.com/pages/settings/plus X =JS_MISC | |
outlink: https://plus.google.com/pages/settings/admin X =JS_MISC | |
outlink: https://plus.google.com/notifications/all X =JS_MISC | |
outlink: https://www.youtube.com/embed/l0qfHq_Qva8?wmode=opaque X =JS_MISC | |
outlink: https://www.youtube.com/embed/GUywKEtXX2c X =JS_MISC | |
outlink: https://ssl.gstatic.com/s2/oz/images/hangouts/hangouts_onair_promo_live-dffa4529a32c693283924cd12ffbc4e4.png X =JS_MISC | |
outlink: https://ssl.gstatic.com/s2/oz/images/hangouts/hangouts_onair_promo_recorded-7453f2c3b2160c984e5cd7c017effd49.png X =JS_MISC | |
outlink: https://www.google.com/ X =JS_MISC | |
outlink: https://www.google.com/maps?layer=c&ie=UTF8&source=embed&output=svembed X =JS_MISC | |
outlink: https://photos.google.com/ X =JS_MISC | |
outlink: https://ssl.gstatic.com/s2/oz/images/notifications/jingles_eb4e5306b38f83915d82034fa93390d9/ X =JS_MISC | |
outlink: https://www.youtube.com/watch?v= X =JS_MISC | |
outlink: https://www.youtube.com/embed/bo390-3ohW4 X =JS_MISC | |
outlink: https://www.youtube.com/embed/ylZg43Meick X =JS_MISC | |
outlink: https://www.youtube.com/embed/8aCYZ3gXfy8 X =JS_MISC | |
outlink: http://google.com/+ X =JS_MISC | |
outlink: http://youtube.com/c X =JS_MISC | |
outlink: https://support.google.com/plus/?p=plus_embeds X =JS_MISC | |
outlink: https://ssl.gstatic.com/images/branding/google_plus/1x/gplus_word_108x30dp.png X =JS_MISC | |
outlink: https://accounts.google.com/ServiceLogin?service=oz&hl=en-US&continue=https://plus.google.com/%2BMatKelly?gpsrc%3Dgplp0 X =JS_MISC | |
outlink: https://csi.gstatic.com/csi X =JS_MISC | |
outlink: https://hangouts.google.com/ X =JS_MISC | |
outlink: https://plus.google.com/complete/search X =JS_MISC | |
outlink: http://plus.url.google.com/ X =JS_MISC | |
outlink: https://hangouts.google.com/hangouts/_/ X =JS_MISC | |
outlink: https://accounts.google.com/TOS?hl=en-US X =JS_MISC | |
outlink: https://hangouts.google.com/hangouts/_/extras/ X =JS_MISC | |
outlink: https://hangouts.google.com/hangouts/_/stream/ X =JS_MISC | |
outlink: http://picasaweb.google.com/ X =JS_MISC | |
outlink: https://www.google.com/contacts X =JS_MISC | |
outlink: http://www.google.com/intl/en-US/+/learnmore/forum/ X =JS_MISC | |
outlink: https://www.google.com/intl/en-US/+/policy/content.html X =JS_MISC | |
outlink: https://www.google.com/intl/en-US/+/policy/ X =JS_MISC | |
outlink: https://www.google.com/intl/en-US/help/terms_maps.html X =JS_MISC | |
outlink: https://accounts.google.com/SignUp?service=oz&hl=en-US&continue=https://plus.google.com/%2BMatKelly X =JS_MISC | |
outlink: https://plus.google.com/?wwc=1 X =JS_MISC | |
outlink: https://plus.google.com/all X =JS_MISC | |
outlink: https://talkgadget.google.com/talkgadget/mediaplayer X =JS_MISC | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/mofro.png | |
WARC-Date: 2016-08-15T21:19:51Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Payload-Digest: sha1:BS6G6CFUVUI7F4OGD6BKXDJCJLIPSLPO | |
WARC-Record-ID: <urn:uuid:e085f761-e971-4927-8ccb-9d521c7f9b5f> | |
Content-Type: application/http; msgtype=response | |
Content-Length: 56384 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Mon, 15 Aug 2016 21:19:51 GMT | |
Content-Type: image/png | |
Content-Length: 56150 | |
Connection: close | |
Last-Modified: Tue, 12 May 2015 13:09:44 GMT | |
ETag: "db56-515e235441609" | |
Accept-Ranges: bytes | |
�PNG | |
\00\00\00 | |
IHDR\00\00\00�\00\00\00�\00\00\00":9�\00\00\00tEXtSoftware\00Adobe ImageReadyq�e<\00\00��IDATx�|�i�d�q%��o�-�������p��h��:��:�6��p8C-#R�P�[co�k�%���Ͻf����f(deF���5�k�lUf�k��?���E���M���T�ɇ��$6�.���?���`�O眑��'�.qV~��*����O��M|U���#����������X?���(�O?�b�{�dE��.ɒ,��<I��i��i��{Y��y����"/�2/r�_Q�</��I�����&���7(�{�?~�}�u�0�]�4�kN���p4C8���o��O����������'����qq��V���������/�����_��^ހ�k��U«� o ������/ | |
^�˷���0�?�/�yG�ˇ����i�=�/f;qj�c�����9�l��� | |
-��t5�?�~K�͍V(O2�b|w��eOm�v�x'���h����o�K�/>�Z��&�,/��̴Oy�����7�+'ߴv��"�_� ?��Ia� �9���}$�f��az�,�w+�M~/�@�vyE��<����!6+�����F&�e�rj��q�r|����f�.`v"!��qg7z�6тm0�� �#���K�� ��/N�i�hs��j�����=�&z4�����|��)���ځ��e�_�lk�M�h�6g'�1^\00����:���}�O��f�ɜ��\V�e<8�<<��9Z/�$Yf�~<�M{���s8<�x xH�f��p����<�������!��Ѫ�D��08�˜�S2����l���qy�M�����U;]ɥmM�1R-lN�_/��o��<��,�/�/Lj�����-Ϋ�<��>eTf�;~8��ӓd��fC�;����sסQ��eZ�E�����.������uq���&I�8��VG�����1��w�h��f��O�#�{��)���T��ԇ����a������wo�ww�Hs���X��>�������ͳ�f�Y�4M�������z��E��]�"0�����W^B��{�g|�Ʃ �|bG��}JT�[@�}����y�`�1fy?Z-23 4�`�da��a�C�)fz*TF | |
�n?<鴖�J�9Z�����$˷k�kt���2��ގ6�=c����젧����tIb� #��p�� :�OB�OL����V�ʺ���ן1�(������������x���k��������� | |
-�<��,M}u�˃ �u�o[ � �ns}����~��g����iQ^=�ڳ.����c�$&�>O�A?��T��+9��x[VO,���+8K�����wL�yta���{ | |
�O�5����G�6���g�y�'{]��f��Ym*D@Q��ww | |
�&s\"������E����]:3s��GN�~*�!2K\�� �Q���0"@���<�o����:�������?����~���/~�����h~ ��w|���H�W��� e:#ÿ��0X��:8?����t����h]!<~�(��<����Ym�� �M<�6��k�k�f�;] | |
Sh� 5~1�!�y'�/�8�L���<a | |
5"�~k����;{��wlg����xo2���a�?$%�Q.ψ3��n�9����fm��-2+���sh9^S��T�./!�:�_��Jll�Z�zUQV�u���X�J䏫 | |
���(����n8��?��?�7��?��w���[e.O+�M��^�����%��{�#���WkS\���z� | |
���c������{���ً��q}u�ɫO�U;v��%H_L���#�eV�C�ox1��1$��cG�}R�Wa�[�^�����%��� 3)x�L���48��z��ﶝ~��ҹ�]���%g�O�=!�`�=��v��跜"�vd�D��5�4�1�I��U�ޮ�+���Hn��6��v�^�*����U%p?Y��6�r|��������������}&o��YI|�ھ���F"��)4��m��ur�4���W��ɗNm�DŽ��������.�*����Ͽ���/op�$�Ʒ%��{}�c�P���5]�b �~�Z1(NE�x���Dڴ�s��9�:�H�S;��9]�e�d*���5��H6y�3c|dG�Q4`bz��ךe�#�I+\00&�1foގu�h��h��ۂ�[�~��O__������`bUU�`JE�!��}r�P�4m��LJ�o���?�ӿ�ۿ�����p��`k�vR� L͜"��YCv���`rM$ ;3�!��^�|N`��7& | |
r)�}axh�n��_^]?���78o>���xqٱ槁��\00��A�Rx��1�����jj�B3�1v���_���~+\$�6/�bn�4Q[X���'\00�F+g'c�8.�bp>����C����F�)�� | |
��pC�$�q��MOM.&=xx��}������]?�nJ���!�:}Q���5���������O���?�ɏ�)KͦD<�,�� �����*�D�i�����42R��eLG�Xo�/$��T | |
�}<�ft+ZY6 | |
��>���������|�����ӕO�O�UB���&G���\j6�g� �tr�\,��ۦe{w^���2rl�ED�k��cE"DȲ|�A��C�7��섴BXf� | |
�ǐ��p���1�6�p�_�Xyœ�f*�,p@ | |
p��̒����� | |
�s4qN���~h��~<Mb�����w��?�{�7?��?u��j[e��S�q7X����`����9���&} | |
R��;=*�g/�y�����G%`�mk��dc���`5/��������?�7��ͳ����Z��$�2�������z�^ 7��Ҧ�9)V��0���\�Z�"�F6��Ԯ | |
�hԩ��2l�A7z&���M���~~�ک��������0�'\�u#���W�����XRrI��Iط!�푂�{��o�=4�b�Ou}8����������/~Z9�dU��n�Z�4�Ъ�=/�[D[�j���az�� �4y�K*7�x���d�T�/�}�Ʈ�]��* | |
����>M"�ܬV+�w}���������˗���I�[����/�VG�I�QB쬍�S5)o"��&�9�,M�_3��9���dtQn���N��NU{q���"�ɲ�����i�ə�c�~�v����}Nge�`�u8-@�in���i�K�f����{�����~���c�'t?C�[��[��������Rb���1>Vi����X����D���sg5#S�5\00�pJV�aT�:� | |
��>���L�7_����᰻���5��m���\ | |
?A|v=�!��0�3�_0b;�f�TY�^���\F�Ĩ�6���-�B�X9�7K��M����I��l.�]B��\00����b�⬗�5g��a���F�c����=�����ft8��������vU���H�?�����ۿ~�����_}�'^���,Ϗ���p�9�m���Y7x="�U05�hnP/(~X�>L | |
�*"Hc�-�n�0蕴6,A�6�*��*x[�m��RY��1MM���)����`��F�����G�G�s�f���X1G*;&}�Q�mZ3"$����Gb��M�5�e5k����2,C�]`s��"��8����z�V�g�Ǝ��q���E�d�Prp���|&�֢W�Ί�l���^���\00�6�S�*��������O�}x�۞����궁i�z��}S7.��:I�4��S�?��`^Zt�0�֦akQd����7�R;� �E\���"z�i�4�D�4�<Ŷ�,��^®?�B��.�r02�,�|mӳ_Q/�B�]l�k虲8;C�e�g��:s��������s��.|>|��t�x@X���U]l��E�G�%<<�&�����<s�r�x����*W|����t���������������D�D|$w&��`Fo�O�#�'#N�g j��i�NEN��Ѷ���B�%����Vᩛ>E���������G^�ڎl=��X��I�R���k��!�M״ê�l�}nIceJ��X����&IS��9-���|X��[#���M�+}D1����o�u���Y����$�1�4��+Uv | |
�»��[���O��B�hb���2U���B>aZ���P�o��?�ſ{��_e���k�)�MOM | |
���oaU0�"c4�Ph�)db�+��%��������K9if���]� �J�[�<��a}��q:�~R�Lд�G�2;g'����P�]����xu�Tߵ����l�(+|X#!7F���fͲ�7�+k.z�t�&���� �<.���61ǖ�z��K�4���8s��v�x5�ȰдD�A05�b�1�����%M��0{�XPv�4|FRl��i��ͯ~����������o6� ��n�۬�׃ | |
}��-nn�Z�[U+��,k�N�J� �";<S,�z��~��(AO/�0��< Rt�� �&7���l�mdM`�i��e6�Xl]l��ւ@iv��P�?M�Hc�� 6-�v���E�9�g�͌7e�)���Y���s���Գ���T^�Q�Y(� | |
T�Lx�ڰpg\����d��%���|�{/]��4ƙ��ski��,�~�:g��8n��~�˿����w����UZVe�� u/��o��Çp��� �?��d�1Q�)�.�A���>z����\00�h�j+�a��R��t��*@l*O� | |
��Ke�%�#'���K���ڈk-A�ںv��&��6��e�rXgj"�X2uq<���,!˵��F�9w�^��B�ɛ#a2®tY�����X�@�gܔ�����h�~��O���´a��8@aN�By�0F����Zt�����~���ٿ�W_��{ijϾMYVpZx��~�� 3B�p��>\�V�vm���*C��e�Í�M�����!,���W�bk��f���.�~]�)�E | |
L�S*���\00� | |
��,�Ò3B�@>e�3�+�a���)N��iS<g�J�,˼�����5K��^��I�4��[�d[P��Y�O�F������� h.h��q�v�[f�0���#Z��º�jm��ܦR���%_'a�f���P�{E|�j����_����'?��?�O�����4�O� � ���u\00FJ���/�m.���gn/�S��S�f!� ��mK���P�G�V�?������٣�v���c�Ƒє�#�w��$0tV��)$]��.\�C �T|����m۰��p8ვU5�����L�Ĝ�L,\�Y.3*��4\Tȧܢ`������*RS���~J��,ڙc�q&'�%S�b�#�ѭ� COf�L����y��5�͟�����_}�qqE��'��`Ut �ҧ���T)�l,&�#��0t齖�7ɐ2c�,@B;½նf�sNH]��O�8m�a⛒B�z��t��c�쳫��o�V�\�=,,p��>I��L��jOEYЈ}��D��Z�P�Dž�'�b�1�Q��ɏ}�'s��I�]�u����}�i2���8C�@Dg\��I-iJ</bs��,z�����φm����M�h�R�ќM�k�.9�T����������p�۲Dbp� ���J�çTU�����Tnp9�����pw��\00����dVX�����D�L�B����������J%�a��e�*Ŋ.�f�����[��M�*89�1&)~���CLf�����2���]?h�s��r��k0�a��i�Y�=~/�>�mo)D���qt;FMkg���rF�����豒Κ-��6�+Z�hOg`ɚ���9n.�^�yM��>U��*���:ef�?�8�tL�s�|��8<ܯJ�Ai��n\���\7�UU���~_���x'�?�+K���Rd�ѥ"0��;,���MU����� | |
x�g���HaN�0){��� | |
6�[�p7}�R�!Tb���"�e���Jq��\00ѥ�L8�R�*\{� ��XƳ�j �+��O�J�l?8)��%�x*�2����|�<�BpviYܚ)�(�r����H7K,-�</M��Q/�B���9�W7��X����,h����gg3_Ԥ����;�����8o���'F�_�n���w?��뱶.9uC{<���}�rctZ��H�\G���G ��L�C۱rA���ɖH���O�ެa$H-OM��1�ޯY��慄�.�s�=�/c���y2���"K- | |
�%74�$^$k�C0-����Fʥ�Ѵ�+���k/�V��͟d��bB����6��Ȏ� | |
�'�(��& #V��尌]����r2̚���H5�B�z���s*K$Ϲ�(���$�$'�s�����G���*�g��N���vӗT�ȺYyv�"3S�����H�߬*2H�n���� | |
_��A�1�I�Kke���9�M������;<qӶ���w4߭W��!�O�R�.���9�}8�u���h�<�,�� ��m�c��_d�L�J��p<�"A�x��)�hi�!߁>u�\00�x���u�ö8�!�@�#~�H�^J �0��1Sm | |
V���ɢv�z��^<V̑���=f*簔%�b�xiJYY6H�96é | |
�X�:K֜=�1Ey+t,���[�P̌�,�ɕ����p�<.��ޟEOkGN�zTfX�F��nd�Ɠ�m����v���q��T���e'i$�]CP�&�������-����50 | |
xA�k��ːLn;)���RdaEV��#pI��-u�%��4�u��v�g��ѨaX��/�wڞT|��o'�������C� | |
^ �`Z��0� | |
V0 | |
��'�\p��4M�R���J7���fp��L���-L�'&#¢��ɊLAqhGݾ�*�cy�L�s@|�XOMK<9�a�4��s�u�5�1uMGJ��nb��Y77R | |
�2Y��Sbv�9$cNb�H��AqY�6[��k?��=5�'���t䑊W(xpm�6^�.��m�2r���x��uY� ֈ�����*ix���WL8u�W�> �m�f��nW@�� | |
#3B�lBo곡������7�ۡu$P\00��Ɋ�7#�� ej����c�F&�d���д�C�x�7� | |
��r������ | |
�X�%��4��è���OJ�~���ľ���hP�z�I�4=o�S� Gu�ӣ����\q����c��A53&�i�ba�s[*�u�5��RJ�����E��#����N�˘� | |
��uB�4� P8Yf��7�c� | |
��4:\00�u��,�g�u�䆥ljg�\00�|2�������2u�_���up*Ysj�^��쐎�m^}��c��@�:`x�A3�x��i�u��]جV�?��$�����K�����e�υ7�wa����N��p:ԍSF8�(\00;�z`�K�,�*VyY eQ>.���D�;��>�[���ғ�XL�7q�kQćj�\00�*�W��W�c�|$ܰ,bE����K:��?�z��������Y | |
��'2� BF�l���Si�ʲ��t�q�Ou}<It�@��d;���%E7Ƕ� | |
`�AҔ1%�n�W��7rCd}��^O�d����M��������~ZeG�ip֯X��E�^��U�+�BEBK谔$e(�����T��i 9�z���ֈ��jU~����V r���9X\00\z�6X�y�NӐ��X3d� ��hy~֗r����ju:��$y�� 2��X����JY�g(;V��&�$F�.@�N�h�X7'.�'�� | |
�tT�XƢ���ra!&�K���T^���g8�^P�<H����V2��8x:5��g�0�9'�µ8�U᮴���Sk���"Y��T\00F�+�dU�v�j����v��� | |
a | |
Ƅl��c���G:8����_|�9���o�eU�!��b�n�K��ק$$�MF�r | |
�G�v��� ���3�)�O�Af7����O�EʘT.M��#�Oo~���j�.��*�w���؞����&��!>�v-y^��+3�pϤϱ��7�mB�B�Hb"O>����qq����,�olЉ`@�9^X�e1�<=�Z]>�L�?�v����Bu^.�xų��*�Y��o���nWO���=�˚� �X8-RbB��;��^��`\ȶ���=�j�٬F2kQU�W��.-|p�q@�H�No�*{�ɛg����ooo��)��^�%k�\00����0/E��,K��q�s�/�������P}���3w¢�{���3���^6��t���Xpz����v���ԫ������ò20n���႐���l�*��r:K��O�A��T(�볂�LvB��kt���oq�d�=}M���[�c��yZv.6�s�{Nd���Sfw!NrA><{Kge)~��]�U�px@4�?������`G����\00�N��1ϲu涹[��(jU�v��ju | |
�^��6Wx|�_�V�IH�����L���d�n�6��>��{ �7��ΰ1s�A�H+��*�Y��]߲�.���UPS��T�9�)s�\a*�s�O<]N�0��}����������`�G���nov�# �8�n����p\00.���0d�8�����!�;o۶�O��?ቈ1x¤r3��AЕ�jI^��c��[LaN[�O�fM�����G\�X��$��N�2�=�U/lklE#<)�kA� | |
W�"�n�|URL��L�rָ�m��m"g���jS\��g�ճM��t�f�]?{���g��<���u����֓�n��ۯ~��$�)� | |
�49G���@�Yϲ-@�`�&�y��������RCc��f>mTN>mQ�fx���=~s�+�H�3�3��"��ٮXq����b�'�q��OA�*drËxb��O��}F�?`��E' | |
(g���9S온>K8?1b�*�I����"=#N�qHa��X��R=�Q��k�,���< | |
�Bj���u�{Φ�B!�:�T��0`���o���#��hE��3 p���U%|���W7��S�g�o�Үi_��$�XG|�Ѥ��C���@��3�����7ϊbESvl^��H�_�P*��� | |
mW��Z�X | |
�"%d@�5B��+�V�lJ��9=�d:+�9^1llӶ���vcr�В�����.A���,l�m}� | |
��|���5M+�� �u<����a$���sù���T�T�d���^{y*�b̂�3�ɤϟ�b�C}���8n�:�,�e��V\00���T�Nu!1b�TU'���q0ˊ��?����K~��<�*�s�}����jS�ϟ�_��>}������W۫���5�6�߽,h/�V�n��]�ɮ�J���A��5N�csVY�~#QI\00��\00�ʂ*+�~��I*!��iXXB�3��Y�Y�U��CT��(����(�Ze���A���ʢwR�p��6�`ʢ����/tE���*,�PP�c�S�,��̏$Y����C$|����d�YXSn-�f+�T0{?u���X(��)���p�&�TXH-��\�[��=����m<��8����6�wn2�+Q�u�DhϹݪd����U��X�n�Wo>��W�_���]�vװ ��P�X"�%_k�#��%C���XS!>�l�?"���������:�������w�Т�S���P���FZ�@C��bzo�I�[%`�Bf{H��3{$� | |
9d����h/!�Z�]b�2-�b\00��A�(wC�f�$qڋ)�2��R��G��S��J>���B[jDG�4M��"`�K�S=��4�r$u�� �EOzW�#H�J��T9�9ک��}xR='�������������;��o��7�a9�R7��rd9}q��YWo�^>��7/^>�]_�U�%�*N5�R��<�8�$" | |
Ly_�4��2n�q���ѡ`A(����\00fN�q�RID�}:?�oNI���۔/�N��YU�фa���MD�8%!�]kVRO���r$�o���������u�����_oV�9!�)ʼd'Ԏ�-;���+��c���D�a�Q�Ȧ�ʹ�>���\��Gj�96Z�1[�&��uվq���A� eU.\00~I��5ۅ�T}��� ��T�uS�٭�yy�{���'/_\00��n���MW�0 �9w�C���(�#}1;��R�h�*5x�\��Tx�D�h�7�P5�U\QB��|*<��֩��p��5VU��T/P�O�WlQ3��$){����a^eP�C%T�$9�@�TAuf�n�P���3'EV�E�+ ��YR&,�g�����(�6UXK/n�D�9�dY�q�����V�X�YinY�Z|�/�5Fu��6�$���$� �X�l�,���siR�+�e�ps�ݕ����_<���o��W�-.%����)#��b0�W�������<�;+� | |
W����Z�e���C;��uT�(I��l<��0�������L | |
���5o |��ߑ��YE�}�A��*�_��KU��ӱ�,�b_�~#�#��ê[����hƶ�+���i[c\00q#�^ �(�:Ӫ�Ү�V7���x8Z��u��'�}���Z�T�m�)�R���v^G��\�u"e��� | |
���5��nq\q/�4����������$���\���e����'�^UU���z��U���'�,2��5S��|��6B"�_\���6BND��rv����a�5!ܣ���A�!�0��K�ivx/�3�E�F�����̏d|+=�f��M%���]��6 | |
$�r�����v�œrV��F�0_r��$��#SDI��p6J߄I�k9�Ǿ@?,nk0�^59�s�j�pE�©*y�8O8��i����� g��OM</���$�;%#������ՄINV��eQ��TU�|�}���70�����V�zS�����U�r�@O�8*��$8�W�:3�:�.��� Z��S�g%��� &� | |
S���^�<������qEZ��h�$���b� �¨��!?a1}��gQ�PJ������/��i*���T�$�-Ol | |
�cm�*%q%В�]�n�������K �/j�0�:q'_��n�*nfm-gǼΟ����s-��f&s��[���Ԁ������W ��/�����ȃ��B�����}�����j[�9�"Ҧ�ն\���4�c���L���+��i�x�0�!j�N\�:]� Ǜ5t | |
�ӧj#PL$2��%$PU�\007��3Խ��p��39$�jߒ�0�K�m�E�Y��p�H2JԐ$�A�� #�Co�ڊ�a����Zv�/�1v�p�g��q�b�be�k��L�1 | |
.t�_0���~������Y�w1H=�ŋ���90i�_j�?[��IRͥ���� X��\00�|f�Y!o��o}�����|���B2��Ȁ�8t ����,/��t�p�yL��$���@���@�{do��,�<�f,��AT$�@�6��$����>�"tz�۠�.��J�R���"�}�����[Z��S�R��Q���zВ��]'n��i���;�kT | |
O{t�M���y�pqY��H�0g#Ux���E!bn*&���%���U?��tO�\3�W`��^��H�y��� | |
2$��d���AK�^'3��$���y��j�k��o^?��?��'T�c}&�\00+��Ft���|%&q� | |
�*����F��vP�:� | |
�kU]ME�|��Fu\00)*�C�m#�L}ߒ㕰Ԯe�sb'�v�M�ѫ��|�e�a���N��^���a�ya��tS��t㉺�D��Xe�R� | |
e�#gj �y?�p | |
����b�|�@���i���/鹸���3;a��Yn摚�=p��M��o�.$\�4����;�9�L���~��o�~�|��\00X��#J,��J��tK�N� {ȋ��Δ�������q�h@F@.� | |
��8?-3� | |
��L*5I"zJZ��5�\��X�K�k���2��!A/#^.8)~��S�)'ۈ�*��!�z��bP�ܡ���xj���?�%�qSШ�&&���VӐ 7/�J�Y����5�7F��c��ǫ%� ����x�cy�y!��a�&�,�_���i`�5R}�)��~�YK�ǿ���矽b� | |
Q�H�I_wJ�X��]�nKo�RM`�G�K��m | |
���쪬G�R R!�˄8]!��F�*� �g`����t�m�N] B������Z@�'��� | |
��@�T*���PNM�H�x�za1�'Tہ�-�` k4K��h���'ZXw�CY���32�}F?����x�T[WF��IG4NYD�e�ݝ��0�����,7��Jj���.4��;?O�3��H��S�*4R����/+��<���"��Z�<�FV�f��aq>(�HB��x�C/.��3��qr�I | |
5X��=�X�s�E�mm��i���BQ���w�����h$Z�Y ]�IQ".�u�+ac��w,��@���9��3�U�fv���8=�tRQ� | |
>N�X=&\00v���L>��׳�aݤ"h�=�{8+-�)��<�D | |
�h�lAE �8}8��ٛ�����^T�/|ƴG.N=�$��$� �/M[�)�K�B��ُ����p����R�3FQ]��EY}���;Z��ϟ߬V�?MEM�Oj�R�1�]�WM)� �ׅO�eG�^H����с�������V��~`d�>i#Ɨ�N]�V��h�.麓$⎵u�;���}I�ІH��쌍�X���hy�o[�5\�V�������W*��A��e��0���(`���Խ��$�)�x#�g�_�Y�����y75��V�Gsd�i)6�l9�Œ�3�j��3�����i��f&H���)�TU8�۞pi��d�6���5�%B���>y�T�x���|\00�"G���\�dEɷU�G�����O\00�����J���95�Y���#a �DP�m�j��y�T�l����x�$�����3kZ�g�A�d��eHuC��̚����V���B�� | |
w�q��.֛{���7�lT�bU,��RbUX�މ�6��n�Q��O�1!=��v� >W2 | |
�꾱���"摠<��X�}����h�g��f�Cғ����x�-�fAY��5��M�E���yI<2�P������|A���b{�h����T�Х$��e�4�k���(u9]�8�Ɖm�D�o����4Օ�� \00�W��j�T͕�;#&��0�R�b{�g_��P;�R�J@� | |
�ty�{��#��)D��j���݄�O�S�l��m{��8������Ě�eLQX6j*O���F:i����^( | |
Mc���9�D��$�,���f�?'�5��~ò��a�;�h��S�_�+�w���=�\00REN6��z3W�A�L�ZQ���Nj���}+�kI�9r�!/Ǽ>���v0�Aw�Pv��|%0a$6L4# �Ү![����˷L�>��j7C*�f/Ea���� �^.��� | |
쐖e\00��cSh��6��U�7�pⲉ�.�1�h{�bO(�Kڂ[���"YP yof�Q�]i˪Z���h�꼏e�0�l���a�h0s�}��l�S$����e5g�yn77ÃJ�t�~(���(S =�����j���O���=ΝS����������L`d� L�dұa����OI�$+K�xJx���i�@��+$�����/�x���=�R�^Y/,[�e@y�߂�_C[[٦�_C\L��3ǔ���Af�٦��0H�w�O���UbY�X"��kYѓ�fU�A��S�+��/�+v^�$!��kn��K(�Q\O���C+�]~\�$R�;4�����,u�9�`!,�F�[̝���S�7y�q�+6vF9��/bq�(2,�꧞���@�R�0�[��q#\Uum���\00�TM$!(5��=+�R֍�M��Į�\��� | |
wv��}���&6ɘ� �oڋ�X�w�h0Q�S���{1�,_�l,_�� | |
mT,�f�H�HQ���i�\�dQ)�`kL^LZq��@��zL�ʢi�S�7mTl�WQ� �q���,�i8h�OXYI�<��F_N�P2����N������l`��W#_9�4[���(R��<�x7�9+��cs��e״yY��TQP�������Ñ]�W/��隮-ௐƛ�d�g��v��R#<��K��$:-��[*4��(R�H(U��n!��f6�҈���b��5���ǛC� �b�S��5��;�F�.��7}�Ҡ�=������sOH��'C�N�9�C | |
R*k�]J���+�C�p�= �� | |
"� | |
2ɪM-<���c�Z�=�+��)Ց��"�� NX���oh��O�ZWz��r��g�BS��-\g�=w/F��X̸��^��c͋��X������p�\MY�P�@2��ju\00�?���{sj��Do<�wG$��l����p{��D�ֱA�?��'i�����{b��W�Y�ز�l��:YQx!0�2�Z�]���2G�}R�V30�����D+���t-������`<���*� nշ | |
����p��ID�ж$�S҆����BĉHD���!R��An�x����9��-R�]�1��o�s>>�r{Fl:���˵�E���^敏M;�&\V3;S�� y2՞Ȩ�9Z#��3�Id�[ | |
���~�Ym���>m���H�}N(dpQ]�k3(+�ߐ,Az�8p | |
��@�=�-�Mhɦy�1�&�`���%P���z��8}���ժ���\00��� | |
H����ీ��TVZ���:&\00O��K��l��^�OpZ����Ę�x�.�4m�%v�bċH��?7pAO`�6�>h7J3��ž̸�GK=��ժ����}רiܸ���뜍�n��Es1���.�"u$�Hy���f~]�����\00Z�*���`�U�ɚ�6�Ze2���VzyZ �I��\�;�7��(@b� `ϩeJ.��t�/t�L��ø��x�\00��0���� | |
w�d��UvzeE�L����@��p��z� ��x���t�H`4-��^g`DHvO��S�D��0(i��Հ�^�@Q����&�t�Xf���.:��%/��Iē����GWF�T�W��L�b-���l���>ִ�y�46n)��*İ���~�dQ|[��(u}���q ^_9�~����F�#�AUU�~{�y��պZ�����!&\��&�ɬ]� | |
B/PBAT��A��W�9�ލc*�>D���V��)���T^��g�zGߖРe.�RXx��X�:)b3ʱ�{��(?���A��:�e:��N���UDN�{��k�t영���eJ�v�9�핅0����c��?��S�P�bc�j%k{Dݛ�e��D�#Z�!D���F1�i}sX����ۚ4�o��*�[R�ntx8��&k'�\00�\00�Te����(�K��<�2�I��q�}�Bjy?2%�=�K�B"LD���6+H�'7R��ֲ�>�ȧ:Y��<�Z� e���/y0nl��[$���~������`��%�Cs�`Q | |
�rۊtǠ�v�_�=q����Iji���"�� | |
1N�H�X�`g�'���1�e���5��$���a�\00]5 | |
j:���w*ܐ!D6�ڙ�䒋���'�WXE��c�QZ��Zv�J8���4���s>� �S;�t;�1�gYkf7�Y�kq]��Rf�<p�zw�������H2K<�/^�By~:�$�u&�� | |
���ӎ��N"�+ǿsV��Z��Sғ3�\00ʐ�گ�J�tÐ�s +��Gz���܀~� ����S[7����4�B��:d+t"h��8](�:z��U�AM���'�v!�c�t}\;ˇ~㖀s1����}��/�[�nh����ڙp�\00��Tಿ��Bl | |
T&�ʸ�f!�5��i��E*;��$շ䚎�07n������SZ7`�Y�{2g�Br��*w�$�MwY�+��k���1He��w'?�K�c���F9�$�,V��^C����8^� | |
]C� �����0���DI$��zŜ��n�㉻���_S���f� eUAq�p���i�1ʲ;�(�TC�� �YV``v���TF�M؝�<,2�oFW�U��d�P[��.�h�U5� ��O4�ldJ|��],�[���N�*�)��'�G�o��:�,���:�?�d���f�A&�t�ʽFC��Lw䑰 | |
�\mש��� #f����YR,B[[�'3�S���*TIV�����+������(��R��5t�23��E@�7��L�u��E�۱/\00���ea���M#��0�S�6��ޕ2U���i�����tZ��2p�(� �&1]<S | |
_ϱwk�)�����O��T�ŋ!W(�����\00�c�3G���Eۍ?qi�b���L����=`��̍K��4]43�Ϋ��i"apf.�ZYþ�&Mb�.�ٔ^8qSXc��$Ǻ~8d��k��b�FLJ.9X�3�Թ���5����~"7"d=qN0G�ꪴ���L�6�1H�P���Dx� U�<�O�.�:A���q�^h�pښ��lX��#8!��TFAZ74�>R���t�!���wm�|�^&�}�7?�j�w��� J!2����\00�y�Q©U{�bò-d���a�����|�Ǟr��Gk� | |
fTv����}X��k�<���"�v�3�cs@��?:ȮJ�D�t� | |
e(�����z��(�݄yM2t2���E�x�V'�utQA]\�[�XaJ9���0�z��\���ʬgA��M�I��?E+��S��k�S�w5~Y�y�N��5��2�h��A��,`�:�J��Z����a�w<���$�xZ�sIj�齙�a12J���`�}�a1cgp��� | |
�T��G | |
�ij�h��P�T*�<v*��9Q�x�śt"�7w�=���6�~�7,k.E/z\00QVZ��qK`PBm?xj��K>�x��$z7�?�'��?�a�s�d��.DQ | |
)��j$���%�e*l>i�s�@��ڠ��cLF*t:2��[��&U��X�r�Vg�@Ǽ���7�ZhR{�P��^�C��9rCBs/���W��C/�����#�CSK�a������(�H�o�C� | |
�I*}�!H7R�2�U��}$���߲�.ʣ�e�^�����Q�I'#1vO�p�~�r�Ř���Mů/�0w/w,�d�M�c�`CLzF��ܒ� �3�%�l���\�Ŋ��p�*������o��</�\00���E9(�27�NR�Xd7�"��+�L�2_c�=܋-�@̉�6���{z,/L��U~�e)Y�W��vV�SN�W�ĥ��p6��`D�5`=\�C���^�#-�S<F�[� | |
�u���Kk[I(��O�A���& ��de�@��\�"ãP�akRTG��fMü=gܣ��9��\��O�[��<�3zg�#]zI1��#�E}Udl=!h���7�ʎQ=Kz��LD����hs���o̩\00*z\00��������j�� ~.Y`DeY��x�C��t G���\{���buE�砻EAu\�J���&)�쾲�-�O�qN�S��0YH��92J�+��\��t�����t�_�����O�j3�����cs��G�S�>N|2��X�B�G��{��x�X���:6G/k���c/��xI��%�2�?�"��:��m�4�\00P��㊿ tjc �N�u�s.�m��֚<��u�v�8�u�ȣѯ��yT��A�����O��tF:��RE\00�};��S� | |
����Uq< �2�.g��LW�%�M�$�[��e��Z2KYn��|���"�b�\00Idq0�>�����G��P^x�h�gXY�ٲ���μ��)�U}<��;�K��c{@�?�������N]ӧ�Xh:R��:�Q/1{ĵC-k�DT�Q��ö$��MZi"e7�'�u�;����>{F:�@`N7��yy��Bdu��BZ;�{}M'����n����:8;M�,��O����kgqQ?r|4���\00�Qa�,$�^��d)�4 | |
I�7꒤U�x.���\�K�Q���� �/�,y� e���E�ŷV�=hQ�d��� �s�wO-�Ϋ�[���t77G�� ��:��,�������ç�����OM{�p:��r�q"��f�Ǻ�y�c-s�:�q���p��C��sq$5��1!P�IlUU��e�"�8{^e��\E�$�7N[���lʹ<�.u �+��b�E��ȣV+¼�<����g�&c�V�_Д'�%X�F1FQiL��H��*���#E�a�#�Lˠ�#��q4�#m����7]T�z'r" | |
�}{f/7�6̓�u��C�����0�'�-I���9�"�i | |
��4�c�?�x��.�k�-N<s�1�<?��\Y�ms�d�u�p��������M1�v8ul`�X�AqԒ��,2>���4{σ��$�ޫ',�(.�e | |
�u�2����M�r.]�U��6�ĩ���t���L9��+��#� | |
�H��R;�ML+5ժ�?%�3 | |
&����Aƀ{�{bI{�����T8ڱ�3*�|[2�8:R4b|���B���>�v���V�t�֧�Fʱ.W2Ld����\00�L�>N:�i38����e�&��:(�t��b/�8��tuSsP�Dd]������ͻ�q����x�p{�������c<~�P�je���E���[�����#q]�T�32%2/s<*�ŝ�� �I�*G�3!��U9�Z��z�G�ij�.fsg��]�DR�}� | |
��M���ܣ��JL���C,����Q]D7fe�qJf��O��(�;R�I'�fKҌOL�IF��ʅ���e�Tt'�U��5金��#����q�b�{IV��¸�'e\00�䶜�DDc����*7�V�.,���o%;gz�%��� ���P�4�&Y�" Cxk�����+�p�o?|�x{��{�\00���T�Rx�uS�EU-r��2�l�iZ�J8�ˁ��� | |
��!��(3;*��Ǜ\f��P�\n�f����z�&iN�,9�ɴ�hR�c�� | |
f!e<�[�RN!}�,�rE;*`�uu�cdè#Κ�V�Y�*��Ҋ�1Lr3�5���ޕ�̒z]��&;��g7J�sR~���`Y`�?�Ob{SñZ��H�E��n% *#c}Vj��E[6Z��!J���H��� | |
�MھR���6���i"z�C�\~��a��=���>�m,�<K��B�ي,�t)��X&9��5h8ҩ22=�[�dM_�v��xf��\006� 73�'ȧ;�Z�*�L�/zS��.��Q�;i�wJY�D��ì{��p��8��K�9�g�~�9直@̸}I����X�q!� | |
{K^�[-�U�R@pj���Q&�8����f�Y*Q����W���d���;!�������cs�� | |
L�$��W��mG�67��]_�� ��J%G�\00�f�p|84���RpĂ&T��x�N4T-��p:y�3Dp���6���dC: | |
\ E66U3يpE"��Ĥ��.�3g%��Y�Nӓ�m�0�řO���ԘM�UE�i��=��P�/p�@j�30��t�����E�4L����EκH;�� %�<��\�w���2�c9�,�T���\00ʼnlԿ]��\�\00p^T�Y�B�hP��Ȋ[����>6��[�#i�6n�NP�\00wsww��mΔ)��mW��v��"��2�ӂ���{4:�GnHI�����j�����KeD�bV'�Ebt\00غ�Z!�(XŽ+�'��ײ�rė4���q�w���nŶQ����P�����]���?e�z���u�g�B���嘒M�Z\00d�5�4�R#��0M�j�C8�qEJ\c1�͆5�`?VO^n�z?2o<��3�ȸg1x3�+�$\_H�N����xV{��Wl����>�~K��JĬ�C��o�I��>���D=�a��H��x7ԇFն��\{<2^�,��m��ۇ[�@�(��pw�ߕ�d�-�$���vE�zR\00}��b�Hl����i������bb����fOe�!��"�I!����VIi�K�:P�J��>���P�TK�$m��;��rۛq�p�U5{Ufk��c��?oIk⧣��FPx˴i�(���N_*�%v�SMӞ����i鮖.��J�t�.���#�ra�D�3����.´�5�9�e | |
��ˍ݂�D�/�"��}Tx3qӐ�M1D�m[�V��2�*e,�K����ө������=�"]H8��'��y�nO�#U�{]����z��n*>e��GX�02O+�e'�����`[媺�tm8=�� �Z��{xY�W�O%�?>#�6.�?�nO{�{#�j����g����$�ms\00C&7���R�9x��Y��t�tB��$e���t/<4]�%���8��tND���3�N�<CEܕ:�, 2]�L�����飚x�'H�O��L�;�J��v(�X�v�_��������j�Ah��N�Hʱ�DT�|�(�"yos<U��%c�$�<�ݳ.@�t����nYT�Շc{x��� | |
�|dWY ��%Dڃ�(S������Cǝ���(�PvpWk��������5����Ƚ%gz�����HV�\r{�HjW� | |
[@5���ҳ,���7��Ç�;���=Y��\00����!�GF���FN&��H��8���"�!���T��z�2e�5��j�t]��z��i^\aw�yK�2�U�(},�2 | |
�)o7YHg�X� �6�m:Fa�������>!�v�5�`�$V�I_몪t��4nP#U�wq��5����\00�i����5�]UD������ݱ>վ;���m�����6��n���I�%�\00n | |
�/�TX)!o�*�U�LYm��Oڶ��cn�wI^�,�ڋ�풰���zKzY��ko�zPy�qM���1�Hq�C�m70�?�����'?�W��i�\/^�l_��ۏ�:ϓU��X)�*+�q)�$���&P�t���~��n��6���k�9p�c\A� [!:��p | |
#>U�^o8�����8����A:�(�{�"OFn�D?7�7�q�M�*ԙ��B^B��B�vL*�V� | |
g��gtx�`;���q�^֘Ȓp�q)[ C!�� �CF�TM�s奴M�lj;Y�������w�����ۇá�c�U#�F�" r���p��O�5��T��cs�K�A#x�V��=�4�ط��Qr��2�RKI��ly���LJ/�@}Q�<i� | |
�9�<�,����!�>|���-����~��|�`��[�fWW���g��.��3���R.љ%e��M��8�>h9::�Rs�B�^=�-WX!ʛu�ݵu��G�q*Q�^�I��Ԫ\�i�Ɍ֝�K���Q��b~i���yY�`Ǚ�y��,����m����2�zCf����N��τ | |
�Jx��(�$�0�ii֊~�Lo&�B�Pw�w�?�}���������l���?1C�z�Ò�&q�+E�����U�D�I�wC��j����5l�\����/Ӭ�bnQ�v���[�7���On�/�~<>$Y��nL1UY�u���O^>�.���� x��y��m���>��m7�ʲ��C�Ti�+viuߙ���j&�\00ȁi�|��r��=B����|U�͡ K��-�,����Z�h���H�t9\\7��i��\00����:�u��d������j�}�K��)s�@�t��Q�g�#gf�`��/6FkV��\y�� J��W*�� | |
�|e��Ծ�]��w�x��`J�-I�������'?�Ż� | |
;V�(�}��zs���Y����#�9�^7������-�U�E�Oxvx'77��/^��lWu�l�Y�%)s��0�����e1�o�'w� | |
o>�;����j�*��秦��p�&��p-�p������MY88�Tj���v"M7 $�.Օ�� | |
�������v=>{g켙^��2�H�3��H�Gy�E������§h�&*0��.ֈ��DzD��[�ͼYlvlc�fI�V�q��N��-�����%q�,��rG����>㬕Ԣ�M�9D�gB7FRE��B.�]�����?���w� �ͶnE�X�4H��qGד ]:�2M��IK2Q�)�,;>�3��r��u7�?���(lIC�uyA�K�r�#`�*I��b�庺}8�l�wȑ��$���Ҍ��#���7��y�[!�`�[��߹Z�7q0��n��f��&2i�m�j�6�Y;-�T&�02����Ƶ{�Uٶ%ǿU�x�e�D��� ���đ��[�N+Ô���J�B` ~��Ț�30r����j4�18���˥��`Q͍���8@#������yb/Rf�4:泲���'��Ү�dk-p��#VO�䅲G������>��S{w�oe����?/r1���=���zC R���4��K>$PQu���8�$���Y���=2��j���,�'��т�Iq�^���p<Vܼ����#��vU����z}u����*���������t���'\��Hh���0p�� ��p_�,�{��2��FN��vD%��k���>�m�����Ԫ��bC�I | |
�ϫ��!9���u%�8�آ��,�������&�c�ʗ9�6#�/�1��I@�͏�]CԌۙ�+�Q����5mQ'^)|��xP�&-�g�����/�H�Sn�S�����~"3g��,�S�}F��Ssww��@z��9��W_��O�� ��[B7��IV | |
��� Ũ�L9Ӹ\�;]۠�9�Ue����D���^_o�z�1��pfϞ={���U�ƃ2�;:�N���2�8MoD�4�����-��(�����hYq�����|*��:+%x���#����2u�L����,Ҿ��x,<B!lK�N��Yd�ٮ����[��5�&��\00�04�p��!<"-wҍ�����.�r��]�Y�f.�k`):��-%d9a�v)*P��D��i\006�K������ �<-dd9�r��H�$冋$s�y��O��_�Z������ŷVe����\00���n_����͋���p���I������wuۄ�v�T���UV �y�VU \s`A�E�o�,c�1�'�3K�2/7U��n�\��3�%�� ��� | |
������n�e����T*�� | |
r�BZ�r@�V�] 8�ؗZ�0����H!�t�]H���Z | |
�uZ�ԇ)�&DZЫ��ȯq�'1N���L�q�*���=kڸ]L=G�Ŝ}B�f!�k"��]���SI"J��V�\��e�#�k�}��a�1R��,A*bb:�y&�%E5�BV �H��0\00�]o�˯)�gڲ,c������q���kĆ���W]o�����������,����m�7��,�cC��>���-� �f`^��/�<{��,]�up���S��h[�)��Ѵ��țF�<˙6�ފ:�pB�I��zY�!{Ŝ�#�S `8�� | |
T� | |
��s��V���\����a�)m��"��u�l�p}��sÒ�)+O��2�v��)�6�본Q���!fgR��'L�Z�� | |
ÇNK4��R�%mfi^a�Ž��{�Ö��Gm]7�:�XS ٭H�OK�B,�Z!ND���Z� | |
�3V�Hs��6���rl$,���*XHl�WR}&,��Tg�O������e�������ۿk��ׇ��w�o��GC6K��j�H(�j��١�+5m�г����U���������e�����e�s\00j+������X���������*�vB��=��4���HTE�9�k��]*� | |
$�I�����MZ�.`ɥ�Sac�%T���h��%S��դ��J�*v��J��4= 4K�D��*wԾ`��%CY�9f�a�=).����`��rPc�.�Tk�$��2�Je | |
��E"! | |
�ŌG��teG(�W��ۆ˿p�� | |
@\t|&��(�:D�Pi�R�����5�z��L�����j�\00X��퇶�^�;�������g?�g*R�G����L?TY�*˾{�&��ls�|��ճ��N��|^Ux1�8APK9�L��b�P�9���4�?r��2�\00�֪�Pr��)�ɝHuwmnK]P��@y,�&KY�l��!�@�I��^d����NOI�gx;�ٚ$C�� | |
+$���Q�!�N�����XD���!�A����Q�5(sZ�����^GQ �I�Zºnj峔��싩f���ޛ�^̼s�hչEY+L�ݒi�e�q����=��n\00&\�"�=��$^v�E���+h�A49�%lE�f�Y8�@�u�'������g�Ͽ�x���������7�j����?����Y)��H����շ^�\!%|x����W����چ�AUU���یTe��p��R�a٤o�n�x���"{h8ó[�z�/���sE�껦`���Z�7�beބ[ͭ���pk��O,nnٽ�T�l��2�}-7��XБ�a�OsҜHL)��� | |
̝ːR ��*I�r�Q�B��_��1��<���[c�I)QY���D�s����t�K<�MӑܷT�Z���'Ռ�O��k��pg�.T��y�DF4�f%�~\00D^�J��he<&\3ٜNF�6��p{��U�l�u�����_����>~���W�����mS��$[�VMs�#rM�g/^�%�6d��� O��0:`���n����xS�y���$�5����3�Q>-��r$�V��w��C�1Gj���%��������2�r��zZ�|�ؤ�B��Z F2T7��!�a�H8�éI��E�\00���E�Gk^��=��P�����C����˲��gq�i��b3@�k:%��k��8I;R�8�9�n�_��љۉ�e�2p�^ҥ�~���� | |
R;���sc�:++�d�����.@#����d�6n�zw}:�E�/���j�I�:o�٧v���Q�k\00�����W?;���`�§1��{���}�拒���������2��) | |
˸�)�ׁ��2���a��@,L�G놣j��!�OYl����_o�$K����{�kU�[w��Yzf0\008#��@#h���/� z��#�&�$�`2��I�"�Y{�KU�{��|�x,��Tw��S7+++���ª��r�`�z� �纀]��ʛ��7\00[@��8M�b�\(���z�*w�F �.���9�m<�~)=�Ι����*��-�������G̴�Ƴl�Ρ �ۊ����!���Ƞ 0s0�2P��d>`�I��8'w;;�KV3�V�5��{i�E�LN>Fޞ8$=7qȣf��s�?(�Q*��gGnj����=%V�5��/���"_e*��DExg��n�C����q�x���η��b���6[*��e��,��<���Z4�צ!(e�ݨJ���6a�t� У��ހ�0�ʩS�Q*H��z�{��ʺ��|�Z��&\00�� 5����n45�<�?�+��8��*����b��&���\00�����umӔz��AU&;g���0:�$x߂��NxV�\�)���p��8���W����a=�+?��]Z��Lj�i7c�Η��a"�4"fR���O�nȳ"����Pm�.���'*����]�������"������˻��j��M[R"��6��AG;�ͩ`+O��)��nw>��������7/�ߤ��bIo�P�H�Cw�Ҹ|{X�I{a� �f�10@YE���X��\00���^.�!�&0u`���Yn"\00Ёi��$+P2�ְ��D�bHTk��)�c�/�B\00ma�ڳ����d�+��b����!'�;��S�[����B��9�2���^�����z | |
��Lq��C�5���k�g�Rq�O�7��'Rs���~2�K_����j �����F��5�2PG���H_ | |
S��Z��y�'^x��錥qd��BD*����U���߮��v�g�E%q��,�&.Q,?��������xOMR�ܾ���_R�͗��F.�8�U)�D�a�L�����@�QA��AԸ0 | |
�<�����I���bQ�R�')81C�`�v�)�9m{��8�ЃG����STS�dP����sb�+���d����f��!/�a�0`J���q;ȷ�u���`�$7�b | |
* n�Ҙ�2���t�� ���S��6���cE�{���voZ-�I]:��2�Sz��<x����<c�m4X�咮��x��u^�!;~R�C����|��k�<ʪ�p.ڲJ@�몭�������/�<�2�~�HJ{��ܽ?�Ne�sy��SUԠ�cȱ�ܾ�߾zgK�%lC��ݦr�\00FI�����)7��|�<�1�üء��Z�(}�JzlX��Kڢ�j���T�� | |
5wG]2�Ơ��j0̍�� | |
���i��"�^�����2Ӧ�7(�N�oJ��&���C��{P��ob�a� | |
%*��g | |
��Q���,`-��@tM���.5�h�Qlm��ԑF���6���h<���/���σRx���M�PUE��g�T*��u�q�I��)0������y���|��~8=��|��2^�������t�K�쫊J����B�Q�L�<ۼ����r}ˮ�6ΩM��˓"��˰��đe/�[���Iࡷ��V��U�V�)��cOӂ���MS���9��k�h��X����0�I�\4>�`4,Q��+̀�I���� | |
0-=OȰ��q5�i�+����r��a��p���`�ڲ�ۊ�Az�_i� | |
�F+jf0���H|�#��L� �5��%�Ze��^�':�5�}�u(kHԣ����|��j�W�_��:M� �+�8[�+��\00���ӹ(�(rit�J8��D�����96�P������6��D�à�m]�ufT��8Y�ۛ���j�/7)ua�K(��)e?\00�Ɋ5�C��κ����!$�֊�zۦ=�A | |
չ�*^(V����Fm* | |
�L.bf�@����: Q�8�?�@1\00X��wt6��ױ�4��X��n5f��I���E��4Ԑ2 �E��]�6oX��;�A���^5��&|P���LuE8�I�N�D��t�r��P2 | |
��r�f��~��<�e�����C�2����-��v�^Y�_��;����C��t��T��p8�xd�>�`�����e�am��8���5K3:wKMz�벪���[:�T>w��\TT��m�D�Ȩ>_���$I�X��T�Ď��Z��c�T���ewr"%����}U'-�=�iV��\,d��Q�T*�Q��R������k�M",�s1��Q�(�����m�0`\,�H5|#�E �vl��0� �? | |
�N�6\�S��7��{�S�����`��'B�B��"��|h7($;o)6�4��g|kou���D"��ن-�܀�H�$�Jh{��.(�D\00>Tf,�dw>AP��à;���ɶ�I-�k�.��x�5t�d�%�����ٶ?|������]�X��{�s�|�sI����k�!!9�ǝ�b̴�j3c��p0�`����C�XHc���\00KI۬o�C@��B+��q낚~��α�F�(�����̆�.W�3�U/�J��{/����S�W*��,N@�&U�eP\00Րz�����?�Q`y�3��G�5]ԍ�"6���:}^ | |
�y�@����]�!F� r3�īk�A��Xo�gf� =M���?G���v���w�OO��qԷiն1E�.��0�tw٬Q)�|ӳ1��}�(�\08-tl��Z�X�eܼ���b�m�Wx�i�gu�h*��<<�BR�χauD�-�E�f@�0-�G &Y- 4�����<4�:�Z.rV�I��d��Nj���� | |
� | |
�,������Հ�!�\�C�3x�8*�2�b$��tO�+�dYS��Ց�0(��C� 8������5�Ĕ�;�1���+��1�a�Lu{1�N.��Jݵ��"[ߌ͠$_>T<I�� ��7o�ﻼ̩Z_o�i�ۏ | |
[�0"`�R��eU��1Ft | |
�|���a��8eZ[�9���[�ܛ8k1a�����<\00��n^��m�w��w��GS�$\��Cj�¹�яW�R^�я������A����<t�V�@�B=�bA�v��u�$0� | |
�\00ŀ8 | |
X;�2f�gH��$�.�̘���i3��0�g0�o#��~&d��*M���u��h | |
�J4�2P�Ւz�4N�K����B | |
k��\��^�D�t�F��U�4`��X��Y�^F�+��`1��O' | |
�ya���m�/�+w8�&ؼܬ7��+�� | |
� | |
��g�A��3AǬ��4S� %2rQ&R�.\ީ �\00gb��`^�U(K�0D.�`�l� d4&,Q���Ż�����3��2{�VJ�m�-���@u=�0u�;[�iFyy�����k&=.Q\00�;�T����!��<�R�b-qֆB��2\00�H8�8Bz�Eudlk;�{�E�XuLm���Q\00P,���������8�0�)Ȋ������B�V��уL,�=����t��ah�O[E)ԔhE�{�"��QN[�z' | |
H���|�4m��Kz���v��M���C�D���|:WiXQvӔJ��Ƥ��53�Y�]A���*(�R˨i� | |
�*�gv��8O,Uôՠ�-M,1�c������hB�5����x�,[�4uM ���Ę�p/��ܩ�����J-�E������8�y�.g� yT�Vƿ��5 W-���\00�j��� �IV�u�<w��\�s�w6wQ��\00�Q�q����6��"}�Q˳��]N%GU�+���nP3�ޡw���F��i��7�y� ��+k6 ��a�3�<�jl4X����=ч@��۹e��/�� | |
�������w_}���1Kvco�@��;��ۖ��M]ʛ;pw�B���'!����H� | |
V�Di1mw | |
|\00(����l��y �Yǁ�p��%�ô�(A T�������Wh:����%�ަ�x���\���j�*j����5v U�h5cʿ �"�"9C�V .���C��a�nV��U<04p%�(���=��O�u�$01�x�Y�k��p�˸����ZmJ��pt0�B�x��]�y�q�s�;��K��� ����8o�_?�H]72��T¹٪gH�b8?:��j$i�V�U������:j�~��~��SU�^k_U��C��F�g{AH��,�s@P�\���S� | |
&�:aJeˮ)(w�8�X!G���\00M(#��M��E�|��!�y ��5�x���jN������|dk�����!�^}�uL::����"D\96�w����D�coG=�ŕ0j�@��Uz�������;�*�A�h\00 | |
�S�9E��6<�����V����CT�!�� �r�t�n��ɝ(��`�,,�K(�R�~ G�p��p��Y;��4(\m]�Kc��@k*0�`��$م�'�]���|���;JU�G� | |
X��" | |
���餏�b�!�а1f��3:AN�0b�JL��TMb�yČ�DR�o[���L�g�B��O��0R�8?`uY�/BQ�x*��h(r���TC��V�t�y�bVøItU�� F�(��f�dY����y�')Tb�(�{\00'�A����$X��9t&zqu�Զ@|!�� ��������i�.q�^�?�`�d�t��M�q�h��4©7R�Ѷ��u\^n�"�K@8�ȭ�7�w�����|���E�ZF��J�jgw���O�;VE\00��u� | |
O:~��Dg�A��j�a4D�)�o�]�0���tʜm�\00+�����/>b!n���:etk"� 8�k�UU�R$��ϊ���2/���i|��iw.�Q��c8�L���K[�&���T[��l�$Z�d���m�iy�E!�Ԏ%�;�]iX����n��i�NX}��T��0��']� | |
�'&^�ֻ&z9ٙܕe���騥&� #P}RU���!K����{�M�wD;WJ�Y���F\��p�������?��/�u��e���*��z.�H�S�S�<��sѭR��P��� | |
-%� | |
Ki%�G%u�L.0!��&IB��M:m��S��UC���]�� ������Z`\00���%���x<N@�7�A�!�3|=�����b��}zxz�. �. �q�w�@��C�*�zA9�oc�U]����G | |
5���\00H.4�����,�^��D����r��������"���Ǡg�������B8P�e�U�@�*7���.�Ş��]J���!J� l|I5t���0�}ƞ�ԃg���3n�D���o�8���Q�c��"��ax�T(ucE�xu���� | |
|��>գd��r���t\00�*��PY�� | |
%�w}�P�즨��CR�X5%j*`�@���nxQ�_�\s���\00������tn��T��Jٶ"�����ݎ��X�R��eݽ��)�*��e���GeӆU�j�Y�qʢ�X�]!�b�Vy5dav^0!zBֿ��2�;I�0|�yJ'�-.b=c�C|z�)���@�� | |
��ʬ�4�p��Vc����,������� �>���Q�q���so�:� | |
oz6�u<�>��){a�]Q�?�������k�GPy�H� *Q��18unw:����/^�<��M!]��͠���Q]�;��k8-�x|�Pk��b�;�C�HT� | |
�a����ݡ, | |
����9�&a���ʺ���p[� | |
��y�pS��_�/�Mi���o~�����Qx�Jn���*�,�8��3���w#� ���@V~)��.���4RF�urҁ�IHQ�PI0,9����#���}S]؉�����~��`ʨK�$7[��<�*�&<�����%uh�̤<;�i���:b>ŗ�2�t��5r��e��X>��݀I�\�q(�RS��W�Z�9f�����u�����(�g.>Ϣ���G����f���<y_�.�,�f/d6�g�(��0�J%���I���,�:Bj�DBk�<;���D��?|�t���}�pn�� | |
������;��U�@���۾���wt� Xf�f�\00,ѩ���X��aN���DdD�0��� | |
�ԀCs��V�4�E����(?�4��0����ؒ�I$���Ҥ����u��z�8�/GZpl���ZF���Gc���z�+�L�5C����{�"��\M=s�����/b5e��X7헟�����sO����>�մ�N��y�QOu(��w�/�6�ULuX�����ߌ�J�+���b{ | |
������J2�� | |
ͅ|��p\]�����-Tʝ�����tx�>~����������7_}����4Z��כ�Ʃ�����?<ѳ\00F��i��c�!<������*4x���qx,e��+�B���C ���D:X�*�Rz+��$�?�M�b�yG�աn�H��ä�8 | |
�y5+=���Km� '�&���z�R�H�1��-���~�@<�=M�����I�\�]�QC��L��_�i{>�W���驢Xe�'*����*�#�t^6����t�#C�c��?�x$��� | |
[�Z쥁V��q���L��k�Y�E!�]�#�h�SSUtF�������ߞN���髯?�OE���,��V-J�<���+Be�T>��s��9]�n�!}>@���f�,otbL�LD��[ȋv#����Y�IR��5|U��.��Z�m��J'�N���'Z�)t�չ���Y�nmՋ�f6hw3� | |
րMn�2��Ő�Բ�����]��6^��ב��K���� �R�� | |
d����fx�.���g?�1Ţ����x:���˨�/�G�ݿ�k����z����c�H#T�r�E�+)zyY#���u | |
��kYHg�o�W�����G��c���c����pqs�rs�2����>��3Za��j������nA���<�Kl`��9a6��$E���YE-0 �$M����H띕�_��E4ed�lY�G�G3���\F�������Ẹ(�s���l�'�=��ڃ�l�Dzx�����POϨ�wQ��C5>�#ܠ�����V�zD>OJ���c�r@��ړQ*�����E�DD]&:�(^d١(�W�z���ۛ�Y�`��70�%b���p��3���:���"������3��mJ�U��c���zs�yq���}�����hv�L�)�-Wk���5�ei��{/v}f��3T��3�6��1d����#�=m�\�:n | |
o�-k0�\x�;���>�����H���R��xsH�ZƵ���ބEul*=�ϙ?��T���'��A�eBg:��t�����+ߕ\00�l�1�z}6�9}).2��Ye=�+�V����O~�bIY��(�MD�g�H��������\d��r�ȷ�����G욭X_J= ˂S\00�6D@1 | |
sz��WuSaB\00q����(��0�i | |
�_�������fM7�"\���*�M*��X�.ńE�Q+Q���^�x�\&� �Y�O`������݆$W,q�F����&���K��p\00m��֪N0 ����zq�͜ߥس.��й���sc���/�<|�8:�q*�f��S��wz��_��EEm�Bs;LVm����D���P���R?Ѝ>���0~Dž#Q�՛/�|�v��Qw���IG���n7KHi�ͫ�/�iYֆ�f �D<��_q2-�oP��!��˗�uvP��7WݱZiK������?پy�2W��BmU�Ћ�&I`&Y��i"E �<U�1����v��5+EP�C(����8����a����,���za�A��}�}�ƴm�.��3ؔyL^٬�v�9"l@L_+z���Xvu`�<b�e���{���,j�8�����젇���ܥ���|*��<�ni��dpG��<ONs9D�%�'Eo�W�Y���7P�Z���"c��p��~����㱼���f�e /J���2�e ,�q��\�۹��mR����0Q��Q����`&, 5Xny���?N�o����ꢦ'�ʴx������l�,�>z�X,����f | |
i | |
�~\00Q��3|�8Zir | |
ƫC:��,t0�P$SN:Y<<�ߥ�kN�T:�e���G��<����'`�� | |
�ҩ}]8K�%��$��NB�o~�mo,��`��.O�Gb | |
U�'����j�6/�D�[x=���7_���+^�O>��Vdpܗ������ݫ��i�H�bA�.D��l���[o�ŧ�S��V�E�5)2.��¢n�M;�6�ԔG6Q��Y�^�# | |
f(X��YI�p5U=/~����]�e�\E�n�Y�逈����2��eS�����.D��$�q��a����� | |
} <��i�~zRj���sq��4�#�C��@� | |
E:O�� | |
ͣy�A\00L�w^���j�߶:�ő�Ǫ�е�>�xO]}�u�h2�f���7���Y7ah̳A��gB��K�6�_:Xs��|�{H3�j.H�f_�zV�r�����K�`�Ĕ�`�Г���&���3��Q�x7Bf`V���t�N�����mza�R�x��\00%�e�`�o�}q��(F�U��>XIXG���(4��eN�C��N�OOOh`�|��zOc������H]3�Ɠ�D?�N7>uu��Е�-`Ƃ���e�"X��y�{�k{���Uߩ�e�j | |
�g��7�����s�p�.���91���ג4���a�l�xe8=��o�Usd�_��b���Z=�o��li���{�h�R]nj�u�Nv�3<��T�.��1�J��H�j�RFI%:�Yl��x��R���UЖ�*�p����/����⺄an��f�(`�ϧ#�U߁�E킵����MM�u�Y\00��yFQ���;E�D��7�E\00gnj.a�0Ȣk��((��uSF��A��� | |
de�z���;+D�V@Ɗ��Z�|�/E|PO��<C���u��Y����0��`�It��y��l�0��tFMB�z�;�S�:���y�S���������Czx�a@�zÃ��X�?��O����_]�v5F�j����,��v3�Ob*�v��Q��W�fl HR�e�.����b�_-u����p�����r-�6���;��4�X��&�j-ό�L�i��a{S����qn�ݬoob�V�����[j?�r@\007 | |
��\00Yw�jt�k��; �G��PR� �'��F�x | |
���?T��z���&�L'`()�Q$?a�c�47���4� ΘK�z�Rf��������:mlfJ���$-/�>� | |
dAzm`1'���Ve���A���Q?�2CG9n�>=>V����_&��?�z�*O��@�J | |
��,�(�pRgy��v��"U'�i�XmhZ���\)L�)���75bJ��̱��ً�nL | |
1��� ������1�t�T:Ck��B���Mݽy�X���b�ZQ�Z,Wt���� 1B | |
eh-pV$��;�5ʛ �r�o�Y�|�z*���ǐI+fESMw���^���0vN�)�`��ܩ/:�|�2j�!�%�-�J� | |
r�lG�b�,�l�837�H�����sj��aH������A^�7��1rH�2}���_][�����������5��)�U.�Y�@��\00Ȓ-0��|#x�6ٞe�e�sD��ˠ%b�O�m[�$Y | |
��k\00�P��d�N� | |
˺�N,2��,�� | |
�u����]m6�5��%�w�,I�$uM�bϘ���J(O�b%��'�v�ԽVi�;Y�!(P�b>t��r�*p��ӳ�u�O����\00�}_�^��@ӓ����x��n���7�ƻU�k�J�+��i����z!���8�����6����M��(3UK�d��ӣ��l�4����V(�Ah��c��O�.�~�����f�Ke���k��L�C�m����p�3%�Ë��3��ml�z0I� �؍9\00�[�݇隿w�?��艹%��8���l��)䳒,���NM�]H_\�9��YF�*m�Z���G\00#M��zY5��X���Q;��:H�@�@oc��.�Y�A��z��,��8i��LֻCA:�,��V�~}�ǽ���ۙ�ó��0��$�K�2���\�-u�e�bjf:7M�/G�S�S�M�D-;`$��<�>.t&�GA���yt��f@����� �~}w���R>~2|���� â"f����6]]��q�oPX����5L�\00��[�yD �ս5, | |
���2�rKS�g�������À�߀����zE�0N)�l�8rtj;8�GQ | |
�vmb�Q�@Pu8�w;�~��DT�I�n\00�B�&��m��)K�`�\00�bq��W:X����p! | |
�Ng�G?z���B.v <Ds~��<yP7���G����Atc9(�ʁ�K�g,5�?Y�\z�{t��z̒]�L�� | |
�3N�LJ���b��6LΌ,�2=s���b{��Ջ��0�,��Ên��:�i̘ ���S��*�"`#.4�Q��M\00�� �@�����qn���I6�&�@P{���NW9Z�(I����T<<�>|(v�|�XoV�����s�O_}���x����P�Uc����5s�Y�غ�-�Rc�w���'`��"��Y�FfPG�r'��<���%"-ީ����À�� | |
3R���~ *��+��S)ҁ��lO�=�}4���� ���!�{I>c1&�!�b�3�����ԣ�C�q��7��>�I�����^����[d�,�.Zd��85m/"�U�!�Jէ�N�S���ׂ��)��s�HXcX�}Y�.��\00��T|�*gkQ���M���*�P[�wۢ*>~<}z�����p6YVJ��y�����n���;��A����T���[��6 | |
Oøk:�!f�m�:b\00�0�Li}+�}�ZKj�.+YUx�Be�I��8:� | |
!J��{1ˆn ƌ\007K���G@x�8廃a��.,*��<�_�i+�_;��g���bl ��%\00�/��Z�ϼ��`��(��������%|�[pln��wš���݈���$��Ҡ>j | |
T���`h�g ME��R�L��sՀIfl�-W��Tm� )Ɛ���<}x�����8W�sI�M?�{�w�/�0|����Ӟ��XP�{��Q���@�+��`�y?�G�/4��Y�gi�M�~X�� �Q���H��Y1G�����2��J*��=�9�}�le���\�x8y�u��P=�� | |
�g>���� | |
3��7js]0]��ݰ�q���x9u�sn����$��.��������7/�Ed[X�蔒VF�u@|G@��2�4�����)�-�Q��^|����:�)��Η��6��A0�i�}��(],2m��٥q�.�����ܝ�>|zz�Ǵ�b�!��n4�N�So���Hi��N-�ƀm��)��)�A�֭�f��0t���u�U�\�t�B�����L�j�(Z֣Q<�b���8Y��ռ,�~,4�<G�F`�װ���gE���Qm��c������d@����3t�,���>�~�\�C�î��K��U1�"�c9��������?z��Y�5=D��B������}���W�*�`iR[O���7"@O�UEY�T��������z, ��W� Lۺ욆��B�q�P��y؝˪���j� Cߺ�z��(�U����TOQ,a�Ձ]������7�F�0��h.a�I����!Rᚂ%�{��YTQ���BJPW��\00�� �@c'�ƞس����23���~��Îag�yyגﵑ�Fz"���Ecy~�W^��WX�i�Z��{=z�\l�c:�C8��fN��N `!Y��������q��#��ʢ�v����E�,R���M[�A�`km�Ԧj�7�����c%�P� | |
�Aé�@aV�E\[��9�Kf��i���p:ve��̙c���뾬T��$,����sU���jxc���.HP\Wm��b�⺣6��%+�U��r�Jq��,V�$�2J�����(��>`����D��+�8�� | |
�K��s�|�/,�UD��bU�F����9�o�\00������B�e�y�h�aI+=~ѹɾ�z�5�G��� | |
�����)�\Q��O�������Ջ��������C�/�T�+\[�^��!j�f�T<s�g=fiU��䞚J | |
b塰`)eS��G:��ǧ�o?�ǚJ��hN�sY4�ss.J� �(�dً�f�/n_}�̲����M����}�LJ�>O�,�9\.�����TĔ����tU)E���@�)1�2��O | |
�1Y��:� | |
�¢U��>Z<i��K��C-m$�چ��<����!�K/;�.��C<8�(�p��䫣/$�n7G�8�l���d���jZ�g��F������A:���6=�,�\��@)y�^�s},u~�W�S�Yd)��L�XP��w��n`��iO��.j\00�Ϗ���9H����M?}����i����p��eM��w/_�l���O~����W��&�����x;$T<}�w��"�j�}����㇏ߤ�ܹ���� | |
�8���q�&.`�+(|(�a�FQ#��.2I�%-�x� | |
�2@�#��d4~^���� | |
�l�� | |
[�+e���t#�d>�aȪ��>��+��W�o7�ďu�}������^�2�Xysٲ�16�A�t,�����F|�f���(�ʕ���������u�~8.`�u�n`'��T����k���#�_V���3R�J�#�S�➎e����ȡ | |
��\00\Di�g�����n$���b���������>M�Y§$_��N�k��B-Y�A�����*)�C�ت�Xv�S@f�^�a���`�^0�TP�F�]kʭ!D\00c�_� �K X\��a��y\6B���Wu��O��{V�3�٪�Nlu"^���vopx�X�iq�`���˾g2���nbX�أz�7Aq�̺3j�N�E?>���8YB05%`|}��\00��#*�n_�� �K���#/�IRfO | |
�J��%eY�Q~l��!���(]���������d��7U | |
�Ŵ9WI��+j����[dq�6N�뛾>��]`b���ۛO��K�4�� | |
E"j>��>U�L�=aR�j���|>�}�M��,O��u5|i>O��a�7l������4n������%�J�m4���w���"�ˡQJTy�#)A���W�+/m�e���1x�/a�Ky�Q�{�O��w4ϋ����� | |
��tf��a�Ha%�� | |
Y�������a�`���u�v | |
T���� | |
u,�su���]_E�� K���0�����E�-T�n�/o��u?H�CjL;G�-�`x&��� ��NgՑ���ԞU�"������wMWRMD��(�&jICf�a)M | |
\00&Z-5*�R|K]$�l*n��+v��#��s�+I�N�-�Y�״�.|1���r�c���63 | |
?�2C�4B�)تg�Q�M���y����gZ�c)�������=���vP�n���sȌ�xV�����U�|�P.#,tXXzV���@�뻂9����Ʒ=�393�°�Ad���f{�\����B��^��5��OR,�Ǹ=jz�b�bQ@X�|u�EJ��=����:7=U�F����n }�DZTg�� +ߴtaLF����q����d��o�A0;sϕ`N;��t��h�"Ԯ���8&c���җe�@��p=t��K2��s | |
�kJ���� | |
�|)������ | |
����R7?L�+f�b)�b�hq�OE�=�_n���QI�G�BوR� =`��㊞&92�S$_�.��n4��8��Ì6����-6ܠ]����b�,�7lh@y�B�hO���\00v>Rkzw.�UU>e]AMD��tB}c)I獯M'pp��!Z:+���j� �+rl�r�aoL��[:V���cw%��������L.��G��$��B8y���L�4�~�b�\d(q.���F�8���a�+����&�&�T�~��2�P��ʲ(X/������B� | |
�7Yh2�7\<��m��O�+Cmu��!��X}K�IOW�Uh���(L�i��t�U�g�W�b�/�:�u]��ڦ?ס���l�ѷThԎ��O<1���t*�CQ���bB���|����W��! %�������?��T����T��J�=]�h�d�j{!i6�;�LB��a5�_ z;�\�WCNR5ކI_��Of���R����wNj5�R�Gи�w�~�?�τq���W�l�Q����7�5'3hԕ�̥��T�+���x�a��>�*[O����\�k�R�BZ�z6z�>�X�ĘsC@)��E7���L�;[/MUp� | |
ˮ�����N�C����?=>�><��R�ٴ����r��>u�tJ�M$n!S�{��#�Ls5Q����\00���3�����K��;�e�:R�l,��<2��~d��˥�ɕl�\Lo���rx����O��уe��&]nC��L϶�zm�j��^�Z�ኻ��$�^Ir5*P�`��O[(��N�Z;^k8�j��7�O�e�Hbz�]m�N | |
���v�C���)�q��TB1�=����c��\�|kf�զ�ۭ�tQ�\00 | |
VeC�*�:��&<��wG6xc�L��@*% | |
4i:�Ɖ�pl23��uBg������0��]��@ۣ�( ұ�,�=ĮA�@*��kd�8(a��Q�ꨩ����{P~����{��5�����љ�v�]����p~��%��3�띎��q�(_�X�e#f*��ʒ��Q��=�u���Iev�7��A�Ը����Y�p�Ĩ�+cM,�DzE�7:Ȗm�����rZ(_��i6����LY5��zuwH)�+��L�����!�`A#(���U~�B���5b�>��sث �g�^VdE8�� �.d�>6��\00�+6'-��pf�}=H�gt3�z/]ҿ�1���=*4Lt��縹���t�/a~ƿ�~�(�~�sU�`��@`�A���4 | |
c@3t��e0]�QŠ�C)��ˌ�-��;�!�����~R�Iװi\00�c4St�)&eq)e�����:���ª�(�ϧ���4��y�8{ք�#���S�'��A�W6��k� g��h�CG�?a:�s�Hf�G��g��E�Y�>���5�%��4�~���e{��O!rk=�K��`�o��X#��L,E��cz�=�A���Bj����!��b� ��K_0E�%��p��:Ɉ��a�P�%0 | |
X)�Z�mt�A������e��U��`��������^��n�p��Vi�4<��kT��@MC���2��NN\�^d�����3:M���jaX����L�o�[����&�����,ؼv �s��K+W� ���5�U<�@���k4�O�9���9aV�N'^���8�C�'9�7��P7�ܵrҜ-xo�t6J�4م��|=�E]����&I�,]` ����J����d\00e3���i��aw>�T��H����Ә�{U���6�1� �0]�)���\00ś&���0椳%�R��0�������*a=\00������ | |
ŗ�-�c�؋Y�H�q�P����\H?�}v�k�@Zª | |
E%cz�& | |
�!�C�����$�77�"�����S2������8�����6H�lo�O�t�X��n�g��3]��N����'ʑ�x�/"B�A �s��"��SR�:U)�.1'��FHxx[�L�I�"7��ǪaT � | |
b�X�$=��Fq^��S`,�{�m�`h�q$�^<B-�%��S ���>#��H3KB | |
4,�'�E�E�.s | |
,��0�p�j\00�S��������qd�Ҷ���A��T�i�É���C�]���z��N�WT�a�3�����ڳ�ϝ�}��iْ̋s�/町d�8�������&y�gL�W�QsU����)��s�HL��E@Ԏ}�i-��%�̨J���8*}�����V5�LY�����q��A@��(��@U�R�����q����+�Sj{:U]D��������H涚-�U�#��P���\�6 | |
kTR��Mݤy��a�W5%���Dz��/��!3��$B@�\![�dif��2��.�Y6�Q�����`t?��y{o��e�l��`�RSb:Ae$$9燑j�c���z��+��s�̙m���Y���m�x8JG#���}9�����A�k�S | |
�;+N�?����J�T�C�A��2��M�y���M!�+�gIF<C\00y���/>ų6�1"��NEa�S&�g!.���cw."(�-!�����˶�� | |
Ȗ��<�,ě��c2ȩ��w߶��K���8��\00����\00�Y;��{�����qEh�� | |
Y��x�<!|X�(�!�Xzر��=WWk5G� | |
lt}��X?��4��1������*P��V_��%��cC�$=�ׇW��S� gøKyw�����k��3�D��p3M��mmM��M��l���#��<wɠ����i��r:�7��Ѵ�٩���rA�#m����0�X�`r0�`+@���̽����%[@�/3���G8����ٵ}h���$�Qt���9�HE�-*�=�g:�|��M�9�����ʶ|����� | |
��k6X?[�%��܍���e�{���h?��-��|ko�[m;IBz��vZ�Qit�v�P� ��U�d�pa��j���������qW2aѸ^ȫ ���[�-�ӣ���n<I�c^��M� ��]�~�\00�iL��x�9���;�O�����K�@�2l | |
�\00*�"^�Bϛ:�W���� ��(M�$a�)gc���s\a�4X���!焬���3}g����&���""��"�� @T Fi�s,�p�!�V0�����֠tn�<� /d]?L�0�{`�����^��G:�9��c{b5辇 �xf`-�l5������V���&�Lz@����:�2O����*O���?���W��_�o'��L|c8�:4>Rn<.J]�eR����V.�"|�?%������g��%����u<=`]�uj�Ԇ�� | |
����K@�U@a+�u�6&����Qg��]y6�1l`��g'~t���!E���R�E� | |
�nN%�cE�YF��BNE4"5��p�\00M�3���Z�-h�z\��ʘF��fՋ�>���������C�ԳN�� | |
;�9zp��� | |
'\F֖�2�+ي��c��iT&:���6IJ�C��h���d5�N���������>bQ�э|ZLྙ��=��f�=�D�ڤ7�*���ݬ� E������<��nB�����xNӸ�LB%e4@�x��,���:pQ�-�/�t_��҃j�4�@A | |
�iK�� �54�p/�Gu�jt�a�&�N���l����+�-��.���ְxz=��,�M�*j��Z�3�g'L&��/փ��_�PǞ}B$����6����%o9V���dkD�`�3qA���7ɐD�&� | |
q���a2�Ι�,��?{��_��o�����Sݨ�����S-����)�J��.��Ag'�W��3OÉ��(��a�)(ޱ}6≦]k����)G����W_{:Yf>�&bgĕЧ����w�����uB�H4�ÅX��ؔŒ0Tš��#��6e:y1J)�`��o���`eij5�Ұ�kX� | |
�h}݊�.)�j�CFN����a8@x.������u�K��Ate��U�xo;��֪ ��1\����y���pU���6§�7��87-�!Ck�I����+*1=�����b� ��l�@��K�7���� �8k6���IB���Z#�e�j�g�<�P �\;Q�\����/>��W<�n���P�Pa�tp15.��i�s�U��"���:|�ۊ"�N`C�ۦ�K��Ʉ���v�eL��� | |
9��9�Ou]:`��-� | |
��T�QZt&��/������s�(���<�i��������qmX\00�[�a�^=ѶfzS�.�('Q3�U���0W�|��27��'Q | |
���1W^!%�Tx�X$��q~`��3���R3JH�f(���;�u�����iyW��}�5���G�I��+��e�#�7|�`�\O | |
�Omu7�"ѷ9��x��M�/X���J-����]��P/[�$�8�� | |
�ާ�� | |
L����(�t�XD�� ̞$�`������� | |
����}j���{E?�l*���Dc�&"�Ȕ:���h�sY+ʨ]�DL.�ܻ�����6X'�����19�gl�}-���Ǐ���n@���~HN�}C7'�\'���_c�?.���ۨðMo��R��"z���}Ǒ�L?��T�F��4�zB$Y#�r�Q8\:�b/I�c)$�5`�!��F�X��6��ba�X�`·��>�N�#U9]�4ܢ$ϲ4f�W@P�&Nz��t��Nn��`5���5,תu}��-�-&�B�YD��>��*� ��{���]���@�����$ˠ�D��F"@��>�kd@�h-� ���f}薲��T�<�Si5�<�(�"ρT���^h,�)T�8`*��R_kQ�|�|�/��s���"v�a�.�I]�I�/�����K�� | |
���Ql��D,S=���Cؚk�\�y[b���-"E�.#joE�����i��`�px��|���I�M5eg 5bp�8���B���_ԐՕ��!f22p(���e� �2��!K�H��m]5Ց>i�-�[�kI | |
���H�^U�3��-�7u` ����m�����%Fi���C��$���apY��FF�~:���j�$<3�f�.H�@3�nNYx;�Q�����r�z�������qs,w-�g��/�����5-��������������S]|8f��w*�fЍHk5>=l�I�P���)�x��4_�iꓝWV�b�%�l�e��:#�*z���6��]�8N��`�X�0�A��X�)9�u�4Ѩ�1ۦ����]m]��{�`�ʈ����*g��]��87��xe `���鄰N�Y�LK�����6^���6϶�Q�P�:UMQU<k\00&��j�ʊH ����a�����Q�)5I\sIV|���~���j��xf���eܽ�d���6�����T����ٗ?�����16�����1�>���_���6��빎���$�����"���b��� L4��m8�Y�>Hӧ������-TyTv�n��:/��>�v����#6�Q�]�)*�������C7�x<�7'q�0�N �l��E�S!䰗�₾�"� | |
��؈��M��/��8�Z��Ӆ�ۚ>��t:pky#8Ң�e�z_��lJ������/|:��c�T����σ�0�ϔ��U�?�=��:2��hB^��M-��K,�\00R`~�0l��o�7�V͘e�)��#=e\��Sn�H�����9}�?��yI�&n� .!~~N<|K0� | |
@=���E��b����F��x7]5C�b�$�C���=��8�:Q�6���6w����R\q�Hց����Gg��`DJL7�T��pO���e�9�~���a��nN=�~�K���,.�����"���8ZU}@{H��� | |
E#]C����ܪlvǂ��bǎ!!�e�\�����O��v���sӊ�*lj���m'ш}˭ �K�q�3N�!����f�>p���Mlj����@�J�o�������lq.���uN���ya�d���^Ē'��"q7���N�<V.τu0��Q��Αt}5Ş����jM燲\�;*�,e�(ЙI���Ӊ��B�B�2m��T:�I�j����A� XCA����Gm��-�@F�PH�g�rYAW�J���|>�v��Z�TH�E���G\00����r橑pe�-اZ�us�}-���whY��^b`ky�4*2��g!��l�&�bQ1J:��B���;���b���, ŋ3�W���E����[�y*�t�|?J�}!�6��ϟ�q�{�K������)�1m��.�H��29��(ȩI���9�ϦY����7��xFy���$���"[-�^o��'Uyn��>��N'�����iN'�#e��+�|Aư][@_��U�FRu��~���Xշ%��@��:�e���B+)!���D�L�7��������n#��dԢ | |
����C | |
c�e�L���*3ʫ�j5w��ey�9�"�{t?���%�g@(�����ʒ�q� �2��c��!:��0si@�-��M�����zI�����c�í'j��G� 5r�D�����|�1F | |
��Z�Զ�Q�����C�����=>[mTh(RХ���U�O�f��Ø�|��#��l�b.Xs�e��iu>P��<Ҁ�Oa���\�EY-�������sE��$��E0J(������=<�K�3\00�5�r0�j�v�[�Q% Y"K�Wv�A�A�d�i\(�i���嵀�2�i7I8�r���\��77�A�=������^\00sCJ���E7�ॱG���î8���Zc�g��l��|�����nJ�~�(�"�I���8a��8˂ �R������g����&�����>�?��6�[���B.�����(�)�T�-� �2%���$��j[�5��sE�Q��wv��q�j�Z$��)���-U]�8�����Tu�9�`�t<��廪�x��SUU�ނ� �N��1��!_��{LA�c�Cu��T[��%��z6lf�x��}mm4��җ��^�[�p�93n���}�>P1I�g��1K&�� A���M�w���jB{dk.��a�{�,� | |
�tq,�'r��g��7����i2����="ڮ��0���ȵ�'M��CmxyÆ=��8��I�c�x�\8�9>����տ����y��>��/���,U�'x�q�3ƞ��̀�]@��GG@���B4�X�B���(�«�W4��==�{�����@� | |
���G��r | |
>+TT��[��Js���U����g�G�^�E�4��70ꄒ�M̬�e.7�5�7h7��+�P���ηփ�TQq�%�X��g&Ȳ|��a%j��Hν#<ȺG�0T��Pxߧñ�FI���-��|>�J+Naw��Z���eN�!�����5��ӞM���$K���,(���\00���_|��� ��Hu������w����w������ǧ�߾�IU@E=L��)Jb9�KsV6D��ao����Q ��2*�� | |
^�|�Y*ז��÷�!�a�����j)��MUO璊5HY6l<Ё��CU9$)�F�Ȋ<yq��p6��M� | |
6�N $Lw�@+f���e�O�ix<����n���ɩ��C%�p"���+��Ax�z6�5t����jp�y2�8~>��Y L���/�U:��݄0F]��}��̂`��_cPG��d3�Qi6y� ~L�Bu�.��6d7[m<�K^`߾ټ�l�t%�v��Y�,����T�Q3��~�������w[T��3��r^h�F��uBȚYZh��������"t`�&^�P��6��R����y.��i��Ouݝ���iG������p8�Bl��C�+x�ns yܾO"�ؔt|����cG�֬l�F�d�T�}�J/����,Ipx��~b��z���)�ޙm��XB��{�'�cu%�����-S\00 | |
ħ�G��k�jd��O۳}i^=�����3w�� | |
h�H��/f�$@�rM�V�e�/�|���mU�Ї(�\00���\T����t$�a���?�ş�y�� | |
��1�B��o��$�qZ�i~8,'d�/#os:�?� | |
A鯪Νv����ç���soj�ۮ?�ӹpX��!������[�(S`̰nWy�P�*���$�v�;���'� @���8���\00su���lM< �B��R�u7.< | |
�2�:n�s�|�`�\M�8�c�/֬������G,y;��bb�v����G�����SC=��}l�v�)���4cj�k�;DA���8IaD�p<������?{}{�7͙�NNe������g�}���_��Gw��?��������>U����H�(���'08�2|�na&���z����n�bO@G��(~�Q�)Ϣn(PQ-E��� | |
�x>����ǫgm ��A(�-���e�r6�fXZ�^��ed����1�� | |
嚗��m�U���SG�/`f��A�vM��f�D�������4N����_���Ap���&U3��A�k$[_�.�V=Nftaԃn���u� | |
L�Ż��W/ʶ����M���yD | |
���Q��������?~��'��O=+�P^�0�#���a�� | |
0d�Zզ1P�ς�5��m@� | |
���Ә���`��ӑ���x���-֦o���3I�v2�x-�ɾ���/�;|�E@�f�[�4����٨�hm�=R�����k�Q�J�>��y\l�Hu���*Os8�Q�Tʘd厰r�08ŀ��iN���G'{\1^�VSG6^Z_�U��� ��0��i^����Ygݥ�i[j�G��Q��Eš�].����O����>�6 | |
�2u�DX���QZa�dld�@�A�z���O������ŏ�����l��P@p�#�r�##1̙������2�%/��,�T��,~�خq*��:��f&8]U��kp؏Y���J����� Cݖ8�\l�ގ�Ã�|�2W�C�G�(�N�SYᇏlbd���qZ몪��\�-�VI�!ʃa�jM�i}%b5�F�|��&��\00q��쀁���j&���Đh}y6v | |
J��>������ ~Ws�{b��C��j�\/��PF�C�<O~��?�'���?���7۔���\00���6��UB$@����B ��|:߽�������Y���r�rH� �U��� ��`�v�����m6���## pLf+�E�ݮ�$ʒ �#x�12��������I$8O�"��8�}%n9�m�Bp�'�;��X�o�2�QHz�^WEn�Q�xq��h�vg�~;�7��"�� | |
�>`�7'�}_s�K]�%H�WʟW��-3��2����՝`�Ɔ.k�,y:��0��N�$�WW�������(|����?����-�p���6_�c��t�����n{s��>����ݮ�O)dQU��ȭ��y!�`p"�@V���>>���-�t>~�'zc�b}�� �D���QV(�TXj@<�<���B���V�� | |
?i�Uj�Lh'{���n��e3$h��;���*�hHy�0r�0�� ��� | |
��Le�l�X���P�. | |
~p����3Hu-z@G,Mb�~����R� ��R�K�ՂB� | |
�g��0���)��F�z��o �Ϫ�x5�r���ҋ�{���Q��2K��1%�0~z����ӯ�5:M3vL��U�%�͚=K777/�n�!��Yk`I�Ƈ�3���*�7/�/��S4��lB�j �"��r���"�dx>�`d�zF,��L)&��?i��pbv��ZQ_YV��qSED�E�1J"F��5��|�/٣��t��@�$Yβ��V���? ��>q%��[:j�ne�z | |
IaPq�l�(����I� | |
����]�}����r0���a����NY�&�3���I��Z��[Fa�aWU`.���l��9��m���[�U-a �1�� | |
�v��+fu��5�l�}8����Q#H���5�+���7��_P����E���n��F%�t�P���9i��"�i��$���mU�����bT���M�@$H�is{sw{Oj��$�:��C��7Qhj�6�_��v.�;�WB�C�\00%!0jxJ�������x:au����sv���Y�縯|���Ao��L�>P����0���u�������E��`���]�/[Q9� | |
���C��3�{�9;ƙ���Cy��3ڀ`W\ѝ�{��Q8�ϊI�(m9{8�V����� | |
Hk���L/���>ȧ]���u���Lf��q�1��M��v{��q+�/-��39VP�+ޠ�闫����?�o����~��R,�Ҹ��>++̶��� | |
� | |
�t;�:4��4}��������?V�S�@v��J�Z�E\00��_ݿz��`�M��bM��ұ�Auo�\00Q�9�<[,��n��ة!-5^-�4��(cQ�VU�����-�}�����j��r �?!��I | |
|���8� �"[d���6m�D�1[��*N�V���hJ�HU*��-���J�D�`\-�8]\00�*31S�+�!��v��̬���s�����Q���� | |
ՆJ�*w�fk��M�(ͬWa�����^�,=��G�4�c%���mUTEQ�,��Sᘉ����?���W��*�/�wwϙ̌3��D$/ B2N�AB@" %@X؉dB8 B(o�'�?�/�����o����g<���}�����U������3���]�j]���i�~�lC�C���җ~盿��/|����,�v{&9��8��P�IxN�$�A!��0&�:g��(��1N;<N���LM|��2S�g)'{ | |
#�j�Z«���f�?g�ͱ"�4�t� �n�v�v�c�EU����xF4��z>�������;�C�z;�r(�b�E![�]�dރ�K/����#�� | |
������[� t�7�u�29�ə��t��0��!W�#����w?͆�^��SP*5L��ͬ���aȢ$_�n��{�:~l~�V�b�9��26zˏ���Yҏ��\00;������C`�[� | |
�l0���u?��+o�O�����/�|]��a/wS���(��1�P�^Pr(N��*���v��,T4,#��G�k2�D�p���֫��G��>y | |
�� W���Zz�A&HZ���V�җ�sB;�i%�e A�*L�`멾z$eG���J��|���*��0��6�U���![�D�@ӳa��M2����́�]����A�o�X0y�D'01'"���LL>�i��ƍ�����T�+1Qg���%I�t��p�p1�˓ҥ�: T15F�O��m ���Ӣ�.Z|��J��mu@�y �� | |
B嵤�qc���-9�F$#�iX.����_����/q�����ʖң wP�R���D�I��:k | |
�)73 | |
b�H+>E�����m袕�g�~����U����"���ISPA����<ͨ0� | |
��l5����0��?��<�V���%Y������r�O~�w���WWW�%p^�L�4���K��op0p�� | |
n粉9��[�;~JwV,���"״�(8���#S�%�HF��TAg���! | |
��FO���=w耩�S�R�n�}�//�?f������q��' | |
b��R����E!���q�0?>���Ue�7������*k��ިȝ1Q1\͂B^A�\*m&��$�����!��4��^�� ����|�V���ђ���2&Ap��Tò!K)Ǡ�2�� | |
́|ܪ$�jlu+qK���I�"�`��J�#f@�� | |
N�]߁k���d�\00+�bQ݇{��-�߸�, | |
$7PP�ű%Ou���R����Q�F�R:=ˣ�u�w�v>�A{)��<�r�tTNJ8�5��n�"�ͩH�e�q:��Q��}Z����筞*�M�(��h�5X����R�z�6�t&cq�v�ͯ|������k���n3��h�b���8i��CL'�h�6f1 �`?�)�|Y]6�ӌ? | |
��I1T �8��� � F*�b���Ւ��LZb�M(�H#~�X/_y��d]�4�d��j�R�7�6����$9���ie����b���xqs{sw�46��ެ�C��U�t0q�%���JE�͈����Th��{P�b+�=�Az���VCFb�X�-l�s��P#��l4�C�U�,��5]�\c�E(*4 | |
���Hh�FXy�.�-�Fх��L�S�|��S�Q�C^�H | |
�e;{z���d����?}���~������V�O��hF��d,S���W��ڝ�Z�6��{GJ��]J=G8*�>|ԤU�C������B�P�M�`� | |
�i���3Np�j�F��'����].�T#�c>�i �l�K��f\00�EȀ6�Ӈw��w�P厳d�(u0�ic��!�TX�"95|J� _П�S����Z�Kl��]�#�;�@�njٖ@֗�@�X'+�T�y����E�u�0^Z>gތX�VJ0�֦q���˶/���'�3�R��J������D)�Xi�kھ;}����G��?�����;T�{��,'���+ڄ+�����ԩ��-�����)���q�b6�|� | |
��T)���.�l%9�*��͢�E���q2�ڧ��\00�{�m�U�����!;)�Ǐ��;�?-(&#��<�'J���v����t{���%;y�|���n�;93EU\00�� | |
\!�\00j���)E�N�*��Gͦ&���e6��V�Ī`�8QZ[#@A݆"�8�!?B�d�t�`('��7|N���9jy!��|$t��\00�^����̞��J鮚�84U�5eU���KL��P۶�\SJq�����7��ÿ���>���n+�+��^��dr(��,�@6ʏ\00q쁄T�ʒ��ʵb� �B�E�8��+i�#$!�!R>3 U | |
,)��"O�*�!����]L�`y%�b��W��M��Z-���ǡk��;�Rv��<���"j��YJ��͆�st�v�n�?|p�����a�״+��{��C͕9�9�걳� | |
=������3w�l'0���O�禦�cuD����x�7��\00ӕ��I�����i�R���'3%h��S&������#�.�)��<��#���K��b�lӶ\00��ë�w�����ί~� | |
�a����HAF$`��)a����bQ�@���"������D�,��&P�u����ʁ�N\00�����Zհ~�x-N�x�ݓA��8[(�ff��7���h���u�^]�R�'��Q��>6%eL2���(DR��:�JLe��������~�ls���}_�`'���dԡ���,dz5�H��&�;����!&Q���&1���fl��%J��Me�R | |
Y��j&̒����yjXl*iLN�<����2h_i�EE\00f����0��f�.y-ˢ���QIt�{�tv�j�S��_~���w����L�nn� �+�9�D�X6�v��Qy�~ l�"�V�a��%=�Xlq�#2������T�$B�)?G�/Oء��P��\�H"���M�[�6��`̅l3Ua�|<���e�E� | |
�Z��1kh9u�GR� �'���$��uc�Pd��#��6����aw8<��~vw�|�ۙp�`ÅѠ%h��ɩ�줆�:���f��n�7�T���|"8DB�\� | |
��K<9�#�\�$�z��(g����λ����?9|�}��V!�H��Yٌ�I Pd�Ta���5�VD�"Y��_��O��^y��n�F?(/����,U�F�"�;69j8M���� � a�< | |
n��γ8{r!��x�8db��y�5z�����R�/�19����(X=��դ�֠�$D��9JE�FHX� | |
������.�e�2p��e@����[�A�v��e6,v\00���� a�����8y�c��n�ׇ�����a'����|~{w�+&En^���P�{0�"dԟ��j|D=87�Ͷ�ru��h�:\00�ZXz�ѲeG��l�zʐv�x��ppN6S���I�z�@�YF�Rي����̛x�[���Z��MϞ3�*g��3�W~}�+���?��>�nn!��G�q�����R��l���1ĂH�����F�M����3:��-�\00i�f4]�\ | |
^d*����^@���X��%/�D�G�5���U6?&�� S�*��3�l���g/��y�՟;���G��T�4m��3?�3f�N�#�,�?N�A�<�c�)Բid�e]TE!�Q��@���S#�v��]��뫫+�Ț�\����-�f�u�]Տx���� | |
]��D�X��~'v#S�#ym/��X�0V�k����g ��q42���`�{>m4M;��������`W | |
$m�%���۟�V����z�<vl���U!i��i���N> <��D|oKflY�°yg'�z��6h��椴kTi �X�ƮDt����/�4�$@�S*:�F��Bsu��i�X�~��2��S����6��G/_6�ϯ~j��������(E�N�.�~$je8�R�"�匞�z | |
eq:1t�+ց�&�^֯\�r�d�fS���כ�Ä�$�����H9� | |
ҏF�N^Q>U����ҝ!M� '2�g (�z=�c�d&�#T��� -�3��eǔ4��c�����mΞɾ�E�2Y | |
RWfj�����^Y�������x��͒�a�1ϓj$�q$BclB�[S���>j?�`��M�C�6-����B|� F������Xmi�-o������`���nXhMQ�$@���%´��#�J�!+ ��^����V����ZO�����õD8�={�b�ݣ?MUݎ��l¹������� | |
�̯,� Wk3�v�dRh�� G���и��n�8��Y6z�Vth�\00��J�ǔ`��"t�>%/�%���wJ��Y��D�Z0�E���U2� | |
ss�"5�"&�x�'�S��ya)\�=���тI�#E-heIJ���LpNjV�M8��5l9�`[Ȱ�Z$ѭC:�b 05���!�*[a���/z�Xe�H�?~;>�'2�s*�QL���!8���O1�����d,R(����\00b� | |
��V��x�~��������Bv���ht?=������C�A��4�����z�0�Z.a6�h*��%���~ct,X1�� | |
��d�Xv�<. | |
��D�K�CA��D�G�h�j����(@4̈O��ң�mԌ�{R�<<����K�(�;�kU�Y����CW�7 ��� | |
��,�\R��]���ZK�,l�[��V�� | |
ՈQWC��'=1��l�>�A��;N�=���S�E^$���C$#��B%*��Ѥ�&�'����7͵�UV��P�����_�f� w 4l� | |
��؛�²m�[ Ǜ�|��W�^]����owR$R\00�,�LM | |
l1�b�l�:���������@L���4<�����-�D:P^�LA/�'���ҥ� +���+c�&����<ٛ�cn�w��@���t(1��Y���P\00�(aU�k����M�Rx��N��?�YB�܊��9y | |
�eb�� ��L2�yY����\d��d7�����@=B���t� w"4�2�?��H<P�<'�w�sd | |
s�B�'zSׅØ�h�Iu~�Y�#��W%�Y�A | |
\00�H5(�w ��%Fȿ�4���ۭ��U�\,ZY��}(N���nw�Q�Z/O�q���P!-{�[Ot6�h(�::`FZ��)S�-<�A���[����B��F��Qz�V�3�S�$3E*��B�e jm�Gs�d�����<�"�yt��'����툾����b�(t�T?�h�$� �E.�[��â.�)�Ӻ�g�{LG��lLm�S���@��B�fO,�B{`��g�)=8�r8�8��d/���CQm��O���.X-�m0�� � | |
$��i�H�b�GU�&% �c��a�%'\ǒg;@S�,�륬�������������w�;9���V���D��@�i3$s�7���C��oaC�&I�I_As�(�L������=wR�� | |
G�����F�/��2%?��@�,�d��&Z3a���ob����8K��|��#��}D�����h&�Z�WK�QmK,��|��\8�e�������y���^�Z�W��<�ۗe�/MC]�5b!V8��2>��N�%�{\00�V�B��pԩ��X��C���D | |
Ъ�����ـ��l|�CQ.�9��f4!"X���J2��L��r�8/�U���Lu���R2�����/����}��\J��YlY��0���١�\00wTR�X �����O=�4I��Cj���X� �$��3�*�'q1�D��)¼�����P�<Z+D��O��8�QM�{"g� �(���J��,C#��^�9��'M5�.�������͵��C/9,�<S2��`�i(�qb�ai�����ܨ�QJ)�툀�,R��[������)������4e�#�:c�T���a��9�M#J��?�&M��U�4�' | |
C�\00�fv�B�����ϲ��A�,�5�{�=���'OV+��q�Z�U=���̫��96�f9g�8��a�h^YE�s���I�$�<����Y����l�BOU)�W��dڨJ� | |
��̙�8U��f�\�@�<��ˮ�l)�T�ȶj����Lo���BdHvTŶ��@C�O=�����'05�i�9����,�Z-�1P�Nn^m��t��X���� | |
Zfm�� | |
M`mD3��\00�`��S7��{�`���l0�b��`c/�`��V�=����� �@�;�C�ߟʺ��� | |
��qX=Л0M[��'^=��n���߫��s��,�������ß>~�HJ]y���������_���'�h��Z��1��X�E�<F�a�'��ʪ(�#�)�l� | |
��ڨ�µԇ�Ej���\00% | |
#��k��u=�8b���J;5�GP�q�ڠPvri��k@`�}��@��g��f��aAäV�S��\00\00}���Ѿ�\00\00\00\00IEND�B`� | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/mofro.png | |
WARC-Date: 2016-08-15T21:19:51Z | |
WARC-Concurrent-To: <urn:uuid:e085f761-e971-4927-8ccb-9d521c7f9b5f> | |
WARC-Record-ID: <urn:uuid:337f3ca8-fbee-4793-a696-05eaf4aa1284> | |
Content-Type: application/http; msgtype=request | |
Content-Length: 290 | |
GET /~mkelly/mofro.png HTTP/1.0 | |
Connection: Close | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 | |
Host: www.cs.odu.edu | |
User-Agent: Mozilla/5.0 (compatible; heritrix/3.3.0-SNAPSHOT-20160708-0038 +http://yourdomain.com) | |
WARC/1.0 | |
WARC-Type: metadata | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/mofro.png | |
WARC-Date: 2016-08-15T21:19:51Z | |
WARC-Concurrent-To: <urn:uuid:e085f761-e971-4927-8ccb-9d521c7f9b5f> | |
WARC-Record-ID: <urn:uuid:7d03e22e-2758-4efd-a9c3-1b8e6b0e4b95> | |
Content-Type: application/warc-fields | |
Content-Length: 174 | |
via: http://www.cs.odu.edu/~mkelly/ | |
hopsFromSeed: RE | |
fetchTimeMs: 242 | |
charsetForLinkExtraction: ISO-8859-1 | |
outlink: http://www.cs.odu.edu/favicon.ico I =INFERRED_MISC | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
alive ResourceManager | |
[TMZShowTimes] enableAutoLoad::false | |
A Parser-blocking, cross-origin script, http://aax.amazon-adsystem.com/e/dtb/bid?src=3064&u=http%3A%2F%2Fwww.tmz.com%2F&cb=6384545, is invoked via document.write. This may be blocked by the browser if the device has poor network connectivity. | |
kWidget: Kaltura HTML5 Version: 2.40 | |
Uncaught Error: Mismatched anonymous define() module: function (){var e,t,n;return function r(e,t,n){function i(o,u){if(!t[o]){if(!e[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(s)return s(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=t[o]={exports:{}};e[o][0].call(f.exports,function(t){var n=e[o][1][t];return i(n?n:t)},f,f.exports,r,e,t,n)}return t[o].exports}var s=typeof require=="function"&&require;for(var o=0;o<n.length;o++)i(n[o]);return i}({1:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||undefined}function i(e){return typeof e=="function"}function s(e){return typeof e=="number"}function o(e){return typeof e=="object"&&e!==null}function u(e){return e===void 0}t.exports=r,r.EventEmitter=r,r.prototype._events=undefined,r.prototype._maxListeners=undefined,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if(!s(e)||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,a,f;this._events||(this._events={});if(e==="error")if(!this._events.error||o(this._events.error)&&!this._events.error.length)throw t=arguments[1],t instanceof Error?t:TypeError('Uncaught, unspecified "error" event.');n=this._events[e];if(u(n))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];n.apply(this,s)}else if(o(n)){r=arguments.length,s=new Array(r-1);for(a=1;a<r;a++)s[a-1]=arguments[a];f=n.slice(),r=f.length;for(a=0;a<r;a++)f[a].apply(this,s)}return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?o(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t;if(o(this._events[e])&&!this._events[e].warned){var n;u(this._maxListeners)?n=r.defaultMaxListeners:n=this._maxListeners,n&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),typeof console.trace=="function"&&console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}],2:[function(e,t,n){var r;r=function(){function e(){this.id=null,this.errorURLTemplates=[],this.impressionURLTemplates=[],this.creatives=[],this.extensions=[]}return e}(),t.exports=r},{}],3:[function(e,t,n){var r,i,s;i=e("./parser"),s=e("./util"),r=function(){function e(){}return e.cappingFreeLunch=0,e.cappingMinimumTimeInterval=0,e.options={withCredentials:!1,timeout:0},e.get=function(e,t,r){var s,o,u;o=+(new Date),s=n.extend=function(e,t){var n,r;for(n in t)r=t[n],e[n]=r;return e},r||(typeof t=="function"&&(r=t),u={}),u=s(this.options,t),this.totalCallsTimeout<o?(this.totalCalls=1,this.totalCallsTimeout=o+36e5):this.totalCalls++;if(this.cappingFreeLunch>=this.totalCalls){r(null,new Error("VAST call canceled – FreeLunch capping not reached yet "+this.totalCalls+"/"+this.cappingFreeLunch));return}if(o-this.lastSuccessfullAd<this.cappingMinimumTimeInterval){r(null,new Error("VAST call canceled – ("+this.cappingMinimumTimeInterval+")ms minimum interval reached"));return}return i.parse(e,u,function(e){return function(e,t){return r(e,t)}}(this))},function(){var t,n;n=s.storage,t=Object.defineProperty,["lastSuccessfullAd","totalCalls","totalCallsTimeout"].forEach(function(r){t(e,r,{get:function(){return n.getItem(r)},set:function(e){return n.setItem(r,e)},configurable:!1,enumerable:!0})}),e.totalCalls==null&&(e.totalCalls=0),e.totalCallsTimeout==null&&(e.totalCallsTimeout=0)}(),e}(),t.exports=r},{"./parser":11,"./util":17}],4:[function(e,t,n){var r;r=function(){function e(){this.id=null,this.width=0,this.height=0,this.type=null,this.staticResource=null,this.htmlResource=null,this.iframeResource=null,this.companionClickThroughURLTemplate=null,this.trackingEvents={}}return e}(),t.exports=r},{}],5:[function(e,t,n){var r,i,s,o,u={}.hasOwnProperty,a=function(e,t){function r(){this.constructor=e}for(var n in t)u.call(t,n)&&(e[n]=t[n]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e};r=function(){function e(){this.trackingEvents={}}return e}(),s=function(e){function t(){t.__super__.constructor.apply(this,arguments),this.type="linear",this.duration=0,this.skipDelay=null,this.mediaFiles=[],this.videoClickThroughURLTemplate=null,this.videoClickTrackingURLTemplates=[],this.videoCustomClickURLTemplates=[],this.adParameters=null}return a(t,e),t}(r),o=function(e){function t(){t.__super__.constructor.apply(this,arguments),this.type="nonlinear",this.variations=[],this.videoClickTrackingURLTemplates=[]}return a(t,e),t}(r),i=function(e){function t(){this.type="companion",this.variations=[],this.videoClickTrackingURLTemplates=[]}return a(t,e),t}(r),t.exports={VASTCreativeLinear:s,VASTCreativeNonLinear:o,VASTCreativeCompanion:i}},{}],6:[function(e,t,n){var r;r=function(){function e(){this.attributes={},this.children=[]}return e}(),t.exports=r},{}],7:[function(e,t,n){var r;r=function(){function e(){this.name=null,this.value=null,this.attributes={}}return e}(),t.exports=r},{}],8:[function(e,t,n){t.exports={client:e("./client"),tracker:e("./tracker"),parser:e("./parser"),util:e("./util")}},{"./client":3,"./parser":11,"./tracker":13,"./util":17}],9:[function(e,t,n){var r;r=function(){function e(){this.id=null,this.fileURL=null,this.deliveryType="progressive",this.mimeType=null,this.codec=null,this.bitrate=0,this.minBitrate=0,this.maxBitrate=0,this.width=0,this.height=0,this.apiFramework=null,this.scalable=null,this.maintainAspectRatio=null}return e}(),t.exports=r},{}],10:[function(e,t,n){var r;r=function(){function e(){this.id=null,this.width=0,this.height=0,this.minSuggestedDuration="00:00:00",this.apiFramework="static",this.type=null,this.staticResource=null,this.htmlResource=null,this.iframeResource=null,this.nonlinearClickThroughURLTemplate=null}return e}(),t.exports=r},{}],11:[function(e,t,n){var r,i,s,o,u,a,f,l,c,h,p,d,v,m,g=[].indexOf||function(e){for(var t=0,n=this.length;t<n;t++)if(t in this&&this[t]===e)return t;return-1};i=e("./urlhandler"),v=e("./response"),s=e("./ad"),o=e("./extension"),u=e("./extensionchild"),m=e("./util"),l=e("./creative").VASTCreativeLinear,f=e("./creative").VASTCreativeCompanion,c=e("./creative").VASTCreativeNonLinear,h=e("./mediafile"),a=e("./companionad"),p=e("./nonlinear"),r=e("events").EventEmitter,d=function(){function t(){}var e;return e=[],t.addURLTemplateFilter=function(t){typeof t=="function"&&e.push(t)},t.removeURLTemplateFilter=function(){return e.pop()},t.countURLTemplateFilters=function(){return e.length},t.clearUrlTemplateFilters=function(){return e=[]},t.parse=function(e,t,n){return n||(typeof t=="function"&&(n=t),t={}),this._parse(e,null,t,function(e,t){return n(t,e)})},t.vent=new r,t.track=function(e,t){return this.vent.emit("VAST-error",t),m.track(e,t)},t.on=function(e,t){return this.vent.on(e,t)},t.once=function(e,t){return this.vent.once(e,t)},t._parse=function(t,n,r,s){var o,u,a;s||(typeof r=="function"&&(s=r),r={});for(u=0,a=e.length;u<a;u++)o=e[u],t=o(t);return n==null&&(n=[]),n.push(t),i.get(t,r,function(e){return function(i,o){var u,a,f,l,c,h,p,d,m,y,b;if(i!=null)return s(i);c=new v;if((o!=null?o.documentElement:void 0)==null||o.documentElement.nodeName!=="VAST")return s(new Error("Invalid VAST XMLDocument"));y=o.documentElement.childNodes;for(h=0,d=y.length;h<d;h++)l=y[h],l.nodeName==="Error"&&c.errorURLTemplates.push(e.parseNodeText(l));b=o.documentElement.childNodes;for(p=0,m=b.length;p<m;p++)l=b[p],l.nodeName==="Ad"&&(u=e.parseAdElement(l),u!=null?c.ads.push(u):e.track(c.errorURLTemplates,{ERRORCODE:101}));a=function(t){var n,r,i,o;t==null&&(t=!1);if(!c)return;n=!0,o=c.ads;for(r=0,i=o.length;r<i;r++){u=o[r];if(u.nextWrapperURL!=null)return;u.creatives.length>0&&(n=!1)}return n&&(t||e.track(c.errorURLTemplates,{ERRORCODE:303})),c.ads.length===0&&(c=null),s(null,c)},f=c.ads.length;while(f--){u=c.ads[f];if(u.nextWrapperURL==null)continue;(function(i){var s,o,u;if(n.length>=10||(u=i.nextWrapperURL,g.call(n,u)>=0)){e.track(i.errorURLTemplates,{ERRORCODE:302}),c.ads.splice(c.ads.indexOf(i),1),a();return}return i.nextWrapperURL.indexOf("//")===0?(o=location.protocol,i.nextWrapperURL=""+o+i.nextWrapperURL):i.nextWrapperURL.indexOf("://")===-1&&(s=t.slice(0,t.lastIndexOf("/")),i.nextWrapperURL=""+s+"/"+i. | |
nextWrapperURL),e._parse(i.nextWrapperURL,n,r,function(t,n){var r,s,o,u,f,l,h,p,d,v,m,g,y,b,w,E,S,x;s=!1;if(t!=null)e.track(i.errorURLTemplates,{ERRORCODE:301}),c.ads.splice(c.ads.indexOf(i),1),s=!0;else if(n==null)e.track(i.errorURLTemplates,{ERRORCODE:303}),c.ads.splice(c.ads.indexOf(i),1),s=!0;else{c.errorURLTemplates=c.errorURLTemplates.concat(n.errorURLTemplates),u=c.ads.indexOf(i),c.ads.splice(u,1),w=n.ads;for(h=0,p=w.length;h<p;h++){f=w[h],f.errorURLTemplates=i.errorURLTemplates.concat(f.errorURLTemplates),f.impressionURLTemplates=i.impressionURLTemplates.concat(f.impressionURLTemplates);if(i.trackingEvents!=null){E=f.creatives;for(g=0,d=E.length;g<d;g++){r=E[g];if(r.type==="linear"||r.type==="nonlinear"){S=Object.keys(i.trackingEvents);for(y=0,v=S.length;y<v;y++)o=S[y],(l=r.trackingEvents)[o]||(l[o]=[]),r.trackingEvents[o]=r.trackingEvents[o].concat(i.trackingEvents[o])}}}if(i.videoClickTrackingURLTemplates!=null){x=f.creatives;for(b=0,m=x.length;b<m;b++){r=x[b];if(r.type==="linear"||r.type==="nonlinear")r.videoClickTrackingURLTemplates=r.videoClickTrackingURLTemplates.concat(i.videoClickTrackingURLTemplates)}}c.ads.splice(u,0,f)}}return delete i.nextWrapperURL,a(s)})})(u)}return a()}}(this))},t.childByName=function(e,t){var n,r,i,s;s=e.childNodes;for(r=0,i=s.length;r<i;r++){n=s[r];if(n.nodeName===t)return n}},t.childsByName=function(e,t){var n,r,i,s,o;r=[],o=e.childNodes;for(i=0,s=o.length;i<s;i++)n=o[i],n.nodeName===t&&r.push(n);return r},t.parseAdElement=function(e){var t,n,r,i,s;i=e.childNodes;for(n=0,r=i.length;n<r;n++){t=i[n];if((s=t.nodeName)!=="Wrapper"&&s!=="InLine")continue;t.setAttribute("id",e.getAttribute("id"));if(t.nodeName==="Wrapper")return this.parseWrapperElement(t);if(t.nodeName==="InLine")return this.parseInLineElement(t)}},t.parseWrapperElement=function(e){var t,n,r,i,s,o,u;t=this.parseInLineElement(e),i=this.childByName(e,"VASTAdTagURI"),i!=null?t.nextWrapperURL=this.parseNodeText(i):(i=this.childByName(e,"VASTAdTagURL"),i!=null&&(t.nextWrapperURL=this.parseNodeText(this.childByName(i,"URL")))),u=t.creatives;for(s=0,o=u.length;s<o;s++){n=u[s],r=null;if(n.type==="linear"||n.type==="nonlinear")r=n,r!=null&&(r.trackingEvents!=null&&(t.trackingEvents=r.trackingEvents),r.videoClickTrackingURLTemplates!=null&&(t.videoClickTrackingURLTemplates=r.videoClickTrackingURLTemplates))}if(t.nextWrapperURL!=null)return t},t.parseInLineElement=function(e){var t,n,r,i,o,u,a,f,l,c,h,p,d,v;t=new s,t.id=e.id,p=e.childNodes;for(u=0,l=p.length;u<l;u++){o=p[u];switch(o.nodeName){case"Error":t.errorURLTemplates.push(this.parseNodeText(o));break;case"Impression":t.impressionURLTemplates.push(this.parseNodeText(o));break;case"Creatives":d=this.childsByName(o,"Creative");for(a=0,c=d.length;a<c;a++){r=d[a],v=r.childNodes;for(f=0,h=v.length;f<h;f++){i=v[f];switch(i.nodeName){case"Linear":n=this.parseCreativeLinearElement(i),n&&t.creatives.push(n);break;case"NonLinearAds":n=this.parseNonLinear(i),n&&t.creatives.push(n);break;case"CompanionAds":n=this.parseCompanionAd(i),n&&t.creatives.push(n)}}}break;case"Extensions":this.parseExtension(t.extensions,this.childsByName(o,"Extension"))}}return t},t.parseExtension=function(e,t){var n,r,i,s,a,f,l,c,h,p,d,v,m,g,y,b,w,E;E=[];for(l=0,d=t.length;l<d;l++){a=t[l],r=new o;if(a.attributes){y=a.attributes;for(c=0,v=y.length;c<v;c++)f=y[c],r.attributes[f.nodeName]=f.nodeValue}b=a.childNodes;for(h=0,m=b.length;h<m;h++){n=b[h];if(n.nodeName!=="#text"){i=new u,i.name=n.nodeName,i.value=this.parseNodeText(n);if(n.attributes){w=n.attributes;for(p=0,g=w.length;p<g;p++)s=w[p],i.attributes[s.nodeName]=s.nodeValue}r.children.push(i)}}E.push(e.push(r))}return E},t.parseCreativeLinearElement=function(e){var t,n,r,i,s,o,u,a,f,c,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F;r=new l,r.duration=this.parseDuration(this.parseNodeText(this.childByName(e,"Duration")));if(r.duration===-1&&e.parentNode.parentNode.parentNode.nodeName!=="Wrapper")return null;v=e.getAttribute("skipoffset"),v==null?r.skipDelay=null:v.charAt(v.length-1)==="%"?(p=parseInt(v,10),r.skipDelay=r.duration*(p/100)):r.skipDelay=this.parseDuration(v),b=this.childByName(e,"VideoClicks");if(b!=null){r.videoClickThroughURLTemplate=this.parseNodeText(this.childByName(b,"ClickThrough")),D=this.childsByName(b,"ClickTracking");for(E=0,N=D.length;E<N;E++)n=D[E],r.videoClickTrackingURLTemplates.push(this.parseNodeText(n));P=this.childsByName(b,"CustomClick");for(S=0,C=P.length;S<C;S++)i=P[S],r.videoCustomClickURLTemplates.push(this.parseNodeText(i))}t=this.childByName(e,"AdParameters"),t!=null&&(r.adParameters=this.parseNodeText(t)),H=this.childsByName(e,"TrackingEvents");for(x=0,k=H.length;x<k;x++){g=H[x],B=this.childsByName(g,"Tracking");for(T=0,L=B.length;T<L;T++){m=B[T],s=m.getAttribute("event"),y=this.parseNodeText(m);if(s!=null&&y!=null){if(s==="progress"){c=m.getAttribute("offset");if(!c)continue;c.charAt(c.length-1)==="%"?s="progress-"+c:s="progress-"+Math.round(this.parseDuration(c))}(w=r.trackingEvents)[s]==null&&(w[s]=[]),r.trackingEvents[s].push(y)}}}j=this.childsByName(e,"MediaFiles");for(M=0,A=j.length;M<A;M++){f=j[M],F=this.childsByName(f,"MediaFile");for(_=0,O=F.length;_<O;_++)a=F[_],u=new h,u.id=a.getAttribute("id"),u.fileURL=this.parseNodeText(a),u.deliveryType=a.getAttribute("delivery"),u.codec=a.getAttribute("codec"),u.mimeType=a.getAttribute("type"),u.apiFramework=a.getAttribute("apiFramework"),u.bitrate=parseInt(a.getAttribute("bitrate")||0),u.minBitrate=parseInt(a.getAttribute("minBitrate")||0),u.maxBitrate=parseInt(a.getAttribute("maxBitrate")||0),u.width=parseInt(a.getAttribute("width")||0),u.height=parseInt(a.getAttribute("height")||0),d=a.getAttribute("scalable"),d&&typeof d=="string"&&(d=d.toLowerCase(),d==="true"?u.scalable=!0:d==="false"&&(u.scalable=!1)),o=a.getAttribute("maintainAspectRatio"),o&&typeof o=="string"&&(o=o.toLowerCase(),o==="true"?u.maintainAspectRatio=!0:o==="false"&&(u.maintainAspectRatio=!1)),r.mediaFiles.push(u)}return r},t.parseNonLinear=function(e){var t,n,r,i,s,o,u,a,f,l,h,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M;t=new c,C=this.childsByName(e,"TrackingEvents");for(d=0,y=C.length;d<y;d++){f=C[d],k=this.childsByName(f,"Tracking");for(v=0,b=k.length;v<b;v++)a=k[v],n=a.getAttribute("event"),l=this.parseNodeText(a),n!=null&&l!=null&&((h=t.trackingEvents)[n]==null&&(h[n]=[]),t.trackingEvents[n].push(l))}L=this.childsByName(e,"NonLinear");for(m=0,w=L.length;m<w;m++){o=L[m],s=new p,s.id=o.getAttribute("id")||null,s.width=o.getAttribute("width"),s.height=o.getAttribute("height"),s.minSuggestedDuration=o.getAttribute("minSuggestedDuration"),s.apiFramework=o.getAttribute("apiFramework"),A=this.childsByName(o,"HTMLResource");for(g=0,E=A.length;g<E;g++)r=A[g],s.type=r.getAttribute("creativeType")||"text/html",s.htmlResource=this.parseNodeText(r);O=this.childsByName(o,"IFrameResource");for(T=0,S=O.length;T<S;T++)i=O[T],s.type=i.getAttribute("creativeType")||0,s.iframeResource=this.parseNodeText(i);M=this.childsByName(o,"StaticResource");for(N=0,x=M.length;N<x;N++)u=M[N],s.type=u.getAttribute("creativeType")||0,s.staticResource=this.parseNodeText(u);s.nonlinearClickThroughURLTemplate=this.parseNodeText(this.childByName(o,"NonLinearClickThrough")),t.variations.push(s)}return t},t.parseCompanionAd=function(e){var t,n,r,i,s,o,u,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M;r=new f,C=this.childsByName(e,"Companion");for(d=0,y=C.length;d<y;d++){n=C[d],t=new a,t.id=n.getAttribute("id")||null,t.width=n.getAttribute("width"),t.height=n.getAttribute("height"),k=this.childsByName(n,"HTMLResource");for(v=0,b=k.length;v<b;v++)s=k[v],t.type=s.getAttribute("creativeType")||"text/html",t.htmlResource=this.parseNodeText(s);L=this.childsByName(n,"IFrameResource");for(m=0,w=L.length;m<w;m++)o=L[m],t.type=o.getAttribute("creativeType")||0,t.iframeResource=this.parseNodeText(o);A=this.childsByName(n,"StaticResource");for(g=0,E=A.length;g<E;g++)u=A[g],t.type=u.getAttribute("creativeType")||0,t.staticResource=this.parseNodeText(u);O=this.childsByName(n,"TrackingEvents");for(T=0,S=O.length;T<S;T++){c=O[T],M=this.childsByName(c,"Tracking");for(N=0,x=M.length;N<x;N++)l=M[N],i=l.getAttribute("event"),h=this.parseNodeText(l),i!=null&&h!=null&&((p=t.trackingEvents)[i]==null&&(p[i]=[]),t.trackingEvents[i].push(h))}t.companionClickThroughURLTemplate=this.parseNodeText(this.childByName(n,"CompanionClickThrough")),t.companionClickTrackingURLTemplate=this.parseNodeText(this.childByName(n,"CompanionClickTracking")),r.variations.push(t)}return r},t.parseDuration=function(e){var t,n,r,i,s;return e==null?-1:(t=e.split(":"),t.length!==3?-1:(s=t[2].split("."),i=parseInt(s[0]),s.length===2&&(i+=parseFloat("0."+s[1])),r=parseInt(t[1]*60),n=parseInt(t[0]*60*60),isNaN(n||isNaN(r||isNaN(i||r>3600||i>60)))?-1:n+r+i))},t.parseNodeText=function(e){return e&&(e.textContent||e.text||"").trim()},t}(),t.exports=d},{"./ad":2,"./companionad":4,"./creative":5,"./extension":6,"./extensionchild":7,"./mediafile":9,"./nonlinear":10,"./response":12,"./urlhandler":14,"./util":17,events:1}],12:[function(e,t,n){var r;r=function(){function e(){this.ads=[],this.errorURLTemplates=[]}return e}(),t.exports=r},{}],13:[function(e,t,n){var r,i,s,o,u,a={}.hasOwnProperty,f=function(e,t){function r(){this.constructor=e}for(var n in t)a.call(t,n)&&(e[n]=t[n]);return r.prototype=t.prototype,e.prototype=new r,e.__super__=t.prototype,e};i=e("./client"),u=e("./util"),s=e("./creative").VASTCreativeLinear,r=e("events").EventEmitter,o=function(e){function t(e,t){var n,r,o;this.ad=e,this.creative=t,this.muted=!1,this.impressed=!1,this.skipable=!1,this.skipDelayDefault=-1,this.trackingEvents={},this.emitAlwaysEvents=["creativeView","start","firstQuartile","midpoint","thirdQuartile","complete","resume","pause","rewind","skip","closeLinear","close"],o=this.creative.trackingEvents;for(n in o)r=o[n],this.trackingEvents[n]=r.slice(0);this.creative instanceof s?(this.setDuration(this.creative.duration),this.skipDelay=this.creative.skipDelay,this.linear=!0,this.clickThroughURLTemplate=this.creative.videoClickThroughURLTemplate,this.clickTrackingURLTemplates=this.creative.videoClickTrackingURLTemplates):(this.skipDelay=-1,this.linear=!1),this.on("start",function(){i.lastSuccessfullAd=+(new Date)})}return f(t,e),t.prototype.setDuration=function(e){return this.assetDuration=e,this.quartiles={firstQuartile:Math.round(25*this.assetDuration)/100,midpoint:Math.round(50*this.assetDuration)/100,thirdQuartile:Math.round(75*this.assetDuration)/100}},t.prototype.setProgress=function(e){var t,n,r,i,s,o,u,a,f;s=this.skipDelay===null?this.skipDelayDefault:this.skipDelay,s!==-1&&!this.skipable&&(s>e?this.emit("skip-countdown",s-e):(this.skipable=!0,this.emit("skip-countdown",0)));if(this.linear&&this.assetDuration>0){n=[];if(e>0){n.push("start"),r=Math.round(e/this.assetDuration*100),n.push("progress-"+r+"%"),n.push("progress-"+Math.round(e)),f=this.quartiles;for(i in f)o=f[i],o<=e&&e<=o+1&&n.push(i)}for(u=0,a=n.length;u<a;u++)t=n[u],this.track(t,!0);e<this.progress&&this.track("rewind")}return this.progress=e},t.prototype.setMuted=function(e){return this.muted!==e&&this.track(e?"mute":"unmute"),this.muted=e},t.prototype.setPaused=function(e){return this.paused!==e&&this.track(e?"pause":"resume"),this.paused=e},t.prototype.setFullscreen=function(e){return this.fullscreen!==e&&this.track(e?"fullscreen":"exitFullscreen"),this.fullscreen=e},t.prototype.setSkipDelay=function(e){if(typeof e=="number")return this.skipDelay=e},t.prototype.load=function(){if(!this.impressed)return this.impressed=!0,this.trackURLs(this.ad.impressionURLTemplates),this.track("creativeView")},t.prototype.errorWithCode=function(e){return this.trackURLs(this.ad.errorURLTemplates,{ERRORCODE:e})},t.prototype.complete=function(){return this.track("complete")},t.prototype.close=function(){return this.track(this.linear?"closeLinear":"close")},t.prototype.stop=function(){},t.prototype.skip=function(){return this.track("skip"),this.trackingEvents=[]},t.prototype.click=function(){var e,t,n;((n=this.clickTrackingURLTemplates)!=null?n.length:void 0)&&this.trackURLs(this.clickTrackingURLTemplates);if(this.clickThroughURLTemplate!=null)return this.linear&&(t={CONTENTPLAYHEAD:this.progressFormated()}),e=u.resolveURLTemplates([this.clickThroughURLTemplate],t)[0],this.emit("clickthrough",e)},t.prototype.track=function(e,t){var n,r;t==null&&(t=!1),e==="closeLinear"&&this.trackingEvents[e]==null&&this.trackingEvents["close"]!=null&&(e="close"),r=this.trackingEvents[e],n=this.emitAlwaysEvents.indexOf(e),r!=null?(this.emit(e,""),this.trackURLs(r)):n!==-1&&this.emit(e,""),t===!0&&(delete this.trackingEvents[e],n>-1&&this.emitAlwaysEvents.splice(n,1))},t.prototype.trackURLs=function(e,t){return t==null&&(t={}),this.linear&&(t.CONTENTPLAYHEAD=this.progressFormated()),u.track(e,t)},t.prototype.progressFormated=function(){var e,t,n,r,i;return i=parseInt(this.progress),e=i/3600,e.length<2&&(e="0"+e),t=i/60%60,t.length<2&&(t="0"+t),r=i%60,r.length<2&&(r="0"+t),n=parseInt((this.progress-i)*100),""+e+":"+t+":"+r+"."+n},t}(r),t.exports=o},{"./client":3,"./creative":5,"./util":17,events:1}],14:[function(e,t,n){var r,i,s;s=e("./urlhandlers/xmlhttprequest"),i=e("./urlhandlers/flash"),r=function(){function t(){}return t.get=function(t,n,r){var o,u;return r||(typeof n=="function"&&(r=n),n={}),n.response!=null?(o=n.response,n.response=void 0,r(null,o)):((u=n.urlhandler)!=null?u.supported():void 0)?n.urlhandler.get(t,n,r):typeof window=="undefined"||window===null?e("./urlhandlers/node").get(t,n,r):s.supported()?s.get(t,n,r):i.supported()?i.get(t,n,r):r(new Error("Current context is not supported by any of the default URLHandlers. Please provide a custom URLHandler"))},t}(),t.exports=r},{"./urlhandlers/flash":15,"./urlhandlers/xmlhttprequest":16}],15:[function(e,t,n){var r;r=function(){function e(){}return e.xdr=function(){var e;return window.XDomainRequest&&(e=new XDomainRequest),e},e.supported=function(){return!!this.xdr()},e.get=function(e,t,n){var r,i;return(i=typeof window.ActiveXObject=="function"?new window.ActiveXObject("Microsoft.XMLDOM"):void 0)?(i.async=!1,r=this.xdr(),r.open("GET",e),r.timeout=t.timeout||0,r.withCredentials=t.withCredentials||!1,r.send(),r.onprogress=function(){},r.onload=function(){return i.loadXML(r.responseText),n(null,i)}):n(new Error("FlashURLHandler: Microsoft.XMLDOM format not supported"))},e}(),t.exports=r},{}],16:[function(e,t,n){var r;r=function(){function e(){}return e.xhr=function(){var e;e=new window.XMLHttpRequest;if("withCredentials"in e)return e},e.supported=function(){return!!this.xhr()},e.get=function(e,t,n){var r;if(window.location.protocol==="https:"&&e.indexOf("http://")===0)return n(new Error("XHRURLHandler: Cannot go from HTTPS to HTTP."));try{return r=this.xhr(),r.open("GET",e),r.timeout=t.timeout||0,r.withCredentials=t.withCredentials||!1,r.overrideMimeType&&r.overrideMimeType("text/xml"),r.onreadystatechange=function(){if(r.readyState===4)return r.status===200?n(null,r.responseXML):n(new Error("XHRURLHandler: "+r.statusText))},r.send()}catch(i){return n(new Error("XHRURLHandler: Unexpected error"))}},e}(),t.exports=r},{}],17:[function(e,t,n){var r;r=function(){function e(){}return e.track=function(e,t){var n,r,i,s,o,u;r=this.resolveURLTemplates(e,t),u=[];for(s=0,o=r.length;s<o;s++)n=r[s],typeof window!="undefined"&&window!==null&&(i=new Image,u.push(i.src=n));return u},e.resolveURLTemplates=function(e,t){var n,r,i,s,o,u,a,f,l;r=[],t==null&&(t={}),"CACHEBUSTING"in t||(t.CACHEBUSTING=Math.round(Math.random()*1e10)),t.random=t.CACHEBUSTING;for(f=0,l=e.length;f<l;f++){n=e[f],u=n;if(!u)continue;for(i in t)a=t[i],s="["+i+"]",o="%%"+i+"%%",u=u.replace(s,a),u=u.replace(o,a);r.push(u)}return r},e.storage=function(){var e,t,n,r;try{n=typeof window!="undefined"&&window!==null?window.localStorage||window.sessionStorage:null}catch(i){r=i,n=null}t=function(e){var t,n;try{n="__VASTUtil__",e.setItem(n,n);if(e.getItem(n)!==n)return!0}catch(r){return t=r,!0}return!1};if(n==null||t(n))e={},n={length:0,getItem:function(t){return e[t]},setItem:function(t,n){e[t]=n,this.length=Object.keys(e).length},removeItem:function(t){delete e[t],this.length=Object.keys(e).length},clear:function(){e={},this.length=0}};return n}(),e}(),t.exports=r},{}]},{},[8])(8)} | |
http://requirejs.org/docs/errors.html#mismatch | |
[WbGeoLocation] enableGoogleClientLocation::false | |
[WbGeoLocation] enableGetByCoordinates::true | |
[TMZShowTimes] enableAutoLoad::false | |
[INFO][tmz/shortcodes/1.0.3/shortcodes] Object {_msg: Array[11]} | |
[INFO][tmz/shortcodes/1.0.3/shortcodes] Object {_msg: Array[11]} | |
[INFO][tmz/shortcodes/1.0.3/shortcodes] Object {_msg: Array[11]} | |
[INFO][tmz/shortcodes/1.0.3/shortcodes] Object {_msg: Array[11]} | |
[TMZShowTimes] getZip from cookie failed, no zip | |
[TMZShowTimes] no autoLoad, no zip | |
Uncaught Error: Mismatched anonymous define() module: function () { | |
var COMPILED = !0, goog = goog || {}; | |
goog.global = this; | |
goog.isDef = function(a) { | |
return void 0 !== a; | |
}; | |
goog.exportPath_ = function(a, b, c) { | |
a = a.split("."); | |
c = c || goog.global; | |
a[0] in c || !c.execScript || c.execScript("var " + a[0]); | |
for (var d;a.length && (d = a.shift());) { | |
!a.length && goog.isDef(b) ? c[d] = b : c = c[d] ? c[d] : c[d] = {}; | |
} | |
}; | |
goog.define = function(a, b) { | |
var c = b; | |
COMPILED || (goog.global.CLOSURE_UNCOMPILED_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_UNCOMPILED_DEFINES, a) ? c = goog.global.CLOSURE_UNCOMPILED_DEFINES[a] : goog.global.CLOSURE_DEFINES && Object.prototype.hasOwnProperty.call(goog.global.CLOSURE_DEFINES, a) && (c = goog.global.CLOSURE_DEFINES[a])); | |
goog.exportPath_(a, c); | |
}; | |
goog.DEBUG = !0; | |
goog.LOCALE = "en"; | |
goog.TRUSTED_SITE = !0; | |
goog.STRICT_MODE_COMPATIBLE = !1; | |
goog.DISALLOW_TEST_ONLY_CODE = COMPILED && !goog.DEBUG; | |
goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING = !1; | |
goog.provide = function(a) { | |
if (goog.isInModuleLoader_()) { | |
throw Error("goog.provide can not be used within a goog.module."); | |
} | |
if (!COMPILED && goog.isProvided_(a)) { | |
throw Error('Namespace "' + a + '" already declared.'); | |
} | |
goog.constructNamespace_(a); | |
}; | |
goog.constructNamespace_ = function(a, b) { | |
if (!COMPILED) { | |
delete goog.implicitNamespaces_[a]; | |
for (var c = a;(c = c.substring(0, c.lastIndexOf("."))) && !goog.getObjectByName(c);) { | |
goog.implicitNamespaces_[c] = !0; | |
} | |
} | |
goog.exportPath_(a, b); | |
}; | |
goog.VALID_MODULE_RE_ = /^[a-zA-Z_$][a-zA-Z0-9._$]*$/; | |
goog.module = function(a) { | |
if (!goog.isString(a) || !a || -1 == a.search(goog.VALID_MODULE_RE_)) { | |
throw Error("Invalid module identifier"); | |
} | |
if (!goog.isInModuleLoader_()) { | |
throw Error("Module " + a + " has been loaded incorrectly."); | |
} | |
if (goog.moduleLoaderState_.moduleName) { | |
throw Error("goog.module may only be called once per module."); | |
} | |
goog.moduleLoaderState_.moduleName = a; | |
if (!COMPILED) { | |
if (goog.isProvided_(a)) { | |
throw Error('Namespace "' + a + '" already declared.'); | |
} | |
delete goog.implicitNamespaces_[a]; | |
} | |
}; | |
goog.module.get = function(a) { | |
return goog.module.getInternal_(a); | |
}; | |
goog.module.getInternal_ = function(a) { | |
if (!COMPILED) { | |
return goog.isProvided_(a) ? a in goog.loadedModules_ ? goog.loadedModules_[a] : goog.getObjectByName(a) : null; | |
} | |
}; | |
goog.moduleLoaderState_ = null; | |
goog.isInModuleLoader_ = function() { | |
return null != goog.moduleLoaderState_; | |
}; | |
goog.module.declareLegacyNamespace = function() { | |
if (!COMPILED && !goog.isInModuleLoader_()) { | |
throw Error("goog.module.declareLegacyNamespace must be called from within a goog.module"); | |
} | |
if (!COMPILED && !goog.moduleLoaderState_.moduleName) { | |
throw Error("goog.module must be called prior to goog.module.declareLegacyNamespace."); | |
} | |
goog.moduleLoaderState_.declareLegacyNamespace = !0; | |
}; | |
goog.setTestOnly = function(a) { | |
if (goog.DISALLOW_TEST_ONLY_CODE) { | |
throw a = a || "", Error("Importing test-only code into non-debug environment" + (a ? ": " + a : ".")); | |
} | |
}; | |
goog.forwardDeclare = function(a) { | |
}; | |
COMPILED || (goog.isProvided_ = function(a) { | |
return a in goog.loadedModules_ || !goog.implicitNamespaces_[a] && goog.isDefAndNotNull(goog.getObjectByName(a)); | |
}, goog.implicitNamespaces_ = {"goog.module":!0}); | |
goog.getObjectByName = function(a, b) { | |
for (var c = a.split("."), d = b || goog.global, e;e = c.shift();) { | |
if (goog.isDefAndNotNull(d[e])) { | |
d = d[e]; | |
} else { | |
return null; | |
} | |
} | |
return d; | |
}; | |
goog.globalize = function(a, b) { | |
var c = b || goog.global, d; | |
for (d in a) { | |
c[d] = a[d]; | |
} | |
}; | |
goog.addDependency = function(a, b, c, d) { | |
if (goog.DEPENDENCIES_ENABLED) { | |
var e; | |
a = a.replace(/\\/g, "/"); | |
var f = goog.dependencies_; | |
d && "boolean" !== typeof d || (d = d ? {module:"goog"} : {}); | |
for (var g = 0;e = b[g];g++) { | |
f.nameToPath[e] = a, f.loadFlags[a] = d; | |
} | |
for (d = 0;b = c[d];d++) { | |
a in f.requires || (f.requires[a] = {}), f.requires[a][b] = !0; | |
} | |
} | |
}; | |
goog.ENABLE_DEBUG_LOADER = !0; | |
goog.logToConsole_ = function(a) { | |
goog.global.console && goog.global.console.error(a); | |
}; | |
goog.require = function(a) { | |
if (!COMPILED) { | |
goog.ENABLE_DEBUG_LOADER && goog.IS_OLD_IE_ && goog.maybeProcessDeferredDep_(a); | |
if (goog.isProvided_(a)) { | |
return goog.isInModuleLoader_() ? goog.module.getInternal_(a) : null; | |
} | |
if (goog.ENABLE_DEBUG_LOADER) { | |
var b = goog.getPathFromDeps_(a); | |
if (b) { | |
return goog.writeScripts_(b), null; | |
} | |
} | |
a = "goog.require could not find: " + a; | |
goog.logToConsole_(a); | |
throw Error(a); | |
} | |
}; | |
goog.basePath = ""; | |
goog.nullFunction = function() { | |
}; | |
goog.abstractMethod = function() { | |
throw Error("unimplemented abstract method"); | |
}; | |
goog.addSingletonGetter = function(a) { | |
a.getInstance = function() { | |
if (a.instance_) { | |
return a.instance_; | |
} | |
goog.DEBUG && (goog.instantiatedSingletons_[goog.instantiatedSingletons_.length] = a); | |
return a.instance_ = new a; | |
}; | |
}; | |
goog.instantiatedSingletons_ = []; | |
goog.LOAD_MODULE_USING_EVAL = !0; | |
goog.SEAL_MODULE_EXPORTS = goog.DEBUG; | |
goog.loadedModules_ = {}; | |
goog.DEPENDENCIES_ENABLED = !COMPILED && goog.ENABLE_DEBUG_LOADER; | |
goog.ALWAYS_TRANSPILE = !1; | |
goog.NEVER_TRANSPILE = !1; | |
goog.DEPENDENCIES_ENABLED && (goog.dependencies_ = {loadFlags:{}, nameToPath:{}, requires:{}, visited:{}, written:{}, deferred:{}}, goog.inHtmlDocument_ = function() { | |
var a = goog.global.document; | |
return null != a && "write" in a; | |
}, goog.findBasePath_ = function() { | |
if (goog.isDef(goog.global.CLOSURE_BASE_PATH)) { | |
goog.basePath = goog.global.CLOSURE_BASE_PATH; | |
} else { | |
if (goog.inHtmlDocument_()) { | |
for (var a = goog.global.document.getElementsByTagName("SCRIPT"), b = a.length - 1;0 <= b;--b) { | |
var c = a[b].src, d = c.lastIndexOf("?"), d = -1 == d ? c.length : d; | |
if ("base.js" == c.substr(d - 7, 7)) { | |
goog.basePath = c.substr(0, d - 7); | |
break; | |
} | |
} | |
} | |
} | |
}, goog.importScript_ = function(a, b) { | |
(goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_)(a, b) && (goog.dependencies_.written[a] = !0); | |
}, goog.IS_OLD_IE_ = !(goog.global.atob || !goog.global.document || !goog.global.document.all), goog.importProcessedScript_ = function(a, b, c) { | |
goog.importScript_("", 'goog.retrieveAndExec_("' + a + '", ' + b + ", " + c + ");"); | |
}, goog.queuedModules_ = [], goog.wrapModule_ = function(a, b) { | |
return goog.LOAD_MODULE_USING_EVAL && goog.isDef(goog.global.JSON) ? "goog.loadModule(" + goog.global.JSON.stringify(b + "\n//# sourceURL=" + a + "\n") + ");" : 'goog.loadModule(function(exports) {"use strict";' + b + "\n;return exports});\n//# sourceURL=" + a + "\n"; | |
}, goog.loadQueuedModules_ = function() { | |
var a = goog.queuedModules_.length; | |
if (0 < a) { | |
var b = goog.queuedModules_; | |
goog.queuedModules_ = []; | |
for (var c = 0;c < a;c++) { | |
goog.maybeProcessDeferredPath_(b[c]); | |
} | |
} | |
}, goog.maybeProcessDeferredDep_ = function(a) { | |
goog.isDeferredModule_(a) && goog.allDepsAreAvailable_(a) && (a = goog.getPathFromDeps_(a), goog.maybeProcessDeferredPath_(goog.basePath + a)); | |
}, goog.isDeferredModule_ = function(a) { | |
var b = (a = goog.getPathFromDeps_(a)) && goog.dependencies_.loadFlags[a] || {}; | |
return a && ("goog" == b.module || goog.needsTranspile_(b.lang)) ? goog.basePath + a in goog.dependencies_.deferred : !1; | |
}, goog.allDepsAreAvailable_ = function(a) { | |
if ((a = goog.getPathFromDeps_(a)) && a in goog.dependencies_.requires) { | |
for (var b in goog.dependencies_.requires[a]) { | |
if (!goog.isProvided_(b) && !goog.isDeferredModule_(b)) { | |
return !1; | |
} | |
} | |
} | |
return !0; | |
}, goog.maybeProcessDeferredPath_ = function(a) { | |
if (a in goog.dependencies_.deferred) { | |
var b = goog.dependencies_.deferred[a]; | |
delete goog.dependencies_.deferred[a]; | |
goog.globalEval(b); | |
} | |
}, goog.loadModuleFromUrl = function(a) { | |
goog.retrieveAndExec_(a, !0, !1); | |
}, goog.loadModule = function(a) { | |
var b = goog.moduleLoaderState_; | |
try { | |
goog.moduleLoaderState_ = {moduleName:void 0, declareLegacyNamespace:!1}; | |
var c; | |
if (goog.isFunction(a)) { | |
c = a.call(goog.global, {}); | |
} else { | |
if (goog.isString(a)) { | |
c = goog.loadModuleFromSource_.call(goog.global, a); | |
} else { | |
throw Error("Invalid module definition"); | |
} | |
} | |
var d = goog.moduleLoaderState_.moduleName; | |
if (!goog.isString(d) || !d) { | |
throw Error('Invalid module name "' + d + '"'); | |
} | |
goog.moduleLoaderState_.declareLegacyNamespace ? goog.constructNamespace_(d, c) : goog.SEAL_MODULE_EXPORTS && Object.seal && Object.seal(c); | |
goog.loadedModules_[d] = c; | |
} finally { | |
goog.moduleLoaderState_ = b; | |
} | |
}, goog.loadModuleFromSource_ = function(a) { | |
eval(a); | |
return {}; | |
}, goog.writeScriptSrcNode_ = function(a) { | |
goog.global.document.write('<script type="text/javascript" src="' + a + '">\x3c/script>'); | |
}, goog.appendScriptSrcNode_ = function(a) { | |
var b = goog.global.document, c = b.createElement("script"); | |
c.type = "text/javascript"; | |
c.src = a; | |
c.defer = !1; | |
c.async = !1; | |
b.head.appendChild(c); | |
}, goog.writeScriptTag_ = function(a, b) { | |
if (goog.inHtmlDocument_()) { | |
var c = goog.global.document; | |
if (!goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING && "complete" == c.readyState) { | |
if (/\bdeps.js$/.test(a)) { | |
return !1; | |
} | |
throw Error('Cannot write "' + a + '" after document load'); | |
} | |
if (void 0 === b) { | |
if (goog.IS_OLD_IE_) { | |
var d = " onreadystatechange='goog.onScriptLoad_(this, " + ++goog.lastNonModuleScriptIndex_ + ")' "; | |
c.write('<script type="text/javascript" src="' + a + '"' + d + ">\x3c/script>"); | |
} else { | |
goog.ENABLE_CHROME_APP_SAFE_SCRIPT_LOADING ? goog.appendScriptSrcNode_(a) : goog.writeScriptSrcNode_(a); | |
} | |
} else { | |
c.write('<script type="text/javascript">' + b + "\x3c/script>"); | |
} | |
return !0; | |
} | |
return !1; | |
}, goog.needsTranspile_ = function(a) { | |
if (goog.ALWAYS_TRANSPILE) { | |
return !0; | |
} | |
if (goog.NEVER_TRANSPILE) { | |
return !1; | |
} | |
if (!goog.transpiledLanguages_) { | |
goog.transpiledLanguages_ = {es5:!0, es6:!0, "es6-impl":!0}; | |
try { | |
goog.transpiledLanguages_.es5 = eval("[1,].length!=1"), eval('(()=>{"use strict";let a={};const X=class{constructor(){}x(z){return new Map([...arguments]).get(z[0])==3}};return new X().x([a,3])})()') && (goog.transpiledLanguages_["es6-impl"] = !1), eval('(()=>{"use strict";class X{constructor(){if(new.target!=String)throw 1;this.x=42}}let q=Reflect.construct(X,[],String);if(q.x!=42||!(q instanceof String))throw 1;for(const a of[2,3]){if(a==2)continue;function f(z={a}){let a=0;return z.a}{function f(){return 0;}}return f()==3}})()') && | |
(goog.transpiledLanguages_.es6 = !1); | |
} catch (b) { | |
} | |
} | |
return !!goog.transpiledLanguages_[a]; | |
}, goog.transpiledLanguages_ = null, goog.lastNonModuleScriptIndex_ = 0, goog.onScriptLoad_ = function(a, b) { | |
"complete" == a.readyState && goog.lastNonModuleScriptIndex_ == b && goog.loadQueuedModules_(); | |
return !0; | |
}, goog.writeScripts_ = function(a) { | |
function b(a) { | |
if (!(a in e.written || a in e.visited)) { | |
e.visited[a] = !0; | |
if (a in e.requires) { | |
for (var f in e.requires[a]) { | |
if (!goog.isProvided_(f)) { | |
if (f in e.nameToPath) { | |
b(e.nameToPath[f]); | |
} else { | |
throw Error("Undefined nameToPath for " + f); | |
} | |
} | |
} | |
} | |
a in d || (d[a] = !0, c.push(a)); | |
} | |
} | |
var c = [], d = {}, e = goog.dependencies_; | |
b(a); | |
for (a = 0;a < c.length;a++) { | |
var f = c[a]; | |
goog.dependencies_.written[f] = !0; | |
} | |
var g = goog.moduleLoaderState_; | |
goog.moduleLoaderState_ = null; | |
for (a = 0;a < c.length;a++) { | |
if (f = c[a]) { | |
var h = e.loadFlags[f] || {}, k = goog.needsTranspile_(h.lang); | |
"goog" == h.module || k ? goog.importProcessedScript_(goog.basePath + f, "goog" == h.module, k) : goog.importScript_(goog.basePath + f); | |
} else { | |
throw goog.moduleLoaderState_ = g, Error("Undefined script input"); | |
} | |
} | |
goog.moduleLoaderState_ = g; | |
}, goog.getPathFromDeps_ = function(a) { | |
return a in goog.dependencies_.nameToPath ? goog.dependencies_.nameToPath[a] : null; | |
}, goog.findBasePath_(), goog.global.CLOSURE_NO_DEPS || goog.importScript_(goog.basePath + "deps.js")); | |
goog.normalizePath_ = function(a) { | |
a = a.split("/"); | |
for (var b = 0;b < a.length;) { | |
"." == a[b] ? a.splice(b, 1) : b && ".." == a[b] && a[b - 1] && ".." != a[b - 1] ? a.splice(--b, 2) : b++; | |
} | |
return a.join("/"); | |
}; | |
goog.loadFileSync_ = function(a) { | |
if (goog.global.CLOSURE_LOAD_FILE_SYNC) { | |
return goog.global.CLOSURE_LOAD_FILE_SYNC(a); | |
} | |
try { | |
var b = new goog.global.XMLHttpRequest; | |
b.open("get", a, !1); | |
b.send(); | |
return 0 == b.status || 200 == b.status ? b.responseText : null; | |
} catch (c) { | |
return null; | |
} | |
}; | |
goog.retrieveAndExec_ = function(a, b, c) { | |
if (!COMPILED) { | |
var d = a; | |
a = goog.normalizePath_(a); | |
var e = goog.global.CLOSURE_IMPORT_SCRIPT || goog.writeScriptTag_, f = goog.loadFileSync_(a); | |
if (null == f) { | |
throw Error('Load of "' + a + '" failed'); | |
} | |
c && (f = goog.transpile_.call(goog.global, f, a)); | |
f = b ? goog.wrapModule_(a, f) : f + ("\n//# sourceURL=" + a); | |
goog.IS_OLD_IE_ ? (goog.dependencies_.deferred[d] = f, goog.queuedModules_.push(d)) : e(a, f); | |
} | |
}; | |
goog.transpile_ = function(a, b) { | |
var c = goog.global.$jscomp; | |
c || (goog.global.$jscomp = c = {}); | |
var d = c.transpile; | |
if (!d) { | |
var e = goog.basePath + "transpile.js", f = goog.loadFileSync_(e); | |
f && (eval(f + "\n//# sourceURL=" + e), c = goog.global.$jscomp, d = c.transpile); | |
} | |
d || (d = c.transpile = function(a, b) { | |
goog.logToConsole_(b + " requires transpilation but no transpiler was found."); | |
return a; | |
}); | |
return d(a, b); | |
}; | |
goog.typeOf = function(a) { | |
var b = typeof a; | |
if ("object" == b) { | |
if (a) { | |
if (a instanceof Array) { | |
return "array"; | |
} | |
if (a instanceof Object) { | |
return b; | |
} | |
var c = Object.prototype.toString.call(a); | |
if ("[object Window]" == c) { | |
return "object"; | |
} | |
if ("[object Array]" == c || "number" == typeof a.length && "undefined" != typeof a.splice && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("splice")) { | |
return "array"; | |
} | |
if ("[object Function]" == c || "undefined" != typeof a.call && "undefined" != typeof a.propertyIsEnumerable && !a.propertyIsEnumerable("call")) { | |
return "function"; | |
} | |
} else { | |
return "null"; | |
} | |
} else { | |
if ("function" == b && "undefined" == typeof a.call) { | |
return "object"; | |
} | |
} | |
return b; | |
}; | |
goog.isNull = function(a) { | |
return null === a; | |
}; | |
goog.isDefAndNotNull = function(a) { | |
return null != a; | |
}; | |
goog.isArray = function(a) { | |
return "array" == goog.typeOf(a); | |
}; | |
goog.isArrayLike = function(a) { | |
var b = goog.typeOf(a); | |
return "array" == b || "object" == b && "number" == typeof a.length; | |
}; | |
goog.isDateLike = function(a) { | |
return goog.isObject(a) && "function" == typeof a.getFullYear; | |
}; | |
goog.isString = function(a) { | |
return "string" == typeof a; | |
}; | |
goog.isBoolean = function(a) { | |
return "boolean" == typeof a; | |
}; | |
goog.isNumber = function(a) { | |
return "number" == typeof a; | |
}; | |
goog.isFunction = function(a) { | |
return "function" == goog.typeOf(a); | |
}; | |
goog.isObject = function(a) { | |
var b = typeof a; | |
return "object" == b && null != a || "function" == b; | |
}; | |
goog.getUid = function(a) { | |
return a[goog.UID_PROPERTY_] || (a[goog.UID_PROPERTY_] = ++goog.uidCounter_); | |
}; | |
goog.hasUid = function(a) { | |
return !!a[goog.UID_PROPERTY_]; | |
}; | |
goog.removeUid = function(a) { | |
null !== a && "removeAttribute" in a && a.removeAttribute(goog.UID_PROPERTY_); | |
try { | |
delete a[goog.UID_PROPERTY_]; | |
} catch (b) { | |
} | |
}; | |
goog.UID_PROPERTY_ = "closure_uid_" + (1E9 * Math.random() >>> 0); | |
goog.uidCounter_ = 0; | |
goog.getHashCode = goog.getUid; | |
goog.removeHashCode = goog.removeUid; | |
goog.cloneObject = function(a) { | |
var b = goog.typeOf(a); | |
if ("object" == b || "array" == b) { | |
if (a.clone) { | |
return a.clone(); | |
} | |
var b = "array" == b ? [] : {}, c; | |
for (c in a) { | |
b[c] = goog.cloneObject(a[c]); | |
} | |
return b; | |
} | |
return a; | |
}; | |
goog.bindNative_ = function(a, b, c) { | |
return a.call.apply(a.bind, arguments); | |
}; | |
goog.bindJs_ = function(a, b, c) { | |
if (!a) { | |
throw Error(); | |
} | |
if (2 < arguments.length) { | |
var d = Array.prototype.slice.call(arguments, 2); | |
return function() { | |
var c = Array.prototype.slice.call(arguments); | |
Array.prototype.unshift.apply(c, d); | |
return a.apply(b, c); | |
}; | |
} | |
return function() { | |
return a.apply(b, arguments); | |
}; | |
}; | |
goog.bind = function(a, b, c) { | |
Function.prototype.bind && -1 != Function.prototype.bind.toString().indexOf("native code") ? goog.bind = goog.bindNative_ : goog.bind = goog.bindJs_; | |
return goog.bind.apply(null, arguments); | |
}; | |
goog.partial = function(a, b) { | |
var c = Array.prototype.slice.call(arguments, 1); | |
return function() { | |
var b = c.slice(); | |
b.push.apply(b, arguments); | |
return a.apply(this, b); | |
}; | |
}; | |
goog.mixin = function(a, b) { | |
for (var c in b) { | |
a[c] = b[c]; | |
} | |
}; | |
goog.now = goog.TRUSTED_SITE && Date.now || function() { | |
return +new Date; | |
}; | |
goog.globalEval = function(a) { | |
if (goog.global.execScript) { | |
goog.global.execScript(a, "JavaScript"); | |
} else { | |
if (goog.global.eval) { | |
if (null == goog.evalWorksForGlobals_) { | |
if (goog.global.eval("var _evalTest_ = 1;"), "undefined" != typeof goog.global._evalTest_) { | |
try { | |
delete goog.global._evalTest_; | |
} catch (d) { | |
} | |
goog.evalWorksForGlobals_ = !0; | |
} else { | |
goog.evalWorksForGlobals_ = !1; | |
} | |
} | |
if (goog.evalWorksForGlobals_) { | |
goog.global.eval(a); | |
} else { | |
var b = goog.global.document, c = b.createElement("SCRIPT"); | |
c.type = "text/javascript"; | |
c.defer = !1; | |
c.appendChild(b.createTextNode(a)); | |
b.body.appendChild(c); | |
b.body.removeChild(c); | |
} | |
} else { | |
throw Error("goog.globalEval not available"); | |
} | |
} | |
}; | |
goog.evalWorksForGlobals_ = null; | |
goog.getCssName = function(a, b) { | |
var c = function(a) { | |
return goog.cssNameMapping_[a] || a; | |
}, d = function(a) { | |
a = a.split("-"); | |
for (var b = [], d = 0;d < a.length;d++) { | |
b.push(c(a[d])); | |
} | |
return b.join("-"); | |
}, d = goog.cssNameMapping_ ? "BY_WHOLE" == goog.cssNameMappingStyle_ ? c : d : function(a) { | |
return a; | |
}; | |
return b ? a + "-" + d(b) : d(a); | |
}; | |
goog.setCssNameMapping = function(a, b) { | |
goog.cssNameMapping_ = a; | |
goog.cssNameMappingStyle_ = b; | |
}; | |
!COMPILED && goog.global.CLOSURE_CSS_NAME_MAPPING && (goog.cssNameMapping_ = goog.global.CLOSURE_CSS_NAME_MAPPING); | |
goog.getMsg = function(a, b) { | |
b && (a = a.replace(/\{\$([^}]+)}/g, function(a, d) { | |
return null != b && d in b ? b[d] : a; | |
})); | |
return a; | |
}; | |
goog.getMsgWithFallback = function(a, b) { | |
return a; | |
}; | |
goog.exportSymbol = function(a, b, c) { | |
goog.exportPath_(a, b, c); | |
}; | |
goog.exportProperty = function(a, b, c) { | |
a[b] = c; | |
}; | |
goog.inherits = function(a, b) { | |
function c() { | |
} | |
c.prototype = b.prototype; | |
a.superClass_ = b.prototype; | |
a.prototype = new c; | |
a.prototype.constructor = a; | |
a.base = function(a, c, f) { | |
for (var g = Array(arguments.length - 2), h = 2;h < arguments.length;h++) { | |
g[h - 2] = arguments[h]; | |
} | |
return b.prototype[c].apply(a, g); | |
}; | |
}; | |
goog.base = function(a, b, c) { | |
var d = arguments.callee.caller; | |
if (goog.STRICT_MODE_COMPATIBLE || goog.DEBUG && !d) { | |
throw Error("arguments.caller not defined. goog.base() cannot be used with strict mode code. See http://www.ecma-international.org/ecma-262/5.1/#sec-C"); | |
} | |
if (d.superClass_) { | |
for (var e = Array(arguments.length - 1), f = 1;f < arguments.length;f++) { | |
e[f - 1] = arguments[f]; | |
} | |
return d.superClass_.constructor.apply(a, e); | |
} | |
e = Array(arguments.length - 2); | |
for (f = 2;f < arguments.length;f++) { | |
e[f - 2] = arguments[f]; | |
} | |
for (var f = !1, g = a.constructor;g;g = g.superClass_ && g.superClass_.constructor) { | |
if (g.prototype[b] === d) { | |
f = !0; | |
} else { | |
if (f) { | |
return g.prototype[b].apply(a, e); | |
} | |
} | |
} | |
if (a[b] === d) { | |
return a.constructor.prototype[b].apply(a, e); | |
} | |
throw Error("goog.base called from a method of one name to a method of a different name"); | |
}; | |
goog.scope = function(a) { | |
if (goog.isInModuleLoader_()) { | |
throw Error("goog.scope is not supported within a goog.module."); | |
} | |
a.call(goog.global); | |
}; | |
COMPILED || (goog.global.COMPILED = COMPILED); | |
goog.defineClass = function(a, b) { | |
var c = b.constructor, d = b.statics; | |
c && c != Object.prototype.constructor || (c = function() { | |
throw Error("cannot instantiate an interface (no constructor defined)."); | |
}); | |
c = goog.defineClass.createSealingConstructor_(c, a); | |
a && goog.inherits(c, a); | |
delete b.constructor; | |
delete b.statics; | |
goog.defineClass.applyProperties_(c.prototype, b); | |
null != d && (d instanceof Function ? d(c) : goog.defineClass.applyProperties_(c, d)); | |
return c; | |
}; | |
goog.defineClass.SEAL_CLASS_INSTANCES = goog.DEBUG; | |
goog.defineClass.createSealingConstructor_ = function(a, b) { | |
if (!goog.defineClass.SEAL_CLASS_INSTANCES) { | |
return a; | |
} | |
var c = !goog.defineClass.isUnsealable_(b), d = function() { | |
var b = a.apply(this, arguments) || this; | |
b[goog.UID_PROPERTY_] = b[goog.UID_PROPERTY_]; | |
this.constructor === d && c && Object.seal instanceof Function && Object.seal(b); | |
return b; | |
}; | |
return d; | |
}; | |
goog.defineClass.isUnsealable_ = function(a) { | |
return a && a.prototype && a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_]; | |
}; | |
goog.defineClass.OBJECT_PROTOTYPE_FIELDS_ = "constructor hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf".split(" "); | |
goog.defineClass.applyProperties_ = function(a, b) { | |
for (var c in b) { | |
Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]); | |
} | |
for (var d = 0;d < goog.defineClass.OBJECT_PROTOTYPE_FIELDS_.length;d++) { | |
c = goog.defineClass.OBJECT_PROTOTYPE_FIELDS_[d], Object.prototype.hasOwnProperty.call(b, c) && (a[c] = b[c]); | |
} | |
}; | |
goog.tagUnsealableClass = function(a) { | |
!COMPILED && goog.defineClass.SEAL_CLASS_INSTANCES && (a.prototype[goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_] = !0); | |
}; | |
goog.UNSEALABLE_CONSTRUCTOR_PROPERTY_ = "goog_defineClass_legacy_unsealable"; | |
var axs = {}; | |
axs.browserUtils = {}; | |
axs.browserUtils.matchSelector = function(a, b) { | |
return a.matches ? a.matches(b) : a.webkitMatchesSelector ? a.webkitMatchesSelector(b) : a.mozMatchesSelector ? a.mozMatchesSelector(b) : a.msMatchesSelector ? a.msMatchesSelector(b) : !1; | |
}; | |
axs.constants = {}; | |
axs.constants.ARIA_ROLES = {alert:{namefrom:["author"], parent:["region"]}, alertdialog:{namefrom:["author"], namerequired:!0, parent:["alert", "dialog"]}, application:{namefrom:["author"], namerequired:!0, parent:["landmark"]}, article:{namefrom:["author"], parent:["document", "region"]}, banner:{namefrom:["author"], parent:["landmark"]}, button:{childpresentational:!0, namefrom:["contents", "author"], namerequired:!0, parent:["command"], properties:["aria-expanded", "aria-pressed"]}, checkbox:{namefrom:["contents", | |
"author"], namerequired:!0, parent:["input"], requiredProperties:["aria-checked"], properties:["aria-checked"]}, columnheader:{namefrom:["contents", "author"], namerequired:!0, parent:["gridcell", "sectionhead", "widget"], properties:["aria-sort"], scope:["row"]}, combobox:{mustcontain:["listbox", "textbox"], namefrom:["author"], namerequired:!0, parent:["select"], requiredProperties:["aria-expanded"], properties:["aria-expanded", "aria-autocomplete", "aria-required"]}, command:{"abstract":!0, namefrom:["author"], | |
parent:["widget"]}, complementary:{namefrom:["author"], parent:["landmark"]}, composite:{"abstract":!0, childpresentational:!1, namefrom:["author"], parent:["widget"], properties:["aria-activedescendant"]}, contentinfo:{namefrom:["author"], parent:["landmark"]}, definition:{namefrom:["author"], parent:["section"]}, dialog:{namefrom:["author"], namerequired:!0, parent:["window"]}, directory:{namefrom:["contents", "author"], parent:["list"]}, document:{namefrom:[" author"], namerequired:!0, parent:["structure"], | |
properties:["aria-expanded"]}, form:{namefrom:["author"], parent:["landmark"]}, grid:{mustcontain:["row", "rowgroup"], namefrom:["author"], namerequired:!0, parent:["composite", "region"], properties:["aria-level", "aria-multiselectable", "aria-readonly"]}, gridcell:{namefrom:["contents", "author"], namerequired:!0, parent:["section", "widget"], properties:["aria-readonly", "aria-required", "aria-selected"], scope:["row"]}, group:{namefrom:[" author"], parent:["section"], properties:["aria-activedescendant"]}, | |
heading:{namerequired:!0, parent:["sectionhead"], properties:["aria-level"]}, img:{childpresentational:!0, namefrom:["author"], namerequired:!0, parent:["section"]}, input:{"abstract":!0, namefrom:["author"], parent:["widget"]}, landmark:{"abstract":!0, namefrom:["contents", "author"], namerequired:!1, parent:["region"]}, link:{namefrom:["contents", "author"], namerequired:!0, parent:["command"], properties:["aria-expanded"]}, list:{mustcontain:["group", "listitem"], namefrom:["author"], parent:["region"]}, | |
listbox:{mustcontain:["option"], namefrom:["author"], namerequired:!0, parent:["list", "select"], properties:["aria-multiselectable", "aria-required"]}, listitem:{namefrom:["contents", "author"], namerequired:!0, parent:["section"], properties:["aria-level", "aria-posinset", "aria-setsize"], scope:["list"]}, log:{namefrom:[" author"], namerequired:!0, parent:["region"]}, main:{namefrom:["author"], parent:["landmark"]}, marquee:{namerequired:!0, parent:["section"]}, math:{childpresentational:!0, namefrom:["author"], | |
parent:["section"]}, menu:{mustcontain:["group", "menuitemradio", "menuitem", "menuitemcheckbox"], namefrom:["author"], namerequired:!0, parent:["list", "select"]}, menubar:{namefrom:["author"], parent:["menu"]}, menuitem:{namefrom:["contents", "author"], namerequired:!0, parent:["command"], scope:["menu", "menubar"]}, menuitemcheckbox:{namefrom:["contents", "author"], namerequired:!0, parent:["checkbox", "menuitem"], scope:["menu", "menubar"]}, menuitemradio:{namefrom:["contents", "author"], namerequired:!0, | |
parent:["menuitemcheckbox", "radio"], scope:["menu", "menubar"]}, navigation:{namefrom:["author"], parent:["landmark"]}, note:{namefrom:["author"], parent:["section"]}, option:{namefrom:["contents", "author"], namerequired:!0, parent:["input"], properties:["aria-checked", "aria-posinset", "aria-selected", "aria-setsize"]}, presentation:{parent:["structure"]}, progressbar:{childpresentational:!0, namefrom:["author"], namerequired:!0, parent:["range"]}, radio:{namefrom:["contents", "author"], namerequired:!0, | |
parent:["checkbox", "option"]}, radiogroup:{mustcontain:["radio"], namefrom:["author"], namerequired:!0, parent:["select"], properties:["aria-required"]}, range:{"abstract":!0, namefrom:["author"], parent:["widget"], properties:["aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-valuetext"]}, region:{namefrom:[" author"], parent:["section"]}, roletype:{"abstract":!0, properties:"aria-atomic aria-busy aria-controls aria-describedby aria-disabled aria-dropeffect aria-flowto aria-grabbed aria-haspopup aria-hidden aria-invalid aria-label aria-labelledby aria-live aria-owns aria-relevant".split(" ")}, | |
row:{mustcontain:["columnheader", "gridcell", "rowheader"], namefrom:["contents", "author"], parent:["group", "widget"], properties:["aria-level", "aria-selected"], scope:["grid", "rowgroup", "treegrid"]}, rowgroup:{mustcontain:["row"], namefrom:["contents", "author"], parent:["group"], scope:["grid"]}, rowheader:{namefrom:["contents", "author"], namerequired:!0, parent:["gridcell", "sectionhead", "widget"], properties:["aria-sort"], scope:["row"]}, search:{namefrom:["author"], parent:["landmark"]}, | |
section:{"abstract":!0, namefrom:["contents", "author"], parent:["structure"], properties:["aria-expanded"]}, sectionhead:{"abstract":!0, namefrom:["contents", "author"], parent:["structure"], properties:["aria-expanded"]}, select:{"abstract":!0, namefrom:["author"], parent:["composite", "group", "input"]}, separator:{childpresentational:!0, namefrom:["author"], parent:["structure"], properties:["aria-expanded", "aria-orientation"]}, scrollbar:{childpresentational:!0, namefrom:["author"], namerequired:!1, | |
parent:["input", "range"], requiredProperties:["aria-controls", "aria-orientation", "aria-valuemax", "aria-valuemin", "aria-valuenow"], properties:["aria-controls", "aria-orientation", "aria-valuemax", "aria-valuemin", "aria-valuenow"]}, slider:{childpresentational:!0, namefrom:["author"], namerequired:!0, parent:["input", "range"], requiredProperties:["aria-valuemax", "aria-valuemin", "aria-valuenow"], properties:["aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-orientation"]}, spinbutton:{namefrom:["author"], | |
namerequired:!0, parent:["input", "range"], requiredProperties:["aria-valuemax", "aria-valuemin", "aria-valuenow"], properties:["aria-valuemax", "aria-valuemin", "aria-valuenow", "aria-required"]}, status:{parent:["region"]}, structure:{"abstract":!0, parent:["roletype"]}, tab:{namefrom:["contents", "author"], parent:["sectionhead", "widget"], properties:["aria-selected"], scope:["tablist"]}, tablist:{mustcontain:["tab"], namefrom:["author"], parent:["composite", "directory"], properties:["aria-level"]}, | |
tabpanel:{namefrom:["author"], namerequired:!0, parent:["region"]}, textbox:{namefrom:["author"], namerequired:!0, parent:["input"], properties:["aria-activedescendant", "aria-autocomplete", "aria-multiline", "aria-readonly", "aria-required"]}, timer:{namefrom:["author"], namerequired:!0, parent:["status"]}, toolbar:{namefrom:["author"], parent:["group"]}, tooltip:{namerequired:!0, parent:["section"]}, tree:{mustcontain:["group", "treeitem"], namefrom:["author"], namerequired:!0, parent:["select"], | |
properties:["aria-multiselectable", "aria-required"]}, treegrid:{mustcontain:["row"], namefrom:["author"], namerequired:!0, parent:["grid", "tree"]}, treeitem:{namefrom:["contents", "author"], namerequired:!0, parent:["listitem", "option"], scope:["group", "tree"]}, widget:{"abstract":!0, parent:["roletype"]}, window:{"abstract":!0, namefrom:[" author"], parent:["roletype"], properties:["aria-expanded"]}}; | |
axs.constants.WIDGET_ROLES = {}; | |
axs.constants.addAllParentRolesToSet_ = function(a, b) { | |
if (a.parent) { | |
for (var c = a.parent, d = 0;d < c.length;d++) { | |
var e = c[d]; | |
b[e] = !0; | |
axs.constants.addAllParentRolesToSet_(axs.constants.ARIA_ROLES[e], b); | |
} | |
} | |
}; | |
axs.constants.addAllPropertiesToSet_ = function(a, b, c) { | |
var d = a[b]; | |
if (d) { | |
for (var e = 0;e < d.length;e++) { | |
c[d[e]] = !0; | |
} | |
} | |
if (a.parent) { | |
for (a = a.parent, d = 0;d < a.length;d++) { | |
axs.constants.addAllPropertiesToSet_(axs.constants.ARIA_ROLES[a[d]], b, c); | |
} | |
} | |
}; | |
for (var roleName in axs.constants.ARIA_ROLES) { | |
var role = axs.constants.ARIA_ROLES[roleName], propertiesSet = {}; | |
axs.constants.addAllPropertiesToSet_(role, "properties", propertiesSet); | |
role.propertiesSet = propertiesSet; | |
var requiredPropertiesSet = {}; | |
axs.constants.addAllPropertiesToSet_(role, "requiredProperties", requiredPropertiesSet); | |
role.requiredPropertiesSet = requiredPropertiesSet; | |
var parentRolesSet = {}; | |
axs.constants.addAllParentRolesToSet_(role, parentRolesSet); | |
role.allParentRolesSet = parentRolesSet; | |
"widget" in parentRolesSet && (axs.constants.WIDGET_ROLES[roleName] = role); | |
} | |
axs.constants.ARIA_PROPERTIES = {activedescendant:{type:"property", valueType:"idref"}, atomic:{defaultValue:"false", type:"property", valueType:"boolean"}, autocomplete:{defaultValue:"none", type:"property", valueType:"token", values:["inline", "list", "both", "none"]}, busy:{defaultValue:"false", type:"state", valueType:"boolean"}, checked:{defaultValue:"undefined", type:"state", valueType:"token", values:["true", "false", "mixed", "undefined"]}, controls:{type:"property", valueType:"idref_list"}, | |
describedby:{type:"property", valueType:"idref_list"}, disabled:{defaultValue:"false", type:"state", valueType:"boolean"}, dropeffect:{defaultValue:"none", type:"property", valueType:"token_list", values:"copy move link execute popup none".split(" ")}, expanded:{defaultValue:"undefined", type:"state", valueType:"token", values:["true", "false", "undefined"]}, flowto:{type:"property", valueType:"idref_list"}, grabbed:{defaultValue:"undefined", type:"state", valueType:"token", values:["true", "false", | |
"undefined"]}, haspopup:{defaultValue:"false", type:"property", valueType:"boolean"}, hidden:{defaultValue:"false", type:"state", valueType:"boolean"}, invalid:{defaultValue:"false", type:"state", valueType:"token", values:["grammar", "false", "spelling", "true"]}, label:{type:"property", valueType:"string"}, labelledby:{type:"property", valueType:"idref_list"}, level:{type:"property", valueType:"integer"}, live:{defaultValue:"off", type:"property", valueType:"token", values:["off", "polite", "assertive"]}, | |
multiline:{defaultValue:"false", type:"property", valueType:"boolean"}, multiselectable:{defaultValue:"false", type:"property", valueType:"boolean"}, orientation:{defaultValue:"vertical", type:"property", valueType:"token", values:["horizontal", "vertical"]}, owns:{type:"property", valueType:"idref_list"}, posinset:{type:"property", valueType:"integer"}, pressed:{defaultValue:"undefined", type:"state", valueType:"token", values:["true", "false", "mixed", "undefined"]}, readonly:{defaultValue:"false", | |
type:"property", valueType:"boolean"}, relevant:{defaultValue:"additions text", type:"property", valueType:"token_list", values:["additions", "removals", "text", "all"]}, required:{defaultValue:"false", type:"property", valueType:"boolean"}, selected:{defaultValue:"undefined", type:"state", valueType:"token", values:["true", "false", "undefined"]}, setsize:{type:"property", valueType:"integer"}, sort:{defaultValue:"none", type:"property", valueType:"token", values:["ascending", "descending", "none", | |
"other"]}, valuemax:{type:"property", valueType:"decimal"}, valuemin:{type:"property", valueType:"decimal"}, valuenow:{type:"property", valueType:"decimal"}, valuetext:{type:"property", valueType:"string"}}; | |
(function() { | |
for (var a in axs.constants.ARIA_PROPERTIES) { | |
var b = axs.constants.ARIA_PROPERTIES[a]; | |
if (b.values) { | |
for (var c = {}, d = 0;d < b.values.length;d++) { | |
c[b.values[d]] = !0; | |
} | |
b.valuesSet = c; | |
} | |
} | |
})(); | |
axs.constants.GLOBAL_PROPERTIES = axs.constants.ARIA_ROLES.roletype.propertiesSet; | |
axs.constants.NO_ROLE_NAME = " "; | |
axs.constants.WIDGET_ROLE_TO_NAME = {alert:"aria_role_alert", alertdialog:"aria_role_alertdialog", button:"aria_role_button", checkbox:"aria_role_checkbox", columnheader:"aria_role_columnheader", combobox:"aria_role_combobox", dialog:"aria_role_dialog", grid:"aria_role_grid", gridcell:"aria_role_gridcell", link:"aria_role_link", listbox:"aria_role_listbox", log:"aria_role_log", marquee:"aria_role_marquee", menu:"aria_role_menu", menubar:"aria_role_menubar", menuitem:"aria_role_menuitem", menuitemcheckbox:"aria_role_menuitemcheckbox", | |
menuitemradio:"aria_role_menuitemradio", option:axs.constants.NO_ROLE_NAME, progressbar:"aria_role_progressbar", radio:"aria_role_radio", radiogroup:"aria_role_radiogroup", rowheader:"aria_role_rowheader", scrollbar:"aria_role_scrollbar", slider:"aria_role_slider", spinbutton:"aria_role_spinbutton", status:"aria_role_status", tab:"aria_role_tab", tabpanel:"aria_role_tabpanel", textbox:"aria_role_textbox", timer:"aria_role_timer", toolbar:"aria_role_toolbar", tooltip:"aria_role_tooltip", treeitem:"aria_role_treeitem"}; | |
axs.constants.STRUCTURE_ROLE_TO_NAME = {article:"aria_role_article", application:"aria_role_application", banner:"aria_role_banner", columnheader:"aria_role_columnheader", complementary:"aria_role_complementary", contentinfo:"aria_role_contentinfo", definition:"aria_role_definition", directory:"aria_role_directory", document:"aria_role_document", form:"aria_role_form", group:"aria_role_group", heading:"aria_role_heading", img:"aria_role_img", list:"aria_role_list", listitem:"aria_role_listitem", | |
main:"aria_role_main", math:"aria_role_math", navigation:"aria_role_navigation", note:"aria_role_note", region:"aria_role_region", rowheader:"aria_role_rowheader", search:"aria_role_search", separator:"aria_role_separator"}; | |
axs.constants.ATTRIBUTE_VALUE_TO_STATUS = [{name:"aria-autocomplete", values:{inline:"aria_autocomplete_inline", list:"aria_autocomplete_list", both:"aria_autocomplete_both"}}, {name:"aria-checked", values:{"true":"aria_checked_true", "false":"aria_checked_false", mixed:"aria_checked_mixed"}}, {name:"aria-disabled", values:{"true":"aria_disabled_true"}}, {name:"aria-expanded", values:{"true":"aria_expanded_true", "false":"aria_expanded_false"}}, {name:"aria-invalid", values:{"true":"aria_invalid_true", | |
grammar:"aria_invalid_grammar", spelling:"aria_invalid_spelling"}}, {name:"aria-multiline", values:{"true":"aria_multiline_true"}}, {name:"aria-multiselectable", values:{"true":"aria_multiselectable_true"}}, {name:"aria-pressed", values:{"true":"aria_pressed_true", "false":"aria_pressed_false", mixed:"aria_pressed_mixed"}}, {name:"aria-readonly", values:{"true":"aria_readonly_true"}}, {name:"aria-required", values:{"true":"aria_required_true"}}, {name:"aria-selected", values:{"true":"aria_selected_true", | |
"false":"aria_selected_false"}}]; | |
axs.constants.INPUT_TYPE_TO_INFORMATION_TABLE_MSG = {button:"input_type_button", checkbox:"input_type_checkbox", color:"input_type_color", datetime:"input_type_datetime", "datetime-local":"input_type_datetime_local", date:"input_type_date", email:"input_type_email", file:"input_type_file", image:"input_type_image", month:"input_type_month", number:"input_type_number", password:"input_type_password", radio:"input_type_radio", range:"input_type_range", reset:"input_type_reset", search:"input_type_search", | |
submit:"input_type_submit", tel:"input_type_tel", text:"input_type_text", url:"input_type_url", week:"input_type_week"}; | |
axs.constants.TAG_TO_INFORMATION_TABLE_VERBOSE_MSG = {A:"tag_link", BUTTON:"tag_button", H1:"tag_h1", H2:"tag_h2", H3:"tag_h3", H4:"tag_h4", H5:"tag_h5", H6:"tag_h6", LI:"tag_li", OL:"tag_ol", SELECT:"tag_select", TEXTAREA:"tag_textarea", UL:"tag_ul", SECTION:"tag_section", NAV:"tag_nav", ARTICLE:"tag_article", ASIDE:"tag_aside", HGROUP:"tag_hgroup", HEADER:"tag_header", FOOTER:"tag_footer", TIME:"tag_time", MARK:"tag_mark"}; | |
axs.constants.TAG_TO_INFORMATION_TABLE_BRIEF_MSG = {BUTTON:"tag_button", SELECT:"tag_select", TEXTAREA:"tag_textarea"}; | |
axs.constants.MIXED_VALUES = {"true":!0, "false":!0, mixed:!0}; | |
axs.constants.Severity = {INFO:"Info", WARNING:"Warning", SEVERE:"Severe"}; | |
axs.constants.AuditResult = {PASS:"PASS", FAIL:"FAIL", NA:"NA"}; | |
axs.constants.InlineElements = {TT:!0, I:!0, B:!0, BIG:!0, SMALL:!0, EM:!0, STRONG:!0, DFN:!0, CODE:!0, SAMP:!0, KBD:!0, VAR:!0, CITE:!0, ABBR:!0, ACRONYM:!0, A:!0, IMG:!0, OBJECT:!0, BR:!0, SCRIPT:!0, MAP:!0, Q:!0, SUB:!0, SUP:!0, SPAN:!0, BDO:!0, INPUT:!0, SELECT:!0, TEXTAREA:!0, LABEL:!0, BUTTON:!0}; | |
axs.constants.NATIVELY_DISABLEABLE = {BUTTON:!0, INPUT:!0, SELECT:!0, TEXTAREA:!0, FIELDSET:!0, OPTGROUP:!0, OPTION:!0}; | |
axs.constants.ARIA_TO_HTML_ATTRIBUTE = {"aria-checked":"checked", "aria-disabled":"disabled", "aria-hidden":"hidden", "aria-expanded":"open", "aria-valuemax":"max", "aria-valuemin":"min", "aria-readonly":"readonly", "aria-required":"required", "aria-selected":"selected", "aria-valuenow":"value"}; | |
axs.constants.TAG_TO_IMPLICIT_SEMANTIC_INFO = {A:[{role:"link", allowed:"button checkbox menuitem menuitemcheckbox menuitemradio tab treeitem".split(" "), selector:"a[href]"}], ADDRESS:[{role:"", allowed:["contentinfo", "presentation"]}], AREA:[{role:"link", selector:"area[href]"}], ARTICLE:[{role:"article", allowed:["presentation", "article", "document", "application", "main"]}], ASIDE:[{role:"complementary", allowed:["note", "complementary", "search", "presentation"]}], AUDIO:[{role:"", allowed:["application", | |
"presentation"]}], BASE:[{role:"", reserved:!0}], BODY:[{role:"document", allowed:["presentation"]}], BUTTON:[{role:"button", allowed:["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio"], selector:'button:not([aria-pressed]):not([type="menu"])'}, {role:"button", allowed:["button"], selector:"button[aria-pressed]"}, {role:"button", attributes:{"aria-haspopup":!0}, allowed:["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio"], selector:'button[type="menu"]'}], CAPTION:[{role:"", | |
allowed:["presentation"]}], COL:[{role:"", reserved:!0}], COLGROUP:[{role:"", reserved:!0}], DATALIST:[{role:"listbox", attributes:{"aria-multiselectable":!1}, allowed:["presentation"]}], DEL:[{role:"", allowed:["*"]}], DD:[{role:"", allowed:["presentation"]}], DT:[{role:"", allowed:["presentation"]}], DETAILS:[{role:"group", allowed:["group", "presentation"]}], DIALOG:[{role:"dialog", allowed:"dialog alert alertdialog application log marquee status".split(" "), selector:"dialog[open]"}, {role:"dialog", | |
attributes:{"aria-hidden":!0}, allowed:"dialog alert alertdialog application log marquee status".split(" "), selector:"dialog:not([open])"}], DIV:[{role:"", allowed:["*"]}], DL:[{role:"list", allowed:["presentation"]}], EMBED:[{role:"", allowed:["application", "document", "img", "presentation"]}], FIGURE:[{role:"", allowed:["*"]}], FOOTER:[{role:"", allowed:["contentinfo", "presentation"]}], FORM:[{role:"form", allowed:["presentation"]}], P:[{role:"", allowed:["*"]}], PRE:[{role:"", allowed:["*"]}], | |
BLOCKQUOTE:[{role:"", allowed:["*"]}], H1:[{role:"heading"}], H2:[{role:"heading"}], H3:[{role:"heading"}], H4:[{role:"heading"}], H5:[{role:"heading"}], H6:[{role:"heading"}], HEAD:[{role:"", reserved:!0}], HEADER:[{role:"", allowed:["banner", "presentation"]}], HR:[{role:"separator", allowed:["presentation"]}], HTML:[{role:"", reserved:!0}], IFRAME:[{role:"", allowed:["application", "document", "img", "presentation"], selector:"iframe:not([seamless])"}, {role:"", allowed:["application", "document", | |
"img", "presentation", "group"], selector:"iframe[seamless]"}], IMG:[{role:"presentation", reserved:!0, selector:'img[alt=""]'}, {role:"img", allowed:["*"], selector:'img[alt]:not([alt=""])'}], INPUT:[{role:"button", allowed:["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio"], selector:'input[type="button"]:not([aria-pressed])'}, {role:"button", allowed:["button"], selector:'input[type="button"][aria-pressed]'}, {role:"checkbox", allowed:["checkbox"], selector:'input[type="checkbox"]'}, | |
{role:"", selector:'input[type="color"]'}, {role:"", selector:'input[type="date"]'}, {role:"", selector:'input[type="datetime"]'}, {role:"textbox", selector:'input[type="email"]:not([list])'}, {role:"", selector:'input[type="file"]'}, {role:"", reserved:!0, selector:'input[type="hidden"]'}, {role:"button", allowed:["button"], selector:'input[type="image"][aria-pressed]'}, {role:"button", allowed:["link", "menuitem", "menuitemcheckbox", "menuitemradio", "radio"], selector:'input[type="image"]:not([aria-pressed])'}, | |
{role:"", selector:'input[type="month"]'}, {role:"", selector:'input[type="number"]'}, {role:"textbox", selector:'input[type="password"]'}, {role:"radio", allowed:["menuitemradio"], selector:'input[type="radio"]'}, {role:"slider", selector:'input[type="range"]'}, {role:"button", selector:'input[type="reset"]'}, {role:"combobox", selector:'input[type="search"][list]'}, {role:"textbox", selector:'input[type="search"]:not([list])'}, {role:"button", selector:'input[type="submit"]'}, {role:"combobox", | |
selector:'input[type="tel"][list]'}, {role:"textbox", selector:'input[type="tel"]:not([list])'}, {role:"combobox", selector:'input[type="text"][list]'}, {role:"textbox", selector:'input[type="text"]:not([list])'}, {role:"textbox", selector:"input:not([type])"}, {role:"", selector:'input[type="time"]'}, {role:"combobox", selector:'input[type="url"][list]'}, {role:"textbox", selector:'input[type="url"]:not([list])'}, {role:"", selector:'input[type="week"]'}], INS:[{role:"", allowed:["*"]}], KEYGEN:[{role:""}], | |
LABEL:[{role:"", allowed:["presentation"]}], LI:[{role:"listitem", allowed:"menuitem menuitemcheckbox menuitemradio option tab treeitem presentation".split(" "), selector:'ol:not([role="presentation"])>li, ul:not([role="presentation"])>li'}, {role:"listitem", allowed:"listitem menuitem menuitemcheckbox menuitemradio option tab treeitem presentation".split(" "), selector:'ol[role="presentation"]>li, ul[role="presentation"]>li'}], LINK:[{role:"link", reserved:!0, selector:"link[href]"}], MAIN:[{role:"", | |
allowed:["main", "presentation"]}], MAP:[{role:"", reserved:!0}], MATH:[{role:"", allowed:["presentation"]}], MENU:[{role:"toolbar", selector:'menu[type="toolbar"]'}], MENUITEM:[{role:"menuitem", selector:'menuitem[type="command"]'}, {role:"menuitemcheckbox", selector:'menuitem[type="checkbox"]'}, {role:"menuitemradio", selector:'menuitem[type="radio"]'}], META:[{role:"", reserved:!0}], METER:[{role:"progressbar", allowed:["presentation"]}], NAV:[{role:"navigation", allowed:["navigation", "presentation"]}], | |
NOSCRIPT:[{role:"", reserved:!0}], OBJECT:[{role:"", allowed:["application", "document", "img", "presentation"]}], OL:[{role:"list", allowed:"directory group listbox menu menubar tablist toolbar tree presentation".split(" ")}], OPTGROUP:[{role:"", allowed:["presentation"]}], OPTION:[{role:"option"}], OUTPUT:[{role:"status", allowed:["*"]}], PARAM:[{role:"", reserved:!0}], PICTURE:[{role:"", reserved:!0}], PROGRESS:[{role:"progressbar", allowed:["presentation"]}], SCRIPT:[{role:"", reserved:!0}], | |
SECTION:[{role:"region", allowed:"alert alertdialog application contentinfo dialog document log marquee search status presentation".split(" ")}], SELECT:[{role:"listbox"}], SOURCE:[{role:"", reserved:!0}], SPAN:[{role:"", allowed:["*"]}], STYLE:[{role:"", reserved:!0}], SVG:[{role:"", allowed:["application", "document", "img", "presentation"]}], SUMMARY:[{role:"", allowed:["presentation"]}], TABLE:[{role:"", allowed:["*"]}], TEMPLATE:[{role:"", reserved:!0}], TEXTAREA:[{role:"textbox"}], TBODY:[{role:"rowgroup", | |
allowed:["*"]}], THEAD:[{role:"rowgroup", allowed:["*"]}], TFOOT:[{role:"rowgroup", allowed:["*"]}], TITLE:[{role:"", reserved:!0}], TD:[{role:"", allowed:["*"]}], TH:[{role:"", allowed:["*"]}], TR:[{role:"", allowed:["*"]}], TRACK:[{role:"", reserved:!0}], UL:[{role:"list", allowed:"directory group listbox menu menubar tablist toolbar tree presentation".split(" ")}], VIDEO:[{role:"", allowed:["application", "presentation"]}]}; | |
axs.color = {}; | |
axs.color.Color = function(a, b, c, d) { | |
this.red = a; | |
this.green = b; | |
this.blue = c; | |
this.alpha = d; | |
}; | |
axs.color.YCbCr = function(a) { | |
this.luma = this.z = a[0]; | |
this.Cb = this.x = a[1]; | |
this.Cr = this.y = a[2]; | |
}; | |
axs.color.YCbCr.prototype = {multiply:function(a) { | |
return new axs.color.YCbCr([this.luma * a, this.Cb * a, this.Cr * a]); | |
}, add:function(a) { | |
return new axs.color.YCbCr([this.luma + a.luma, this.Cb + a.Cb, this.Cr + a.Cr]); | |
}, subtract:function(a) { | |
return new axs.color.YCbCr([this.luma - a.luma, this.Cb - a.Cb, this.Cr - a.Cr]); | |
}}; | |
axs.color.calculateContrastRatio = function(a, b) { | |
1 > a.alpha && (a = axs.color.flattenColors(a, b)); | |
var c = axs.color.calculateLuminance(a), d = axs.color.calculateLuminance(b); | |
return (Math.max(c, d) + .05) / (Math.min(c, d) + .05); | |
}; | |
axs.color.calculateLuminance = function(a) { | |
return axs.color.toYCbCr(a).luma; | |
}; | |
axs.color.luminanceRatio = function(a, b) { | |
return (Math.max(a, b) + .05) / (Math.min(a, b) + .05); | |
}; | |
axs.color.parseColor = function(a) { | |
if ("transparent" === a) { | |
return new axs.color.Color(0, 0, 0, 0); | |
} | |
var b = a.match(/^rgb\((\d+), (\d+), (\d+)\)$/); | |
if (b) { | |
a = parseInt(b[1], 10); | |
var c = parseInt(b[2], 10), d = parseInt(b[3], 10); | |
return new axs.color.Color(a, c, d, 1); | |
} | |
return (b = a.match(/^rgba\((\d+), (\d+), (\d+), (\d*(\.\d+)?)\)/)) ? (a = parseInt(b[1], 10), c = parseInt(b[2], 10), d = parseInt(b[3], 10), b = parseFloat(b[4]), new axs.color.Color(a, c, d, b)) : null; | |
}; | |
axs.color.colorChannelToString = function(a) { | |
a = Math.round(a); | |
return 15 >= a ? "0" + a.toString(16) : a.toString(16); | |
}; | |
axs.color.colorToString = function(a) { | |
return 1 == a.alpha ? "#" + axs.color.colorChannelToString(a.red) + axs.color.colorChannelToString(a.green) + axs.color.colorChannelToString(a.blue) : "rgba(" + [a.red, a.green, a.blue, a.alpha].join() + ")"; | |
}; | |
axs.color.luminanceFromContrastRatio = function(a, b, c) { | |
return c ? (a + .05) * b - .05 : (a + .05) / b - .05; | |
}; | |
axs.color.translateColor = function(a, b) { | |
for (var c = b > a.luma ? axs.color.WHITE_YCC : axs.color.BLACK_YCC, d = c == axs.color.WHITE_YCC ? axs.color.YCC_CUBE_FACES_WHITE : axs.color.YCC_CUBE_FACES_BLACK, e = new axs.color.YCbCr([0, a.Cb, a.Cr]), f = new axs.color.YCbCr([1, a.Cb, a.Cr]), f = {a:e, b:f}, e = null, g = 0;g < d.length && !(e = axs.color.findIntersection(f, d[g]), 0 <= e.z && 1 >= e.z);g++) { | |
} | |
if (!e) { | |
throw "Couldn't find intersection with YCbCr color cube for Cb=" + a.Cb + ", Cr=" + a.Cr + "."; | |
} | |
if (e.x != a.x || e.y != a.y) { | |
throw "Intersection has wrong Cb/Cr values."; | |
} | |
if (Math.abs(c.luma - e.luma) < Math.abs(c.luma - b)) { | |
return c = [b, a.Cb, a.Cr], axs.color.fromYCbCrArray(c); | |
} | |
c = (b - e.luma) / (c.luma - e.luma); | |
c = [b, e.Cb - e.Cb * c, e.Cr - e.Cr * c]; | |
return axs.color.fromYCbCrArray(c); | |
}; | |
axs.color.suggestColors = function(a, b, c) { | |
var d = {}, e = axs.color.calculateLuminance(a), f = axs.color.calculateLuminance(b), g = f > e, h = axs.color.toYCbCr(b), k = axs.color.toYCbCr(a), m; | |
for (m in c) { | |
var l = c[m], n = axs.color.luminanceFromContrastRatio(e, l + .02, g); | |
if (1 >= n && 0 <= n) { | |
var p = axs.color.translateColor(h, n), l = axs.color.calculateContrastRatio(p, a), n = {}; | |
n.fg = axs.color.colorToString(p); | |
n.bg = axs.color.colorToString(a); | |
n.contrast = l.toFixed(2); | |
d[m] = n; | |
} else { | |
l = axs.color.luminanceFromContrastRatio(f, l + .02, !g), 1 >= l && 0 <= l && (p = axs.color.translateColor(k, l), l = axs.color.calculateContrastRatio(b, p), n = {}, n.bg = axs.color.colorToString(p), n.fg = axs.color.colorToString(b), n.contrast = l.toFixed(2), d[m] = n); | |
} | |
} | |
return d; | |
}; | |
axs.color.flattenColors = function(a, b) { | |
var c = a.alpha; | |
return new axs.color.Color((1 - c) * b.red + c * a.red, (1 - c) * b.green + c * a.green, (1 - c) * b.blue + c * a.blue, a.alpha + b.alpha * (1 - a.alpha)); | |
}; | |
axs.color.multiplyMatrixVector = function(a, b) { | |
var c = b[0], d = b[1], e = b[2]; | |
return [a[0][0] * c + a[0][1] * d + a[0][2] * e, a[1][0] * c + a[1][1] * d + a[1][2] * e, a[2][0] * c + a[2][1] * d + a[2][2] * e]; | |
}; | |
axs.color.toYCbCr = function(a) { | |
var b = a.red / 255, c = a.green / 255; | |
a = a.blue / 255; | |
return new axs.color.YCbCr(axs.color.multiplyMatrixVector(axs.color.YCC_MATRIX, [.03928 >= b ? b / 12.92 : Math.pow((b + .055) / 1.055, 2.4), .03928 >= c ? c / 12.92 : Math.pow((c + .055) / 1.055, 2.4), .03928 >= a ? a / 12.92 : Math.pow((a + .055) / 1.055, 2.4)])); | |
}; | |
axs.color.fromYCbCr = function(a) { | |
return axs.color.fromYCbCrArray([a.luma, a.Cb, a.Cr]); | |
}; | |
axs.color.fromYCbCrArray = function(a) { | |
var b = axs.color.multiplyMatrixVector(axs.color.INVERTED_YCC_MATRIX, a); | |
a = b[0]; | |
var c = b[1], b = b[2]; | |
return new axs.color.Color(Math.min(Math.max(Math.round(255 * (.00303949 >= a ? 12.92 * a : 1.055 * Math.pow(a, 1 / 2.4) - .055)), 0), 255), Math.min(Math.max(Math.round(255 * (.00303949 >= c ? 12.92 * c : 1.055 * Math.pow(c, 1 / 2.4) - .055)), 0), 255), Math.min(Math.max(Math.round(255 * (.00303949 >= b ? 12.92 * b : 1.055 * Math.pow(b, 1 / 2.4) - .055)), 0), 255), 1); | |
}; | |
axs.color.RGBToYCbCrMatrix = function(a, b) { | |
return [[a, 1 - a - b, b], [-a / (2 - 2 * b), (a + b - 1) / (2 - 2 * b), (1 - b) / (2 - 2 * b)], [(1 - a) / (2 - 2 * a), (a + b - 1) / (2 - 2 * a), -b / (2 - 2 * a)]]; | |
}; | |
axs.color.invert3x3Matrix = function(a) { | |
var b = a[0][0], c = a[0][1], d = a[0][2], e = a[1][0], f = a[1][1], g = a[1][2], h = a[2][0], k = a[2][1]; | |
a = a[2][2]; | |
return axs.color.scalarMultiplyMatrix([[f * a - g * k, d * k - c * a, c * g - d * f], [g * h - e * a, b * a - d * h, d * e - b * g], [e * k - f * h, h * c - b * k, b * f - c * e]], 1 / (b * (f * a - g * k) - c * (a * e - g * h) + d * (e * k - f * h))); | |
}; | |
axs.color.findIntersection = function(a, b) { | |
var c = [a.a.x - b.p0.x, a.a.y - b.p0.y, a.a.z - b.p0.z], d = axs.color.invert3x3Matrix([[a.a.x - a.b.x, b.p1.x - b.p0.x, b.p2.x - b.p0.x], [a.a.y - a.b.y, b.p1.y - b.p0.y, b.p2.y - b.p0.y], [a.a.z - a.b.z, b.p1.z - b.p0.z, b.p2.z - b.p0.z]]), c = axs.color.multiplyMatrixVector(d, c)[0]; | |
return a.a.add(a.b.subtract(a.a).multiply(c)); | |
}; | |
axs.color.scalarMultiplyMatrix = function(a, b) { | |
for (var c = [], d = 0;3 > d;d++) { | |
c[d] = axs.color.scalarMultiplyVector(a[d], b); | |
} | |
return c; | |
}; | |
axs.color.scalarMultiplyVector = function(a, b) { | |
for (var c = [], d = 0;d < a.length;d++) { | |
c[d] = a[d] * b; | |
} | |
return c; | |
}; | |
axs.color.kR = .2126; | |
axs.color.kB = .0722; | |
axs.color.YCC_MATRIX = axs.color.RGBToYCbCrMatrix(axs.color.kR, axs.color.kB); | |
axs.color.INVERTED_YCC_MATRIX = axs.color.invert3x3Matrix(axs.color.YCC_MATRIX); | |
axs.color.BLACK = new axs.color.Color(0, 0, 0, 1); | |
axs.color.BLACK_YCC = axs.color.toYCbCr(axs.color.BLACK); | |
axs.color.WHITE = new axs.color.Color(255, 255, 255, 1); | |
axs.color.WHITE_YCC = axs.color.toYCbCr(axs.color.WHITE); | |
axs.color.RED = new axs.color.Color(255, 0, 0, 1); | |
axs.color.RED_YCC = axs.color.toYCbCr(axs.color.RED); | |
axs.color.GREEN = new axs.color.Color(0, 255, 0, 1); | |
axs.color.GREEN_YCC = axs.color.toYCbCr(axs.color.GREEN); | |
axs.color.BLUE = new axs.color.Color(0, 0, 255, 1); | |
axs.color.BLUE_YCC = axs.color.toYCbCr(axs.color.BLUE); | |
axs.color.CYAN = new axs.color.Color(0, 255, 255, 1); | |
axs.color.CYAN_YCC = axs.color.toYCbCr(axs.color.CYAN); | |
axs.color.MAGENTA = new axs.color.Color(255, 0, 255, 1); | |
axs.color.MAGENTA_YCC = axs.color.toYCbCr(axs.color.MAGENTA); | |
axs.color.YELLOW = new axs.color.Color(255, 255, 0, 1); | |
axs.color.YELLOW_YCC = axs.color.toYCbCr(axs.color.YELLOW); | |
axs.color.YCC_CUBE_FACES_BLACK = [{p0:axs.color.BLACK_YCC, p1:axs.color.RED_YCC, p2:axs.color.GREEN_YCC}, {p0:axs.color.BLACK_YCC, p1:axs.color.GREEN_YCC, p2:axs.color.BLUE_YCC}, {p0:axs.color.BLACK_YCC, p1:axs.color.BLUE_YCC, p2:axs.color.RED_YCC}]; | |
axs.color.YCC_CUBE_FACES_WHITE = [{p0:axs.color.WHITE_YCC, p1:axs.color.CYAN_YCC, p2:axs.color.MAGENTA_YCC}, {p0:axs.color.WHITE_YCC, p1:axs.color.MAGENTA_YCC, p2:axs.color.YELLOW_YCC}, {p0:axs.color.WHITE_YCC, p1:axs.color.YELLOW_YCC, p2:axs.color.CYAN_YCC}]; | |
axs.dom = {}; | |
axs.dom.parentElement = function(a) { | |
if (!a) { | |
return null; | |
} | |
a = axs.dom.composedParentNode(a); | |
if (!a) { | |
return null; | |
} | |
switch(a.nodeType) { | |
case Node.ELEMENT_NODE: | |
return a; | |
default: | |
return axs.dom.parentElement(a); | |
} | |
}; | |
axs.dom.shadowHost = function(a) { | |
return "host" in a ? a.host : null; | |
}; | |
axs.dom.composedParentNode = function(a) { | |
if (!a) { | |
return null; | |
} | |
if (a.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { | |
return axs.dom.shadowHost(a); | |
} | |
var b = a.parentNode; | |
if (!b) { | |
return null; | |
} | |
if (b.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { | |
return axs.dom.shadowHost(b); | |
} | |
if (!b.shadowRoot) { | |
return b; | |
} | |
a = a.getDestinationInsertionPoints(); | |
return 0 < a.length ? axs.dom.composedParentNode(a[a.length - 1]) : null; | |
}; | |
axs.dom.asElement = function(a) { | |
switch(a.nodeType) { | |
case Node.COMMENT_NODE: | |
break; | |
case Node.ELEMENT_NODE: | |
if ("script" == a.localName || "template" == a.localName) { | |
break; | |
} | |
return a; | |
case Node.DOCUMENT_FRAGMENT_NODE: | |
return a.host; | |
case Node.TEXT_NODE: | |
return axs.dom.parentElement(a); | |
default: | |
console.warn("Unhandled node type: ", a.nodeType); | |
} | |
return null; | |
}; | |
axs.dom.composedTreeSearch = function(a, b, c, d, e) { | |
if (a === b) { | |
return !0; | |
} | |
if (a.nodeType == Node.ELEMENT_NODE) { | |
var f = a | |
} | |
var g = !1; | |
d = Object.create(d); | |
if (f) { | |
var h = f.localName; | |
d.collectIdRefs && (d.idrefs = axs.utils.getReferencedIds(f)); | |
if (!d.disabled || "legend" === h && axs.browserUtils.matchSelector(f, "fieldset>legend:first-of-type")) { | |
d.disabled = axs.utils.isElementDisabled(f, !0); | |
} | |
d.hidden || (d.hidden = axs.utils.isElementHidden(f)); | |
if (c.preorder && !c.preorder(f, d)) { | |
return g; | |
} | |
var k = f.shadowRoot || f.webkitShadowRoot; | |
if (k) { | |
return d.level++, g = axs.dom.composedTreeSearch(k, b, c, d, k), f && c.postorder && !g && c.postorder(f, d), g; | |
} | |
if ("content" == h) { | |
a = f.getDistributedNodes(); | |
for (h = 0;h < a.length && !g;h++) { | |
g = axs.dom.composedTreeSearch(a[h], b, c, d, e); | |
} | |
c.postorder && !g && c.postorder.call(null, f, d); | |
return g; | |
} | |
} | |
for (a = a.firstChild;null != a && !g;) { | |
g = axs.dom.composedTreeSearch(a, b, c, d, e), a = a.nextSibling; | |
} | |
f && c.postorder && !g && c.postorder.call(null, f, d); | |
return g; | |
}; | |
axs.utils = {}; | |
axs.utils.FOCUSABLE_ELEMENTS_SELECTOR = "input:not([type=hidden]):not([disabled]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),a[href],iframe,[tabindex]"; | |
axs.utils.LABELABLE_ELEMENTS_SELECTOR = "button,input:not([type=hidden]),keygen,meter,output,progress,select,textarea"; | |
axs.utils.elementIsTransparent = function(a) { | |
return "0" == a.style.opacity; | |
}; | |
axs.utils.elementHasZeroArea = function(a) { | |
a = a.getBoundingClientRect(); | |
var b = a.top - a.bottom; | |
return a.right - a.left && b ? !1 : !0; | |
}; | |
axs.utils.elementIsOutsideScrollArea = function(a) { | |
for (var b = axs.dom.parentElement(a), c = a.ownerDocument.defaultView;b != c.document.body;) { | |
if (axs.utils.isClippedBy(a, b)) { | |
return !0; | |
} | |
if (axs.utils.canScrollTo(a, b) && !axs.utils.elementIsOutsideScrollArea(b)) { | |
return !1; | |
} | |
b = axs.dom.parentElement(b); | |
} | |
return !axs.utils.canScrollTo(a, c.document.body); | |
}; | |
axs.utils.canScrollTo = function(a, b) { | |
var c = a.getBoundingClientRect(), d = b.getBoundingClientRect(); | |
if (b == b.ownerDocument.body) { | |
var e = d.top, f = d.left | |
} else { | |
e = d.top - b.scrollTop, f = d.left - b.scrollLeft; | |
} | |
var g = e + b.scrollHeight, h = f + b.scrollWidth; | |
if (c.right < f || c.bottom < e || c.left > h || c.top > g) { | |
return !1; | |
} | |
e = a.ownerDocument.defaultView; | |
f = e.getComputedStyle(b); | |
return c.left > d.right || c.top > d.bottom ? "scroll" == f.overflow || "auto" == f.overflow || b instanceof e.HTMLBodyElement : !0; | |
}; | |
axs.utils.isClippedBy = function(a, b) { | |
var c = a.getBoundingClientRect(), d = b.getBoundingClientRect(), e = d.top - b.scrollTop, f = d.left - b.scrollLeft, g = a.ownerDocument.defaultView.getComputedStyle(b); | |
return (c.right < d.left || c.bottom < d.top || c.left > d.right || c.top > d.bottom) && "hidden" == g.overflow ? !0 : c.right < f || c.bottom < e ? "visible" != g.overflow : !1; | |
}; | |
axs.utils.isAncestor = function(a, b) { | |
if (null == b) { | |
return !1; | |
} | |
if (b === a) { | |
return !0; | |
} | |
var c = axs.dom.composedParentNode(b); | |
return axs.utils.isAncestor(a, c); | |
}; | |
axs.utils.overlappingElements = function(a) { | |
if (axs.utils.elementHasZeroArea(a)) { | |
return null; | |
} | |
for (var b = [], c = a.getClientRects(), d = 0;d < c.length;d++) { | |
var e = c[d], e = document.elementFromPoint((e.left + e.right) / 2, (e.top + e.bottom) / 2); | |
if (null != e && e != a && !axs.utils.isAncestor(e, a) && !axs.utils.isAncestor(a, e)) { | |
var f = window.getComputedStyle(e, null); | |
f && (f = axs.utils.getBgColor(f, e)) && 0 < f.alpha && 0 > b.indexOf(e) && b.push(e); | |
} | |
} | |
return b; | |
}; | |
axs.utils.elementIsHtmlControl = function(a) { | |
var b = a.ownerDocument.defaultView; | |
return a instanceof b.HTMLButtonElement || a instanceof b.HTMLInputElement || a instanceof b.HTMLSelectElement || a instanceof b.HTMLTextAreaElement ? !0 : !1; | |
}; | |
axs.utils.elementIsAriaWidget = function(a) { | |
return a.hasAttribute("role") && (a = a.getAttribute("role")) && (a = axs.constants.ARIA_ROLES[a]) && "widget" in a.allParentRolesSet ? !0 : !1; | |
}; | |
axs.utils.elementIsVisible = function(a) { | |
return axs.utils.elementIsTransparent(a) || axs.utils.elementHasZeroArea(a) || axs.utils.elementIsOutsideScrollArea(a) || axs.utils.overlappingElements(a).length ? !1 : !0; | |
}; | |
axs.utils.isLargeFont = function(a) { | |
var b = a.fontSize; | |
a = "bold" == a.fontWeight; | |
var c = b.match(/(\d+)px/); | |
if (c) { | |
b = parseInt(c[1], 10); | |
if (c = window.getComputedStyle(document.body, null).fontSize.match(/(\d+)px/)) { | |
var d = parseInt(c[1], 10), c = 1.2 * d, d = 1.5 * d | |
} else { | |
c = 19.2, d = 24; | |
} | |
return a && b >= c || b >= d; | |
} | |
if (c = b.match(/(\d+)em/)) { | |
return b = parseInt(c[1], 10), a && 1.2 <= b || 1.5 <= b ? !0 : !1; | |
} | |
if (c = b.match(/(\d+)%/)) { | |
return b = parseInt(c[1], 10), a && 120 <= b || 150 <= b ? !0 : !1; | |
} | |
if (c = b.match(/(\d+)pt/)) { | |
if (b = parseInt(c[1], 10), a && 14 <= b || 18 <= b) { | |
return !0; | |
} | |
} | |
return !1; | |
}; | |
axs.utils.getBgColor = function(a, b) { | |
var c = axs.color.parseColor(a.backgroundColor); | |
if (!c) { | |
return null; | |
} | |
1 > a.opacity && (c.alpha *= a.opacity); | |
if (1 > c.alpha) { | |
var d = axs.utils.getParentBgColor(b); | |
if (null == d) { | |
return null; | |
} | |
c = axs.color.flattenColors(c, d); | |
} | |
return c; | |
}; | |
axs.utils.getParentBgColor = function(a) { | |
var b = a; | |
a = []; | |
for (var c = null;b = axs.dom.parentElement(b);) { | |
var d = window.getComputedStyle(b, null); | |
if (d) { | |
var e = axs.color.parseColor(d.backgroundColor); | |
if (e && (1 > d.opacity && (e.alpha *= d.opacity), 0 != e.alpha && (a.push(e), 1 == e.alpha))) { | |
c = !0; | |
break; | |
} | |
} | |
} | |
c || a.push(new axs.color.Color(255, 255, 255, 1)); | |
for (b = a.pop();a.length;) { | |
c = a.pop(), b = axs.color.flattenColors(c, b); | |
} | |
return b; | |
}; | |
axs.utils.getFgColor = function(a, b, c) { | |
var d = axs.color.parseColor(a.color); | |
if (!d) { | |
return null; | |
} | |
1 > d.alpha && (d = axs.color.flattenColors(d, c)); | |
1 > a.opacity && (b = axs.utils.getParentBgColor(b), d.alpha *= a.opacity, d = axs.color.flattenColors(d, b)); | |
return d; | |
}; | |
axs.utils.getContrastRatioForElement = function(a) { | |
var b = window.getComputedStyle(a, null); | |
return axs.utils.getContrastRatioForElementWithComputedStyle(b, a); | |
}; | |
axs.utils.getContrastRatioForElementWithComputedStyle = function(a, b) { | |
if (axs.utils.isElementHidden(b)) { | |
return null; | |
} | |
var c = axs.utils.getBgColor(a, b); | |
if (!c) { | |
return null; | |
} | |
var d = axs.utils.getFgColor(a, b, c); | |
return d ? axs.color.calculateContrastRatio(d, c) : null; | |
}; | |
axs.utils.isNativeTextElement = function(a) { | |
var b = a.tagName.toLowerCase(); | |
a = a.type ? a.type.toLowerCase() : ""; | |
if ("textarea" == b) { | |
return !0; | |
} | |
if ("input" != b) { | |
return !1; | |
} | |
switch(a) { | |
case "email": | |
; | |
case "number": | |
; | |
case "password": | |
; | |
case "search": | |
; | |
case "text": | |
; | |
case "tel": | |
; | |
case "url": | |
; | |
case "": | |
return !0; | |
default: | |
return !1; | |
} | |
}; | |
axs.utils.isLowContrast = function(a, b, c) { | |
a = Math.round(10 * a) / 10; | |
return c ? 4.5 > a || !axs.utils.isLargeFont(b) && 7 > a : 3 > a || !axs.utils.isLargeFont(b) && 4.5 > a; | |
}; | |
axs.utils.hasLabel = function(a) { | |
var b = a.tagName.toLowerCase(), c = a.type ? a.type.toLowerCase() : ""; | |
if (a.hasAttribute("aria-label") || a.hasAttribute("title") || "img" == b && a.hasAttribute("alt") || "input" == b && "image" == c && a.hasAttribute("alt") || "input" == b && ("submit" == c || "reset" == c) || a.hasAttribute("aria-labelledby") || a.hasAttribute("id") && 0 < document.querySelectorAll('label[for="' + a.id + '"]').length) { | |
return !0; | |
} | |
for (b = axs.dom.parentElement(a);b;) { | |
if ("label" == b.tagName.toLowerCase() && b.control == a) { | |
return !0; | |
} | |
b = axs.dom.parentElement(b); | |
} | |
return !1; | |
}; | |
axs.utils.isNativelyDisableable = function(a) { | |
return a.tagName.toUpperCase() in axs.constants.NATIVELY_DISABLEABLE; | |
}; | |
axs.utils.isElementDisabled = function(a, b) { | |
if (axs.browserUtils.matchSelector(a, b ? "[aria-disabled=true]" : "[aria-disabled=true], [aria-disabled=true] *")) { | |
return !0; | |
} | |
if (!axs.utils.isNativelyDisableable(a) || axs.browserUtils.matchSelector(a, "fieldset>legend:first-of-type *")) { | |
return !1; | |
} | |
for (var c = a;null !== c;c = axs.dom.parentElement(c)) { | |
if (c.hasAttribute("disabled")) { | |
return !0; | |
} | |
if (b) { | |
break; | |
} | |
} | |
return !1; | |
}; | |
axs.utils.isElementHidden = function(a) { | |
if (!(a instanceof a.ownerDocument.defaultView.HTMLElement)) { | |
return !1; | |
} | |
if (a.hasAttribute("chromevoxignoreariahidden")) { | |
var b = !0 | |
} | |
var c = window.getComputedStyle(a, null); | |
return "none" == c.display || "hidden" == c.visibility ? !0 : a.hasAttribute("aria-hidden") && "true" == a.getAttribute("aria-hidden").toLowerCase() ? !b : !1; | |
}; | |
axs.utils.isElementOrAncestorHidden = function(a) { | |
return axs.utils.isElementHidden(a) ? !0 : axs.dom.parentElement(a) ? axs.utils.isElementOrAncestorHidden(axs.dom.parentElement(a)) : !1; | |
}; | |
axs.utils.isInlineElement = function(a) { | |
a = a.tagName.toUpperCase(); | |
return axs.constants.InlineElements[a]; | |
}; | |
axs.utils.getRoles = function(a, b) { | |
if (!a || a.nodeType !== Node.ELEMENT_NODE || !a.hasAttribute("role") && !b) { | |
return null; | |
} | |
var c = a.getAttribute("role"); | |
!c && b && (c = axs.properties.getImplicitRole(a)); | |
if (!c) { | |
return null; | |
} | |
for (var c = c.split(" "), d = {roles:[], valid:!1}, e = 0;e < c.length;e++) { | |
var f = c[e], g = axs.constants.ARIA_ROLES[f], f = {name:f}; | |
g && !g["abstract"] ? (f.details = g, d.applied || (d.applied = f), f.valid = d.valid = !0) : f.valid = !1; | |
d.roles.push(f); | |
} | |
return d; | |
}; | |
axs.utils.getAriaPropertyValue = function(a, b, c) { | |
var d = a.replace(/^aria-/, ""), e = axs.constants.ARIA_PROPERTIES[d], d = {name:a, rawValue:b}; | |
if (!e) { | |
return d.valid = !1, d.reason = '"' + a + '" is not a valid ARIA property', d; | |
} | |
e = e.valueType; | |
if (!e) { | |
return d.valid = !1, d.reason = '"' + a + '" is not a valid ARIA property', d; | |
} | |
switch(e) { | |
case "idref": | |
a = axs.utils.isValidIDRefValue(b, c), d.valid = a.valid, d.reason = a.reason, d.idref = a.idref; | |
case "idref_list": | |
a = b.split(/\s+/); | |
d.valid = !0; | |
for (b = 0;b < a.length;b++) { | |
e = axs.utils.isValidIDRefValue(a[b], c), e.valid || (d.valid = !1), d.values ? d.values.push(e) : d.values = [e]; | |
} | |
return d; | |
case "integer": | |
c = axs.utils.isValidNumber(b); | |
if (!c.valid) { | |
return d.valid = !1, d.reason = c.reason, d; | |
} | |
Math.floor(c.value) !== c.value ? (d.valid = !1, d.reason = "" + b + " is not a whole integer") : (d.valid = !0, d.value = c.value); | |
return d; | |
case "decimal": | |
; | |
case "number": | |
c = axs.utils.isValidNumber(b); | |
d.valid = c.valid; | |
if (!c.valid) { | |
return d.reason = c.reason, d; | |
} | |
d.value = c.value; | |
return d; | |
case "string": | |
return d.valid = !0, d.value = b, d; | |
case "token": | |
return c = axs.utils.isValidTokenValue(a, b.toLowerCase()), c.valid ? (d.valid = !0, d.value = c.value) : (d.valid = !1, d.value = b, d.reason = c.reason), d; | |
case "token_list": | |
e = b.split(/\s+/); | |
d.valid = !0; | |
for (b = 0;b < e.length;b++) { | |
c = axs.utils.isValidTokenValue(a, e[b].toLowerCase()), c.valid || (d.valid = !1, d.reason ? (d.reason = [d.reason], d.reason.push(c.reason)) : (d.reason = c.reason, d.possibleValues = c.possibleValues)), d.values ? d.values.push(c.value) : d.values = [c.value]; | |
} | |
return d; | |
case "tristate": | |
return c = axs.utils.isPossibleValue(b.toLowerCase(), axs.constants.MIXED_VALUES, a), c.valid ? (d.valid = !0, d.value = c.value) : (d.valid = !1, d.value = b, d.reason = c.reason), d; | |
case "boolean": | |
return c = axs.utils.isValidBoolean(b), c.valid ? (d.valid = !0, d.value = c.value) : (d.valid = !1, d.value = b, d.reason = c.reason), d; | |
} | |
d.valid = !1; | |
d.reason = "Not a valid ARIA property"; | |
return d; | |
}; | |
axs.utils.isValidTokenValue = function(a, b) { | |
var c = a.replace(/^aria-/, ""); | |
return axs.utils.isPossibleValue(b, axs.constants.ARIA_PROPERTIES[c].valuesSet, a); | |
}; | |
axs.utils.isPossibleValue = function(a, b, c) { | |
return b[a] ? {valid:!0, value:a} : {valid:!1, value:a, reason:'"' + a + '" is not a valid value for ' + c, possibleValues:Object.keys(b)}; | |
}; | |
axs.utils.isValidBoolean = function(a) { | |
try { | |
var b = JSON.parse(a); | |
} catch (c) { | |
b = ""; | |
} | |
return "boolean" != typeof b ? {valid:!1, value:a, reason:'"' + a + '" is not a true/false value'} : {valid:!0, value:b}; | |
}; | |
axs.utils.isValidIDRefValue = function(a, b) { | |
return 0 == a.length ? {valid:!0, idref:a} : b.ownerDocument.getElementById(a) ? {valid:!0, idref:a} : {valid:!1, idref:a, reason:'No element with ID "' + a + '"'}; | |
}; | |
axs.utils.isValidNumber = function(a) { | |
var b = {valid:!1, value:a, reason:'"' + a + '" is not a number'}; | |
if (!a) { | |
return b; | |
} | |
if (/^0x/i.test(a)) { | |
return b.reason = '"' + a + '" is not a decimal number', b; | |
} | |
a *= 1; | |
return isFinite(a) ? {valid:!0, value:a} : b; | |
}; | |
axs.utils.isElementImplicitlyFocusable = function(a) { | |
var b = a.ownerDocument.defaultView; | |
return a instanceof b.HTMLAnchorElement || a instanceof b.HTMLAreaElement ? a.hasAttribute("href") : a instanceof b.HTMLInputElement || a instanceof b.HTMLSelectElement || a instanceof b.HTMLTextAreaElement || a instanceof b.HTMLButtonElement || a instanceof b.HTMLIFrameElement ? !a.disabled : !1; | |
}; | |
axs.utils.values = function(a) { | |
var b = [], c; | |
for (c in a) { | |
a.hasOwnProperty(c) && "function" != typeof a[c] && b.push(a[c]); | |
} | |
return b; | |
}; | |
axs.utils.namedValues = function(a) { | |
var b = {}, c; | |
for (c in a) { | |
a.hasOwnProperty(c) && "function" != typeof a[c] && (b[c] = a[c]); | |
} | |
return b; | |
}; | |
function escapeId(a) { | |
return a.replace(/[^a-zA-Z0-9_-]/g, function(a) { | |
return "\\" + a; | |
}); | |
} | |
axs.utils.getQuerySelectorText = function(a) { | |
if (null == a || "HTML" == a.tagName) { | |
return "html"; | |
} | |
if ("BODY" == a.tagName) { | |
return "body"; | |
} | |
if (a.hasAttribute) { | |
if (a.id) { | |
return "#" + escapeId(a.id); | |
} | |
if (a.className) { | |
for (var b = "", c = 0;c < a.classList.length;c++) { | |
b += "." + a.classList[c]; | |
} | |
var d = 0; | |
if (a.parentNode) { | |
for (c = 0;c < a.parentNode.children.length;c++) { | |
var e = a.parentNode.children[c]; | |
axs.browserUtils.matchSelector(e, b) && d++; | |
if (e === a) { | |
break; | |
} | |
} | |
} else { | |
d = 1; | |
} | |
if (1 == d) { | |
return axs.utils.getQuerySelectorText(a.parentNode) + " > " + b; | |
} | |
} | |
if (a.parentNode) { | |
b = a.parentNode.children; | |
d = 1; | |
for (c = 0;b[c] !== a;) { | |
b[c].tagName == a.tagName && d++, c++; | |
} | |
c = ""; | |
"BODY" != a.parentNode.tagName && (c = axs.utils.getQuerySelectorText(a.parentNode) + " > "); | |
return 1 == d ? c + a.tagName : c + a.tagName + ":nth-of-type(" + d + ")"; | |
} | |
} else { | |
if (a.selectorText) { | |
return a.selectorText; | |
} | |
} | |
return ""; | |
}; | |
axs.utils.getAriaIdReferrers = function(a, b) { | |
var c = function(a) { | |
var b = axs.constants.ARIA_PROPERTIES[a]; | |
if (b) { | |
if ("idref" === b.valueType) { | |
return "[aria-" + a + "='" + d + "']"; | |
} | |
if ("idref_list" === b.valueType) { | |
return "[aria-" + a + "~='" + d + "']"; | |
} | |
} | |
return ""; | |
}; | |
if (!a) { | |
return null; | |
} | |
var d = a.id; | |
if (!d) { | |
return null; | |
} | |
d = d.replace(/'/g, "\\'"); | |
if (b) { | |
var e = b.replace(/^aria-/, ""), f = c(e); | |
if (f) { | |
return a.ownerDocument.querySelectorAll(f); | |
} | |
} else { | |
var g = []; | |
for (e in axs.constants.ARIA_PROPERTIES) { | |
(f = c(e)) && g.push(f); | |
} | |
return a.ownerDocument.querySelectorAll(g.join(",")); | |
} | |
return null; | |
}; | |
axs.utils.getHtmlIdReferrers = function(a) { | |
if (!a) { | |
return null; | |
} | |
var b = a.id; | |
if (!b) { | |
return null; | |
} | |
var b = b.replace(/'/g, "\\'"), c = "[contextmenu='{id}'] [itemref~='{id}'] button[form='{id}'] button[menu='{id}'] fieldset[form='{id}'] input[form='{id}'] input[list='{id}'] keygen[form='{id}'] label[for='{id}'] label[form='{id}'] menuitem[command='{id}'] object[form='{id}'] output[for~='{id}'] output[form='{id}'] select[form='{id}'] td[headers~='{id}'] textarea[form='{id}'] tr[headers~='{id}']".split(" ").map(function(a) { | |
return a.replace("{id}", b); | |
}); | |
return a.ownerDocument.querySelectorAll(c.join(",")); | |
}; | |
axs.utils.getReferencedIds = function(a) { | |
for (var b = [], c = function(a) { | |
a && (0 < a.indexOf(" ") ? b = b.concat(f.value.split(" ")) : b.push(a)); | |
}, d = 0;d < a.attributes.length;d++) { | |
var e = a.tagName.toLowerCase(), f = a.attributes[d]; | |
if (f.specified) { | |
var g = f.name, h = g.match(/aria-(.+)/); | |
if (h) { | |
e = axs.constants.ARIA_PROPERTIES[h[1]], !e || "idref" !== e.valueType && "idref_list" !== e.valueType || c(f.value); | |
} else { | |
switch(g) { | |
case "contextmenu": | |
; | |
case "itemref": | |
c(f.value); | |
break; | |
case "form": | |
"button" != e && "fieldset" != e && "input" != e && "keygen" != e && "label" != e && "object" != e && "output" != e && "select" != e && "textarea" != e || c(f.value); | |
break; | |
case "for": | |
"label" != e && "output" != e || c(f.value); | |
break; | |
case "menu": | |
"button" == e && c(f.value); | |
break; | |
case "list": | |
"input" == e && c(f.value); | |
break; | |
case "command": | |
"menuitem" == e && c(f.value); | |
break; | |
case "headers": | |
"td" != e && "tr" != e || c(f.value); | |
} | |
} | |
} | |
} | |
return b; | |
}; | |
axs.utils.getIdReferrers = function(a) { | |
var b = [], c = axs.utils.getHtmlIdReferrers(a); | |
c && (b = b.concat(Array.prototype.slice.call(c))); | |
(c = axs.utils.getAriaIdReferrers(a)) && (b = b.concat(Array.prototype.slice.call(c))); | |
return b; | |
}; | |
axs.utils.getIdReferents = function(a, b) { | |
var c = [], d = a.replace(/^aria-/, ""), d = axs.constants.ARIA_PROPERTIES[d]; | |
if (!d || !b.hasAttribute(a)) { | |
return c; | |
} | |
d = d.valueType; | |
if ("idref_list" === d || "idref" === d) { | |
for (var d = b.ownerDocument, e = b.getAttribute(a), e = e.split(/\s+/), f = 0, g = e.length;f < g;f++) { | |
var h = d.getElementById(e[f]); | |
h && (c[c.length] = h); | |
} | |
} | |
return c; | |
}; | |
axs.utils.getAriaPropertiesByValueType = function(a) { | |
var b = {}, c; | |
for (c in axs.constants.ARIA_PROPERTIES) { | |
var d = axs.constants.ARIA_PROPERTIES[c]; | |
d && 0 <= a.indexOf(d.valueType) && (b[c] = d); | |
} | |
return b; | |
}; | |
axs.utils.getSelectorForAriaProperties = function(a) { | |
a = Object.keys(a).map(function(a) { | |
return "[aria-" + a + "]"; | |
}); | |
a.sort(); | |
return a.join(","); | |
}; | |
axs.utils.findDescendantsWithRole = function(a, b) { | |
if (!a || !b) { | |
return []; | |
} | |
var c = axs.properties.getSelectorForRole(b); | |
if (c && (c = a.querySelectorAll(c))) { | |
c = Array.prototype.map.call(c, function(a) { | |
return a; | |
}); | |
} else { | |
return []; | |
} | |
return c; | |
}; | |
axs.properties = {}; | |
axs.properties.TEXT_CONTENT_XPATH = './/text()[normalize-space(.)!=""]/parent::*[name()!="script"]'; | |
axs.properties.getFocusProperties = function(a) { | |
var b = {}, c = a.getAttribute("tabindex"); | |
void 0 != c ? b.tabindex = {value:c, valid:!0} : axs.utils.isElementImplicitlyFocusable(a) && (b.implicitlyFocusable = {value:!0, valid:!0}); | |
if (0 == Object.keys(b).length) { | |
return null; | |
} | |
var d = axs.utils.elementIsTransparent(a), e = axs.utils.elementHasZeroArea(a), f = axs.utils.elementIsOutsideScrollArea(a), g = axs.utils.overlappingElements(a); | |
if (d || e || f || 0 < g.length) { | |
var c = axs.utils.isElementOrAncestorHidden(a), h = {value:!1, valid:c}; | |
d && (h.transparent = !0); | |
e && (h.zeroArea = !0); | |
f && (h.outsideScrollArea = !0); | |
g && 0 < g.length && (h.overlappingElements = g); | |
d = {value:c, valid:c}; | |
c && (d.reason = axs.properties.getHiddenReason(a)); | |
h.hidden = d; | |
b.visible = h; | |
} else { | |
b.visible = {value:!0, valid:!0}; | |
} | |
return b; | |
}; | |
axs.properties.getHiddenReason = function(a) { | |
if (!(a && a instanceof a.ownerDocument.defaultView.HTMLElement)) { | |
return null; | |
} | |
if (a.hasAttribute("chromevoxignoreariahidden")) { | |
var b = !0 | |
} | |
var c = window.getComputedStyle(a, null); | |
return "none" == c.display ? {property:"display: none", on:a} : "hidden" == c.visibility ? {property:"visibility: hidden", on:a} : a.hasAttribute("aria-hidden") && "true" == a.getAttribute("aria-hidden").toLowerCase() && !b ? {property:"aria-hidden", on:a} : axs.properties.getHiddenReason(axs.dom.parentElement(a)); | |
}; | |
axs.properties.getColorProperties = function(a) { | |
var b = {}; | |
(a = axs.properties.getContrastRatioProperties(a)) && (b.contrastRatio = a); | |
return 0 == Object.keys(b).length ? null : b; | |
}; | |
axs.properties.hasDirectTextDescendant = function(a) { | |
function b() { | |
for (var b = c.evaluate(axs.properties.TEXT_CONTENT_XPATH, a, null, XPathResult.ANY_TYPE, null), e = b.iterateNext();null != e;e = b.iterateNext()) { | |
if (e === a) { | |
return !0; | |
} | |
} | |
return !1; | |
} | |
var c; | |
c = a.nodeType == Node.DOCUMENT_NODE ? a : a.ownerDocument; | |
return c.evaluate ? b() : function() { | |
for (var b = c.createTreeWalker(a, NodeFilter.SHOW_TEXT, null, !1);b.nextNode();) { | |
var e = b.currentNode, f = e.parentNode.tagName.toLowerCase(); | |
if (e.nodeValue.trim() && "script" !== f && a !== e) { | |
return !0; | |
} | |
} | |
return !1; | |
}(); | |
}; | |
axs.properties.getContrastRatioProperties = function(a) { | |
if (!axs.properties.hasDirectTextDescendant(a)) { | |
return null; | |
} | |
var b = {}, c = window.getComputedStyle(a, null), d = axs.utils.getBgColor(c, a); | |
if (!d) { | |
return null; | |
} | |
b.backgroundColor = axs.color.colorToString(d); | |
var e = axs.utils.getFgColor(c, a, d); | |
b.foregroundColor = axs.color.colorToString(e); | |
a = axs.utils.getContrastRatioForElementWithComputedStyle(c, a); | |
if (!a) { | |
return null; | |
} | |
b.value = a.toFixed(2); | |
axs.utils.isLowContrast(a, c) && (b.alert = !0); | |
var f = axs.utils.isLargeFont(c) ? 3 : 4.5, c = axs.utils.isLargeFont(c) ? 4.5 : 7, g = {}; | |
f > a && (g.AA = f); | |
c > a && (g.AAA = c); | |
if (!Object.keys(g).length) { | |
return b; | |
} | |
(d = axs.color.suggestColors(d, e, g)) && Object.keys(d).length && (b.suggestedColors = d); | |
return b; | |
}; | |
axs.properties.findTextAlternatives = function(a, b, c, d) { | |
var e = c || !1; | |
c = axs.dom.asElement(a); | |
if (!c || !d && axs.utils.isElementOrAncestorHidden(c)) { | |
return null; | |
} | |
if (a.nodeType == Node.TEXT_NODE) { | |
return c = {type:"text"}, c.text = a.textContent, c.lastWord = axs.properties.getLastWord(c.text), b.content = c, a.textContent; | |
} | |
a = null; | |
e || (a = axs.properties.getTextFromAriaLabelledby(c, b)); | |
if (c.hasAttribute("aria-label")) { | |
var f = {type:"text"}; | |
f.text = c.getAttribute("aria-label"); | |
f.lastWord = axs.properties.getLastWord(f.text); | |
a ? f.unused = !0 : e && axs.utils.elementIsHtmlControl(c) || (a = f.text); | |
b.ariaLabel = f; | |
} | |
c.hasAttribute("role") && "presentation" == c.getAttribute("role") || (a = axs.properties.getTextFromHostLanguageAttributes(c, b, a, e)); | |
e && axs.utils.elementIsHtmlControl(c) && (f = c.ownerDocument.defaultView, c instanceof f.HTMLInputElement && ("text" == c.type && c.value && 0 < c.value.length && (b.controlValue = {text:c.value}), "range" == c.type && (b.controlValue = {text:c.value})), c instanceof f.HTMLSelectElement && (b.controlValue = {text:c.value}), b.controlValue && (f = b.controlValue, a ? f.unused = !0 : a = f.text)); | |
if (e && axs.utils.elementIsAriaWidget(c)) { | |
e = c.getAttribute("role"); | |
"textbox" == e && c.textContent && 0 < c.textContent.length && (b.controlValue = {text:c.textContent}); | |
if ("slider" == e || "spinbutton" == e) { | |
c.hasAttribute("aria-valuetext") ? b.controlValue = {text:c.getAttribute("aria-valuetext")} : c.hasAttribute("aria-valuenow") && (b.controlValue = {value:c.getAttribute("aria-valuenow"), text:"" + c.getAttribute("aria-valuenow")}); | |
} | |
if ("menu" == e) { | |
for (var g = c.querySelectorAll("[role=menuitemcheckbox], [role=menuitemradio]"), f = [], h = 0;h < g.length;h++) { | |
"true" == g[h].getAttribute("aria-checked") && f.push(g[h]); | |
} | |
if (0 < f.length) { | |
g = ""; | |
for (h = 0;h < f.length;h++) { | |
g += axs.properties.findTextAlternatives(f[h], {}, !0), h < f.length - 1 && (g += ", "); | |
} | |
b.controlValue = {text:g}; | |
} | |
} | |
if ("combobox" == e || "select" == e) { | |
b.controlValue = {text:"TODO"}; | |
} | |
b.controlValue && (f = b.controlValue, a ? f.unused = !0 : a = f.text); | |
} | |
f = !0; | |
c.hasAttribute("role") && (e = c.getAttribute("role"), (e = axs.constants.ARIA_ROLES[e]) && (!e.namefrom || 0 > e.namefrom.indexOf("contents")) && (f = !1)); | |
(d = axs.properties.getTextFromDescendantContent(c, d)) && f && (e = {type:"text"}, e.text = d, e.lastWord = axs.properties.getLastWord(e.text), a ? e.unused = !0 : a = d, b.content = e); | |
c.hasAttribute("title") && (d = {type:"string", valid:!0}, d.text = c.getAttribute("title"), d.lastWord = axs.properties.getLastWord(d.lastWord), a ? d.unused = !0 : a = d.text, b.title = d); | |
return 0 == Object.keys(b).length && null == a ? null : a; | |
}; | |
axs.properties.getTextFromDescendantContent = function(a, b) { | |
for (var c = a.childNodes, d = [], e = 0;e < c.length;e++) { | |
var f = axs.properties.findTextAlternatives(c[e], {}, !0, b); | |
f && d.push(f.trim()); | |
} | |
if (d.length) { | |
c = ""; | |
for (e = 0;e < d.length;e++) { | |
c = [c, d[e]].join(" ").trim(); | |
} | |
return c; | |
} | |
return null; | |
}; | |
axs.properties.getTextFromAriaLabelledby = function(a, b) { | |
var c = null; | |
if (!a.hasAttribute("aria-labelledby")) { | |
return c; | |
} | |
for (var d = a.getAttribute("aria-labelledby").split(/\s+/), e = {valid:!0}, f = [], g = [], h = 0;h < d.length;h++) { | |
var k = {type:"element"}, m = d[h]; | |
k.value = m; | |
var l = document.getElementById(m); | |
l ? (k.valid = !0, k.text = axs.properties.findTextAlternatives(l, {}, !0, !0), k.lastWord = axs.properties.getLastWord(k.text), f.push(k.text), k.element = l) : (k.valid = !1, e.valid = !1, k.errorMessage = {messageKey:"noElementWithId", args:[m]}); | |
g.push(k); | |
} | |
0 < g.length && (g[g.length - 1].last = !0, e.values = g, e.text = f.join(" "), e.lastWord = axs.properties.getLastWord(e.text), c = e.text, b.ariaLabelledby = e); | |
return c; | |
}; | |
axs.properties.getTextFromHostLanguageAttributes = function(a, b, c, d) { | |
if (axs.browserUtils.matchSelector(a, "img") && a.hasAttribute("alt")) { | |
var e = {type:"string", valid:!0}; | |
e.text = a.getAttribute("alt"); | |
c ? e.unused = !0 : c = e.text; | |
b.alt = e; | |
} | |
if (axs.browserUtils.matchSelector(a, 'input:not([type="hidden"]):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), video:not([disabled])') && !d) { | |
if (a.hasAttribute("id")) { | |
d = document.querySelectorAll('label[for="' + a.id + '"]'); | |
for (var e = {}, f = [], g = [], h = 0;h < d.length;h++) { | |
var k = {type:"element"}, m = d[h], l = axs.properties.findTextAlternatives(m, {}, !0); | |
l && 0 < l.trim().length && (k.text = l.trim(), g.push(l.trim())); | |
k.element = m; | |
f.push(k); | |
} | |
0 < f.length && (f[f.length - 1].last = !0, e.values = f, e.text = g.join(" "), e.lastWord = axs.properties.getLastWord(e.text), c ? e.unused = !0 : c = e.text, b.labelFor = e); | |
} | |
d = axs.dom.parentElement(a); | |
for (e = {};d;) { | |
if ("label" == d.tagName.toLowerCase() && (f = d, f.control == a)) { | |
e.type = "element"; | |
e.text = axs.properties.findTextAlternatives(f, {}, !0); | |
e.lastWord = axs.properties.getLastWord(e.text); | |
e.element = f; | |
break; | |
} | |
d = axs.dom.parentElement(d); | |
} | |
e.text && (c ? e.unused = !0 : c = e.text, b.labelWrapped = e); | |
axs.browserUtils.matchSelector(a, 'input[type="image"]') && a.hasAttribute("alt") && (e = {type:"string", valid:!0}, e.text = a.getAttribute("alt"), c ? e.unused = !0 : c = e.text, b.alt = e); | |
Object.keys(b).length || (b.noLabel = !0); | |
} | |
return c; | |
}; | |
axs.properties.getLastWord = function(a) { | |
if (!a) { | |
return null; | |
} | |
var b = a.lastIndexOf(" ") + 1, c = a.length - 10; | |
return a.substring(b > c ? b : c); | |
}; | |
axs.properties.getTextProperties = function(a) { | |
var b = {}, c = axs.properties.findTextAlternatives(a, b, !1, !0); | |
if (0 == Object.keys(b).length && ((a = axs.dom.asElement(a)) && axs.browserUtils.matchSelector(a, "img") && (b.alt = {valid:!1, errorMessage:"No alt value provided"}, a = a.src, "string" == typeof a && (c = a.split("/").pop(), b.filename = {text:c})), !c)) { | |
return null; | |
} | |
b.hasProperties = !!Object.keys(b).length; | |
b.computedText = c; | |
b.lastWord = axs.properties.getLastWord(c); | |
return b; | |
}; | |
axs.properties.getAriaProperties = function(a) { | |
var b = {}, c = axs.properties.getGlobalAriaProperties(a), d; | |
for (d in axs.constants.ARIA_PROPERTIES) { | |
var e = "aria-" + d; | |
if (a.hasAttribute(e)) { | |
var f = a.getAttribute(e); | |
c[e] = axs.utils.getAriaPropertyValue(e, f, a); | |
} | |
} | |
0 < Object.keys(c).length && (b.properties = axs.utils.values(c)); | |
f = axs.utils.getRoles(a); | |
if (!f) { | |
return Object.keys(b).length ? b : null; | |
} | |
b.roles = f; | |
if (!f.valid || !f.roles) { | |
return b; | |
} | |
for (var e = f.roles, g = 0;g < e.length;g++) { | |
var h = e[g]; | |
if (h.details && h.details.propertiesSet) { | |
for (d in h.details.propertiesSet) { | |
d in c || (a.hasAttribute(d) ? (f = a.getAttribute(d), c[d] = axs.utils.getAriaPropertyValue(d, f, a), "values" in c[d] && (f = c[d].values, f[f.length - 1].isLast = !0)) : h.details.requiredPropertiesSet[d] && (c[d] = {name:d, valid:!1, reason:"Required property not set"})); | |
} | |
} | |
} | |
0 < Object.keys(c).length && (b.properties = axs.utils.values(c)); | |
return 0 < Object.keys(b).length ? b : null; | |
}; | |
axs.properties.getGlobalAriaProperties = function(a) { | |
var b = {}, c; | |
for (c in axs.constants.GLOBAL_PROPERTIES) { | |
if (a.hasAttribute(c)) { | |
var d = a.getAttribute(c); | |
b[c] = axs.utils.getAriaPropertyValue(c, d, a); | |
} | |
} | |
return b; | |
}; | |
axs.properties.getVideoProperties = function(a) { | |
if (!axs.browserUtils.matchSelector(a, "video")) { | |
return null; | |
} | |
var b = {}; | |
b.captionTracks = axs.properties.getTrackElements(a, "captions"); | |
b.descriptionTracks = axs.properties.getTrackElements(a, "descriptions"); | |
b.chapterTracks = axs.properties.getTrackElements(a, "chapters"); | |
return b; | |
}; | |
axs.properties.getTrackElements = function(a, b) { | |
var c = a.querySelectorAll("track[kind=" + b + "]"), d = {}; | |
if (!c.length) { | |
return d.valid = !1, d.reason = {messageKey:"noTracksProvided", args:[[b]]}, d; | |
} | |
d.valid = !0; | |
for (var e = [], f = 0;f < c.length;f++) { | |
var g = {}, h = c[f].getAttribute("src"), k = c[f].getAttribute("srcLang"), m = c[f].getAttribute("label"); | |
h ? (g.valid = !0, g.src = h) : (g.valid = !1, g.reason = {messageKey:"noSrcProvided"}); | |
h = ""; | |
m && (h += m, k && (h += " ")); | |
k && (h += "(" + k + ")"); | |
"" == h && (h = "[[object Object]]"); | |
g.name = h; | |
e.push(g); | |
} | |
d.values = e; | |
return d; | |
}; | |
axs.properties.getAllProperties = function(a) { | |
var b = axs.dom.asElement(a); | |
if (!b) { | |
return {}; | |
} | |
var c = {}; | |
c.ariaProperties = axs.properties.getAriaProperties(b); | |
c.colorProperties = axs.properties.getColorProperties(b); | |
c.focusProperties = axs.properties.getFocusProperties(b); | |
c.textProperties = axs.properties.getTextProperties(a); | |
c.videoProperties = axs.properties.getVideoProperties(b); | |
return c; | |
}; | |
(function() { | |
function a(a) { | |
if (!a) { | |
return null; | |
} | |
var c = a.tagName; | |
if (!c) { | |
return null; | |
} | |
c = c.toUpperCase(); | |
c = axs.constants.TAG_TO_IMPLICIT_SEMANTIC_INFO[c]; | |
if (!c || !c.length) { | |
return null; | |
} | |
for (var d = null, e = 0, f = c.length;e < f;e++) { | |
var g = c[e]; | |
if (g.selector) { | |
if (axs.browserUtils.matchSelector(a, g.selector)) { | |
return g; | |
} | |
} else { | |
d = g; | |
} | |
} | |
return d; | |
} | |
axs.properties.getImplicitRole = function(b) { | |
return (b = a(b)) ? b.role : ""; | |
}; | |
axs.properties.canTakeAriaAttributes = function(b) { | |
return (b = a(b)) ? !b.reserved : !0; | |
}; | |
})(); | |
axs.properties.getNativelySupportedAttributes = function(a) { | |
var b = []; | |
if (!a) { | |
return b; | |
} | |
a = a.cloneNode(!1); | |
for (var c = Object.keys(axs.constants.ARIA_TO_HTML_ATTRIBUTE), d = 0;d < c.length;d++) { | |
var e = c[d]; | |
axs.constants.ARIA_TO_HTML_ATTRIBUTE[e] in a && (b[b.length] = e); | |
} | |
return b; | |
}; | |
(function() { | |
var a = {}; | |
axs.properties.getSelectorForRole = function(b) { | |
if (!b) { | |
return ""; | |
} | |
if (a[b] && a.hasOwnProperty(b)) { | |
return a[b]; | |
} | |
var c = ['[role="' + b + '"]']; | |
Object.keys(axs.constants.TAG_TO_IMPLICIT_SEMANTIC_INFO).forEach(function(a) { | |
var e = axs.constants.TAG_TO_IMPLICIT_SEMANTIC_INFO[a]; | |
if (e && e.length) { | |
for (var f = 0;f < e.length;f++) { | |
var g = e[f]; | |
if (g.role === b) { | |
if (g.selector) { | |
c[c.length] = g.selector; | |
} else { | |
c[c.length] = a; | |
break; | |
} | |
} | |
} | |
} | |
}); | |
return a[b] = c.join(","); | |
}; | |
})(); | |
axs.AuditRule = function(a) { | |
for (var b = a.opt_requires || {}, c = !0, d = [], e = 0;e < axs.AuditRule.requiredFields.length;e++) { | |
var f = axs.AuditRule.requiredFields[e]; | |
f in a || (c = !1, d.push(f)); | |
} | |
if (!c) { | |
throw "Invalid spec; the following fields were not specified: " + d.join(", ") + "\n" + JSON.stringify(a); | |
} | |
this.name = a.name; | |
this.severity = a.severity; | |
this.relevantElementMatcher_ = a.relevantElementMatcher; | |
this.isRelevant_ = a.isRelevant || function(a, b) { | |
return !0; | |
}; | |
this.test_ = a.test; | |
this.code = a.code; | |
this.heading = a.heading || ""; | |
this.url = a.url || ""; | |
this.requiresConsoleAPI = !!b.consoleAPI; | |
this.relevantElements = []; | |
this.relatedElements = []; | |
this.collectIdRefs = b.idRefs || !1; | |
}; | |
axs.AuditRule.requiredFields = "name severity relevantElementMatcher test code heading".split(" "); | |
axs.AuditRule.NOT_APPLICABLE = {result:axs.constants.AuditResult.NA}; | |
axs.AuditRule.prototype.addElement = function(a, b) { | |
a.push(b); | |
}; | |
axs.AuditRule.prototype.collectMatchingElement = function(a, b) { | |
return this.relevantElementMatcher_(a, b) && b.inScope ? (this.relevantElements.push({element:a, flags:b}), !0) : !1; | |
}; | |
axs.AuditRule.prototype.canRun = function(a) { | |
return this.disabled || !a.withConsoleApi && this.requiresConsoleAPI ? !1 : !0; | |
}; | |
axs.AuditRule.Result = function(a, b) { | |
var c = axs.utils.namedValues(b); | |
c.severity = a.getSeverity(b.name) || c.severity; | |
this.rule = c; | |
this.maxResults = a.maxResults; | |
this.update(axs.constants.AuditResult.NA); | |
}; | |
axs.AuditRule.Result.prototype.update = function(a, b) { | |
if (a === axs.constants.AuditResult.FAIL) { | |
var c = this.elements || (this.elements = []); | |
this.result = a; | |
this.maxResults && this.elements.length >= this.maxResults ? this.resultsTruncated = !0 : b && c.push(b); | |
} else { | |
a === axs.constants.AuditResult.PASS ? (this.elements || (this.elements = []), this.result !== axs.constants.AuditResult.FAIL && (this.result = a)) : this.result || (this.result = a); | |
} | |
}; | |
axs.AuditRule.prototype.run = function(a) { | |
try { | |
for (var b = this._options || {}, c = new axs.AuditRule.Result(a, this), d;d = this.relevantElements.shift();) { | |
var e = d.element, f = d.flags; | |
this.isRelevant_(e, f) && (this.test_(e, f, b.config) ? c.update(axs.constants.AuditResult.FAIL, e) : c.update(axs.constants.AuditResult.PASS, e)); | |
} | |
return c; | |
} finally { | |
this.relatedElements.length = 0; | |
} | |
}; | |
axs.AuditRules = {}; | |
(function() { | |
var a = {}, b = {}; | |
axs.AuditRules.specs = {}; | |
axs.AuditRules.addRule = function(c) { | |
var d = new axs.AuditRule(c); | |
if (d.code in b) { | |
throw Error('Can not add audit rule with same code: "' + d.code + '"'); | |
} | |
if (d.name in a) { | |
throw Error('Can not add audit rule with same name: "' + d.name + '"'); | |
} | |
a[d.name] = b[d.code] = d; | |
axs.AuditRules.specs[c.name] = c; | |
}; | |
axs.AuditRules.getRule = function(c) { | |
return a[c] || b[c] || null; | |
}; | |
axs.AuditRules.getRules = function(b) { | |
var d = Object.keys(a); | |
return b ? d : d.map(function(a) { | |
return this.getRule(a); | |
}, axs.AuditRules); | |
}; | |
axs.AuditRules.getActiveRules = function(a) { | |
var b; | |
b = a.auditRulesToRun && 0 < a.auditRulesToRun.length ? a.auditRulesToRun : axs.AuditRules.getRules(!0); | |
if (a.auditRulesToIgnore) { | |
for (var e = 0;e < a.auditRulesToIgnore.length;e++) { | |
var f = a.auditRulesToIgnore[e]; | |
0 > b.indexOf(f) || b.splice(b.indexOf(f), 1); | |
} | |
} | |
return b.map(axs.AuditRules.getRule); | |
}; | |
})(); | |
axs.AuditResults = function() { | |
this.errors_ = []; | |
this.warnings_ = []; | |
}; | |
goog.exportSymbol("axs.AuditResults", axs.AuditResults); | |
axs.AuditResults.prototype.addError = function(a) { | |
"" != a && this.errors_.push(a); | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "addError", axs.AuditResults.prototype.addError); | |
axs.AuditResults.prototype.addWarning = function(a) { | |
"" != a && this.warnings_.push(a); | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "addWarning", axs.AuditResults.prototype.addWarning); | |
axs.AuditResults.prototype.numErrors = function() { | |
return this.errors_.length; | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "numErrors", axs.AuditResults.prototype.numErrors); | |
axs.AuditResults.prototype.numWarnings = function() { | |
return this.warnings_.length; | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "numWarnings", axs.AuditResults.prototype.numWarnings); | |
axs.AuditResults.prototype.getErrors = function() { | |
return this.errors_; | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "getErrors", axs.AuditResults.prototype.getErrors); | |
axs.AuditResults.prototype.getWarnings = function() { | |
return this.warnings_; | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "getWarnings", axs.AuditResults.prototype.getWarnings); | |
axs.AuditResults.prototype.toString = function() { | |
for (var a = "", b = 0;b < this.errors_.length;b++) { | |
0 == b && (a += "\nErrors:\n"); | |
var c = this.errors_[b], a = a + (c + "\n\n"); | |
} | |
for (b = 0;b < this.warnings_.length;b++) { | |
0 == b && (a += "\nWarnings:\n"), c = this.warnings_[b], a += c + "\n\n"; | |
} | |
return a; | |
}; | |
goog.exportProperty(axs.AuditResults.prototype, "toString", axs.AuditResults.prototype.toString); | |
axs.Audit = {}; | |
axs.AuditConfiguration = function(a) { | |
null == a && (a = {}); | |
this.rules_ = {}; | |
this.maxResults = this.auditRulesToIgnore = this.auditRulesToRun = this.scope = null; | |
this.withConsoleApi = !1; | |
this.showUnsupportedRulesWarning = this.walkDom = !0; | |
for (var b in this) { | |
this.hasOwnProperty(b) && b in a && (this[b] = a[b]); | |
} | |
goog.exportProperty(this, "scope", this.scope); | |
goog.exportProperty(this, "auditRulesToRun", this.auditRulesToRun); | |
goog.exportProperty(this, "auditRulesToIgnore", this.auditRulesToIgnore); | |
goog.exportProperty(this, "withConsoleApi", this.withConsoleApi); | |
goog.exportProperty(this, "walkDom", this.walkDom); | |
goog.exportProperty(this, "showUnsupportedRulesWarning", this.showUnsupportedRulesWarning); | |
}; | |
goog.exportSymbol("axs.AuditConfiguration", axs.AuditConfiguration); | |
axs.AuditConfiguration.prototype = {ignoreSelectors:function(a, b) { | |
a in this.rules_ || (this.rules_[a] = {}); | |
"ignore" in this.rules_[a] || (this.rules_[a].ignore = []); | |
Array.prototype.push.call(this.rules_[a].ignore, b); | |
}, getIgnoreSelectors:function(a) { | |
return a in this.rules_ && "ignore" in this.rules_[a] ? this.rules_[a].ignore : []; | |
}, setSeverity:function(a, b) { | |
a in this.rules_ || (this.rules_[a] = {}); | |
this.rules_[a].severity = b; | |
}, getSeverity:function(a) { | |
return a in this.rules_ && "severity" in this.rules_[a] ? this.rules_[a].severity : null; | |
}, setRuleConfig:function(a, b) { | |
a in this.rules_ || (this.rules_[a] = {}); | |
this.rules_[a].config = b; | |
}, getRuleConfig:function(a) { | |
return a in this.rules_ && "config" in this.rules_[a] ? this.rules_[a].config : null; | |
}}; | |
goog.exportProperty(axs.AuditConfiguration.prototype, "ignoreSelectors", axs.AuditConfiguration.prototype.ignoreSelectors); | |
goog.exportProperty(axs.AuditConfiguration.prototype, "getIgnoreSelectors", axs.AuditConfiguration.prototype.getIgnoreSelectors); | |
axs.Audit.unsupportedRulesWarningShown = !1; | |
axs.Audit.getRulesCannotRun = function(a) { | |
return a.withConsoleApi ? [] : axs.AuditRules.getRules().filter(function(a) { | |
return a.requiresConsoleAPI; | |
}).map(function(a) { | |
return a.code; | |
}); | |
}; | |
axs.Audit.run = function(a) { | |
a = a || new axs.AuditConfiguration; | |
if (!axs.Audit.unsupportedRulesWarningShown && a.showUnsupportedRulesWarning) { | |
var b = axs.Audit.getRulesCannotRun(a); | |
0 < b.length && (console.warn("Some rules cannot be checked using the axs.Audit.run() method call. Use the Chrome plugin to check these rules: " + b.join(", ")), console.warn("To remove this message, pass an AuditConfiguration object to axs.Audit.run() and set configuration.showUnsupportedRulesWarning = false.")); | |
axs.Audit.unsupportedRulesWarningShown = !0; | |
} | |
b = axs.AuditRules.getActiveRules(a); | |
a.collectIdRefs = b.some(function(a) { | |
return a.collectIdRefs; | |
}); | |
a.scope || (a.scope = document.documentElement); | |
axs.Audit.collectMatchingElements(a, b); | |
for (var c = [], d = 0;d < b.length;d++) { | |
var e = b[d]; | |
e.canRun(a) && c.push(e.run(a)); | |
} | |
return c; | |
}; | |
goog.exportSymbol("axs.Audit.run", axs.Audit.run); | |
(function() { | |
function a(a, c) { | |
var d = a.getIgnoreSelectors(c.name); | |
if (0 < d.length || a.scope) { | |
this.ignoreSelectors = d; | |
} | |
if (d = a.getRuleConfig(c.name)) { | |
this.config = d; | |
} | |
} | |
axs.Audit.collectMatchingElements = function(b, c) { | |
axs.dom.composedTreeSearch(b.walkDom ? document.documentElement : b.scope, null, {preorder:function(d, e) { | |
e.inScope || (e.inScope = d === b.scope); | |
for (var f = 0;f < c.length;f++) { | |
var g = c[f]; | |
g.canRun(b) && (g._options = new a(b, g), e.ignoring[g.name] || (e.ignoring[g.name] = g._options.shouldIgnore(d)) || g.collectMatchingElement(d, e)); | |
} | |
return !0; | |
}}, {walkDom:b.walkDom, collectIdRefs:b.collectIdRefs, level:0, ignoring:{}, disabled:!1, hidden:!1}); | |
}; | |
a.prototype.shouldIgnore = function(a) { | |
var c = this.ignoreSelectors; | |
if (c) { | |
for (var d = 0;d < c.length;d++) { | |
if (axs.browserUtils.matchSelector(a, c[d])) { | |
return !0; | |
} | |
} | |
} | |
return !1; | |
}; | |
})(); | |
axs.Audit.auditResults = function(a) { | |
for (var b = new axs.AuditResults, c = 0;c < a.length;c++) { | |
var d = a[c]; | |
d.result == axs.constants.AuditResult.FAIL && (d.rule.severity == axs.constants.Severity.SEVERE ? b.addError(axs.Audit.accessibilityErrorMessage(d)) : b.addWarning(axs.Audit.accessibilityErrorMessage(d))); | |
} | |
return b; | |
}; | |
goog.exportSymbol("axs.Audit.auditResults", axs.Audit.auditResults); | |
axs.Audit.createReport = function(a, b) { | |
var c; | |
c = "*** Begin accessibility audit results ***\nAn accessibility audit found " + axs.Audit.auditResults(a).toString(); | |
b && (c = c + "\nFor more information, please see " + b); | |
return c + "\n*** End accessibility audit results ***"; | |
}; | |
goog.exportSymbol("axs.Audit.createReport", axs.Audit.createReport); | |
axs.Audit.accessibilityErrorMessage = function(a) { | |
for (var b = a.rule.severity == axs.constants.Severity.SEVERE ? "Error: " : "Warning: ", b = b + (a.rule.code + " (" + a.rule.heading + ") failed on the following " + (1 == a.elements.length ? "element" : "elements")), b = 1 == a.elements.length ? b + ":" : b + (" (1 - " + Math.min(5, a.elements.length) + " of " + a.elements.length + "):"), c = Math.min(a.elements.length, 5), d = 0;d < c;d++) { | |
var e = a.elements[d], b = b + "\n"; | |
try { | |
b += axs.utils.getQuerySelectorText(e); | |
} catch (f) { | |
b += " tagName:" + e.tagName, b += " id:" + e.id; | |
} | |
} | |
"" != a.rule.url && (b += "\nSee " + a.rule.url + " for more information."); | |
return b; | |
}; | |
goog.exportSymbol("axs.Audit.accessibilityErrorMessage", axs.Audit.accessibilityErrorMessage); | |
axs.AuditRules.addRule({name:"ariaOnReservedElement", heading:"This element does not support ARIA roles, states and properties", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_12", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return !axs.properties.canTakeAriaAttributes(a); | |
}, test:function(a) { | |
return null !== axs.properties.getAriaProperties(a); | |
}, code:"AX_ARIA_12"}); | |
axs.AuditRules.addRule({name:"ariaOwnsDescendant", heading:"aria-owns should not be used if ownership is implicit in the DOM", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_06", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[aria-owns]"); | |
}, test:function(a) { | |
return axs.utils.getIdReferents("aria-owns", a).some(function(b) { | |
return a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_CONTAINED_BY; | |
}); | |
}, code:"AX_ARIA_06"}); | |
axs.AuditRules.addRule({name:"ariaRoleNotScoped", heading:"Elements with ARIA roles must be in the correct scope", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_09", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[role]"); | |
}, test:function(a) { | |
var b = axs.utils.getRoles(a); | |
if (!b || !b.applied) { | |
return !1; | |
} | |
b = b.applied.details.scope; | |
if (!b || 0 === b.length) { | |
return !1; | |
} | |
for (var c = a;c = axs.dom.parentElement(c);) { | |
var d = axs.utils.getRoles(c, !0); | |
if (d && d.applied && 0 <= b.indexOf(d.applied.name)) { | |
return !1; | |
} | |
} | |
if (a = axs.utils.getAriaIdReferrers(a, "aria-owns")) { | |
for (c = 0;c < a.length;c++) { | |
if ((d = axs.utils.getRoles(a[c], !0)) && d.applied && 0 <= b.indexOf(d.applied.name)) { | |
return !1; | |
} | |
} | |
} | |
return !0; | |
}, code:"AX_ARIA_09"}); | |
axs.AuditRules.addRule({name:"audioWithoutControls", heading:"Audio elements should have controls", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_audio_01", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "audio[autoplay]"); | |
}, test:function(a) { | |
return !a.querySelectorAll("[controls]").length && 3 < a.duration; | |
}, code:"AX_AUDIO_01"}); | |
(function() { | |
var a = /^aria\-/; | |
axs.AuditRules.addRule({name:"badAriaAttribute", heading:"This element has an invalid ARIA attribute", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_11", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(b) { | |
b = b.attributes; | |
for (var c = 0, d = b.length;c < d;c++) { | |
if (a.test(b[c].name)) { | |
return !0; | |
} | |
} | |
return !1; | |
}, test:function(b) { | |
b = b.attributes; | |
for (var c = 0, d = b.length;c < d;c++) { | |
var e = b[c].name; | |
if (a.test(e) && (e = e.replace(a, ""), !axs.constants.ARIA_PROPERTIES.hasOwnProperty(e))) { | |
return !0; | |
} | |
} | |
return !1; | |
}, code:"AX_ARIA_11"}); | |
})(); | |
axs.AuditRules.addRule({name:"badAriaAttributeValue", heading:"ARIA state and property values must be valid", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_04", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
var b = axs.utils.getSelectorForAriaProperties(axs.constants.ARIA_PROPERTIES); | |
return axs.browserUtils.matchSelector(a, b); | |
}, test:function(a) { | |
for (var b in axs.constants.ARIA_PROPERTIES) { | |
var c = "aria-" + b; | |
if (a.hasAttribute(c)) { | |
var d = a.getAttribute(c); | |
if (!axs.utils.getAriaPropertyValue(c, d, a).valid) { | |
return !0; | |
} | |
} | |
} | |
return !1; | |
}, code:"AX_ARIA_04"}); | |
axs.AuditRules.addRule({name:"badAriaRole", heading:"Elements with ARIA roles must use a valid, non-abstract ARIA role", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_01", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[role]"); | |
}, test:function(a) { | |
return !axs.utils.getRoles(a).valid; | |
}, code:"AX_ARIA_01"}); | |
axs.AuditRules.addRule({name:"controlsWithoutLabel", heading:"Controls and media elements should have labels", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_text_01", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
if (!axs.browserUtils.matchSelector(a, 'input:not([type="hidden"]):not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), video:not([disabled])') || "presentation" == a.getAttribute("role")) { | |
return !1; | |
} | |
if (0 <= a.tabIndex) { | |
return !0; | |
} | |
for (a = axs.dom.parentElement(a);null != a;a = axs.dom.parentElement(a)) { | |
if (axs.utils.elementIsAriaWidget(a)) { | |
return !1; | |
} | |
} | |
return !0; | |
}, test:function(a, b) { | |
if (b.hidden || "input" == a.tagName.toLowerCase() && "button" == a.type && a.value.length || "button" == a.tagName.toLowerCase() && a.textContent.replace(/^\s+|\s+$/g, "").length || axs.utils.hasLabel(a)) { | |
return !1; | |
} | |
var c = axs.properties.findTextAlternatives(a, {}); | |
return null === c || "" === c.trim() ? !0 : !1; | |
}, code:"AX_TEXT_01", ruleName:"Controls and media elements should have labels"}); | |
axs.AuditRules.addRule({name:"duplicateId", heading:"Any ID referred to via an IDREF must be unique in the DOM", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_html_02", severity:axs.constants.Severity.SEVERE, opt_requires:{idRefs:!0}, relevantElementMatcher:function(a, b) { | |
b.idrefs.length && !b.hidden && this.relatedElements.push({element:a, flags:b}); | |
return a.hasAttribute("id") ? !0 : !1; | |
}, isRelevant:function(a, b) { | |
var c = a.id, d = b.level; | |
return this.relatedElements.some(function(a) { | |
var b = a.flags.idrefs; | |
return a.flags.level === d && 0 <= b.indexOf(c); | |
}); | |
}, test:function(a) { | |
var b = "[id='" + a.id.replace(/'/g, "\\'") + "']"; | |
return 1 < a.ownerDocument.querySelectorAll(b).length; | |
}, code:"AX_HTML_02"}); | |
axs.AuditRules.addRule({name:"focusableElementNotVisibleAndNotAriaHidden", heading:"These elements are focusable but either invisible or obscured by another element", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_focus_01", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
if (!axs.browserUtils.matchSelector(a, axs.utils.FOCUSABLE_ELEMENTS_SELECTOR)) { | |
return !1; | |
} | |
if (0 <= a.tabIndex) { | |
return !0; | |
} | |
for (var b = axs.dom.parentElement(a);null != b;b = axs.dom.parentElement(b)) { | |
if (axs.utils.elementIsAriaWidget(b)) { | |
return !1; | |
} | |
} | |
a = axs.properties.findTextAlternatives(a, {}); | |
return null === a || "" === a.trim() ? !1 : !0; | |
}, test:function(a, b) { | |
if (b.hidden) { | |
return !1; | |
} | |
a.focus(); | |
return !axs.utils.elementIsVisible(a); | |
}, code:"AX_FOCUS_01"}); | |
axs.AuditRules.addRule({name:"humanLangMissing", heading:"The web page should have the content's human language indicated in the markup", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_html_01", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return a instanceof a.ownerDocument.defaultView.HTMLHtmlElement; | |
}, test:function(a) { | |
return a.lang ? !1 : !0; | |
}, code:"AX_HTML_01"}); | |
axs.AuditRules.addRule({name:"imagesWithoutAltText", heading:"Images should have a text alternative or presentational role", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_text_02", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a, b) { | |
return axs.browserUtils.matchSelector(a, "img") && !b.hidden; | |
}, test:function(a) { | |
if (a.hasAttribute("alt") && "" == a.alt || "presentation" == a.getAttribute("role")) { | |
return !1; | |
} | |
var b = {}; | |
axs.properties.findTextAlternatives(a, b); | |
return 0 == Object.keys(b).length ? !0 : !1; | |
}, code:"AX_TEXT_02"}); | |
axs.AuditRules.addRule({name:"linkWithUnclearPurpose", heading:"The purpose of each link should be clear from the link text", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_text_04", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a, b) { | |
return axs.browserUtils.matchSelector(a, "a[href]") && !b.hidden; | |
}, test:function(a, b, c) { | |
c = c || {}; | |
var d = c.blacklistPhrases || [], e = /\s+/; | |
for (b = 0;b < d.length;b++) { | |
var f = "^\\s*" + d[b].trim().replace(e, "\\s*") + "s*[^a-z]$"; | |
if ((new RegExp(f, "i")).test(a.textContent)) { | |
return !0; | |
} | |
} | |
c = c.stopwords || "click tap go here learn more this page link about".split(" "); | |
a = axs.properties.findTextAlternatives(a, {}); | |
if (null === a || "" === a.trim()) { | |
return !0; | |
} | |
a = a.replace(/[^a-zA-Z ]/g, ""); | |
for (b = 0;b < c.length;b++) { | |
if (a = a.replace(new RegExp("\\b" + c[b] + "\\b", "ig"), ""), "" == a.trim()) { | |
return !0; | |
} | |
} | |
return !1; | |
}, code:"AX_TEXT_04"}); | |
axs.AuditRules.addRule({name:"lowContrastElements", heading:"Text elements should have a reasonable contrast ratio", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_color_01", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a, b) { | |
return !b.disabled && axs.properties.hasDirectTextDescendant(a); | |
}, test:function(a) { | |
var b = window.getComputedStyle(a, null); | |
return (a = axs.utils.getContrastRatioForElementWithComputedStyle(b, a)) && axs.utils.isLowContrast(a, b); | |
}, code:"AX_COLOR_01"}); | |
axs.AuditRules.addRule({name:"mainRoleOnInappropriateElement", heading:"role=main should only appear on significant elements", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_05", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[role~=main]"); | |
}, test:function(a) { | |
if (axs.utils.isInlineElement(a)) { | |
return !0; | |
} | |
a = axs.properties.getTextFromDescendantContent(a); | |
return !a || 50 > a.length ? !0 : !1; | |
}, code:"AX_ARIA_05"}); | |
axs.AuditRules.addRule({name:"elementsWithMeaningfulBackgroundImage", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a, b) { | |
return !b.hidden; | |
}, heading:"Meaningful images should not be used in element backgrounds", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_image_01", test:function(a) { | |
if (a.textContent && 0 < a.textContent.length) { | |
return !1; | |
} | |
a = window.getComputedStyle(a, null); | |
var b = a.backgroundImage; | |
if (!b || "undefined" === b || "none" === b || 0 != b.indexOf("url")) { | |
return !1; | |
} | |
b = parseInt(a.width, 10); | |
a = parseInt(a.height, 10); | |
return 150 > b && 150 > a; | |
}, code:"AX_IMAGE_01"}); | |
axs.AuditRules.addRule({name:"multipleAriaOwners", heading:"An element's ID must not be present in more that one aria-owns attribute at any time", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_07", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[aria-owns]"); | |
}, test:function(a) { | |
return axs.utils.getIdReferents("aria-owns", a).some(function(a) { | |
return 1 < axs.utils.getAriaIdReferrers(a, "aria-owns").length; | |
}); | |
}, code:"AX_ARIA_07"}); | |
axs.AuditRules.addRule({name:"multipleLabelableElementsPerLabel", heading:"A label element may not have labelable descendants other than its labeled control.", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#-ax_text_03--labels-should-only-contain-one-labelable-element", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "label"); | |
}, test:function(a) { | |
if (1 < a.querySelectorAll(axs.utils.LABELABLE_ELEMENTS_SELECTOR).length) { | |
return !0; | |
} | |
}, code:"AX_TEXT_03"}); | |
axs.AuditRules.addRule({name:"nonExistentRelatedElement", heading:"Attributes which refer to other elements by ID should refer to elements which exist in the DOM", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_html_03", severity:axs.constants.Severity.SEVERE, opt_requires:{idRefs:!0}, relevantElementMatcher:function(a, b) { | |
return 0 < b.idrefs.length; | |
}, test:function(a, b) { | |
return b.idrefs.some(function(a) { | |
return !document.getElementById(a); | |
}); | |
}, code:"AX_HTML_03"}); | |
axs.AuditRules.addRule({name:"pageWithoutTitle", heading:"The web page should have a title that describes topic or purpose", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_title_01", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return "html" == a.tagName.toLowerCase(); | |
}, test:function(a) { | |
a = a.querySelector("head"); | |
return a ? (a = a.querySelector("title")) ? !a.textContent : !0 : !0; | |
}, code:"AX_TITLE_01"}); | |
axs.AuditRules.addRule({name:"requiredAriaAttributeMissing", heading:"Elements with ARIA roles must have all required attributes for that role", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_03", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[role]"); | |
}, test:function(a) { | |
var b = axs.utils.getRoles(a); | |
if (!b.valid) { | |
return !1; | |
} | |
for (var c = 0;c < b.roles.length;c++) { | |
var d = b.roles[c].details.requiredPropertiesSet, e; | |
for (e in d) { | |
if (d = e.replace(/^aria-/, ""), !("defaultValue" in axs.constants.ARIA_PROPERTIES[d] || a.hasAttribute(e)) && 0 > axs.properties.getNativelySupportedAttributes(a).indexOf(e)) { | |
return !0; | |
} | |
} | |
} | |
}, code:"AX_ARIA_03"}); | |
(function() { | |
function a(a) { | |
a = axs.utils.getRoles(a); | |
if (!a || !a.applied) { | |
return []; | |
} | |
a = a.applied; | |
return a.valid ? a.details.mustcontain || [] : []; | |
} | |
axs.AuditRules.addRule({name:"requiredOwnedAriaRoleMissing", heading:"Elements with ARIA roles must ensure required owned elements are present", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_08", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(b) { | |
return axs.browserUtils.matchSelector(b, "[role]") ? 0 < a(b).length : !1; | |
}, test:function(b) { | |
if ("true" === b.getAttribute("aria-busy")) { | |
return !1; | |
} | |
for (var c = a(b), d = c.length - 1;0 <= d;d--) { | |
var e = axs.utils.findDescendantsWithRole(b, c[d]); | |
if (e && e.length) { | |
return !1; | |
} | |
} | |
b = axs.utils.getIdReferents("aria-owns", b); | |
for (d = b.length - 1;0 <= d;d--) { | |
if ((e = axs.utils.getRoles(b[d], !0)) && e.applied) { | |
for (var e = e.applied, f = c.length - 1;0 <= f;f--) { | |
if (e.name === c[f]) { | |
return !1; | |
} | |
} | |
} | |
} | |
return !0; | |
}, code:"AX_ARIA_08"}); | |
})(); | |
axs.AuditRules.addRule({name:"roleTooltipRequiresDescribedby", heading:"Elements with role=tooltip should have a corresponding element with aria-describedby", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_02", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a, b) { | |
return axs.browserUtils.matchSelector(a, "[role=tooltip]") && !b.hidden; | |
}, test:function(a) { | |
a = axs.utils.getAriaIdReferrers(a, "aria-describedby"); | |
return !a || 0 === a.length; | |
}, code:"AX_TOOLTIP_01"}); | |
axs.AuditRules.addRule({name:"tabIndexGreaterThanZero", heading:"Avoid positive integer values for tabIndex", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_focus_03", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "[tabindex]"); | |
}, test:function(a) { | |
if (0 < a.tabIndex) { | |
return !0; | |
} | |
}, code:"AX_FOCUS_03"}); | |
(function() { | |
function a(a) { | |
if (0 == a.childElementCount) { | |
return !0; | |
} | |
if (a.hasAttribute("role") && "presentation" != a.getAttribute("role")) { | |
return !1; | |
} | |
if ("presentation" == a.getAttribute("role")) { | |
a = a.querySelectorAll("*"); | |
for (var c = 0;c < a.length;c++) { | |
if ("TR" != a[c].tagName && "TD" != a[c].tagName) { | |
return !1; | |
} | |
} | |
return !0; | |
} | |
return !1; | |
} | |
axs.AuditRules.addRule({name:"tableHasAppropriateHeaders", heading:"Tables should have appropriate headers", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_table_01", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(b) { | |
return axs.browserUtils.matchSelector(b, "table") && !a(b) && 0 < b.querySelectorAll("tr").length; | |
}, test:function(a) { | |
a = a.querySelectorAll("tr"); | |
var c; | |
a: { | |
c = a[0].children; | |
for (var d = 0;d < c.length;d++) { | |
if ("TH" != c[d].tagName) { | |
c = !0; | |
break a; | |
} | |
} | |
c = !1; | |
} | |
if (c) { | |
a: { | |
for (c = 0;c < a.length;c++) { | |
if ("TH" != a[c].children[0].tagName) { | |
c = !0; | |
break a; | |
} | |
} | |
c = !1; | |
} | |
} | |
if (c) { | |
a: { | |
c = a[0].children; | |
for (d = 1;d < c.length;d++) { | |
if ("TH" != c[d].tagName) { | |
c = !0; | |
break a; | |
} | |
} | |
for (d = 1;d < a.length;d++) { | |
if ("TH" != a[d].children[0].tagName) { | |
c = !0; | |
break a; | |
} | |
} | |
c = !1; | |
} | |
} | |
return c; | |
}, code:"AX_TABLE_01"}); | |
})(); | |
(function() { | |
axs.AuditRules.addRule({name:"uncontrolledTabpanel", heading:"A tabpanel should be related to a tab via aria-controls or aria-labelledby", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_13", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, '[role="tabpanel"]'); | |
}, test:function(a) { | |
var b; | |
b = document.querySelectorAll('[role="tab"][aria-controls="' + a.id + '"]'); | |
(b = a.id && 1 === b.length) || (a.hasAttribute("aria-labelledby") ? (a = document.querySelectorAll("#" + a.getAttribute("aria-labelledby")), b = 1 === a.length && "tab" === a[0].getAttribute("role")) : b = !1); | |
return !b; | |
}, code:"AX_ARIA_13"}); | |
})(); | |
axs.AuditRules.addRule({name:"unfocusableElementsWithOnClick", heading:"Elements with onclick handlers must be focusable", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_focus_02", severity:axs.constants.Severity.WARNING, opt_requires:{consoleAPI:!0}, relevantElementMatcher:function(a, b) { | |
return a instanceof a.ownerDocument.defaultView.HTMLBodyElement || b.hidden ? !1 : "click" in getEventListeners(a) ? !0 : !1; | |
}, test:function(a) { | |
return !a.hasAttribute("tabindex") && !axs.utils.isElementImplicitlyFocusable(a) && !a.disabled; | |
}, code:"AX_FOCUS_02"}); | |
(function() { | |
var a = /^aria\-/, b = axs.utils.getSelectorForAriaProperties(axs.constants.ARIA_PROPERTIES); | |
axs.AuditRules.addRule({name:"unsupportedAriaAttribute", heading:"This element has an unsupported ARIA attribute", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_aria_10", severity:axs.constants.Severity.SEVERE, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, b); | |
}, test:function(b) { | |
var d = axs.utils.getRoles(b, !0), d = d && d.applied ? d.applied.details.propertiesSet : axs.constants.GLOBAL_PROPERTIES; | |
b = b.attributes; | |
for (var e = 0, f = b.length;e < f;e++) { | |
var g = b[e].name; | |
if (a.test(g)) { | |
var h = g.replace(a, ""); | |
if (axs.constants.ARIA_PROPERTIES.hasOwnProperty(h) && !(g in d)) { | |
return !0; | |
} | |
} | |
} | |
return !1; | |
}, code:"AX_ARIA_10"}); | |
})(); | |
axs.AuditRules.addRule({name:"videoWithoutCaptions", heading:"Video elements should use <track> elements to provide captions", url:"https://github.com/GoogleChrome/accessibility-developer-tools/wiki/Audit-Rules#ax_video_01", severity:axs.constants.Severity.WARNING, relevantElementMatcher:function(a) { | |
return axs.browserUtils.matchSelector(a, "video"); | |
}, test:function(a) { | |
return !a.querySelectorAll("track[kind=captions]").length; | |
}, code:"AX_VIDEO_01"}); | |
return axs; | |
} | |
http://requirejs.org/docs/errors.html#mismatch | |
[DEBUG][tmz/middleware/1.0.0/client] authkey 85bcfbd793d84806bd67fa8cb9b13525 | |
[DEBUG][tmz/middleware/1.0.0/client] send Object {url: "https://mw-api.tmz.com/api/v1/articles?rankBy=comment&fields=primaryImage&format=json&numRecords=5", data: Object, dataType: "json", headers: Object, type: "GET"} | |
[DEBUG][widgets/sidebar/most-commented-posts/1.0.0/most-commented-posts] Cannot add item to list. | |
[INFO][app] init | |
[DEBUG][tmz/middleware/1.0.0/client] authkey 85bcfbd793d84806bd67fa8cb9b13525 | |
[DEBUG][tmz/middleware/1.0.0/client] send Object {url: "https://mw-api.tmz.com/api/v1/socialactivities?id=…30342d413951,0df06152-9c7e-11e6-b781-30342d413951", data: Object, dataType: "json", headers: Object, type: "GET"} | |
img | |
img | |
img | |
img | |
img | |
Uncaught TypeError: Cannot read property 'width' of undefined | |
http://www.tmz.com/ Resource {requests: Array[3], method: "GET", type: "other", url: "http://www.tmz.com/", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/style.ff5335427922f1d7097c10479b83e1fe.v2016_10_11_142336.css Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…427922f1d7097c10479b83e1fe.v2016_10_11_142336.css", completed: true…} | |
http://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js", completed: true…} | |
http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js", completed: true…} | |
http://optimizedby.openx.com/meta-tmz.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://optimizedby.openx.com/meta-tmz.min.js", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/jscrollpane_inpost.190039b937f8c7f13532a1a12988f728.v2014_05_09_164122.css Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…b937f8c7f13532a1a12988f728.v2014_05_09_164122.css", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/ec875ff19cf2c779fe39063aa60d0426.v2016_10_24_164744.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…ff19cf2c779fe39063aa60d0426.v2016_10_24_164744.js", completed: true…} | |
http://c.amazon-adsystem.com/aax2/amzn_ads.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://c.amazon-adsystem.com/aax2/amzn_ads.js", completed: true…} | |
http://cdn.optimizely.com/js/806850178.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.optimizely.com/js/806850178.js", completed: true…} | |
http://cdnapi.kaltura.com/p/591531/sp/59153100/embedIframeJs/uiconf_id/33967872/partner_id/591531 Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdnapi.kaltura.com/p/591531/sp/59153100/embedIframeJs/uiconf_id/33967872/partner_id/591531", completed: true…} | |
http://assets.adobedtm.com/429741e4dff9fdebe143756ba2f5b8d1b9be5718/satelliteLib-6bba35529baa85950371600f21760a1b107ec48d.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://assets.adobedtm.com/429741e4dff9fdebe143756…teLib-6bba35529baa85950371600f21760a1b107ec48d.js", completed: true…} | |
http://native.sharethrough.com/assets/sfp.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://native.sharethrough.com/assets/sfp.js", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/tinycarousel.6193fc748d6adae31fe5d77205efdd4e.v2014_05_09_164122.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…c748d6adae31fe5d77205efdd4e.v2014_05_09_164122.js", completed: true…} | |
http://aax.amazon-adsystem.com/e/dtb/bid?src=3064&u=http%3A%2F%2Fwww.tmz.com%2F&cb=6384545 Resource {requests: Array[3], method: "GET", type: "script", url: "http://aax.amazon-adsystem.com/e/dtb/bid?src=3064&u=http%3A%2F%2Fwww.tmz.com%2F&cb=6384545", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/js/s_code.v2016_07_13_133725.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/cache/js/s_code.v2016_07_13_133725.js", completed: true…} | |
http://cdnapi.kaltura.com/p/591531/sp/59153100/embedIframeJs/uiconf_id/29171872/partner_id/591531 Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdnapi.kaltura.com/p/591531/sp/59153100/embedIframeJs/uiconf_id/29171872/partner_id/591531", completed: true…} | |
http://cdn.taboolasyndication.com/libtrc/tmz/loader.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.taboolasyndication.com/libtrc/tmz/loader.js", completed: true…} | |
http://tmz.vo.llnwd.net/o28/fonts/woff/SourceSansPro-Regular.otf.woff Resource {requests: Array[3], method: "GET", type: "other", url: "http://tmz.vo.llnwd.net/o28/fonts/woff/SourceSansPro-Regular.otf.woff", completed: true…} | |
http://ll-assets.tmz.com/fonts/tmz/liberation-mono/regular.ttf Resource {requests: Array[3], method: "GET", type: "other", url: "http://ll-assets.tmz.com/fonts/tmz/liberation-mono/regular.ttf", completed: true…} | |
http://tmz.vo.llnwd.net/o28/fonts/woff/RobotoCondensed-Regular1.woff Resource {requests: Array[3], method: "GET", type: "other", url: "http://tmz.vo.llnwd.net/o28/fonts/woff/RobotoCondensed-Regular1.woff", completed: true…} | |
http://ll-assets.tmz.com/fonts/tmz/roboto-condensed/light.ttf Resource {requests: Array[3], method: "GET", type: "other", url: "http://ll-assets.tmz.com/fonts/tmz/roboto-condensed/light.ttf", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/masthead/bg_home.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/masthead/bg_home.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/masthead/black_bg_texture.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/masthead/black_bg_texture.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/masthead/bg_got_a_tip.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/masthead/bg_got_a_tip.png", completed: true…} | |
http://tmz.vo.llnwd.net/o28/fonts/woff/SourceSansPro-Bold.otf.woff Resource {requests: Array[3], method: "GET", type: "other", url: "http://tmz.vo.llnwd.net/o28/fonts/woff/SourceSansPro-Bold.otf.woff", completed: true…} | |
http://consent.truste.com/notice?domain=warnerbros.com&c=teconsent&js=bb¬iceType=bb&text=true Resource {requests: Array[3], method: "GET", type: "script", url: "http://consent.truste.com/notice?domain=warnerbros.com&c=teconsent&js=bb¬iceType=bb&text=true", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/3c5c3de3464ec27a370c79f62c036a7a.v2016_05_23_154432.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…de3464ec27a370c79f62c036a7a.v2016_05_23_154432.js", completed: true…} | |
http://cdn.dynamicyield.com/api/8766195/api_dynamic.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.dynamicyield.com/api/8766195/api_dynamic.js", completed: true…} | |
http://cdn.dynamicyield.com/api/8766195/api_static.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.dynamicyield.com/api/8766195/api_static.js", completed: true…} | |
http://js-sec.indexww.com/ht/htw-wb.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://js-sec.indexww.com/ht/htw-wb.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-210x120-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-210x120-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/chicago-cubs-hair-cuts-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/chicago-cubs-hair-cuts-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-trump-vandal-press-conference-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-trump-vandal-press-conference-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/rather-corset-kylie-hailey-primary-2-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/rather-corset-kylie-hailey-primary-2-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-rob-kardashian-pilot-jones-blac-chyna-tmz-instagram-04-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-rob-kardas…lot-jones-blac-chyna-tmz-instagram-04-210x120.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/img/widgets/masthead/showtimes-submit.v2015_10_23_195847.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…/masthead/showtimes-submit.v2015_10_23_195847.gif", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mindy-undercover-ken-davidoff-oldrockphotofacebook-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mindy-undercover-ken-davidoff-oldrockphotofacebook-3.jpg", completed: true…} | |
http://d1xfq2052q7thw.cloudfront.net/1.7.461.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://d1xfq2052q7thw.cloudfront.net/1.7.461.js", completed: true…} | |
https://www.youtube.com/embed/5aOCk0EI4K0 Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://www.youtube.com/embed/5aOCk0EI4K0", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/img/widgets/showtimes/icon_clock.v2015_10_23_195847.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…dgets/showtimes/icon_clock.v2015_10_23_195847.svg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/cache/img/widgets/footer/thirtymilezone.v2014_12_01_102336.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…gets/footer/thirtymilezone.v2014_12_01_102336.png", completed: true…} | |
https://www.youtube.com/embed/2WyUpuegcPQ Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://www.youtube.com/embed/2WyUpuegcPQ", completed: true…} | |
http://ll-media.tmz.com/2016/10/24/1024-trump-drake-r2r-tmz-instagram-primary-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/24/1024-trump-drake-r2r-tmz-instagram-primary-01-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/20/1020-donald-trump-temple-taggart-mcdowell-tmz-nbc-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/20/1020-donald-trump-temple-taggart-mcdowell-tmz-nbc-01-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-celine-promo-400x300.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-celine-promo-400x300.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-95.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-95.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-careys-banned-dancer-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-careys-banned-dancer-3.jpg", completed: true…} | |
http://www.googletagservices.com/tag/js/gpt.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://www.googletagservices.com/tag/js/gpt.js", completed: true…} | |
http://cdn.krxd.net/controltag?confid=JXlj-zpN Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.krxd.net/controltag?confid=JXlj-zpN", completed: true…} | |
http://www.google-analytics.com/analytics.js Resource {requests: Array[2], method: "GET", type: "script", url: "http://www.google-analytics.com/analytics.js", completed: false…} | |
https://www.google-analytics.com/analytics.js Resource {requests: Array[9], method: "GET", type: "script", url: "https://www.google-analytics.com/analytics.js", completed: true…} | |
http://as.casalemedia.com/cygnus?v=7&fn=headertag_parse_prefetch&s=180473&r=%7BNaNd%22%3A584508463%2C%site%22%3A%7B%22page%22%3A%22http%3A%2F%2Fwww.tmz.com%2F%22%2C%22ref%22%3A%22%22%7D%2C%imp%22%3A%5B%7B%id%22%3A%221%22%2C%20%22banner%22%3A%7B%22w%22%3A970%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%221%22%2C%siteID%22%3A180467%7D%7D%2C%7B%id%22%3A%222%22%2C%20%22banner%22%3A%7B%22w%22%3A728%2C%22h%22%3A90%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%223%22%2C%siteID%22%3A180473%7D%7D%2C%7B%id%22%3A%223%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%228%22%2C%siteID%22%3A180481%7D%7D%2C%7B%id%22%3A%224%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%229%22%2C%siteID%22%3A181724%7D%7D%2C%7B%id%22%3A%225%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2210%22%2C%siteID%22%3A180483%7D%7D%2C%7B%id%22%3A%226%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2211%22%2C%siteID%22%3A180484%7D%7D%2C%7B%id%22%3A%227%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2212%22%2C%siteID%22%3A180485%7D%7D%2C%7B%id%22%3A%228%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2213%22%2C%siteID%22%3A180486%7D%7D%2C%7B%id%22%3A%229%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A250%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2214%22%2C%siteID%22%3A181732%7D%7D%2C%7B%id%22%3A%2210%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A600%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2215%22%2C%siteID%22%3A180487%7D%7D%2C%7B%id%22%3A%2211%22%2C%20%22banner%22%3A%7B%22w%22%3A300%2C%22h%22%3A600%2C%22topframe%22%3A1%7D%2C%22ext%22%3A%20%7B%sid%22%3A%2216%22%2C%siteID%22%3A180488%7D%7D%5D%7D | |
http://ll-media.tmz.com/2016/10/27/mariah-carey-james-packer-happier-footer-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/mariah-carey-james-packer-happier-footer-3.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-02-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-02-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-luna-promo-400x300.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-luna-promo-400x300.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-ray-park-instagram-7.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-ray-park-instagram-7.jpg", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122256/0/225/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122256/0/225/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122257/0/170/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122257/0/170/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122258/0/170/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122258/0/170/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122259/0/170/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122259/0/170/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122260/0/170/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122260/0/170/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122261/0/225/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122261/0/225/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122262/0/170/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122262/0/170/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122263/0/170/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122263/0/170/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122264/0/225/ADTECH;cmd=bid;cors=yes; Resource {requests: Array[2], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/4122264/0/225/ADTECH;cmd=bid;cors=yes;", completed: false…} | |
http://ll-media.tmz.com/2016/10/27/1027-kevin-gates-pcso-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-kevin-gates-pcso-01-210x120.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/middleware/1.0.0/client.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/middleware/1.0.0/client.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/25/1025-mark-and-dave-twitter-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/25/1025-mark-and-dave-twitter-210x120.jpg", completed: true…} | |
http://warnerbros.112.2o7.net/b/ss/wbrostmz/1/JS-1.6.1/s96933632842420?AQB=…Weekday&c27=New&v27=New&s=1920x1080&c=24&j=1.6&v=N&k=Y&bw=800&bh=600&AQE=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://warnerbros.112.2o7.net/b/ss/wbrostmz/1/JS-1…=1920x1080&c=24&j=1.6&v=N&k=Y&bw=800&bh=600&AQE=1", completed: false…} | |
http://ll-media.tmz.com/2016/10/27/1027-hillary-clinton-haunted-house-photos-7.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-hillary-clinton-haunted-house-photos-7.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/24/102416-newt-gingrich-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/24/102416-newt-gingrich-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/19/1019-hillary-clinton-bus-sewage-mike-robins-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/19/1019-hillary-clinton-bus-sewage-mike-robins-01-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-tori-hughes-brixx-sexy-swimsuit-photos-launch-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-tori-hughes-brixx-sexy-swimsuit-photos-launch-3.jpg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/white_comment_tmz.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/white_comment_tmz.svg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/white_f_facebook.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/white_f_facebook.svg", completed: true…} | |
http://ll-media.tmz.com/2016/10/21/1021-marcy-zavala-bikini-beach-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/21/1021-marcy-zavala-bikini-beach-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/21/1021-anel-peralta-sweater-bikini-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/21/1021-anel-peralta-sweater-bikini-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-elf-on-a-shelf-fun-art-5.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-elf-on-a-shelf-fun-art-5.gif", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/elf-shelf-celeb-instagram-footer-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/elf-shelf-celeb-instagram-footer-3.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/08/05/0805-giant-swan-lawsuit-composite-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/08/05/0805-giant-swan-lawsuit-composite-210x120.jpg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/fonts/woff/SourceSansPro-Black.otf.woff Resource {requests: Array[3], method: "GET", type: "other", url: "http://tmz.vo.llnwd.net/o28/fonts/woff/SourceSansPro-Black.otf.woff", completed: true…} | |
http://ll-media.tmz.com/2016/07/27/0727-scrub-daddy-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/07/27/0727-scrub-daddy-01-210x120.jpg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/white_tbird_twitter.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/white_tbird_twitter.svg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/foxkyliejenner-2.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/foxkyliejenner-2.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/inline-promo/bg_tf-inline-promo-pink.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…/widgets/inline-promo/bg_tf-inline-promo-pink.png", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/shortcodes/1.0.3/shortcodes.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/shortcodes/1.0.3/shortcodes.js", completed: true…} | |
https://s.ytimg.com/yts/cssbin/www-embed-player-webp-vflQunHrq.css Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "https://s.ytimg.com/yts/cssbin/www-embed-player-webp-vflQunHrq.css", completed: true…} | |
https://s.ytimg.com/yts/jsbin/www-embed-player-vflEysCYf/www-embed-player.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://s.ytimg.com/yts/jsbin/www-embed-player-vflEysCYf/www-embed-player.js", completed: true…} | |
https://s.ytimg.com/yts/jsbin/player-en_US-vflvtarAT/base.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://s.ytimg.com/yts/jsbin/player-en_US-vflvtarAT/base.js", completed: true…} | |
http://ll-media.tmz.com/2013/06/28/partner-asset-fox411-630x400-1.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/06/28/partner-asset-fox411-630x400-1.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/20/memba-phantasm-launch-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/20/memba-phantasm-launch-3.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/18/1018-tony-moran-unmasked-michael-myers-halloween-movie-now-photos-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/18/1018-tony-moran…rs-halloween-movie-now-photos-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/14/1013-sid-haig-captain-spaulding-now-photos-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/14/1013-sid-haig-captain-spaulding-now-photos-primary-210x120.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/disqus/1.0.3/disqus.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/disqus/1.0.3/disqus.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-timberlake-promo-400x300.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-timberlake-promo-400x300.jpg", completed: true…} | |
http://ads.rubiconproject.com/header/10794.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ads.rubiconproject.com/header/10794.js", completed: true…} | |
http://pixel.quantserve.com/aquant.js?a=p-21jBY4_vbHNJQ Resource {requests: Array[3], method: "GET", type: "script", url: "http://pixel.quantserve.com/aquant.js?a=p-21jBY4_vbHNJQ", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mike-pence-plane-twitter-5.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mike-pence-plane-twitter-5.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/08/1008-mike-pence-getty-02-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/08/1008-mike-pence-getty-02-210x120.jpg", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122257/0/170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122256/0/225/ADTECH;cfp=1;rndc=1477649642;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…225/ADTECH;cfp=1;rndc=1477649642;cmd=bid;cors=yes", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122260/0/170/ADTECH;cfp=1;rndc=1477649642;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…170/ADTECH;cfp=1;rndc=1477649642;cmd=bid;cors=yes", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122259/0/170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122258/0/170/ADTECH;cfp=1;rndc=1477649642;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…170/ADTECH;cfp=1;rndc=1477649642;cmd=bid;cors=yes", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…414071&t0=1477649643235&t1=1477649643708&INDX.t=473&INDX.to=0&INDX.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…1=1477649643708&INDX.t=473&INDX.to=0&INDX.ts=1000", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122261/0/225/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…225/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes", completed: true…} | |
http://ll-media.tmz.com/2016/07/17/0717-mike-pence-chilis-dinner-twitter-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/07/17/0717-mike-pence-chilis-dinner-twitter-01-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-vdp-promo-400x300.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-vdp-promo-400x300.jpg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/fonts/woff/Roboto-Regular1.woff Resource {requests: Array[3], method: "GET", type: "other", url: "http://tmz.vo.llnwd.net/o28/fonts/woff/Roboto-Regular1.woff", completed: true…} | |
http://warnerbros.112.2o7.net/b/ss/wbrostmz/1/JS-1.6.1/s96933632842420?AQB=…Weekday&c27=New&v27=New&s=1920x1080&c=24&j=1.6&v=N&k=Y&bw=800&bh=600&AQE=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://warnerbros.112.2o7.net/b/ss/wbrostmz/1/JS-1…=1920x1080&c=24&j=1.6&v=N&k=Y&bw=800&bh=600&AQE=1", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1026-donald-trump-star-tmz-getty-4.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1026-donald-trump-star-tmz-getty-4.jpg", completed: true…} | |
http://cdn.krxd.net/ctjs/controltag.js.0e83f40a5e4e9876f31283cf0793d155 Resource {requests: Array[6], method: "GET", type: "script", url: "http://cdn.krxd.net/ctjs/controltag.js.0e83f40a5e4e9876f31283cf0793d155", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-donald-trump-emblem-cops-james-otis-tmz-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-donald-trump-emblem-cops-james-otis-tmz-210x120.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/general/close_x.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/general/close_x.gif", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-james-otis-facebook-trump-star-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-james-otis-facebook-trump-star-01-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/24/ggfail-2.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/24/ggfail-2.jpg", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-rss-gossipgirl-bw-630x400.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rss-gossipgirl-bw-630x400.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-dakota-fanning-parents-tmz-getty-ffn-4.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-dakota-fanning-parents-tmz-getty-ffn-4.jpg", completed: true…} | |
http://cdnapi.kaltura.com/html5/html5lib/v2.41/modules/KalturaSupport/thumbnail.php/p/591531/uiconf_id/29171872/entry_id/0_14aujckd/height/480? Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdnapi.kaltura.com/html5/html5lib/v2.41/mod…iconf_id/29171872/entry_id/0_14aujckd/height/480?", completed: false…} | |
http://tmz.vo.llnwd.net/o28/sponsorship/0911-tmzslots-tall-hotbox-bg.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/sponsorship/0911-tmzslots-tall-hotbox-bg.jpg", completed: true…} | |
http://cdnapi.kaltura.com/html5/html5lib/v2.41//modules/MwEmbedSupport/skins/common/images/player_big_play_button.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdnapi.kaltura.com/html5/html5lib/v2.41//mo…rt/skins/common/images/player_big_play_button.png", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122263/0/170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122262/0/170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…170/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes", completed: true…} | |
http://adserver.adtechus.com/pubapi/3.0/10571.1/4122264/0/225/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://adserver.adtechus.com/pubapi/3.0/10571.1/41…225/ADTECH;cfp=1;rndc=1477649643;cmd=bid;cors=yes", completed: true…} | |
http://d1xfq2052q7thw.cloudfront.net/analytics.js.map Resource {requests: Array[3], method: "GET", type: "other", url: "http://d1xfq2052q7thw.cloudfront.net/analytics.js.map", completed: true…} | |
http://ll-media.tmz.com/2016/06/14/0614-ariel-winter-elle-dakota-fanning-ffn-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/06/14/0614-ariel-winter-elle-dakota-fanning-ffn-01-210x120.jpg", completed: true…} | |
http://partner.googleadservices.com/gpt/pubads_impl_104.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://partner.googleadservices.com/gpt/pubads_impl_104.js", completed: true…} | |
http://ll-media.tmz.com/2016/02/11/0211-elle-fanning-dakota-fanning-getty-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/02/11/0211-elle-fanning-dakota-fanning-getty-01-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-bryce-promo-400x300.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-bryce-promo-400x300.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-5.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-5.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1026-mariah-carey-james-packer-tmz-04-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1026-mariah-carey-james-packer-tmz-04-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/0603-johnny-depp-getty-3.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/0603-johnny-depp-getty-3.jpg", completed: true…} | |
http://rma-api.gravity.com/v1/api/intelligence/wl?jq=2.0.3&sg=82893b7956400…grv-personalization-23&pl=23&type=iframe&ad=&cburl=&pfurl=&x=1477649643461 Resource {requests: Array[3], method: "GET", type: "script", url: "http://rma-api.gravity.com/v1/api/intelligence/wl?…=23&type=iframe&ad=&cburl=&pfurl=&x=1477649643461", completed: true…} | |
https://googleads.g.doubleclick.net/pagead/id Resource {requests: Array[6], method: "GET", type: "xhr", url: "https://googleads.g.doubleclick.net/pagead/id", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/followtmz/followtmz.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/followtmz/followtmz.js", completed: true…} | |
http://cdn.krxd.net/partnerjs/xdi/proxy.78563ed2da5ce6f7ccf2acb960d0c06a.html#!kxcid=JXlj-zpN&kxt=http%3A%2F%2Fwww.tmz.com&kxcl=cdn&kxp= Resource {requests: Array[3], method: "GET", type: "subFrame", url: "http://cdn.krxd.net/partnerjs/xdi/proxy.78563ed2da…lj-zpN&kxt=http%3A%2F%2Fwww.tmz.com&kxcl=cdn&kxp=", completed: true…} | |
http://cfvod.kaltura.com/p/591531/sp/59153100/thumbnail/entry_id/0_14aujckd/version/100012/acv/122/height/480 Resource {requests: Array[3], method: "GET", type: "image", url: "http://cfvod.kaltura.com/p/591531/sp/59153100/thum…y_id/0_14aujckd/version/100012/acv/122/height/480", completed: true…} | |
http://ll-media.tmz.com/2013/07/08/celebdirtylaundry-630x400.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/07/08/celebdirtylaundry-630x400.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-8.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-mariah-carey-james-packer-tmz-getty-8.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/07/07/070716-mariah-carey-yacht-inf-06-210x120-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/07/07/070716-mariah-carey-yacht-inf-06-210x120-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-alec-baldwin-tmz-4.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-alec-baldwin-tmz-4.jpg", completed: true…} | |
http://www.zergnet.com/zerg.js?id=34756 Resource {requests: Array[3], method: "GET", type: "script", url: "http://www.zergnet.com/zerg.js?id=34756", completed: true…} | |
https://fonts.gstatic.com/s/roboto/v15/CWB0XYA8bzo0kSThX0UTuA.woff2 Resource {requests: Array[6], method: "GET", type: "other", url: "https://fonts.gstatic.com/s/roboto/v15/CWB0XYA8bzo0kSThX0UTuA.woff2", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/0912-alec-baldwin-painting-2.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/0912-alec-baldwin-painting-2.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/19/1019-val-kilmer-art-gallery-facebook-01-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/19/1019-val-kilmer-art-gallery-facebook-01-210x120.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/most-commented-posts/1.0.0/most-commented-posts.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/…ost-commented-posts/1.0.0/most-commented-posts.js", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/sidebar/gallery-icon.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/sidebar/gallery-icon.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/18/101816-giancarlo-stanton-primary-210x120.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/18/101816-giancarlo-stanton-primary-210x120.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/21/tmz-tour-halloween-promo-300x600-1.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/21/tmz-tour-halloween-promo-300x600-1.png", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/sidebar/play-button-sprite.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/sidebar/play-button-sprite.png", completed: true…} | |
https://www.youtube.com/ad_data_204 Resource {requests: Array[6], method: "POST", type: "xhr", url: "https://www.youtube.com/ad_data_204", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-nick-young-rushed-hospital-sports-promo-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-nick-young-rushed-hospital-sports-promo-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-kayla-harrison-judo-getty-03-300x163.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-kayla-harrison-judo-getty-03-300x163.jpg", completed: true…} | |
https://i.ytimg.com/vi_webp/5aOCk0EI4K0/sddefault.webp Resource {requests: Array[3], method: "GET", type: "image", url: "https://i.ytimg.com/vi_webp/5aOCk0EI4K0/sddefault.webp", completed: true…} | |
https://i.ytimg.com/vi_webp/2WyUpuegcPQ/hqdefault.webp Resource {requests: Array[3], method: "GET", type: "image", url: "https://i.ytimg.com/vi_webp/2WyUpuegcPQ/hqdefault.webp", completed: true…} | |
http://ll-media.tmz.com/2016/10/26/bar-refaeli-tropical-getaway-sidebar-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/26/bar-refaeli-tropical-getaway-sidebar-1.jpg", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…&tg_fl.eid=728x90_1&kw=rp.fastlane&tk_flint=custom&rand=0.4930691610889999 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js….fastlane&tk_flint=custom&rand=0.4930691610889999", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…tg_fl.eid=300x250_4&kw=rp.fastlane&tk_flint=custom&rand=0.7248409732666841 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js….fastlane&tk_flint=custom&rand=0.7248409732666841", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…_2&alt_size_ids=10&kw=rp.fastlane&tk_flint=custom&rand=0.28841247855134977 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js…fastlane&tk_flint=custom&rand=0.28841247855134977", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…_fl.eid=300x250_3&kw=rp.fastlane&tk_flint=custom&rand=0.028613729376019137 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js…astlane&tk_flint=custom&rand=0.028613729376019137", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…tg_fl.eid=300x250_5&kw=rp.fastlane&tk_flint=custom&rand=0.2978263644148502 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js….fastlane&tk_flint=custom&rand=0.2978263644148502", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…g_fl.eid=300x250_6&kw=rp.fastlane&tk_flint=custom&rand=0.29203040694948545 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js…fastlane&tk_flint=custom&rand=0.29203040694948545", completed: true…} | |
http://flapi1.rubiconproject.com/a/api/fastlane.json?account_id=10794&site_…tg_fl.eid=300x250_7&kw=rp.fastlane&tk_flint=custom&rand=0.9508688225455493 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://flapi1.rubiconproject.com/a/api/fastlane.js….fastlane&tk_flint=custom&rand=0.9508688225455493", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-kayla-harrison-primary-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-kayla-harrison-primary-139x99.jpg", completed: true…} | |
http://www.zergnet.com/zerg.js?id=34754 Resource {requests: Array[3], method: "GET", type: "script", url: "http://www.zergnet.com/zerg.js?id=34754", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-dominick-cruz-primary-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-dominick-cruz-primary-139x99.jpg", completed: true…} | |
http://b.scorecardresearch.com/beacon.js Resource {requests: Array[6], method: "GET", type: "script", url: "http://b.scorecardresearch.com/beacon.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-anthony-pettis-tmz-01-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-anthony-pettis-tmz-01-139x99.jpg", completed: true…} | |
http://rma-api.gravity.com/v1/api/intelligence/w2?sg=82893b79564009a4d8fab7…om%2F&clientTime=1477649645377&ci=grv-personalization-23&wct=1477649643461 Resource {requests: Array[3], method: "GET", type: "subFrame", url: "http://rma-api.gravity.com/v1/api/intelligence/w2?…45377&ci=grv-personalization-23&wct=1477649643461", completed: true…} | |
http://widget.perfectmarket.com/tmz/load.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://widget.perfectmarket.com/tmz/load.js", completed: true…} | |
http://www.google-analytics.com/plugins/ua/linkid.js Resource {requests: Array[1], method: "GET", type: "script", url: "http://www.google-analytics.com/plugins/ua/linkid.js", completed: false…} | |
https://www.google-analytics.com/plugins/ua/linkid.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://www.google-analytics.com/plugins/ua/linkid.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-erin-andrews-primary-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-erin-andrews-primary-139x99.jpg", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…6432384370&t0=1477649643238&t1=1477649645430&AOL.t=2192&AOL.to=0&AOL.ts=-1 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…38&t1=1477649645430&AOL.t=2192&AOL.to=0&AOL.ts=-1", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1027-anthony-pettis-cars-fox6-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1027-anthony-pettis-cars-fox6-139x99.jpg", completed: true…} | |
https://mw-api.tmz.com/api/v1/articles?rankBy=comment&fields=primaryImage&format=json&numRecords=5 Resource {requests: Array[6], method: "OPTIONS", type: "xhr", url: "https://mw-api.tmz.com/api/v1/articles?rankBy=comment&fields=primaryImage&format=json&numRecords=5", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/full-episode-300w.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/full-episode-300w.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/emily-sears-300w.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/emily-sears-300w.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/kim-kardashian-nu-300w.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/kim-kardashian-nu-300w.jpg", completed: true…} | |
http://cdn.taboola.com/libtrc/impl.230-RELEASE.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.taboola.com/libtrc/impl.230-RELEASE.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/1026-tmz-live-primary-300x163.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/1026-tmz-live-primary-300x163.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/25/1031-costume-shirt-store-promo-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/25/1031-costume-shirt-store-promo-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/26/yoga-butt-sidebar-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/26/yoga-butt-sidebar-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/26/courtney-halloween29-300w.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/26/courtney-halloween29-300w.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/footer/footer-background_v2.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/footer/footer-background_v2.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/screen-shot-2016-10-27-at-2-12-139x99.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/screen-shot-2016-10-27-at-2-12-139x99.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/screen-shot-2016-10-27-at-3-49-139x99.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/screen-shot-2016-10-27-at-3-49-139x99.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/screen-shot-2016-10-27-at-2-31-139x99.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/screen-shot-2016-10-27-at-2-31-139x99.png", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/ad-custom/1.0.0/ad-custom.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/ad-custom/1.0.0/ad-custom.js", completed: true…} | |
http://b.grvcdn.com/moth-min.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://b.grvcdn.com/moth-min.js", completed: true…} | |
http://ll-media.tmz.com/2016/10/25/elizabeth-hurley-bikini-sidebar-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/25/elizabeth-hurley-bikini-sidebar-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/26/amber-rose-birthday-weekend-party-photos-00-300w-1.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/26/amber-rose-birthday-weekend-party-photos-00-300w-1.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/lady-gaga-wedding-300w.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/lady-gaga-wedding-300w.jpg", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-rss-fox-b-w.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rss-fox-b-w.png", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-rss-chive-v2-cut-v2.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rss-chive-v2-cut-v2.png", completed: true…} | |
http://secure-us.imrworldwide.com/cgi-bin/m?ci=us-404979h&cg=0&cc=1&si=http%3A//www.tmz.com/&rp=&ts=compact&rnd=1477649643814 Resource {requests: Array[3], method: "GET", type: "image", url: "http://secure-us.imrworldwide.com/cgi-bin/m?ci=us-…3A//www.tmz.com/&rp=&ts=compact&rnd=1477649643814", completed: false…} | |
http://ll-media.tmz.com/2013/04/26/partner-rsss-justjared-logo-cut-v2.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rsss-justjared-logo-cut-v2.gif", completed: true…} | |
http://w.sharethis.com/button/buttons.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://w.sharethis.com/button/buttons.js", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-asset-mto.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-asset-mto.png", completed: true…} | |
http://static.grvcdn.com/personalization/grv-jquery-1.8.2.min.446a642fc8237b3799365aee82b1db0c.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://static.grvcdn.com/personalization/grv-jquery-1.8.2.min.446a642fc8237b3799365aee82b1db0c.js", completed: true…} | |
http://static.grvcdn.com/personalization/grv.dotdotdot-1.5.1.a1ebd8499a774734982f930713d5c9ed.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://static.grvcdn.com/personalization/grv.dotdotdot-1.5.1.a1ebd8499a774734982f930713d5c9ed.js", completed: true…} | |
http://static.grvcdn.com/personalization/base.dd5bb885115b30c992b87792b6c5fe25.css Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "http://static.grvcdn.com/personalization/base.dd5bb885115b30c992b87792b6c5fe25.css", completed: true…} | |
http://static.grvcdn.com/personalization/sites/tmz/tmz_rail_5_v2_updated.7a4f5cb1c6089ef79c7e8e12250a1789.css Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "http://static.grvcdn.com/personalization/sites/tmz…5_v2_updated.7a4f5cb1c6089ef79c7e8e12250a1789.css", completed: true…} | |
http://ll-media.tmz.com/2015/04/01/partner-asset-coed-v3-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2015/04/01/partner-asset-coed-v3-1.jpg", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-rss-egotastic-v3.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rss-egotastic-v3.png", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-rss-thestir-logo-cut-v2-1.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rss-thestir-logo-cut-v2-1.png", completed: true…} | |
http://ll-media.tmz.com/2013/04/26/partner-rss-gossipgirl-bw.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2013/04/26/partner-rss-gossipgirl-bw.png", completed: true…} | |
http://ll-media.tmz.com/2016/10/25/102516-trump-accuser-2-kal-1080x608.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/25/102516-trump-accuser-2-kal-1080x608.jpg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/footer/ios-app-store-new.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/footer/ios-app-store-new.svg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-darth-maul-kal-1080x608-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-darth-maul-kal-1080x608-1.jpg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/google-play-store.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/google-play-store.svg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-hillary-haunted-house-kal-1080x608.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-hillary-haunted-house-kal-1080x608.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/27/102716-trump-vandal-press-conference-kal-1080x608.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/27/102716-trump-vandal-press-conference-kal-1080x608.jpg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-facebook.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-facebook.svg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-twitter.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-twitter.svg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-youtube.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-youtube.svg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-instagram.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-instagram.svg", completed: true…} | |
http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-googleplus.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://tmz.vo.llnwd.net/o28/assets/svg/social_2015/icon-googleplus.svg", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/quick-subscribe/subscribe_sprite.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/quick-subscribe/subscribe_sprite.gif", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/kaltura/tmz-playlarge.svg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/kaltura/tmz-playlarge.svg", completed: true…} | |
http://browser-update.org/update.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://browser-update.org/update.min.js", completed: true…} | |
http://static.grvcdn.com/personalization/widget.b2c7ede40c1769b70f01e634e62dd22e.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://static.grvcdn.com/personalization/widget.b2c7ede40c1769b70f01e634e62dd22e.js", completed: true…} | |
http://tags.bluekai.com/site/20087?ret=js&jscb=STRBKCallback&_=1477649642812 Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.bluekai.com/site/20087?ret=js&jscb=STRBKCallback&_=1477649642812", completed: true…} | |
http://gum.criteo.com/sync?r=2&c=158&j=STRCriteoCallback Resource {requests: Array[3], method: "GET", type: "script", url: "http://gum.criteo.com/sync?r=2&c=158&j=STRCriteoCallback", completed: true…} | |
http://tags.bluekai.com/site/20214?limit=1&phint=user%3Dtrue Resource {requests: Array[3], method: "GET", type: "image", url: "http://tags.bluekai.com/site/20214?limit=1&phint=user%3Dtrue", completed: false…} | |
http://secure-us.imrworldwide.com/cgi-bin/m?ci=us-404979h&cg=0&cc=1&si=http%3A//www.tmz.com/&rp=&ts=compact&rnd=1477649643814&ja=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://secure-us.imrworldwide.com/cgi-bin/m?ci=us-…ww.tmz.com/&rp=&ts=compact&rnd=1477649643814&ja=1", completed: true…} | |
https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,900,700 Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,900,700", completed: true…} | |
http://st.dynamicyield.com/st?sec=8766195&inHead=true&id=0&ref=&sr=1920x1080&altip= Resource {requests: Array[3], method: "GET", type: "script", url: "http://st.dynamicyield.com/st?sec=8766195&inHead=true&id=0&ref=&sr=1920x1080&altip=", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2….t=123&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=0&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…&AOL.p.pl.aolbid=&RUBI.t=0&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=120&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=834&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=834&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2….t=113&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=1&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…&AOL.p.pl.aolbid=&RUBI.t=1&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://0914.global.ssl.fastly.net/ad/script/x.js?cb=1477649644167 Resource {requests: Array[3], method: "GET", type: "script", url: "http://0914.global.ssl.fastly.net/ad/script/x.js?cb=1477649644167", completed: true…} | |
http://0914.global.ssl.fastly.net/ad/img/x.gif?cb=1477649644166 Resource {requests: Array[3], method: "GET", type: "image", url: "http://0914.global.ssl.fastly.net/ad/img/x.gif?cb=1477649644166", completed: true…} | |
http://ad.doubleclick.net/ddm/ad/658/7sqmbj/raoktg2/;ord=1477649644166? Resource {requests: Array[3], method: "GET", type: "image", url: "http://ad.doubleclick.net/ddm/ad/658/7sqmbj/raoktg2/;ord=1477649644166?", completed: true…} | |
http://0914.global.ssl.fastly.net/ad/img/x.gif?cb=1477649644167 Resource {requests: Array[3], method: "GET", type: "image", url: "http://0914.global.ssl.fastly.net/ad/img/x.gif?cb=1477649644167", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 Resource {requests: Array[3], method: "GET", type: "script", url: "https://securepubads.g.doubleclick.net/gampad/ads?…204.1477649644&ga_sid=1477649646&ga_hid=148541592", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 Resource {requests: Array[3], method: "GET", type: "script", url: "https://securepubads.g.doubleclick.net/gampad/ads?…204.1477649644&ga_sid=1477649646&ga_hid=148541592", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=112&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=353&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=353&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=111&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=354&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=354&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=109&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=351&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=351&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=108&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=350&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=350&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=107&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=356&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=356&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2…=105&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=994&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…OL.p.pl.aolbid=&RUBI.t=994&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2….t=104&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=0&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…&AOL.p.pl.aolbid=&RUBI.t=0&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://as.casalemedia.com/headerstats?s=180473&u=http%3A%2F%2Fwww.tmz.com%2….t=104&AOL.to=0&AOL.ts=-1&AOL.p.pl.aolbid=&RUBI.t=0&RUBI.to=0&RUBI.ts=1000 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://as.casalemedia.com/headerstats?s=180473&u=h…&AOL.p.pl.aolbid=&RUBI.t=0&RUBI.to=0&RUBI.ts=1000", completed: true…} | |
http://ad.doubleclick.net/ddm/ad/tqt5i/sus/5fxm2a4cy/;ord=1477649644168? Resource {requests: Array[3], method: "GET", type: "image", url: "http://ad.doubleclick.net/ddm/ad/tqt5i/sus/5fxm2a4cy/;ord=1477649644168?", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/polls/1.0.3/polls.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/tmz/polls/1.0.3/polls.js", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/share/1.0.1/share.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/share/1.0.1/share.js", completed: true…} | |
http://tmz.disqus.com/count.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://tmz.disqus.com/count.js", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 Resource {requests: Array[3], method: "GET", type: "script", url: "https://securepubads.g.doubleclick.net/gampad/ads?…204.1477649644&ga_sid=1477649646&ga_hid=148541592", completed: true…} | |
http://tags.bluekai.com/site/20214?dt=0&r=1391940697&sig=951975177&bkca=KJpn0zpBnnWNPYF/01ygLu6+EiNuBURovuoBOxOlR9AF Resource {requests: Array[3], method: "GET", type: "image", url: "http://tags.bluekai.com/site/20214?dt=0&r=13919406…bkca=KJpn0zpBnnWNPYF/01ygLu6+EiNuBURovuoBOxOlR9AF", completed: true…} | |
http://pixel.quantserve.com/pixel;r=647549185;a=p-21jBY4_vbHNJQ;ezt=1;label…77649644334;tzo=240;ref=;url=http%3A%2F%2Fwww.tmz.com%2F;ogl=site_name.TMZ Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.quantserve.com/pixel;r=647549185;a=p-…url=http%3A%2F%2Fwww.tmz.com%2F;ogl=site_name.TMZ", completed: true…} | |
https://www.google.com/js/bg/7zjptjcyAt08DUe0iv5XhxhDVFiWVeyLb0s17ZkQqVI.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://www.google.com/js/bg/7zjptjcyAt08DUe0iv5XhxhDVFiWVeyLb0s17ZkQqVI.js", completed: true…} | |
https://static.doubleclick.net/instream/ad_status.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://static.doubleclick.net/instream/ad_status.js", completed: true…} | |
http://rtax.criteo.com/delivery/rta/rta.js?netId=1870&cookieName=crtg_rta&varName=_20964532713044 Resource {requests: Array[3], method: "GET", type: "script", url: "http://rtax.criteo.com/delivery/rta/rta.js?netId=1870&cookieName=crtg_rta&varName=_20964532713044", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/followtmz/followtmz_formval.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/js/widgets/sidebar/followtmz/followtmz_formval.js", completed: true…} | |
http://cdn.krxd.net/controltag/JXlj-zpN.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.krxd.net/controltag/JXlj-zpN.js", completed: true…} | |
http://www.zergnet.com/output.js?id=34756&time=1477649645447&callback=json5764109 Resource {requests: Array[3], method: "GET", type: "script", url: "http://www.zergnet.com/output.js?id=34756&time=1477649645447&callback=json5764109", completed: true…} | |
https://mw-api.tmz.com/api/v1/socialactivities?id=2d775912-9c8e-11e6-9355-3…,77fe0750-9c7b-11e6-a201-30342d413951,0df06152-9c7e-11e6-b781-30342d413951 Resource {requests: Array[6], method: "OPTIONS", type: "xhr", url: "https://mw-api.tmz.com/api/v1/socialactivities?id=…30342d413951,0df06152-9c7e-11e6-b781-30342d413951", completed: true…} | |
http://rma-api.gravity.com/v1/api/intelligence/wdre?clientTime=147764964676…9149984&callback=jQuery182034340407873191925_1477649646374&_=1477649646768 Resource {requests: Array[3], method: "GET", type: "xhr", url: "http://rma-api.gravity.com/v1/api/intelligence/wdr…2034340407873191925_1477649646374&_=1477649646768", completed: true…} | |
http://www.zergnet.com/output.js?id=34754&time=1477649645486&callback=json1688647 Resource {requests: Array[3], method: "GET", type: "script", url: "http://www.zergnet.com/output.js?id=34754&time=1477649645486&callback=json1688647", completed: true…} | |
https://stats.g.doubleclick.net/r/collect?t=dc&aip=1&_r=3&v=1&_v=j47&tid=UA-51835118-1&cid=1030208204.1477649644&jid=771762038&_u=CGAAgEAj~&z=27379126 Resource {requests: Array[3], method: "GET", type: "image", url: "https://stats.g.doubleclick.net/r/collect?t=dc&aip….1477649644&jid=771762038&_u=CGAAgEAj~&z=27379126", completed: true…} | |
http://b.scorecardresearch.com/b?c1=7&c2=13739933&c3=20121515121&ns__t=1477…0%7C%20Celebrity%20News%20%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9= Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.scorecardresearch.com/b?c1=7&c2=13739933&…0%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9=", completed: false…} | |
http://b.scorecardresearch.com/b?c1=2&c2=3000013&ns__t=1477649645544&ns_c=U…0%7C%20Celebrity%20News%20%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9= Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.scorecardresearch.com/b?c1=2&c2=3000013&n…0%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9=", completed: false…} | |
http://widget.perfectmarket.com/tmz/pmk-201613001.5.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://widget.perfectmarket.com/tmz/pmk-201613001.5.js", completed: true…} | |
http://rma-api.gravity.com/v1/beacons/initialize Resource {requests: Array[3], method: "GET", type: "script", url: "http://rma-api.gravity.com/v1/beacons/initialize", completed: true…} | |
http://ll-media.tmz.com/2016/10/24/1024-donald-trump-hillary-clinton-tmz-getty-01-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/24/1024-donald-trump-hillary-clinton-tmz-getty-01-139x99.jpg", completed: true…} | |
http://thumby.grvcdn.com/t/350x150/North/?url=http%3A%2F%2Fll-media.tmz.com%2F2016%2F10%2F27%2F1027-mariah-carey-james-packer-tmz-getty-300x225-1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://thumby.grvcdn.com/t/350x150/North/?url=http…mariah-carey-james-packer-tmz-getty-300x225-1.jpg", completed: true…} | |
http://thumby.grvcdn.com/t/350x150/North/?url=http%3A%2F%2Fll-media.tmz.com%2F2016%2F10%2F27%2F1027-mariah-carey-james-packer-tmz-getty-300x225.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://thumby.grvcdn.com/t/350x150/North/?url=http…7-mariah-carey-james-packer-tmz-getty-300x225.jpg", completed: true…} | |
http://thumby.grvcdn.com/t/350x150/North/?url=http%3A%2F%2Fll-media.tmz.com%2F2016%2F10%2F25%2F1025-shirlene-quigley-found-twitter-02-300x225.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://thumby.grvcdn.com/t/350x150/North/?url=http…025-shirlene-quigley-found-twitter-02-300x225.jpg", completed: true…} | |
http://thumby.grvcdn.com/t/350x150/North/?url=http%3A%2F%2Fll-media.tmz.com%2F2016%2F10%2F26%2F1026-richard-curtis-abc-03-300x225.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://thumby.grvcdn.com/t/350x150/North/?url=http…F10%2F26%2F1026-richard-curtis-abc-03-300x225.jpg", completed: true…} | |
http://thumby.grvcdn.com/t/350x150/North/?url=http%3A%2F%2Fll-media.tmz.com%2F2016%2F10%2F21%2F1021-maria-bartiromo-donald-trump-cnn-300x225.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://thumby.grvcdn.com/t/350x150/North/?url=http…1021-maria-bartiromo-donald-trump-cnn-300x225.jpg", completed: true…} | |
http://www.google-analytics.com/collect?v=1&_v=j47&a=148541592&t=pageview&_…Aj~&jid=771762038&cid=1030208204.1477649644&tid=UA-51835118-1&z=1830620075 Resource {requests: Array[1], method: "GET", type: "image", url: "http://www.google-analytics.com/collect?v=1&_v=j47…0208204.1477649644&tid=UA-51835118-1&z=1830620075", completed: false…} | |
https://www.google-analytics.com/collect?v=1&_v=j47&a=148541592&t=pageview&…Aj~&jid=771762038&cid=1030208204.1477649644&tid=UA-51835118-1&z=1830620075 Resource {requests: Array[3], method: "GET", type: "image", url: "https://www.google-analytics.com/collect?v=1&_v=j4…0208204.1477649644&tid=UA-51835118-1&z=1830620075", completed: true…} | |
http://native.sharethrough.com/assets/sfp-iframe-buster.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://native.sharethrough.com/assets/sfp-iframe-buster.js", completed: true…} | |
https://z.moatads.com/tmz695915919965/moatad.js#moatClientLevel1=74381664&m…44&moatClientSlicer1=54153864&moatClientSlicer2=54322224&zMoatPS=&zMoatST= Resource {requests: Array[3], method: "GET", type: "script", url: "https://z.moatads.com/tmz695915919965/moatad.js#mo…3864&moatClientSlicer2=54322224&zMoatPS=&zMoatST=", completed: true…} | |
http://wfpscripts.webspectator.com/bootstrap/ws-WS-TMZ00.js Resource {requests: Array[6], method: "GET", type: "script", url: "http://wfpscripts.webspectator.com/bootstrap/ws-WS-TMZ00.js", completed: true…} | |
http://static.grvcdn.com/personalization/underscore-min.map Resource {requests: Array[3], method: "GET", type: "other", url: "http://static.grvcdn.com/personalization/underscore-min.map", completed: true…} | |
http://platform.tumblr.com/v1/follow_button.html?button_type=2&tumblelog=tmz&color_scheme=dark Resource {requests: Array[3], method: "GET", type: "subFrame", url: "http://platform.tumblr.com/v1/follow_button.html?button_type=2&tumblelog=tmz&color_scheme=dark", completed: true…} | |
http://ll-media.tmz.com/2016/10/22/102216-allred-presser-primary-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/22/102216-allred-presser-primary-139x99.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/26/102616-james-otis-primary-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/26/102616-james-otis-primary-139x99.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/24/1024-trump-drake-r2r-tmz-instagram-primary-01-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/24/1024-trump-drake-r2r-tmz-instagram-primary-01-139x99.jpg", completed: true…} | |
http://ll-media.tmz.com/2016/10/25/1025-brad-pitt-angelina-jolie-tmz-139x99.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-media.tmz.com/2016/10/25/1025-brad-pitt-angelina-jolie-tmz-139x99.jpg", completed: true…} | |
http://trc.taboola.com/tmz/log/2/debug?tim=06%3A14%3A05.996&type=map&msg=trcrboxui%20page_management%20parseXML&id=4272&cv=230-RELEASE Resource {requests: Array[3], method: "GET", type: "image", url: "http://trc.taboola.com/tmz/log/2/debug?tim=06%3A14…page_management%20parseXML&id=4272&cv=230-RELEASE", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=6748042584&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=1918742567&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://b.scorecardresearch.com/b2?c1=7&c2=13739933&c3=20121515121&ns__t=147…0%7C%20Celebrity%20News%20%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9= Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.scorecardresearch.com/b2?c1=7&c2=13739933…0%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9=", completed: true…} | |
http://b.scorecardresearch.com/b2?c1=2&c2=3000013&ns__t=1477649645544&ns_c=…0%7C%20Celebrity%20News%20%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9= Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.scorecardresearch.com/b2?c1=2&c2=3000013&…0%7C%20TMZ.com&c7=http%3A%2F%2Fwww.tmz.com%2F&c9=", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=7030718955&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=1276365955&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=4784557441&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=4080418283&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://w.sharethis.com/button/async-buttons.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://w.sharethis.com/button/async-buttons.js", completed: true…} | |
http://l.sharethis.com/pview?event=pview&version=buttons.js&lang=en&fpc=751…ainment%20News%20%7C%20Celebrity%20News%20%7C%20TMZ.com&ts1477649646432.0= Resource {requests: Array[3], method: "GET", type: "image", url: "http://l.sharethis.com/pview?event=pview&version=b…lebrity%20News%20%7C%20TMZ.com&ts1477649646432.0=", completed: true…} | |
http://trc.taboola.com/tmz/trc/3/json?tim=06%3A14%3A06.574&data=%7BNaNd%22%3A850%2C%ii%22%3A%_homepage_%22%2C%it%22%3A%22home%22%2C%sd%22%3Anull%2C%22ui%22%3Anull%2C%22vi%22%3A1477649646569%2C%cv%22%3A%22230-RELEASE%22%2C%22uiv%22%3A%default%22%2C%22u%22%3A%22http%3A%2F%2Fwww.tmz.com%2F%22%2C%22r%22%3A%5B%7B%22li%22%3A%22rbox-h2m%22%2C%s%22%3A5%2C%22uim%22%3A%organic-thumbs-5r%3Aabp%3D0%22%2C%22uip%22%3A%22Right%20Rail%20Thumbnails%22%2C%orig_uip%22%3A%22Right%20Rail%20Thumbnails%22%7D%2C%7B%22li%22%3A%22rbox-h2v%22%2C%s%22%3A4%2C%22uim%22%3A%22autosized-generated-2r-rr%3Aabp%3D0%22%2C%22uip%22%3A%sidebar%22%2C%orig_uip%22%3A%sidebar%22%7D%2C%7B%22li%22%3A%22rbox-h2v%22%2C%s%22%3A3%2C%22uim%22%3A%22horizontalx3%3Aabp%3D0%22%2C%22uip%22%3A%22horizontalx3%22%2C%orig_uip%22%3A%22horizontalx3%22%7D%5D%2C%cb%22%3A%22TRC.callbacks.recommendations_1%22%2C%22lt%22%3A%22normal%22%7D | |
http://static.grvcdn.com/personalization/grv_adChoices2.3ce3939de80301b42b7c38cafd10899a.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://static.grvcdn.com/personalization/grv_adChoices2.3ce3939de80301b42b7c38cafd10899a.png", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?cc=1&ef=db&o=6748042584&…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?cc=1&ef=db&o=1918742567&…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?cc=1&ef=db&o=7030718955&…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://platform.tumblr.com/v1/follow_button.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://platform.tumblr.com/v1/follow_button.js", completed: true…} | |
http://o.aolcdn.com/os_merge/?file=/aol/beacon.min.js&file=/aol/omniture.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://o.aolcdn.com/os_merge/?file=/aol/beacon.min.js&file=/aol/omniture.min.js", completed: true…} | |
http://btlr.sharethrough.com/v4?placement_key=629813e8&bluekai=%7BResourcetatus%22%3A%22expired%22%7D&ijson=native_callback_1&cache=1477649647500 | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?cc=1&ef=db&o=1276365955&…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?cc=1&ef=db&o=4784557441&…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?cc=1&ef=db&o=4080418283&…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://pagead2.googlesyndication.com/pagead/osd.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://pagead2.googlesyndication.com/pagead/osd.js", completed: true…} | |
http://tmz.disqus.com/count-data.js?1=0df06152-9c7e-11e6-b781-30342d413951&…7fe0750-9c7b-11e6-a201-30342d413951&1=d7840a44-9c94-11e6-aed4-30342d413951 Resource {requests: Array[3], method: "GET", type: "script", url: "http://tmz.disqus.com/count-data.js?1=0df06152-9c7…342d413951&1=d7840a44-9c94-11e6-aed4-30342d413951", completed: true…} | |
http://tmz.disqus.com/count-data.js?1=e85b0310-9c8d-11e6-a7c7-30342d413951&…p%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Ftrump-star-vandal-family-money%2F Resource {requests: Array[3], method: "GET", type: "script", url: "http://tmz.disqus.com/count-data.js?1=e85b0310-9c8…016%2F10%2F27%2Ftrump-star-vandal-family-money%2F", completed: true…} | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D6748042584%callback%3DOX_6748042584%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D728x90%252C970x66%252C1010x150%252C970x250%252C1010x250%dims%3D800x600%26adxy%3D393%252C29%c.pos%3Dtop%c.tile%3D1%c.rpfl_elemid%3D728x90_1%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D1918742567%callback%3DOX_1918742567%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D12%252C10939%c.pos%3Dinpost%252Cbottom%c.tile%3D4%c.rpfl_elemid%3D300x250_4%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D7030718955%callback%3DOX_7030718955%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%252C300x600%dims%3D800x600%26adxy%3D780%252C549%c.pos%3Dtop%c.tile%3D2%c.rpfl_elemid%3D300x250_300x600_2%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=2266752521&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?ef=db&o=5239978699&callb…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: false…} | |
http://tmz.disqus.com/count-data.js?2=http%3A%2F%2Fwww.tmz.com%2F2016%2F10%….tmz.com%2F2016%2F10%2F28%2Ftori-brixx-sexy-swimsuit-thong-booty-photos%2F Resource {requests: Array[3], method: "GET", type: "script", url: "http://tmz.disqus.com/count-data.js?2=http%3A%2F%2…%2Ftori-brixx-sexy-swimsuit-thong-booty-photos%2F", completed: true…} | |
http://badges.instagram.com/static/images/ig-badge-view-24.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://badges.instagram.com/static/images/ig-badge-view-24.png", completed: false…} | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D1276365955%callback%3DOX_1276365955%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C4954%c.pos%3Dspon_bottom%252Cbottom%c.tile%3D3%c.rpfl_elemid%3D300x250_3%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D4784557441%callback%3DOX_4784557441%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C7504%c.pos%3Dbottom%c.tile%3D5%c.rpfl_elemid%3D300x250_5%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D4080418283%callback%3DOX_4080418283%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C9463%c.pos%3Dbottom%c.tile%3D6%c.rpfl_elemid%3D300x250_6%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://trc.taboola.com/tmz/log/3/available Resource {requests: Array[9], method: "POST", type: "subFrame", url: "http://trc.taboola.com/tmz/log/3/available", completed: true…} | |
http://assets.pinterest.com/js/pinit.js?_=1477649642446 Resource {requests: Array[3], method: "GET", type: "script", url: "http://assets.pinterest.com/js/pinit.js?_=1477649642446", completed: true…} | |
http://u.openx.net/w/1.0/sc?cc=1&r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D6748042584%callback%3DOX_6748042584%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D728x90%252C970x66%252C1010x150%252C970x250%252C1010x250%dims%3D800x600%26adxy%3D393%252C29%c.pos%3Dtop%c.tile%3D1%c.rpfl_elemid%3D728x90_1%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?cc=1&r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D7030718955%callback%3DOX_7030718955%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%252C300x600%dims%3D800x600%26adxy%3D780%252C549%c.pos%3Dtop%c.tile%3D2%c.rpfl_elemid%3D300x250_300x600_2%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?cc=1&r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D1918742567%callback%3DOX_1918742567%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D12%252C10939%c.pos%3Dinpost%252Cbottom%c.tile%3D4%c.rpfl_elemid%3D300x250_4%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fef%3DdbResource%3D2266752521%callback%3DOX_2266752521%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C9915%c.pos%3Dbottom%c.tile%3D7%c.rpfl_elemid%3D300x250_7%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fef%3DdbResource%3D5239978699%callback%3DOX_5239978699%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%252C300x600%dims%3D800x600%26adxy%3D780%252C9915%c.pos%3Dsticky%252Cbottom%c.tile%3D10%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?cc=1&r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D1276365955%callback%3DOX_1276365955%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C4954%c.pos%3Dspon_bottom%252Cbottom%c.tile%3D3%c.rpfl_elemid%3D300x250_3%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?cc=1&r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D4784557441%callback%3DOX_4784557441%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C7504%c.pos%3Dbottom%c.tile%3D5%c.rpfl_elemid%3D300x250_5%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://u.openx.net/w/1.0/sc?cc=1&r=http%3A%2F%2Fox-d.warnerbros.servedbyopenx.com%2Fw%2F1.0%2Facj%3Fcc%3D1%26ef%3DdbResource%3D4080418283%callback%3DOX_4080418283%26ju%3Dhttp%253A%2F%2Fwww.tmz.com%2F%26jr%3D%26be%3D1%26auid%3D538144047%26aus%3D300x250%dims%3D800x600%26adxy%3D780%252C9463%c.pos%3Dbottom%c.tile%3D6%c.rpfl_elemid%3D300x250_6%c.khost%3Dwww.tmz.com%c.bucket%3D18%26res%3D1920x1080x24%26plg%3Dpm%ch%3DUTF-8%26tz%3D240%26ws%3D800x600%26vmt%3D1%26bi%3D37c28dfb-3ef4-4960-874e-e976b483f615%sd%3D1 | |
http://instagramstatic-a.akamaihd.net/h1/thirdparty/images/badges/ig-badge-view-24.png/c2f23494e67d.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://instagramstatic-a.akamaihd.net/h1/thirdpart…ages/badges/ig-badge-view-24.png/c2f23494e67d.png", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=ee555e71-d9d9-4259-3e…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=ee555e71-d9d9-4259-3e…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=ee555e71-d9d9-4259-3e…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://platform.twitter.com/widgets.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://platform.twitter.com/widgets.js", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=ee555e71-d9d9-4259-3e…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=ee555e71-d9d9-4259-3e…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=6cd97d30-0b4c-4d24-4a…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=6cd97d30-0b4c-4d24-4a…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj?mi=6cd97d30-0b4c-4d24-4a…UTF-8&tz=240&ws=800x600&vmt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/acj…mt=1&bi=37c28dfb-3ef4-4960-874e-e976b483f615&sd=1", completed: true…} | |
http://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.0", completed: true…} | |
http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/follow-tmz/followwidget_sprite.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://ll-assets.tmz.com/www.tmz.com/main/default/img/widgets/follow-tmz/followwidget_sprite.png", completed: true…} | |
http://stats.aws.rubiconproject.com/stats/ Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://stats.aws.rubiconproject.com/stats/", completed: true…} | |
http://img4.zergnet.com/1216715_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img4.zergnet.com/1216715_180.jpg", completed: true…} | |
http://img2.zergnet.com/1268297_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img2.zergnet.com/1268297_180.jpg", completed: true…} | |
http://img1.zergnet.com/1212020_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img1.zergnet.com/1212020_180.jpg", completed: true…} | |
http://img5.zergnet.com/1268294_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img5.zergnet.com/1268294_180.jpg", completed: true…} | |
http://img2.zergnet.com/1169697_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img2.zergnet.com/1169697_180.jpg", completed: true…} | |
http://img1.zergnet.com/1268288_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img1.zergnet.com/1268288_180.jpg", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…0x250%7C300x600&scp=pos%3Dtop%26tile%3D2%26rpfl_elemid%3D300x250_300x600_2Resourcex300x250%3D75%252COX%252C75_OX%26IOM%3D15_5&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
http://img4.zergnet.com/1074103_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img4.zergnet.com/1074103_180.jpg", completed: true…} | |
http://img5.zergnet.com/1268290_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img5.zergnet.com/1268290_180.jpg", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…150%7C970x250%7C1010x250&scp=pos%3Dtop%26tile%3D1%26rpfl_elemid%3D728x90_1Resourcex728x90%3D15%252COX%252C15_OX%26IOM%3D3_15&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
http://img1.zergnet.com/1249760_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img1.zergnet.com/1249760_180.jpg", completed: true…} | |
http://img1.zergnet.com/1261220_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img1.zergnet.com/1261220_180.jpg", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…mz%2Fhome&sz=300x250&scp=pos%3Dbottom%26tile%3D7%26rpfl_elemid%3D300x250_7Resourcex300x250%3D55%252COX%252C55_OX%26IOM%3D14_15&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
http://img4.zergnet.com/1225407_180.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://img4.zergnet.com/1225407_180.jpg", completed: true…} | |
http://rma-api.gravity.com/v1/beacons/log?cbust=265-7&site_guid=82893b79564…Entertainment%20News%20%7C%20Celebrity%20News%20%7C%20TMZ.com&type=content Resource {requests: Array[3], method: "GET", type: "script", url: "http://rma-api.gravity.com/v1/beacons/log?cbust=26…C%20Celebrity%20News%20%7C%20TMZ.com&type=content", completed: true…} | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F28%2Fdonald-trump-accuser-mindy-mcgillivray-voted%2F%27&callback=jQuery2030395929224467485_1477649642447&_=1477649642448 | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…x250&scp=pos%3Dspon_bottom%252Cbottom%26tile%3D3%26rpfl_elemid%3D300x250_3Resourcex300x250%3D190%252COX%252C190_OX&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Fmariah-carey-james-packer-breakup-dancer-fight%2F%27&callback=jQuery2030395929224467485_1477649642449&_=1477649642450 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F28%2Fstar-wars-darth-maul-assault-cops%2F%27&callback=jQuery2030395929224467485_1477649642451&_=1477649642452 | |
http://www.google-analytics.com/r/collect?v=1&_v=j47&aip=1&a=148541592&t=pa…42&cid=1030208204.1477649644&tid=UA-45624874-28&_r=1&cd2=other&z=693617352 Resource {requests: Array[1], method: "GET", type: "image", url: "http://www.google-analytics.com/r/collect?v=1&_v=j…644&tid=UA-45624874-28&_r=1&cd2=other&z=693617352", completed: false…} | |
https://www.google-analytics.com/r/collect?v=1&_v=j47&aip=1&a=148541592&t=p…42&cid=1030208204.1477649644&tid=UA-45624874-28&_r=1&cd2=other&z=693617352 Resource {requests: Array[3], method: "GET", type: "image", url: "https://www.google-analytics.com/r/collect?v=1&_v=…644&tid=UA-45624874-28&_r=1&cd2=other&z=693617352", completed: true…} | |
http://staticxx.facebook.com/connect/xd_arbiter/r/fTmIQU3LxvB.js?version=42#channel=f3a67911daab5dc&origin=http%3A%2F%2Fwww.tmz.com Resource {requests: Array[3], method: "GET", type: "subFrame", url: "http://staticxx.facebook.com/connect/xd_arbiter/r/…l=f3a67911daab5dc&origin=http%3A%2F%2Fwww.tmz.com", completed: true…} | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F28%2Fhillary-clinton-haunted-house%2F%27&callback=jQuery2030395929224467485_1477649642453&_=1477649642454 | |
https://staticxx.facebook.com/connect/xd_arbiter/r/fTmIQU3LxvB.js?version=42#channel=f3a67911daab5dc&origin=http%3A%2F%2Fwww.tmz.com Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://staticxx.facebook.com/connect/xd_arbiter/r…l=f3a67911daab5dc&origin=http%3A%2F%2Fwww.tmz.com", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…mz%2Fhome&sz=300x250&scp=pos%3Dbottom%26tile%3D5%26rpfl_elemid%3D300x250_5Resourcex300x250%3D80%252COX%252C80_OX%26IOM%3D11_15&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F28%2Ftori-brixx-sexy-swimsuit-thong-booty-photos%2F%27&callback=jQuery2030395929224467485_1477649642455&_=1477649642456 | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…z=300x250&scp=pos%3Dinpost%252Cbottom%26tile%3D4%26rpfl_elemid%3D300x250_4Resourcex300x250%3D80%252COX%252C80_OX%26IOM%3D8_15&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F28%2Felf-on-the-shelf-knockoff-lawsuit%2F%27&callback=jQuery2030395929224467485_1477649642457&_=1477649642458 | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…%2Ftmz%2Fhome&sz=300x250%7C300x600&scp=pos%3Dsticky%252Cbottom%26tile%3D10Resourcex300x250%3D95%252COX%252C95_OX%26IOM%3D12_15%2C16_5&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F28%2Fmike-in-phantasm-memba-him%2F%27&callback=jQuery2030395929224467485_1477649642459&_=1477649642460 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Fmike-pence-plane-slides-off-runway%2F%27&callback=jQuery2030395929224467485_1477649642461&_=1477649642462 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Ftrump-star-vandal-family-money%2F%27&callback=jQuery2030395929224467485_1477649642463&_=1477649642464 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Fdakota-fanning-parents-divorce%2F%27&callback=jQuery2030395929224467485_1477649642465&_=1477649642466 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Fmariah-carey-james-packer-mentally-unstable%2F%27&callback=jQuery2030395929224467485_1477649642467&_=1477649642468 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Fmariah-carey-james-packer-breakup-for-good%2F%27&callback=jQuery2030395929224467485_1477649642469&_=1477649642470 | |
https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,Resourcehare_count,%20like_count,%comment_count,%20total_count,commentsbox_count,%comments_fbid,%click_count%20FROM%20link_stat%20WHERE%20url=%27http%3A%2F%2Fwww.tmz.com%2F2016%2F10%2F27%2Falec-baldwin-fake-art-lawsuit-gallery-owner%2F%27&callback=jQuery2030395929224467485_1477649642471&_=1477649642472 | |
http://webservices.webspectator.com/init?appId=WS-TMZ00&h=http%3A%2F%2Fwww.tmz.com%2F&t=1477649647478 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/init?appId=WS-…Z00&h=http%3A%2F%2Fwww.tmz.com%2F&t=1477649647478", completed: true…} | |
http://b.sharethrough.com/butler?type=impressionRequest&pkey=629813e8&bkuui….0.2785.113%20Electron%2F1.4.4%20Safari%2F537.36&umtime=1477649647499&uid= Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.sharethrough.com/butler?type=impressionRe…1.4.4%20Safari%2F537.36&umtime=1477649647499&uid=", completed: true…} | |
https://securepubads.g.doubleclick.net/gampad/ads?gdfp_req=1&correlator=352…mz%2Fhome&sz=300x250&scp=pos%3Dbottom%26tile%3D6%26rpfl_elemid%3D300x250_6Resourcex300x250%3D100%252COX%252C100_OX%26IOM%3D13_15&cust_params=khost%3Dwww.tmz.com%26bucket%3D18&cookie=ID%3Dce1cf677f1638aac%3AT%3D1477649646%3AS…04&vrp=104&ga_vid=1030208204.1477649644&ga_sid=1477649646&ga_hid=148541592 | |
http://b.scorecardresearch.com/b?c1=7&c2=18956797&c3=4728489&ns__t=14776496…nce%2Fw2%3Fsg%3D82893b79564009a4d8fab7b9db32cfea%26pl%3D23%26ug%3D%26ad%3DResourcep%3D6863%26pfurl%3D%cburl%3D%26pageViewId%255BwidgetLoaderWindowUrl%255D%3Dhttp%253A%252F%252Fwww.tmz.com%252F%26pageViewId%255BtimeMillis%255D%3D1477649645375%26pageViewId%255Brand%255D%3D8673902179149984%sourceUrl%3Dhttp%253A%252F%252Fwww.tmz.com%252F%frameUrl%3Dhttp%253A%252F%252Fwww.tmz.com%252F%clientTime%3D1477649645377%ci%3Dgrv-personalization-23%26wct%3D1477649643461&c9=http%3A%2F%2Fwww.tmz.com%2F | |
http://tags.pubgears.com/tmzhm01/ros/300x250?cb=40176&domain=www.tmz.com Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.pubgears.com/tmzhm01/ros/300x250?cb=40176&domain=www.tmz.com", completed: true…} | |
https://z.moatads.com/tmz695915919965/moatad.js#moatClientLevel1=78745944&m…moatClientSlicer1=54153864&moatClientSlicer2=54322224&zMoatPS=top&zMoatST= Resource {requests: Array[3], method: "GET", type: "script", url: "https://z.moatads.com/tmz695915919965/moatad.js#mo…4&moatClientSlicer2=54322224&zMoatPS=top&zMoatST=", completed: true…} | |
http://cdn.taboolasyndication.com/libtrc/static/thumbnails/36036e5c10d4f7d9ad5b2a37a80de678.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdn.taboolasyndication.com/libtrc/static/thumbnails/36036e5c10d4f7d9ad5b2a37a80de678.png", completed: true…} | |
http://cdn.taboola.com/libtrc/static/thumbnails/3aadbb71016ecd7a194bbe2791777e9a.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdn.taboola.com/libtrc/static/thumbnails/3aadbb71016ecd7a194bbe2791777e9a.png", completed: true…} | |
http://tags.bluekai.com/site/35702?id=223d02a4-52be-460c-ab56-32c7a33a4df7&redir=%2F%2Ftrc.taboola.com%2Fsg%2Fbluekai%2F1%2Fcm%3Ftaboola_hm%3DBK_UUID | |
http://trc.taboola.com/tmz/log/2/debug?tim=06%3A14%3A07.625&type=map&msg=trcrboxui%20render&id=3893&cv=230-RELEASE Resource {requests: Array[3], method: "GET", type: "image", url: "http://trc.taboola.com/tmz/log/2/debug?tim=06%3A14…map&msg=trcrboxui%20render&id=3893&cv=230-RELEASE", completed: true…} | |
http://trc.taboola.com/tmz/log/2/debug?tim=06%3A14%3A07.682&type=map&msg=trcrboxuiNaNrawPager%count_number_of_pages&id=401&cv=230-RELEASE | |
http://www.google-analytics.com/ga.js Resource {requests: Array[1], method: "GET", type: "script", url: "http://www.google-analytics.com/ga.js", completed: false…} | |
https://www.google-analytics.com/ga.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://www.google-analytics.com/ga.js", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…-J3OM16X4--/t_full/f_auto%2Cfl_lossy%2Cq_75/v1391651602/corey-haim-pic.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…%2Cfl_lossy%2Cq_75/v1391651602/corey-haim-pic.jpg", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…%3A//shechive.files.wordpress.com/2016/09/onenightstandthumb.png%3Fw%3D500 Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…ress.com/2016/09/onenightstandthumb.png%3Fw%3D500", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…https%3A//shechive.files.wordpress.com/2016/09/britney1.jpg%3Fquality%3D80Resourcetrip%3Dinfo%26w%3D500 | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…qCR--/t_full/f_auto%2Cfl_lossy%2Cq_75/v1474481115/brad-and-angie-photo.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…lossy%2Cq_75/v1474481115/brad-and-angie-photo.jpg", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…v1461684491/scott-disick-and-kourtney-kardashian-make-out-in-the-ocean.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…and-kourtney-kardashian-make-out-in-the-ocean.png", completed: true…} | |
http://trc.taboola.com/tmz/log/2/debug?tim=06%3A14%3A07.688&type=map&msg=trcrboxuiNaNrawPager%countPages&id=4113&cv=230-RELEASE | |
http://tpc.googlesyndication.com/safeframe/1-0-5/html/container.html#xpc=sf-gdn-exp-1&p=http%3A//www.tmz.com Resource {requests: Array[3], method: "GET", type: "subFrame", url: "http://tpc.googlesyndication.com/safeframe/1-0-5/h…iner.html#xpc=sf-gdn-exp-1&p=http%3A//www.tmz.com", completed: true…} | |
http://cdn.taboola.com/libtrc/static/thumbnails/f539211219b796ffbb49949997c764f0.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdn.taboola.com/libtrc/static/thumbnails/f539211219b796ffbb49949997c764f0.png", completed: true…} | |
http://cdn.taboolasyndication.com/libtrc/static/thumbnails/795129f551af64a16d9575ace2475a09.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdn.taboolasyndication.com/libtrc/static/thumbnails/795129f551af64a16d9575ace2475a09.png", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_257%2Cw_220%…0/serveFlavor/entry_id/0_6vdtuf8z/flavorId/0_0r1dvo1t/width/132/height/113 Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…6vdtuf8z/flavorId/0_0r1dvo1t/width/132/height/113", completed: true…} | |
http://trc.taboola.com/sg/bluekai/1/cm?taboola_hm=1v6M4yca99YRghBR Resource {requests: Array[3], method: "GET", type: "image", url: "http://trc.taboola.com/sg/bluekai/1/cm?taboola_hm=1v6M4yca99YRghBR", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/jstag Resource {requests: Array[6], method: "GET", type: "script", url: "http://pubgears-d.openx.net/w/1.0/jstag", completed: true…} | |
http://tags.pubgears.com/tmzhm02/ros/300x250?cb=56593&domain=www.tmz.com Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.pubgears.com/tmzhm02/ros/300x250?cb=56593&domain=www.tmz.com", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_257%2Cw_220%…0/serveFlavor/entry_id/0_yqori4zk/flavorId/0_z62t4m49/width/132/height/113 Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…yqori4zk/flavorId/0_z62t4m49/width/132/height/113", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_257%2Cw_220%…dication.com/libtrc/static/thumbnails/568c54aad084f82af54ff736e8ecbea9.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…c/thumbnails/568c54aad084f82af54ff736e8ecbea9.jpg", completed: true…} | |
http://str-assets.imgix.net/creative_workflow/creative_thumbnails/139574/im…ctar_Smoothie_1000x750_10.25.16_V2_2_.jpg?w=400&h=300&auto=format&fit=crop Resource {requests: Array[3], method: "GET", type: "image", url: "http://str-assets.imgix.net/creative_workflow/crea….25.16_V2_2_.jpg?w=400&h=300&auto=format&fit=crop", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…dication.com/libtrc/static/thumbnails/879a967eaaccb8960421d600479e7877.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…c/thumbnails/879a967eaaccb8960421d600479e7877.jpg", completed: true…} | |
https://z.moatads.com/sharethroughv2465247317527/moatad.js?moatClientLevel1…tTimeInView=str-time-sam-7GCb8Q84WMHcP8h5qXVD1fu9-629813e8&_=1477649642813 Resource {requests: Array[3], method: "GET", type: "script", url: "https://z.moatads.com/sharethroughv2465247317527/m…7GCb8Q84WMHcP8h5qXVD1fu9-629813e8&_=1477649642813", completed: true…} | |
http://b.sharethrough.com/butler?session=02ffbf10-f065-4fd8-baac-96aa1830db….0.2785.113%20Electron%2F1.4.4%20Safari%2F537.36&umtime=1477649648050&uid= Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.sharethrough.com/butler?session=02ffbf10-…1.4.4%20Safari%2F537.36&umtime=1477649648050&uid=", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…omstatic.com/gen/constrain/5000/500/80/2016/08/19/10/by/1x/php6wtza8k1.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…n/5000/500/80/2016/08/19/10/by/1x/php6wtza8k1.jpg", completed: true…} | |
http://b.aol.com/ping?ts=1477649648071&h=rma-api.gravity.com&v=52&r=http%3A…p=0&dL_hnu=1&plids=6863%7C%2C6863%7C%2C6863%7C%2C6863%7C%2C6863%7C&pgvis=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.aol.com/ping?ts=1477649648071&h=rma-api.g…C%2C6863%7C%2C6863%7C%2C6863%7C%2C6863%7C&pgvis=1", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…dication.com/libtrc/static/thumbnails/53a51b58573f1fd8f2d624d0e1abdbbb.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…c/thumbnails/53a51b58573f1fd8f2d624d0e1abdbbb.png", completed: true…} | |
http://images.taboola.com/taboola/image/fetch/f_jpg%2Cq_80%2Ch_153%2Cw_305%…dication.com/libtrc/static/thumbnails/f16ae9a4389816664a9ccc297bb6492a.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://images.taboola.com/taboola/image/fetch/f_jp…c/thumbnails/f16ae9a4389816664a9ccc297bb6492a.jpg", completed: true…} | |
http://b-aws.aol.com/ping?ts=1477649648071&h=rma-api.gravity.com&v=52&r=htt…p=0&dL_hnu=1&plids=6863%7C%2C6863%7C%2C6863%7C%2C6863%7C%2C6863%7C&pgvis=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://b-aws.aol.com/ping?ts=1477649648071&h=rma-a…C%2C6863%7C%2C6863%7C%2C6863%7C%2C6863%7C&pgvis=1", completed: true…} | |
http://assets.pinterest.com/js/pinit_main.js?0.7842249666245869 Resource {requests: Array[3], method: "GET", type: "script", url: "http://assets.pinterest.com/js/pinit_main.js?0.7842249666245869", completed: true…} | |
http://www.decenthat.com/bcn?hu=0&vv=1477649644160&xlg=&vqwo=1&deo=0&g1=s%7…1477649648264&y=1.7.461&elg=583298152&flg=UAfYiSSzoegJmzt&x=zzz.wpc.frp%2F Resource {requests: Array[3], method: "GET", type: "image", url: "http://www.decenthat.com/bcn?hu=0&vv=1477649644160…lg=583298152&flg=UAfYiSSzoegJmzt&x=zzz.wpc.frp%2F", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2025&br=p&bp=737&bt=25…F8bXdwdD1veF9wcm90b3xjaT0xfHVyPTlBcDNQSUxOQ2N8YmRyPTF8bGQ9b25hZ29mbHkuY29t Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…xfHVyPTlBcDNQSUxOQ2N8YmRyPTF8bGQ9b25hZ29mbHkuY29t", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2091&br=p&bp=150&bt=25…D1vcGVucnRiX2pzb258Y2k9MXx1cj0wQW9pNnRTYTZYfGJkcj0xfGxkPXN0YXRlZmFybS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…x1cj0wQW9pNnRTYTZYfGJkcj0xfGxkPXN0YXRlZmFybS5jb20", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2105&br=p&bp=567&bt=25…Xxtd3B0PW94X3Byb3RvfGNpPTF8dXI9MnRFVkg2VEwyb3xiZHI9MXxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…F8dXI9MnRFVkg2VEwyb3xiZHI9MXxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2120&br=p&bp=1894&bt=2…XM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…NpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20", completed: true…} | |
https://tpc.googlesyndication.com/pagead/js/r20161025/r20110914/abg.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://tpc.googlesyndication.com/pagead/js/r20161025/r20110914/abg.js", completed: true…} | |
https://tpc.googlesyndication.com/pagead/js/r20161025/r20110914/client/ext/m_js_controller.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://tpc.googlesyndication.com/pagead/js/r20161025/r20110914/client/ext/m_js_controller.js", completed: true…} | |
https://tpc.googlesyndication.com/simgad/7589822070320967331 Resource {requests: Array[3], method: "GET", type: "image", url: "https://tpc.googlesyndication.com/simgad/7589822070320967331", completed: true…} | |
https://www.facebook.com/impression.php/f220a4fb2a60a4/?lid=115&payload=%7BResourceource%22%3A%22jssdk%22%7D | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2274&br=p&bp=802&bt=25…F8bXdwdD1veF9wcm90b3xjaT0xfHVyPVlvaE5xTnhMYzN8YmRyPTF8bGQ9b25hZ29mbHkuY29t Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…xfHVyPVlvaE5xTnhMYzN8YmRyPTF8bGQ9b25hZ29mbHkuY29t", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2296&br=p&bp=799&bt=25…F8bXdwdD1veF9wcm90b3xjaT0xfHVyPWRvNUUxVHFRaW58YmRyPTF8bGQ9b25hZ29mbHkuY29t Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…xfHVyPWRvNUUxVHFRaW58YmRyPTF8bGQ9b25hZ29mbHkuY29t", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/acj?o=9745098822&callback=OX_9745098822&j…hop=1&res=1920x1080x24&plg=pm&ch=UTF-8&tz=240&ws=300x250&ifr=1&tws=800x600 Resource {requests: Array[3], method: "GET", type: "script", url: "http://pubgears-d.openx.net/w/1.0/acj?o=9745098822…g=pm&ch=UTF-8&tz=240&ws=300x250&ifr=1&tws=800x600", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/acj?o=2324660609&callback=OX_2324660609&j…50&ifr=1&tws=800x600&bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649 Resource {requests: Array[3], method: "GET", type: "script", url: "http://pubgears-d.openx.net/w/1.0/acj?o=2324660609…e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2300&br=p&bp=956&bt=25…Xxtd3B0PW94X3Byb3RvfGNpPTF8dXI9cnNHQXFyd25KT3xiZHI9MXxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…F8dXI9cnNHQXFyd25KT3xiZHI9MXxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?bd=2352&br=p&bp=1026&bt=2…fG13cHQ9b3hfcHJvdG98Y2k9MXx1cj1JVkVOa0U5eVhIfGJkcj0xfGxkPW9uYWdvZmx5LmNvbQ Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/bo?…Xx1cj1JVkVOa0U5eVhIfGJkcj0xfGxkPW9uYWdvZmx5LmNvbQ", completed: true…} | |
http://pixel.advertising.com/ups/41/sync?uid=dbbac7a97f3afaa2fff57c05717db5dc&redir=true Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.advertising.com/ups/41/sync?uid=dbbac7a97f3afaa2fff57c05717db5dc&redir=true", completed: false…} | |
http://pagead2.googlesyndication.com/pagead/expansion_embed.js?source=safeframe Resource {requests: Array[3], method: "GET", type: "script", url: "http://pagead2.googlesyndication.com/pagead/expansion_embed.js?source=safeframe", completed: true…} | |
http://webservices.webspectator.com/initcb?appId=39&vId=5FEE27816454369C&da…&ts=1477649649107&rs=0&h=http%3A%2F%2Fwww.tmz.com%2F&npv=1<sss=0<svs=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/initcb?appId=3…http%3A%2F%2Fwww.tmz.com%2F&npv=1<sss=0<svs=0", completed: true…} | |
http://tags.mathtag.com/notify/js?exch=opx&id=5aW95q2jLzEwLyAvTW1Ka1pUazBaR…d3B0PW94X3Byb3RvfGNpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20%26r%3D Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.mathtag.com/notify/js?exch=opx&id=5aW9…XI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20%26r%3D", completed: true…} | |
http://www.google.com/ads/measurement/l?ebcid=ALh7CaRwv_o3-t_DUre1P8C89deEyYwlIXrcCdjzrSRCz--Lhs6Y5WQJccYmt7pCLpnxM-LbY77l2PPwcjcX785uVMhXs57l2g Resource {requests: Array[3], method: "GET", type: "image", url: "http://www.google.com/ads/measurement/l?ebcid=ALh7…s6Y5WQJccYmt7pCLpnxM-LbY77l2PPwcjcX785uVMhXs57l2g", completed: true…} | |
http://www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_112x36dp.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://www.gstatic.com/images/branding/googlelogo/1x/googlelogo_color_112x36dp.png", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/ri?ef=db&bi=37c28dfb-3ef4-49…XM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/ri?…NpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/rr?ef=db&bi=37c28dfb-3ef4-49…XM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/rr?…NpPTF8dXI9OEJOV3pMN1BSRXxiZHI9MXxsZD1tYWN5cy5jb20", completed: true…} | |
https://geo.moatads.com/n.js?e=35&ud=false&qm=240&qn=6OZw%3DoHB%2CEF%3FKC1I…d=1&ac=1&it=500&fs=96342&na=391725961&cs=0&callback=MoatSuperV23.gna837317 Resource {requests: Array[3], method: "GET", type: "script", url: "https://geo.moatads.com/n.js?e=35&ud=false&qm=240&…na=391725961&cs=0&callback=MoatSuperV23.gna837317", completed: true…} | |
http://tpc.googlesyndication.com/safeframe/1-0-5/html/container.html Resource {requests: Array[3], method: "GET", type: "other", url: "http://tpc.googlesyndication.com/safeframe/1-0-5/html/container.html", completed: true…} | |
http://www.google-analytics.com/r/__utm.gif?utmwv=5.6.7&utms=1&utmn=8050899…utmcct%3D%2F%3B&utmjid=790909748&utmredir=1&utmu=qhCAAAAAAAAAAAAAAAABAAAE~ Resource {requests: Array[1], method: "GET", type: "image", url: "http://www.google-analytics.com/r/__utm.gif?utmwv=…0909748&utmredir=1&utmu=qhCAAAAAAAAAAAAAAAABAAAE~", completed: false…} | |
https://www.google-analytics.com/r/__utm.gif?utmwv=5.6.7&utms=1&utmn=805089…utmcct%3D%2F%3B&utmjid=790909748&utmredir=1&utmu=qhCAAAAAAAAAAAAAAAABAAAE~ Resource {requests: Array[3], method: "GET", type: "image", url: "https://www.google-analytics.com/r/__utm.gif?utmwv…0909748&utmredir=1&utmu=qhCAAAAAAAAAAAAAAAABAAAE~", completed: true…} | |
http://tags.pubgears.com/tmzhm04/ros/300x250?cb=29637&domain=www.tmz.com Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.pubgears.com/tmzhm04/ros/300x250?cb=29637&domain=www.tmz.com", completed: true…} | |
http://tags.pubgears.com/tmzhm04/ros/300x250?cb=35935&domain=www.tmz.com Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.pubgears.com/tmzhm04/ros/300x250?cb=35935&domain=www.tmz.com", completed: true…} | |
http://tags.pubgears.com/tmzhm04/ros/300x250?cb=11293&domain=www.tmz.com Resource {requests: Array[3], method: "GET", type: "script", url: "http://tags.pubgears.com/tmzhm04/ros/300x250?cb=11293&domain=www.tmz.com", completed: true…} | |
https://googleads.g.doubleclick.net/dbm/ad?dbm_c=AKAmf-BkmgdrSAUKIq27vuA3GZ…Xhh3GION_GLil4HkrdkLMa2EnOc-Bg&pr=9:AAABWArIT5qsxxHwBecyJedrJ03K8ckb30oWSw Resource {requests: Array[3], method: "GET", type: "script", url: "https://googleads.g.doubleclick.net/dbm/ad?dbm_c=A…Oc-Bg&pr=9:AAABWArIT5qsxxHwBecyJedrJ03K8ckb30oWSw", completed: true…} | |
https://static.cliipa.com/basev/sbt-f6817f3a26c6.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://static.cliipa.com/basev/sbt-f6817f3a26c6.js", completed: true…} | |
https://c.betrad.com/surly.js?;ad_w=300;ad_h=250;coid=322;nid=4311;cps=1 Resource {requests: Array[6], method: "GET", type: "script", url: "https://c.betrad.com/surly.js?;ad_w=300;ad_h=250;coid=322;nid=4311;cps=1", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9elpiMEt1NDdTMXxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-e…RvfGNpPTF8dXI9elpiMEt1NDdTMXxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9elpiMEt1NDdTMXxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-e…RvfGNpPTF8dXI9elpiMEt1NDdTMXxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
https://pagead2.googlesyndication.com/pagead/gen_204?id=xbid&dbm_b=AKAmf-AF…CKz1gvTPJixByRXZVAPfgMkyJeq3hBU-7ftmJ4NJ6XgnpU7Hsw992e4o7lB-_SlciBPwSxEIa4 Resource {requests: Array[3], method: "GET", type: "image", url: "https://pagead2.googlesyndication.com/pagead/gen_2…eq3hBU-7ftmJ4NJ6XgnpU7Hsw992e4o7lB-_SlciBPwSxEIa4", completed: true…} | |
https://securepubads.g.doubleclick.net/pcs/view?xai=AKAOjstmdM_7XNRcB1xtuls…4p5Ji6AfotiTgqLk_F9_A3LN18GSuA&sig=Cg0ArKJSzEJv59TQOFfcEAE&urlfix=1&adurl= Resource {requests: Array[3], method: "GET", type: "image", url: "https://securepubads.g.doubleclick.net/pcs/view?xa…8GSuA&sig=Cg0ArKJSzEJv59TQOFfcEAE&urlfix=1&adurl=", completed: true…} | |
https://googleads.g.doubleclick.net/dbm/ad?dbm_c=AKAmf-CBJa6jP4iTsC7mi_0v9e…IRMkkKeYzfFRMTmqocSEB7iZcJbUie&pr=9:AAABWArIS7T_IgglDWzPKBV6h2WfrFhWhEtyAw Resource {requests: Array[3], method: "GET", type: "script", url: "https://googleads.g.doubleclick.net/dbm/ad?dbm_c=A…JbUie&pr=9:AAABWArIS7T_IgglDWzPKBV6h2WfrFhWhEtyAw", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/ri?ef=db&bi=37c28dfb-3ef4-49…fG13cHQ9b3hfcHJvdG98Y2k9MXx1cj1JVkVOa0U5eVhIfGJkcj0xfGxkPW9uYWdvZmx5LmNvbQ Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/ri?…Xx1cj1JVkVOa0U5eVhIfGJkcj0xfGxkPW9uYWdvZmx5LmNvbQ", completed: true…} | |
http://ox-d.warnerbros.servedbyopenx.com/w/1.0/rr?ef=db&bi=37c28dfb-3ef4-49…fG13cHQ9b3hfcHJvdG98Y2k9MXx1cj1JVkVOa0U5eVhIfGJkcj0xfGxkPW9uYWdvZmx5LmNvbQ Resource {requests: Array[3], method: "GET", type: "image", url: "http://ox-d.warnerbros.servedbyopenx.com/w/1.0/rr?…Xx1cj1JVkVOa0U5eVhIfGJkcj0xfGxkPW9uYWdvZmx5LmNvbQ", completed: true…} | |
https://pagead2.googlesyndication.com/pagead/gen_204?id=xbid&dbm_b=AKAmf-Be…B6NtWevhu-xvRINjQ5Zlv8-BfSNen0IacDL1a9Ki-MHGxXG87_VidXs-7OTGSHWEtJJB5nooTI Resource {requests: Array[3], method: "GET", type: "image", url: "https://pagead2.googlesyndication.com/pagead/gen_2…SNen0IacDL1a9Ki-MHGxXG87_VidXs-7OTGSHWEtJJB5nooTI", completed: true…} | |
http://wfpscripts.webspectator.com/ortc-2.1.24.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://wfpscripts.webspectator.com/ortc-2.1.24.js", completed: true…} | |
http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js", completed: true…} | |
https://googleads.g.doubleclick.net/pagead/drt/s?v=r20120211 Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/pagead/drt/s?v=r20120211", completed: true…} | |
https://cm.g.doubleclick.net/push?client=ca-pub-2971421842924714 Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://cm.g.doubleclick.net/push?client=ca-pub-2971421842924714", completed: true…} | |
https://tpc.googlesyndication.com/pagead/images/x_button_blue2.svg Resource {requests: Array[3], method: "GET", type: "image", url: "https://tpc.googlesyndication.com/pagead/images/x_button_blue2.svg", completed: true…} | |
http://pixel.advertising.com/ups/41/sync?uid=dbbac7a97f3afaa2fff57c05717db5dc&redir=true&verify=true Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.advertising.com/ups/41/sync?uid=dbbac7a97f3afaa2fff57c05717db5dc&redir=true&verify=true", completed: false…} | |
http://wfpscripts.webspectator.com/ws-4.4.42.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://wfpscripts.webspectator.com/ws-4.4.42.js", completed: true…} | |
https://googleads.g.doubleclick.net/dbm/ad?dbm_c=AKAmf-AmYdhHYS_eFV6fCFkaLr…8t8IV_947YzV9tiKEmmHoMGKaKPlSg&pr=9:AAABWArIT8nUeIS1xqQeJOCoBV5zl_DbVzvc7A Resource {requests: Array[3], method: "GET", type: "script", url: "https://googleads.g.doubleclick.net/dbm/ad?dbm_c=A…KPlSg&pr=9:AAABWArIT8nUeIS1xqQeJOCoBV5zl_DbVzvc7A", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/rr?ts=1fHJpZD1jYWQ2ZjgwMy03NzUwLTRkMWYtOT…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9blk0cEluaXRvYnxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/rr?ts=1fHJpZD1jY…RvfGNpPTF8dXI9blk0cEluaXRvYnxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/ri?ts=1fHJpZD1jYWQ2ZjgwMy03NzUwLTRkMWYtOT…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9blk0cEluaXRvYnxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/ri?ts=1fHJpZD1jY…RvfGNpPTF8dXI9blk0cEluaXRvYnxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
https://www.googletagservices.com/dcm/dcmads.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://www.googletagservices.com/dcm/dcmads.js", completed: true…} | |
https://pagead2.googlesyndication.com/pagead/gen_204?id=xbid&dbm_b=AKAmf-AV…d6Xm4SvYgUNEeQ8OIcm6EF0nyU2J86ffdISbKeLmwLFkemeyutIUoUvHs8ZnhUh35yS8HGg_qo Resource {requests: Array[3], method: "GET", type: "image", url: "https://pagead2.googlesyndication.com/pagead/gen_2…U2J86ffdISbKeLmwLFkemeyutIUoUvHs8ZnhUh35yS8HGg_qo", completed: true…} | |
http://us-u.openx.net/w/1.0/sd?id=536872786&val=297e5813-24f1-4597-a645-26dbe7144e38 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=536872786&val=297e5813-24f1-4597-a645-26dbe7144e38", completed: true…} | |
http://e.nexac.com/e/media_math_sync.xgi?na_exid=297e5813-24f1-4597-a645-26dbe7144e38 Resource {requests: Array[3], method: "GET", type: "image", url: "http://e.nexac.com/e/media_math_sync.xgi?na_exid=297e5813-24f1-4597-a645-26dbe7144e38", completed: false…} | |
http://pagead2.googlesyndication.com/pagead/js/lidar.js Resource {requests: Array[6], method: "GET", type: "script", url: "http://pagead2.googlesyndication.com/pagead/js/lidar.js", completed: true…} | |
http://tpc.googlesyndication.com/sodar/sbhK2lTE.js Resource {requests: Array[6], method: "GET", type: "script", url: "http://tpc.googlesyndication.com/sodar/sbhK2lTE.js", completed: true…} | |
https://googleads.g.doubleclick.net/xbbe/pixel?d=CJSiMhDWjzwY7JvhDDAB&v=APE…1ObvPUN2XerhOOGVCIvk_4rniMeVIvgCp-MaUit0YLCsz5nZ7nGtgOI5biXC9AKBloH4zJiN2A Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/xbbe/pixel?d=C…MeVIvgCp-MaUit0YLCsz5nZ7nGtgOI5biXC9AKBloH4zJiN2A", completed: true…} | |
http://server.cliipa.com/campaigns/5553803d47e5b70300ea5455/57a1ab1825c14912007a7d22/json Resource {requests: Array[24], method: "OPTIONS", type: "xhr", url: "http://server.cliipa.com/campaigns/5553803d47e5b70300ea5455/57a1ab1825c14912007a7d22/json", completed: true…} | |
http://c.betrad.com/a/4.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://c.betrad.com/a/4.gif", completed: true…} | |
http://c.betrad.com/ba.html?d803588 Resource {requests: Array[15], method: "GET", type: "subFrame", url: "http://c.betrad.com/ba.html?d803588", completed: true…} | |
https://googleads.g.doubleclick.net/xbbe/pixel?d=CJSiMhDWjzwY7JvhDDAB&v=APE…f1A4vqWzoWU2J5KGHPaM4bvWLa3lY9IaUadpQsdeBlDDJX9pWr56G-dpngEzpHUCL3Ur50VRrw Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/xbbe/pixel?d=C…a3lY9IaUadpQsdeBlDDJX9pWr56G-dpngEzpHUCL3Ur50VRrw", completed: true…} | |
http://api.gravity.com/v1/sync/userGuid/?partnerKey=sk_._siteId_-4536324323033812707&puid=UP442c078a-9cf7-11e6-a310-00163ee0563a Resource {requests: Array[3], method: "GET", type: "image", url: "http://api.gravity.com/v1/sync/userGuid/?partnerKe…12707&puid=UP442c078a-9cf7-11e6-a310-00163ee0563a", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/acj?o=1942813990&callback=OX_1942813990&j…50&ifr=1&tws=800x600&bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649 Resource {requests: Array[3], method: "GET", type: "script", url: "http://pubgears-d.openx.net/w/1.0/acj?o=1942813990…e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/acj?o=6881685780&callback=OX_6881685780&j…50&ifr=1&tws=800x600&bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649 Resource {requests: Array[3], method: "GET", type: "script", url: "http://pubgears-d.openx.net/w/1.0/acj?o=6881685780…e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/acj?o=9608564947&callback=OX_9608564947&j…50&ifr=1&tws=800x600&bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649 Resource {requests: Array[3], method: "GET", type: "script", url: "http://pubgears-d.openx.net/w/1.0/acj?o=9608564947…e1a19ab-efee-4661-8e5d-c8d1d92a715d&ba=1477649649", completed: true…} | |
http://edge.quantserve.com/quant.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://edge.quantserve.com/quant.js", completed: true…} | |
http://pixel.quantserve.com/pixel;r=1717405987;a=p-HGAVM7nQJ_sep;fpan=0;fpa…77649650307;tzo=240;ref=;url=http%3A%2F%2Fwww.tmz.com%2F;ogl=site_name.TMZ Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.quantserve.com/pixel;r=1717405987;a=p…url=http%3A%2F%2Fwww.tmz.com%2F;ogl=site_name.TMZ", completed: true…} | |
https://googleads.g.doubleclick.net/xbbe/pixel?d=CJSiMhDWjzwY7JvhDDAB&v=APE…-uAHLH02nDS56mjymePtlsSvf3VX4nE1Ho1NVTejnuKZ80fJ3yoZO4MfbC5wVkbI7gDHMy8QSQ Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/xbbe/pixel?d=C…3VX4nE1Ho1NVTejnuKZ80fJ3yoZO4MfbC5wVkbI7gDHMy8QSQ", completed: true…} | |
http://e.nexac.com/e/xrefid.xgi?na_exid=297e5813-24f1-4597-a645-26dbe7144e38&na_pid=1973&ru= Resource {requests: Array[3], method: "GET", type: "image", url: "http://e.nexac.com/e/xrefid.xgi?na_exid=297e5813-24f1-4597-a645-26dbe7144e38&na_pid=1973&ru=", completed: true…} | |
https://www.googletagservices.com/dcm/impl_v35.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://www.googletagservices.com/dcm/impl_v35.js", completed: true…} | |
https://www.google.com/pagead/drt/ui Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://www.google.com/pagead/drt/ui", completed: false…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=169690104&eci=78414594144&w=300&h=250&wsRotSlot=&isda=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…104&eci=78414594144&w=300&h=250&wsRotSlot=&isda=0", completed: true…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=169688904&eci=78414569424&w=300&h=250&wsRotSlot=&isda=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…904&eci=78414569424&w=300&h=250&wsRotSlot=&isda=0", completed: true…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=174468744&eci=81923922624&w=300&h=250&wsRotSlot=&isda=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…744&eci=81923922624&w=300&h=250&wsRotSlot=&isda=0", completed: true…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=174469824&eci=81923922264&w=300&h=250&wsRotSlot=&isda=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…824&eci=81923922264&w=300&h=250&wsRotSlot=&isda=0", completed: true…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=169686984&eci=78414556944&w=300&h=250&wsRotSlot=&isda=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…984&eci=78414556944&w=300&h=250&wsRotSlot=&isda=0", completed: true…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=null&eci=null&w=930&h=180&wsRotSlot=&isda=1 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…eolid=null&eci=null&w=930&h=180&wsRotSlot=&isda=1", completed: true…} | |
http://webservices.webspectator.com/adunitMapping?eaup=/55153744/tmz/home&eolid=181892784&eci=91007487744&w=2&h=2&wsRotSlot=&isda=0 Resource {requests: Array[3], method: "GET", type: "script", url: "http://webservices.webspectator.com/adunitMapping?…1892784&eci=91007487744&w=2&h=2&wsRotSlot=&isda=0", completed: true…} | |
http://ortc-prd.realtime.co/server/2.1/?guid=d05f9c85-cdf2-9354-58cc-59d09e19d114&appkey=R60tcQ Resource {requests: Array[3], method: "GET", type: "script", url: "http://ortc-prd.realtime.co/server/2.1/?guid=d05f9c85-cdf2-9354-58cc-59d09e19d114&appkey=R60tcQ", completed: true…} | |
http://tpc.googlesyndication.com/sodar/cTrvNaRi.html Resource {requests: Array[15], method: "GET", type: "subFrame", url: "http://tpc.googlesyndication.com/sodar/cTrvNaRi.html", completed: true…} | |
https://cm.g.doubleclick.net/pixel?google_nid=adaptv_dbm&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=adaptv_dbm&google_cm&google_sc&google_dbm", completed: false…} | |
https://cm.g.doubleclick.net/pixel?google_nid=spotxchange_dbm&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=spotxchange_dbm&google_cm&google_sc&google_dbm", completed: false…} | |
https://pxl.connexity.net/c/cse?a=Q&B=2d&google_gid=CAESEK6KeewOyowIRW2tFwIcfts&google_cver=1&google_push=AHNF13JOiGg3nP9r1BpVzXsAy3GJd6Nn254jxKNK Resource {requests: Array[3], method: "GET", type: "image", url: "https://pxl.connexity.net/c/cse?a=Q&B=2d&google_gi…gle_push=AHNF13JOiGg3nP9r1BpVzXsAy3GJd6Nn254jxKNK", completed: false…} | |
http://pagead2.googlesyndication.com/activeview?avi=BTyF78CQTWPe6N9KgpgPhmb…s=0&bac=0&fp=correlator%3D3528639499037635%26eid%3D108809080%252C108809133NaNu%3D%252F55153744%252Ftmz%252Fhome%oid%3D3%26url%3Dhttp%253A%252F%252Fwww.tmz.com%252F&afp=%output%3Djson_html%impl%3Dfif%dt%3D1477649648801%26adx%3D783%26ady%3D12915%ifi%3D11%flash%3D0&r=u&bs=785,585&bos=800,600&ps=1098,30403&ss=1920,1080&tt=2523&pt=-1&deb=1-0-9-2-2--1&tvt=379&uc=1&tgt=nf&cl=0 | |
https://googleads.g.doubleclick.net/dbm/ad?dbm_c=AKAmf-APv6hmLbPOxy2uG_oZZg…Vz-kZLLdEDk4llRyLM4qeYtRDvxDIU&pr=9:AAABWArIUyChyMqdTYdnrp_v6zKgAVKKuC7JZA Resource {requests: Array[3], method: "GET", type: "script", url: "https://googleads.g.doubleclick.net/dbm/ad?dbm_c=A…vxDIU&pr=9:AAABWArIUyChyMqdTYdnrp_v6zKgAVKKuC7JZA", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9cWR6enBHVmtXVXxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-e…RvfGNpPTF8dXI9cWR6enBHVmtXVXxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9cWR6enBHVmtXVXxsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-e…RvfGNpPTF8dXI9cWR6enBHVmtXVXxsZD1vbmFnb2ZseS5jb20", completed: true…} | |
https://pagead2.googlesyndication.com/pagead/gen_204?id=xbid&dbm_b=AKAmf-AF…CIk5l4ycAkkt-fTEovy0I778lBfObc4SMokZ4zr30IxQXwdL-ooa5QekXTrzOL-imyF9cA_yNY Resource {requests: Array[3], method: "GET", type: "image", url: "https://pagead2.googlesyndication.com/pagead/gen_2…BfObc4SMokZ4zr30IxQXwdL-ooa5QekXTrzOL-imyF9cA_yNY", completed: true…} | |
https://cm.g.doubleclick.net/pixel?google_nid=tremor_video_dbm&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=tremor_video_dbm&google_cm&google_sc&google_dbm", completed: false…} | |
https://cm.g.doubleclick.net/pixel?google_nid=rubicon&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=rubicon&google_cm&google_sc&google_dbm", completed: false…} | |
https://googleads.g.doubleclick.net/dbm/ad?dbm_c=AKAmf-C35aogcaeoRyqp72XtYi…pRAq-3nzih_Tbyr7y5qgwe1CwF38Dk&pr=9:AAABWArIUzxwClfk7EL8W9KaiIOL_0YhQlBv-w Resource {requests: Array[3], method: "GET", type: "script", url: "https://googleads.g.doubleclick.net/dbm/ad?dbm_c=A…F38Dk&pr=9:AAABWArIUzxwClfk7EL8W9KaiIOL_0YhQlBv-w", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9ZUZhSW1aanVXS3xsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-e…RvfGNpPTF8dXI9ZUZhSW1aanVXS3xsZD1vbmFnb2ZseS5jb20", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…G13aXM9MXxtd3B0PW94X3Byb3RvfGNpPTF8dXI9ZUZhSW1aanVXS3xsZD1vbmFnb2ZseS5jb20 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-e…RvfGNpPTF8dXI9ZUZhSW1aanVXS3xsZD1vbmFnb2ZseS5jb20", completed: true…} | |
https://pagead2.googlesyndication.com/pagead/gen_204?id=xbid&dbm_b=AKAmf-Bi…XXnbn5k-hkXt2t_i2dpfJxCieU0_9-Yeej_owV8JYxRkGZkaC2l4ueRLj7WpbXC_MIreLpeVSg Resource {requests: Array[3], method: "GET", type: "image", url: "https://pagead2.googlesyndication.com/pagead/gen_2…U0_9-Yeej_owV8JYxRkGZkaC2l4ueRLj7WpbXC_MIreLpeVSg", completed: true…} | |
http://c.betrad.com/geo/ba.js?d803588 Resource {requests: Array[9], method: "GET", type: "xhr", url: "http://c.betrad.com/geo/ba.js?d803588", completed: true…} | |
https://googleads.g.doubleclick.net/pagead/drt/si Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/pagead/drt/si", completed: true…} | |
http://beacon.krxd.net/optout_check?callback=Krux.ns.warnerbros.kxjsonp_optOutCheck Resource {requests: Array[3], method: "GET", type: "script", url: "http://beacon.krxd.net/optout_check?callback=Krux.ns.warnerbros.kxjsonp_optOutCheck", completed: true…} | |
http://cdn.krxd.net/userdata/get?pub=9a1de5c5-4981-42ce-b9d1-093439c76070&technographics=1&callback=Krux.ns.warnerbros.kxjsonp_userdata Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.krxd.net/userdata/get?pub=9a1de5c5-4981…cs=1&callback=Krux.ns.warnerbros.kxjsonp_userdata", completed: true…} | |
http://r.nexac.com/e/getdata.xgi?dt=br&pkey=oazw62oazwq13&ru=http://beacon.krxd.net/data.gif?_kuid%3DK3ElxNJbkdpid%3De70bc6e8-7d66-460e-b96d-cee26cf41add%dlxid%3D%3Cna_id%3E%dlxdata%3D%3Cna_da%3E | |
http://rtd.tubemogul.com/upi/pid/NC4WTmcy?redir=http%3A%2F%2Fbeacon.krxd.ne…ner_id%3Dcb276571-e0d9-4438-9fd4-80a1ff034b01%26puid%3D%24%7BTM_USER_ID%7D Resource {requests: Array[3], method: "GET", type: "image", url: "http://rtd.tubemogul.com/upi/pid/NC4WTmcy?redir=ht…38-9fd4-80a1ff034b01%26puid%3D%24%7BTM_USER_ID%7D", completed: false…} | |
https://aa.agkn.com/adscores/g.js?sid=9212244187&_kdpid=2111c0af-fc3a-446f-ab07-63aa74fbde8e Resource {requests: Array[3], method: "GET", type: "image", url: "https://aa.agkn.com/adscores/g.js?sid=9212244187&_kdpid=2111c0af-fc3a-446f-ab07-63aa74fbde8e", completed: false…} | |
http://s.thebrighttag.com/cs?tp=8RtgoqC&uid=K3ElxNJb Resource {requests: Array[3], method: "GET", type: "image", url: "http://s.thebrighttag.com/cs?tp=8RtgoqC&uid=K3ElxNJb", completed: true…} | |
https://ad.doubleclick.net/ddm/adj/N8278.468584.AMNETGROUPINC./B10442827.13…_rfl=1,http%3A%2F%2Fwww.tmz.com%2F$0;xdt=0;crlt=CEjnEe*-KA;sttr=720;prcl=s? Resource {requests: Array[3], method: "GET", type: "script", url: "https://ad.doubleclick.net/ddm/adj/N8278.468584.AM…z.com%2F$0;xdt=0;crlt=CEjnEe*-KA;sttr=720;prcl=s?", completed: true…} | |
http://presentation-atl1.turn.com/server/ads.js?pub=6552283&cch=6553230&cod…imyQiTgzQp-305JAD3_Osdv-AcpjGmA&acp=AAABWArIU3P3O46yjyMXjxuD9oMp5AeWCsnArA Resource {requests: Array[3], method: "GET", type: "script", url: "http://presentation-atl1.turn.com/server/ads.js?pu…cpjGmA&acp=AAABWArIU3P3O46yjyMXjxuD9oMp5AeWCsnArA", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…13aXM9MXxtd3B0PW9wZW5ydGJfanNvbnxjaT0xfHVyPWNJYVJDSXFWS2F8bGQ9cGVyZ28uY29t Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/rr?bi=2e1a19ab-e…fanNvbnxjaT0xfHVyPWNJYVJDSXFWS2F8bGQ9cGVyZ28uY29t", completed: true…} | |
https://cm.g.doubleclick.net/pixel?google_nid=appnexus&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=appnexus&google_cm&google_sc&google_dbm", completed: false…} | |
https://cm.g.doubleclick.net/pixel?google_nid=pubmatic&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=pubmatic&google_cm&google_sc&google_dbm", completed: false…} | |
http://pixel.sitescout.com/connectors/krux/usersync?redir=http://beacon.krxd.net%2Fusermatch.gif%3Fpartner_id%3Dsscout%26partner_uid%3D%24UUID Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.sitescout.com/connectors/krux/usersyn…gif%3Fpartner_id%3Dsscout%26partner_uid%3D%24UUID", completed: false…} | |
https://sync.search.spotxchange.com/partner?adv_id=7025&uid=CAESENGmQ1rmqpWZq6PPf_t7I_o&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://sync.search.spotxchange.com/partner?adv_id…025&uid=CAESENGmQ1rmqpWZq6PPf_t7I_o&google_cver=1", completed: false…} | |
https://sync.adap.tv/sync?type=gif&key=invitemedianewyork2&uid=CAESEAfSgC8meW6rna_TEnqZr2g&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://sync.adap.tv/sync?type=gif&key=invitemedia…rk2&uid=CAESEAfSgC8meW6rna_TEnqZr2g&google_cver=1", completed: false…} | |
http://b.scorecardresearch.com/p?c1=9&c2=8188709&cs_xi=K3ElxNJb&rn=1477649651 Resource {requests: Array[3], method: "GET", type: "image", url: "http://b.scorecardresearch.com/p?c1=9&c2=8188709&cs_xi=K3ElxNJb&rn=1477649651", completed: true…} | |
https://idsync.rlcdn.com/379708.gif?partner_uid=K3ElxNJb Resource {requests: Array[3], method: "GET", type: "image", url: "https://idsync.rlcdn.com/379708.gif?partner_uid=K3ElxNJb", completed: false…} | |
https://googleads.g.doubleclick.net/xbbe/pixel?d=CJSiMhDWjzwY7JvhDDAB&v=APE…XaCQk1lnACTPQCAZW91AFAjS57hpkb5QhE_2XVFtw_I2vOx6cXhqrtbyq43-VS-nubC3bg-XLQ Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/xbbe/pixel?d=C…7hpkb5QhE_2XVFtw_I2vOx6cXhqrtbyq43-VS-nubC3bg-XLQ", completed: true…} | |
https://cm.g.doubleclick.net/pixel?google_nid=connexity&google_push= Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=connexity&google_push=", completed: true…} | |
https://partners.tremorhub.com/sync?UIGL=CAESEOkBJEzTH0wyx6deB080PV0&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://partners.tremorhub.com/sync?UIGL=CAESEOkBJEzTH0wyx6deB080PV0&google_cver=1", completed: true…} | |
https://pixel.rubiconproject.com/tap.php?v=7751&nid=2249&expires=30&put=CAESEC9iWjrVun20aJbdE1UZsF8&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://pixel.rubiconproject.com/tap.php?v=7751&ni…=30&put=CAESEC9iWjrVun20aJbdE1UZsF8&google_cver=1", completed: true…} | |
https://googleads.g.doubleclick.net/xbbe/pixel?d=CJSiMhDWjzwY7JvhDDAB&v=APE…zMQfcYk4Qgtxu98PpAkiZKHYjjze4UPbibZmph6ixxqhWF4JATYpBJgquyKxbVtcLCdCeTXo0Q Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://googleads.g.doubleclick.net/xbbe/pixel?d=C…jze4UPbibZmph6ixxqhWF4JATYpBJgquyKxbVtcLCdCeTXo0Q", completed: true…} | |
http://r.nexac.com/e/getdata.xgi?dt=br&pkey=gpwn29rvapq62&ru=http://beacon.krxd.net/data.gif?_kuid%3DK3ElxNJbkdpid%3D2dd640a6-6ebd-4d4f-af30-af8baa441a0d%dlxid%3D%3Cna_id%3E%dlxdata%3D%3Cna_da%3E | |
http://loadm.exelator.com/load?_kdpid=e4942ff0-4070-4896-a7ef-e6a5a30ce9f9&buid=K3ElxNJb&p=204&g=270&j=0 Resource {requests: Array[3], method: "GET", type: "image", url: "http://loadm.exelator.com/load?_kdpid=e4942ff0-407…6-a7ef-e6a5a30ce9f9&buid=K3ElxNJb&p=204&g=270&j=0", completed: false…} | |
https://usermatch.krxd.net/um/v2?partner=google Resource {requests: Array[3], method: "GET", type: "image", url: "https://usermatch.krxd.net/um/v2?partner=google", completed: false…} | |
ws://ortc-ws2-useast1-s0003.realtime.co/broadcast/063/pkaoabjh/websocket Resource {requests: Array[2], method: "GET", type: "other", url: "ws://ortc-ws2-useast1-s0003.realtime.co/broadcast/063/pkaoabjh/websocket", completed: false…} | |
http://kr.ixiaa.com/C726AB29-0470-440B-B8D2-D552CED3A3DC/a.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://kr.ixiaa.com/C726AB29-0470-440B-B8D2-D552CED3A3DC/a.gif", completed: false…} | |
https://pagead2.googlesyndication.com/bg/Vx5T5v_l9kArTWBPBHZqY9TAnkwNmP2omz2ceBJ6VSU.js Resource {requests: Array[6], method: "GET", type: "script", url: "https://pagead2.googlesyndication.com/bg/Vx5T5v_l9kArTWBPBHZqY9TAnkwNmP2omz2ceBJ6VSU.js", completed: true…} | |
http://beacon.krxd.net/usermatch.gif?partner_id=cb276571-e0d9-4438-9fd4-80a1ff034b01&puid=8155793527590810759 Resource {requests: Array[3], method: "GET", type: "image", url: "http://beacon.krxd.net/usermatch.gif?partner_id=cb…9-4438-9fd4-80a1ff034b01&puid=8155793527590810759", completed: true…} | |
http://beacon.krxd.net/data.gif?_kuid=K3ElxNJb&_kdpid=e70bc6e8-7d66-460e-b96d-cee26cf41add&dlxid=&dlxdata= Resource {requests: Array[3], method: "GET", type: "image", url: "http://beacon.krxd.net/data.gif?_kuid=K3ElxNJb&_kd…bc6e8-7d66-460e-b96d-cee26cf41add&dlxid=&dlxdata=", completed: true…} | |
https://ib.adnxs.com/setuid?entity=101&code=CAESEOpQUHniM3C_q0cwxgUJDJI&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ib.adnxs.com/setuid?entity=101&code=CAESEOpQUHniM3C_q0cwxgUJDJI&google_cver=1", completed: true…} | |
https://image2.pubmatic.com/AdServer/Pug?vcode=bz0yJnR5cGU9MSZjb2RlPTIxNzcmdGw9MTI5NjAw&piggybackCookie=CAESEJXKj3XyKpbLWqs56CyP4e0&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://image2.pubmatic.com/AdServer/Pug?vcode=bz0…kCookie=CAESEJXKj3XyKpbLWqs56CyP4e0&google_cver=1", completed: true…} | |
https://choices.truste.com/ca?pid=turn01&aid=turn01&cid=1519369354&c=7558564148489724897&w=300&h=250&js=turn0&admarker=dynamic&uid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "script", url: "https://choices.truste.com/ca?pid=turn01&aid=turn0…js=turn0&admarker=dynamic&uid=8062967306755220449", completed: true…} | |
https://ad.doubleclick.net/ddm/adi/N229803.150834TURN/B9595194.130320313;sz…fgLsddIOg3wdcTaRbB7WiCRKJIvSGi-SLPKwgNm-vti5A/url/;ord=7558564148489724897? Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://ad.doubleclick.net/ddm/adi/N229803.150834T…vSGi-SLPKwgNm-vti5A/url/;ord=7558564148489724897?", completed: true…} | |
http://beacon.krxd.net/usermatch.gif?partner_id=sscout&partner_uid=ede3189b-7166-484f-a09e-8591f8e95f4a Resource {requests: Array[3], method: "GET", type: "image", url: "http://beacon.krxd.net/usermatch.gif?partner_id=ss…&partner_uid=ede3189b-7166-484f-a09e-8591f8e95f4a", completed: true…} | |
https://log.pinterest.com/?guid=nwnsa025hvd8&tv=2016052401&type=pidget&sub=…en&via=http%3A%2F%2Fwww.tmz.com%2F&callback=PIN_1477649649654.f.callback[0] Resource {requests: Array[3], method: "GET", type: "script", url: "https://log.pinterest.com/?guid=nwnsa025hvd8&tv=20…z.com%2F&callback=PIN_1477649649654.f.callback[0]", completed: true…} | |
https://d.agkn.com/pixel/5500/?atr=000&fl=&age=&gender=&st=&sk=&pd=&cbr=&mi…aa74fbde8e&_kua_seg=000&_kua_zip=&_kua_age=&_kua_gender=&_k_adadvisor_key= Resource {requests: Array[3], method: "GET", type: "image", url: "https://d.agkn.com/pixel/5500/?atr=000&fl=&age=&ge…kua_zip=&_kua_age=&_kua_gender=&_k_adadvisor_key=", completed: false…} | |
https://cdn.spotxcdn.com/media/thumbs/pixel/pixel.gif Resource {requests: Array[3], method: "GET", type: "image", url: "https://cdn.spotxcdn.com/media/thumbs/pixel/pixel.gif", completed: true…} | |
https://sync.adaptv.advertising.com/sync?type=gif&key=invitemedianewyork2&uid=CAESEAfSgC8meW6rna_TEnqZr2g&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://sync.adaptv.advertising.com/sync?type=gif&…rk2&uid=CAESEAfSgC8meW6rna_TEnqZr2g&google_cver=1", completed: true…} | |
https://idsync.rlcdn.com/379708.gif?partner_uid=K3ElxNJb&redirect=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://idsync.rlcdn.com/379708.gif?partner_uid=K3ElxNJb&redirect=1", completed: true…} | |
http://wfpscripts.webspectator.com/ws-ad.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://wfpscripts.webspectator.com/ws-ad.js", completed: true…} | |
http://beacon.krxd.net/data.gif?_kuid=K3ElxNJb&_kdpid=2dd640a6-6ebd-4d4f-af30-af8baa441a0d&dlxid=&dlxdata= Resource {requests: Array[3], method: "GET", type: "image", url: "http://beacon.krxd.net/data.gif?_kuid=K3ElxNJb&_kd…640a6-6ebd-4d4f-af30-af8baa441a0d&dlxid=&dlxdata=", completed: true…} | |
http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-efee-4661-8e5d-c8d1d92a715…13aXM9MXxtd3B0PW9wZW5ydGJfanNvbnxjaT0xfHVyPWNJYVJDSXFWS2F8bGQ9cGVyZ28uY29t Resource {requests: Array[3], method: "GET", type: "image", url: "http://pubgears-d.openx.net/w/1.0/ri?bi=2e1a19ab-e…fanNvbnxjaT0xfHVyPWNJYVJDSXFWS2F8bGQ9cGVyZ28uY29t", completed: true…} | |
http://static.cliipa.com/basev/0.0.181/sbt.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://static.cliipa.com/basev/0.0.181/sbt.js", completed: true…} | |
http://loadm.exelator.com/load?_kdpid=e4942ff0-4070-4896-a7ef-e6a5a30ce9f9&buid=K3ElxNJb&p=204&g=270&j=0&xl8blockcheck=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://loadm.exelator.com/load?_kdpid=e4942ff0-407…9f9&buid=K3ElxNJb&p=204&g=270&j=0&xl8blockcheck=1", completed: false…} | |
https://cm.g.doubleclick.net/pixel?google_nid=casale_media2_dsp_secure&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=casa…_media2_dsp_secure&google_cm&google_sc&google_dbm", completed: false…} | |
https://cm.g.doubleclick.net/pixel?google_nid=openx&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=openx&google_cm&google_sc&google_dbm", completed: false…} | |
http://beacon.krxd.net/data.gif?_kdpid=5eddb9ca-88c9-4c34-a9ae-2680df2a7de7…NA&hk=NA&hl=NA&hm=NA&hn=NA&ho=NA&hp=NA&hq=NA&hr=NA&hs=NA&ht=NA&hu=NA&hv=NA Resource {requests: Array[3], method: "GET", type: "image", url: "http://beacon.krxd.net/data.gif?_kdpid=5eddb9ca-88…A&ho=NA&hp=NA&hq=NA&hr=NA&hs=NA&ht=NA&hu=NA&hv=NA", completed: true…} | |
https://cm.g.doubleclick.net/pixel?google_cm&google_nid=krux_digital&google_hm=SzNFbHhOSmI%3D Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_cm&google_nid=krux_digital&google_hm=SzNFbHhOSmI%3D", completed: false…} | |
http://cdn.turn.com/server/ddc.htm?uid=8062967306755220449&mktid=771&mpid=&fpid=9&rnd=8729705362145462583&nu=y&sp=n&ctid=1&cyid=2&app=n&et=n&synct=20 Resource {requests: Array[3], method: "GET", type: "subFrame", url: "http://cdn.turn.com/server/ddc.htm?uid=80629673067…62583&nu=y&sp=n&ctid=1&cyid=2&app=n&et=n&synct=20", completed: true…} | |
https://cm.g.doubleclick.net/pixel?google_nid=contextweb&google_cm&google_sc&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=contextweb&google_cm&google_sc&google_dbm", completed: false…} | |
https://cm.g.doubleclick.net/pixel?google_nid=improvedigital&google_cm&google_sc&dsp_callback=1&google_dbm Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=impr…tal&google_cm&google_sc&dsp_callback=1&google_dbm", completed: false…} | |
https://s0.2mdn.net/879366/express_html_inpage_rendering_lib_200_155.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://s0.2mdn.net/879366/express_html_inpage_rendering_lib_200_155.js", completed: true…} | |
http://mathid.mathtag.com/device/id.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://mathid.mathtag.com/device/id.js", completed: true…} | |
http://beacon.krxd.net/pixel.gif?source=smarttag&fired=user_data_timeout&co….krxd.net%2Foptout_check%2CNaN%2C%2F%2Fcdn.krxd.net%2Fuserdata%2Fget%2CNaN Resource {requests: Array[3], method: "GET", type: "image", url: "http://beacon.krxd.net/pixel.gif?source=smarttag&f…2CNaN%2C%2F%2Fcdn.krxd.net%2Fuserdata%2Fget%2CNaN", completed: true…} | |
http://c.betrad.com/a/n/322/4311.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://c.betrad.com/a/n/322/4311.js", completed: true…} | |
http://pagead2.googlesyndication.com/pagead/gen_204?id=sodar&v=5&t=2&bgai=B…BHw6yEya2r3I_ut5MQhy4F8xzCO-LmII2JlOgEpHRCQH6tf6jfGcm0G23aOZYGCpf3m3yz5BKG Resource {requests: Array[3], method: "GET", type: "image", url: "http://pagead2.googlesyndication.com/pagead/gen_20…CO-LmII2JlOgEpHRCQH6tf6jfGcm0G23aOZYGCpf3m3yz5BKG", completed: true…} | |
http://pagead2.googlesyndication.com/pagead/gen_204?id=sodar&v=5&t=2&bgai=B…y4g9Tp2oH5veU_QPNL5kKDijO3OqkciIhFH-JT24i3VkkEHASHLx23WBVuNxsm5UWrkJyqHQcI Resource {requests: Array[3], method: "GET", type: "image", url: "http://pagead2.googlesyndication.com/pagead/gen_20…3OqkciIhFH-JT24i3VkkEHASHLx23WBVuNxsm5UWrkJyqHQcI", completed: true…} | |
http://pagead2.googlesyndication.com/pagead/gen_204?id=sodar&v=5&t=2&bgai=B…o-26X0bc_6OdQJuqEKZpKl-Ehpq3Z28zS3l6Jz62bE5KjBXNtqQ4OSw190jqVUGJPfGlaWKmIk Resource {requests: Array[3], method: "GET", type: "image", url: "http://pagead2.googlesyndication.com/pagead/gen_20…pq3Z28zS3l6Jz62bE5KjBXNtqQ4OSw190jqVUGJPfGlaWKmIk", completed: true…} | |
http://static.cliipa.com/basev/0.0.181/sbt.css Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "http://static.cliipa.com/basev/0.0.181/sbt.css", completed: true…} | |
http://load.s3.amazonaws.com/pixel.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://load.s3.amazonaws.com/pixel.gif", completed: true…} | |
https://s0.2mdn.net/879366/image_gallery_html_inpage_rendering_lib_200_156.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://s0.2mdn.net/879366/image_gallery_html_inpage_rendering_lib_200_156.js", completed: true…} | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=2881…&is=0&cw=300&ch=250&ts=1477649652258&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652258&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=2881…&is=0&cw=300&ch=250&ts=1477649652268&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652268&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=2881…&is=0&cw=300&ch=250&ts=1477649652278&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652278&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=2881…&is=0&cw=300&ch=250&ts=1477649652288&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652288&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=8910…&is=0&cw=300&ch=250&ts=1477649652440&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652440&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
https://dsum-sec.casalemedia.com/rum?cm_dsp_id=45&external_user_id=CAESEENSyPIVfgjrrUnKhFIAfkU&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://dsum-sec.casalemedia.com/rum?cm_dsp_id=45&…user_id=CAESEENSyPIVfgjrrUnKhFIAfkU&google_cver=1", completed: true…} | |
http://player.cliipa.com/report/ Resource {requests: Array[15], method: "POST", type: "xhr", url: "http://player.cliipa.com/report/", completed: true…} | |
chrome-devtools://devtools/bundled/elements_module.js Resource {requests: Array[1], method: "GET", type: "xhr", url: "chrome-devtools://devtools/bundled/elements_module.js", completed: true…} | |
blob:http://www.tmz.com/7519cb2f-ca51-4ca8-95f2-8ca30e94d791 Resource {requests: Array[1], method: "GET", type: "other", url: "blob:http://www.tmz.com/7519cb2f-ca51-4ca8-95f2-8ca30e94d791", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5472318;type=invmedia;cat=gkrxdlxu;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=547231…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5535610;type=invmedia;cat=ssejsizf;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=553561…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5433664;type=invmedia;cat=hvcueeoq;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=543366…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5340960;type=invmedia;cat=bjibbxdi;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=534096…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5272405;type=invmedia;cat=y3kojwup;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=527240…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5501302;type=invmedia;cat=eutoz4xj;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=550130…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5808327;type=invmedia;cat=pklbvz5o;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=580832…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=6037718;type=invmedia;cat=txpjneoe;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603771…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=6038323;type=invmedia;cat=gz08h7dw;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603832…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=6085743;type=invmedia;cat=a654tcva;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=608574…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5472318;type=invmedia;cat=j4cvfhrd;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=547231…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5535610;type=invmedia;cat=pltpie9n;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=553561…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5433664;type=invmedia;cat=fyrf4qst;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=543366…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5340960;type=invmedia;cat=u6trdsnb;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=534096…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5272405;type=invmedia;cat=qs9hyptz;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=527240…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5501302;type=invmedia;cat=aaodffat;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=550130…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5808327;type=invmedia;cat=olvwc4fr;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=580832…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5808925;type=invmedia;cat=kshqsops;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=580892…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=5942269;type=invmedia;cat=grzxmvr9;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=594226…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=6037718;type=invmedia;cat=vofhzle1;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603771…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=6038323;type=invmedia;cat=f4pmawar;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603832…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
https://ad.doubleclick.net/ddm/activity/src=6085743;type=invmedia;cat=ffsllbbo;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1? Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=608574…dc_rdid=;tag_for_child_directed_treatment=;ord=1?", completed: false…} | |
blob:http://www.tmz.com/f481086b-c8ce-471f-8456-71746ab809bd Resource {requests: Array[1], method: "GET", type: "other", url: "blob:http://www.tmz.com/f481086b-c8ce-471f-8456-71746ab809bd", completed: true…} | |
blob:http://www.tmz.com/b6c71e78-9431-4cee-a18c-cb51a766c910 Resource {requests: Array[1], method: "GET", type: "other", url: "blob:http://www.tmz.com/b6c71e78-9431-4cee-a18c-cb51a766c910", completed: true…} | |
blob:http://www.tmz.com/82ca1e7b-a0b5-4af8-970f-996a825ef0b6 Resource {requests: Array[1], method: "GET", type: "other", url: "blob:http://www.tmz.com/82ca1e7b-a0b5-4af8-970f-996a825ef0b6", completed: true…} | |
https://us-u.openx.net/w/1.0/sd?id=537072991&val=CAESEOkq2Dlc8Fq6OwPzAvThUtE&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://us-u.openx.net/w/1.0/sd?id=537072991&val=CAESEOkq2Dlc8Fq6OwPzAvThUtE&google_cver=1", completed: true…} | |
https://beacon.krxd.net/usermatch.gif?google_gid=&google_gid=CAESEDwWgoWS43e4tnJx1nkbWt0&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://beacon.krxd.net/usermatch.gif?google_gid=&…gle_gid=CAESEDwWgoWS43e4tnJx1nkbWt0&google_cver=1", completed: true…} | |
https://ad.360yield.com/match?publisher_dsp_id=55&dsp_callback=1&external_user_id=CAESEPiDWXLR5Q-QgXdtVO4nUuQ&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.360yield.com/match?publisher_dsp_id=55&…user_id=CAESEPiDWXLR5Q-QgXdtVO4nUuQ&google_cver=1", completed: false…} | |
https://bh.contextweb.com/bh/rtset?do=add&pid=547259&ev=CAESEEeFi9Vivnfrm5BEp1VGlzc&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://bh.contextweb.com/bh/rtset?do=add&pid=547259&ev=CAESEEeFi9Vivnfrm5BEp1VGlzc&google_cver=1", completed: true…} | |
https://beacon.krxd.net/data.gif?_kdpid=2111c0af-fc3a-446f-ab07-63aa74fbde8e&_kua_seg=000&_kua_zip=&_kua_age=&_kua_gender=&_k_adadvisor_key= Resource {requests: Array[3], method: "GET", type: "image", url: "https://beacon.krxd.net/data.gif?_kdpid=2111c0af-f…kua_zip=&_kua_age=&_kua_gender=&_k_adadvisor_key=", completed: true…} | |
http://static.cliipa.com/videosv/5553803d47e5b70300ea5455/56e7fcd40f6b4717001e88e6/56e7fcd40f6b4717001e88e6.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "http://static.cliipa.com/videosv/5553803d47e5b7030…fcd40f6b4717001e88e6/56e7fcd40f6b4717001e88e6.jpg", completed: true…} | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=8910…&is=0&cw=300&ch=250&ts=1477649652458&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652458&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
https://adx.g.doubleclick.net/pagead/adview?ai=COL-68CQTWLelLM3EBcOJq8AMtJ_…EfdAYQCLcx4AQBoAYCgAezi8deqAemvhvYBwHSCAUIgGEQAdgTAw&sigh=iJ3cjBtN_78&vt=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://adx.g.doubleclick.net/pagead/adview?ai=COL…eqAemvhvYBwHSCAUIgGEQAdgTAw&sigh=iJ3cjBtN_78&vt=1", completed: true…} | |
blob:http://www.tmz.com/04c23636-ec02-49af-bd7d-0beaedda1f3b Resource {requests: Array[1], method: "GET", type: "other", url: "blob:http://www.tmz.com/04c23636-ec02-49af-bd7d-0beaedda1f3b", completed: true…} | |
http://pagead2.googlesyndication.com/activeview?avi=BTDvI8CQTWLelLM3EBcOJq8…s=0&bac=0&fp=correlator%3D3528639499037635%26eid%3D108809080%252C108809133NaNu%3D%252F55153744%252Ftmz%252Fhome%oid%3D3%26url%3Dhttp%253A%252F%252Fwww.tmz.com%252F&afp=%output%3Djson_html%impl%3Dfif%dt%3D1477649648556%26adx%3D29%26ady%3D29%ifi%3D5%flash%3D0&la=1&r=u&bs=785,585&bos=800,600&ps=1098,30403&ss=1920,1080&tt=4897&pt=-1&deb=1-0-9-6-7--1&tvt=2753&uc=2&tgt=IMG&cl=1 | |
http://webservices.webspectator.com/impression?appid=39&auid=225786&ci=2881…&is=0&cw=300&ch=250&ts=1477649652473&r=0&s=2437&tpi=1&sid=5FEE27816454369C Resource {requests: Array[3], method: "GET", type: "image", url: "http://webservices.webspectator.com/impression?app…77649652473&r=0&s=2437&tpi=1&sid=5FEE27816454369C", completed: true…} | |
http://c.betrad.com/icon/box_19_top-right.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://c.betrad.com/icon/box_19_top-right.png", completed: true…} | |
http://c.betrad.com/icon/ci.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://c.betrad.com/icon/ci.png", completed: true…} | |
http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/300/250/242/322/0/pixel.gif?v=d803588_1&ttid=2&d=www.tmz.com&r=0.8508330203927519 Resource {requests: Array[3], method: "GET", type: "image", url: "http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/3…03588_1&ttid=2&d=www.tmz.com&r=0.8508330203927519", completed: true…} | |
http://image2.pubmatic.com/AdServer/Pug?vcode=bz0yJnR5cGU9MSZqcz0xJmNvZGU9O…gwMCZkcF9pZD0yMg==&piggybackCookie=pcv:1|uid:8062967306755220449&r=http%3aNaN%fimage4.pubmatic.com%fAdServer%fSPug%fpartnerID%d22 | |
https://s0.2mdn.net/3856256/1475694619348/index.html Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://s0.2mdn.net/3856256/1475694619348/index.html", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5472318;dc_pre=CP2qu_Wh_c8CFUt4…edia;cat=gkrxdlxu;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=547231…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5535610;dc_pre=CJ3eu_Wh_c8CFYYH…edia;cat=ssejsizf;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=553561…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5433664;dc_pre=COXgu_Wh_c8CFcx9…edia;cat=hvcueeoq;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=543366…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5272405;dc_pre=CN3ku_Wh_c8CFUx7…edia;cat=y3kojwup;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=527240…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5340960;dc_pre=CJvku_Wh_c8CFZNC…edia;cat=bjibbxdi;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=534096…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5501302;dc_pre=CKzmu_Wh_c8CFYd3…edia;cat=eutoz4xj;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=550130…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=6037718;dc_pre=CK6VvPWh_c8CFcpR…edia;cat=txpjneoe;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603771…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=6038323;dc_pre=CMKWvPWh_c8CFQJ4…edia;cat=gz08h7dw;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603832…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=6085743;dc_pre=CNCYvPWh_c8CFQ1s…edia;cat=a654tcva;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=608574…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5808327;dc_pre=CJWTvPWh_c8CFUJl…edia;cat=pklbvz5o;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=580832…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
http://ib.adnxs.com/getuid?http://r.turn.com/r/bd?ddc=1&pid=54&cver=1&uid=$UID Resource {requests: Array[3], method: "GET", type: "image", url: "http://ib.adnxs.com/getuid?http://r.turn.com/r/bd?ddc=1&pid=54&cver=1&uid=$UID", completed: false…} | |
http://ib.adnxs.com/setuid?entity=43&code=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ib.adnxs.com/setuid?entity=43&code=8062967306755220449", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5472318;dc_pre=CIjAvvWh_c8CFRNl…edia;cat=j4cvfhrd;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=547231…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649653911 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649653911", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5433664;dc_pre=CLrFvvWh_c8CFRBn…edia;cat=fyrf4qst;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=543366…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5535610;dc_pre=CM_CvvWh_c8CFU5s…edia;cat=pltpie9n;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=553561…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5340960;dc_pre=CLjGvvWh_c8CFZNn…edia;cat=u6trdsnb;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=534096…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5272405;dc_pre=CK7IvvWh_c8CFdB1…edia;cat=qs9hyptz;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=527240…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5501302;dc_pre=CKbKvvWh_c8CFQZq…edia;cat=aaodffat;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=550130…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5942269;dc_pre=CMnOvvWh_c8CFdN9…edia;cat=grzxmvr9;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=594226…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5808327;dc_pre=COjMvvWh_c8CFYh3…edia;cat=olvwc4fr;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=580832…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=5808925;dc_pre=CP_NvvWh_c8CFcdv…edia;cat=kshqsops;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=580892…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=6038323;dc_pre=COvSvvWh_c8CFVV7…edia;cat=f4pmawar;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603832…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=6085743;dc_pre=CM_VvvWh_c8CFQt3…edia;cat=ffsllbbo;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=608574…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
https://ad.doubleclick.net/ddm/activity/src=6037718;dc_pre=CJHSvvWh_c8CFVZL…edia;cat=vofhzle1;dc_lat=;dc_rdid=;tag_for_child_directed_treatment=;ord=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.doubleclick.net/ddm/activity/src=603771…;dc_rdid=;tag_for_child_directed_treatment=;ord=1", completed: true…} | |
http://cm.g.doubleclick.net/pixel?google_nid=turn1&google_cm&google_sc&google_hm=ODA2Mjk2NzMwNjc1NTIyMDQ0OQ== Resource {requests: Array[3], method: "GET", type: "image", url: "http://cm.g.doubleclick.net/pixel?google_nid=turn1…&google_sc&google_hm=ODA2Mjk2NzMwNjc1NTIyMDQ0OQ==", completed: true…} | |
http://ads.yahoo.com/pixel?id=2155814&t=2&piggyback=http%3A%2F%2Fads.yahoo.…1%3Fesig%3D1~862d802dd86fb59368388ad078a7f298ddbbd0b7%26nwid%3D10000424978Resourceigv%3D1 | |
http://pixel.rubiconproject.com/tap.php?v=4212&nid=1185&put=8062967306755220449&expires=60 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.rubiconproject.com/tap.php?v=4212&nid=1185&put=8062967306755220449&expires=60", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649653949 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649653949", completed: true…}completed: truegetHeaders: ObjectAccept: "*/*"get Accept: ()set Accept: (value)Accept-Encoding: "gzip, deflate"get Accept-Encoding: ()set Accept-Encoding: (value)Accept-Language: "en-US"get Accept-Language: ()set Accept-Language: (value)Content-Type: "application/x-www-form-urlencoded"get Content-Type: ()set Content-Type: (value)Origin: "http://www.tmz.com"get Origin: ()set Origin: (value)Referer: "http://www.tmz.com/"get Referer: ()set Referer: (value)User-Agent: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.113 Electron/1.4.4 Safari/537.36"get User-Agent: ()set User-Agent: (value)X-DevTools-Emulate-Network-Conditions-Client-Id: (...)get X-DevTools-Emulate-Network-Conditions-Client-Id: ()set X-DevTools-Emulate-Network-Conditions-Client-Id: (value)__proto__: Objectmethod: "POST"rdata: nullrequests: Array[3]type: "xhr"url: "http://bis2.cliipa.com/aggregate?_=1477649653949"__proto__: Object | |
http://bis2.cliipa.com/aggregate?_=1477649653966 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649653966", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649653968 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649653968", completed: true…} | |
https://s0.2mdn.net/5412605/Pergo_Brand2016-Quality-GreatIndoors_300x250.jpg Resource {requests: Array[3], method: "GET", type: "image", url: "https://s0.2mdn.net/5412605/Pergo_Brand2016-Quality-GreatIndoors_300x250.jpg", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649654009 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649654009", completed: true…} | |
http://us-u.openx.net/w/1.0/pd?plm=6&ph=ae4d7e39186b2c60549a38dee59c19f17efcd706 Resource {requests: Array[15], method: "GET", type: "subFrame", url: "http://us-u.openx.net/w/1.0/pd?plm=6&ph=ae4d7e39186b2c60549a38dee59c19f17efcd706", completed: true…} | |
http://us-u.openx.net/w/1.0/sd?id=537073061&val=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537073061&val=8062967306755220449", completed: true…} | |
http://ce.lijit.com/merge?pid=1&3pid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ce.lijit.com/merge?pid=1&3pid=8062967306755220449", completed: false…} | |
https://ad.360yield.com/ul_cb/match?publisher_dsp_id=55&dsp_callback=1&external_user_id=CAESEPiDWXLR5Q-QgXdtVO4nUuQ&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ad.360yield.com/ul_cb/match?publisher_dsp_…user_id=CAESEPiDWXLR5Q-QgXdtVO4nUuQ&google_cver=1", completed: true…} | |
http://sync.search.spotxchange.com/partner?adv_id=6481&img=1&uid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.search.spotxchange.com/partner?adv_id=6481&img=1&uid=8062967306755220449", completed: false…} | |
http://sync.adap.tv/sync?type=gif&key=turn&uid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.adap.tv/sync?type=gif&key=turn&uid=8062967306755220449", completed: false…} | |
http://image4.pubmatic.com/AdServer/SPug?partnerID=22 Resource {requests: Array[3], method: "GET", type: "image", url: "http://image4.pubmatic.com/AdServer/SPug?partnerID=22", completed: true…} | |
http://dsum.casalemedia.com/rum?cm_dsp_id=4&external_user_id=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://dsum.casalemedia.com/rum?cm_dsp_id=4&external_user_id=8062967306755220449", completed: true…} | |
http://rtb-csync.smartadserver.com/redir/?partnerid=32&partneruserid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://rtb-csync.smartadserver.com/redir/?partnerid=32&partneruserid=8062967306755220449", completed: true…} | |
http://ads.stickyadstv.com/user-registering?dataProviderId=147&userId=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ads.stickyadstv.com/user-registering?dataProviderId=147&userId=8062967306755220449", completed: true…} | |
http://ib.adnxs.com/bounce?%2Fgetuid%3Fhttp%3A%2F%2Fr.turn.com%2Fr%2Fbd%3Fddc%3D1%26pid%3D54ver%3D1%26uid%3D%24UID | |
http://www.facebook.com/fr/u.php?p=328546547221502&m=8062967306755220449&t=2592000 Resource {requests: Array[1], method: "GET", type: "image", url: "http://www.facebook.com/fr/u.php?p=328546547221502&m=8062967306755220449&t=2592000", completed: false…} | |
https://www.facebook.com/fr/u.php?p=328546547221502&m=8062967306755220449&t=2592000 Resource {requests: Array[3], method: "GET", type: "image", url: "https://www.facebook.com/fr/u.php?p=328546547221502&m=8062967306755220449&t=2592000", completed: true…} | |
http://ums.adtechus.com/mapuser?providerid=1006;userid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ums.adtechus.com/mapuser?providerid=1006;userid=8062967306755220449", completed: true…} | |
https://fonts.googleapis.com/css?family=Roboto:400,700 Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "https://fonts.googleapis.com/css?family=Roboto:400,700", completed: true…} | |
https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700 Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "https://fonts.googleapis.com/css?family=Roboto+Condensed:400,700", completed: true…} | |
https://fonts.googleapis.com/css?family=Nunito:400,700 Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "https://fonts.googleapis.com/css?family=Nunito:400,700", completed: true…} | |
https://fonts.googleapis.com/css?family=Domine:400,700 Resource {requests: Array[3], method: "GET", type: "stylesheet", url: "https://fonts.googleapis.com/css?family=Domine:400,700", completed: true…} | |
https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/plugins/CSSPlugin.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/plugins/CSSPlugin.min.js", completed: true…} | |
https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/easing/EasePack.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/easing/EasePack.min.js", completed: true…} | |
https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/TweenLite.min.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://cdnjs.cloudflare.com/ajax/libs/gsap/1.17.0/TweenLite.min.js", completed: true…} | |
http://cdn.spotxcdn.com/media/thumbs/pixel/pixel.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://cdn.spotxcdn.com/media/thumbs/pixel/pixel.gif", completed: true…} | |
http://sync.adaptv.advertising.com/sync?type=gif&key=turn&uid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.adaptv.advertising.com/sync?type=gif&key=turn&uid=8062967306755220449", completed: true…} | |
http://ce.lijit.com/merge?pid=1&3pid=8062967306755220449&dnr=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://ce.lijit.com/merge?pid=1&3pid=8062967306755220449&dnr=1", completed: true…} | |
http://geo-um.btrll.com/v1/map_pixel/partner/40.png Resource {requests: Array[3], method: "GET", type: "image", url: "http://geo-um.btrll.com/v1/map_pixel/partner/40.png", completed: false…} | |
http://e.nexac.com/e/turn_sync.xgi?na_exid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://e.nexac.com/e/turn_sync.xgi?na_exid=8062967306755220449", completed: false…} | |
http://sync.adap.tv/turn_user_sync Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.adap.tv/turn_user_sync", completed: false…} | |
http://sync.teads.tv/um?eid=11&uid=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.teads.tv/um?eid=11&uid=8062967306755220449", completed: true…} | |
http://r.turn.com/r/bd?ddc=1&pid=54&cver=1&uid=2620786460815324038 Resource {requests: Array[3], method: "GET", type: "image", url: "http://r.turn.com/r/bd?ddc=1&pid=54&cver=1&uid=2620786460815324038", completed: true…} | |
http://t4.liverail.com/?metric=csync&p=3034&s=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://t4.liverail.com/?metric=csync&p=3034&s=8062967306755220449", completed: false…} | |
http://dt.scanscout.com/ssframework/cookieSync.htm?UITM=8062967306755220449 Resource {requests: Array[3], method: "GET", type: "image", url: "http://dt.scanscout.com/ssframework/cookieSync.htm?UITM=8062967306755220449", completed: true…} | |
https://cdn.doubleverify.com/dvtp_src.js?ctx=1590491&cmp=10442827&sid=13850…v=doubleclick&crt=75092592&crtname=&chnl=&unit=&pid=&uid=&dvtagver=6.1.src Resource {requests: Array[3], method: "GET", type: "script", url: "https://cdn.doubleverify.com/dvtp_src.js?ctx=15904…2&crtname=&chnl=&unit=&pid=&uid=&dvtagver=6.1.src", completed: true…} | |
https://googleads4.g.doubleclick.net/pcs/view?xai=AKAOjstvc3HgTiZDipcca6HDe…u9LBjFNpZy5BxZNDK7SZA3rYAKA_Pw&sig=Cg0ArKJSzPlchGkNQD8UEAE&urlfix=1&adurl= Resource {requests: Array[3], method: "GET", type: "image", url: "https://googleads4.g.doubleclick.net/pcs/view?xai=…KA_Pw&sig=Cg0ArKJSzPlchGkNQD8UEAE&urlfix=1&adurl=", completed: true…} | |
https://fonts.gstatic.com/s/nunito/v7/cSNs3NwpEgPVRQzvkh3NeQ.woff2 Resource {requests: Array[3], method: "GET", type: "other", url: "https://fonts.gstatic.com/s/nunito/v7/cSNs3NwpEgPVRQzvkh3NeQ.woff2", completed: true…} | |
https://googleads4.g.doubleclick.net/pcs/view?xai=AKAOjss8YXIB-t1OOA0AFrXgj…Tyk5mYCwypm3irjvHcitFQ1K0Xbg0L&sig=Cg0ArKJSzKgZzx9h2eSZEAE&urlfix=1&adurl= Resource {requests: Array[3], method: "GET", type: "image", url: "https://googleads4.g.doubleclick.net/pcs/view?xai=…Xbg0L&sig=Cg0ArKJSzKgZzx9h2eSZEAE&urlfix=1&adurl=", completed: true…} | |
http://e.nexac.com/e/xrefid.xgi?na_exid=8062967306755220449&na_pid=1966&ru= Resource {requests: Array[3], method: "GET", type: "image", url: "http://e.nexac.com/e/xrefid.xgi?na_exid=8062967306755220449&na_pid=1966&ru=", completed: true…} | |
http://sync.adaptv.advertising.com/turn_user_sync? Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.adaptv.advertising.com/turn_user_sync?", completed: false…} | |
http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/300/250/242/322/0/pixel.gif?v=d803588_1&ttid=2&d=www.tmz.com&r=0.2523580266808769 Resource {requests: Array[3], method: "GET", type: "image", url: "http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/3…03588_1&ttid=2&d=www.tmz.com&r=0.2523580266808769", completed: true…} | |
http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/300/250/242/322/0/pixel.gif?v=d803588_1&ttid=2&d=www.tmz.com&r=0.6914724004072492 Resource {requests: Array[3], method: "GET", type: "image", url: "http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/3…03588_1&ttid=2&d=www.tmz.com&r=0.6914724004072492", completed: true…} | |
http://geo-um.btrll.com/v1/map_pixel/partner/40.png?set_aps=1&BR_APS=3WBMk93jKNAQBDonolA& Resource {requests: Array[3], method: "GET", type: "image", url: "http://geo-um.btrll.com/v1/map_pixel/partner/40.png?set_aps=1&BR_APS=3WBMk93jKNAQBDonolA&", completed: false…} | |
http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/300/250/242/322/0/pixel.gif?v=d803588_1&ttid=2&d=www.tmz.com&r=0.9502898394499941 Resource {requests: Array[3], method: "GET", type: "image", url: "http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/3…03588_1&ttid=2&d=www.tmz.com&r=0.9502898394499941", completed: true…} | |
http://scontent.lrcdn.net/outbound-cdn-static/lr.gif Resource {requests: Array[3], method: "GET", type: "image", url: "http://scontent.lrcdn.net/outbound-cdn-static/lr.gif", completed: true…} | |
http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/300/250/242/322/0/pixel.gif?v=d803588_1&ttid=2&d=www.tmz.com&r=0.45223104534106295 Resource {requests: Array[3], method: "GET", type: "image", url: "http://l.betrad.com/ct/0_0_0_4311/us/0/1/0/0/0/0/3…3588_1&ttid=2&d=www.tmz.com&r=0.45223104534106295", completed: true…} | |
http://cmap.ox.ace.advertising.com/cfcm.ashx?providerId=1009 Resource {requests: Array[3], method: "GET", type: "image", url: "http://cmap.ox.ace.advertising.com/cfcm.ashx?providerId=1009", completed: true…} | |
http://r.turn.com/r/du/id/L21rdC8xL21jaHBpZC8x Resource {requests: Array[3], method: "GET", type: "image", url: "http://r.turn.com/r/du/id/L21rdC8xL21jaHBpZC8x", completed: true…} | |
http://r.turn.com/r/bd?ddc=1&pid=63&uid=3WBMk93jKNAQBDonolA&n=1477649655& Resource {requests: Array[3], method: "GET", type: "image", url: "http://r.turn.com/r/bd?ddc=1&pid=63&uid=3WBMk93jKNAQBDonolA&n=1477649655&", completed: true…} | |
http://d.turn.com/r/du/id/L2NzaWQvMS9tcGlkLzMzOTA0ODEz/mpuid/NAX8865547819000817129 Resource {requests: Array[3], method: "GET", type: "image", url: "http://d.turn.com/r/du/id/L2NzaWQvMS9tcGlkLzMzOTA0ODEz/mpuid/NAX8865547819000817129", completed: true…} | |
http://sync.mathtag.com/sync/img?mt_exid=5&redir=http%3A%2F%2Fus-u.openx.net%2Fw%2F1.0%2Fsd%3Fid%3D536872786%26val%3D%5BMM_UUID%5D Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.mathtag.com/sync/img?mt_exid=5&redir=h…2F1.0%2Fsd%3Fid%3D536872786%26val%3D%5BMM_UUID%5D", completed: false…} | |
http://ib.adnxs.com/getuid?http://us-u.openx.net/w/1.0/sd?id=537072399&val=$UID Resource {requests: Array[3], method: "GET", type: "image", url: "http://ib.adnxs.com/getuid?http://us-u.openx.net/w/1.0/sd?id=537072399&val=$UID", completed: false…} | |
http://match.adsrvr.org/track/cmf/openx?oxid=bf754269-a2cb-72d3-1061-ca1ddd0af411 Resource {requests: Array[3], method: "GET", type: "image", url: "http://match.adsrvr.org/track/cmf/openx?oxid=bf754269-a2cb-72d3-1061-ca1ddd0af411", completed: false…} | |
http://cm.g.doubleclick.net/pixel?google_nid=openx&google_cm&google_sc Resource {requests: Array[3], method: "GET", type: "image", url: "http://cm.g.doubleclick.net/pixel?google_nid=openx&google_cm&google_sc", completed: false…} | |
http://pagead2.googlesyndication.com/pagead/gen_204?id=sodar&v=5&t=2&bgai=B…Z-yoX3zZOnhG8_73EpcrMPKpbqlCdcV5r_QYZth5rhagaow5ESHZ_gLwWslH39BergZstbLTpM Resource {requests: Array[3], method: "GET", type: "image", url: "http://pagead2.googlesyndication.com/pagead/gen_20…qlCdcV5r_QYZth5rhagaow5ESHZ_gLwWslH39BergZstbLTpM", completed: true…} | |
http://pagead2.googlesyndication.com/pagead/gen_204?id=sodar&v=5&t=2&bgai=B…y1zKM70TNAcwGR5wR_p0WekFqAULydIFtEMQjqcScqaKNMmLBqS2WsClIJ61s5svRMuinnlFoU Resource {requests: Array[3], method: "GET", type: "image", url: "http://pagead2.googlesyndication.com/pagead/gen_20…AULydIFtEMQjqcScqaKNMmLBqS2WsClIJ61s5svRMuinnlFoU", completed: true…} | |
http://tags.mathtag.com/ck-confirm?bid_id=8740333270469044720&node_id=997&mathid_data=%7BNaNv1%22%3A%22TW96aWxsYS81LjAgKFgxMTsgTGludXggeDg2XzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNTMuMC4yNzg1LjExMyBFbGVjdHJvbi8xLjQuNCBTYWZhcmkvNTM3LjM2%22%2C%dv2%22%3A%22MTBjYTQ3ODQyZDVjNGYyODU2OTJiNGE5NzgyMTUxYjY%3D%22%2C%dv3%22%3A%22%22%2C%dv4%22%3A%22MTkyMHwxMDgwfDE5MjB8MTA1NnwyNHx8%22%2C%dv5%22%3A%22QW1lcmljYS9OZXdfWW9yaw%3D%3D%22%2C%dv6%22%3A%22%22%2C%dv7%22%3A%22MA%3D%3D%22%2C%dv8%22%3A%dHJ1ZXx0cnVlfHRydWU%3D%22%2C%dv9%22%3A%fGVuLVVTfA%3D%3D%22%2C%dv10%22%3A%22TW96aWxsYXxOZXRzY2FwZXxMaW51eCB4ODZfNjR8%22%7D | |
http://x.bidswitch.net/sync?ssp=openx Resource {requests: Array[3], method: "GET", type: "image", url: "http://x.bidswitch.net/sync?ssp=openx", completed: false…} | |
http://pixel-a.sitescout.com/dmp/pixelSync?nid=4 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel-a.sitescout.com/dmp/pixelSync?nid=4", completed: false…} | |
https://pagead2.googlesyndication.com/pagead/js/lidar.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://pagead2.googlesyndication.com/pagead/js/lidar.js", completed: true…} | |
https://s0.2mdn.net/ads/richmedia/resources/arrow_left.png Resource {requests: Array[3], method: "GET", type: "image", url: "https://s0.2mdn.net/ads/richmedia/resources/arrow_left.png", completed: true…} | |
https://s0.2mdn.net/ads/richmedia/resources/arrow_right.png Resource {requests: Array[3], method: "GET", type: "image", url: "https://s0.2mdn.net/ads/richmedia/resources/arrow_right.png", completed: true…} | |
http://us-u.openx.net/w/1.0/sd?id=537072399&val=2620786460815324038 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072399&val=2620786460815324038", completed: true…} | |
http://pr-bh.ybp.yahoo.com/sync/openx/2bb2242d-3267-e09a-21b6-dce8225d3958 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pr-bh.ybp.yahoo.com/sync/openx/2bb2242d-3267-e09a-21b6-dce8225d3958", completed: true…} | |
https://rtb.openx.net/sync/dds Resource {requests: Array[3], method: "GET", type: "image", url: "https://rtb.openx.net/sync/dds", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537072991&val=CAESEOkq2Dlc8Fq6OwPzAvThUtE&google_cver=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072991&val=CAESEOkq2Dlc8Fq6OwPzAvThUtE&google_cver=1", completed: true…} | |
http://rtb.openx.net/sync/yahoo Resource {requests: Array[3], method: "GET", type: "image", url: "http://rtb.openx.net/sync/yahoo", completed: false…} | |
http://sync.mathtag.com/sync/img?mt_exid=5&redir=http%3A%2F%2Fus-u.openx.net%2Fw%2F1.0%2Fsd%3Fid%3D536872786%26val%3D%5BMM_UUID%5D&mm_bnc&mm_bct Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.mathtag.com/sync/img?mt_exid=5&redir=h…d%3D536872786%26val%3D%5BMM_UUID%5D&mm_bnc&mm_bct", completed: false…} | |
http://p.rfihub.com/cm?in=1&pub=25 Resource {requests: Array[3], method: "GET", type: "image", url: "http://p.rfihub.com/cm?in=1&pub=25", completed: false…} | |
https://cdn.doubleverify.com/dvtp_src_internal48.js Resource {requests: Array[3], method: "GET", type: "script", url: "https://cdn.doubleverify.com/dvtp_src_internal48.js", completed: true…} | |
http://x.bidswitch.net/ul_cb/sync?ssp=openx Resource {requests: Array[3], method: "GET", type: "image", url: "http://x.bidswitch.net/ul_cb/sync?ssp=openx", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=536872786&val=500f5813-24f7-4100-ab73-8d606e6535b5 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=536872786&val=500f5813-24f7-4100-ab73-8d606e6535b5", completed: true…} | |
http://rp.gwallet.com/r1/cm/p25 Resource {requests: Array[3], method: "GET", type: "image", url: "http://rp.gwallet.com/r1/cm/p25", completed: false…} | |
http://bcp.crwdcntrl.net/map/c=1389/tp=STSC/tpid=ede3189b-7166-484f-a09e-85…2Fsd%253Fid%253D537072977%2526val%253Dede3189b-7166-484f-a09e-8591f8e95f4a Resource {requests: Array[3], method: "GET", type: "image", url: "http://bcp.crwdcntrl.net/map/c=1389/tp=STSC/tpid=e…%2526val%253Dede3189b-7166-484f-a09e-8591f8e95f4a", completed: false…} | |
https://ads.yahoo.com/cms/v1?nwid=10001117459&eid=cd89ebf3-674f-4ae4-54d3-2b9f089b88f3&sigv=1&esig=1~2712e2a8516ff2c9b770069b6db2d5e1d16b0426 Resource {requests: Array[3], method: "GET", type: "image", url: "https://ads.yahoo.com/cms/v1?nwid=10001117459&eid=…1&esig=1~2712e2a8516ff2c9b770069b6db2d5e1d16b0426", completed: false…} | |
http://i.w55c.net/ping_match.gif?ei=OPENX&rurl=http%3A%2F%2Fus-u.openx.net%2Fw%2F1.0%2Fsd%3Fid%3D537072979%26val%3D_wfivefivec_ Resource {requests: Array[3], method: "GET", type: "image", url: "http://i.w55c.net/ping_match.gif?ei=OPENX&rurl=htt…%2F1.0%2Fsd%3Fid%3D537072979%26val%3D_wfivefivec_", completed: false…} | |
https://cdn3.doubleverify.com/t2tv7.html Resource {requests: Array[3], method: "GET", type: "subFrame", url: "https://cdn3.doubleverify.com/t2tv7.html", completed: true…} | |
http://tps30.doubleverify.com/visit.js?ctx=1590491&cmp=10442827&ipos=&sid=1…3Dl&brid=6&brver=&bridua=3&tstype=2&jsCallback=dvCallback_1477649655595347 Resource {requests: Array[3], method: "GET", type: "script", url: "http://tps30.doubleverify.com/visit.js?ctx=1590491…3&tstype=2&jsCallback=dvCallback_1477649655595347", completed: true…} | |
http://pixel.quantserve.com/pixel/p-25CIknq_eSg16.gif?idmatch=0 Resource {requests: Array[3], method: "GET", type: "image", url: "http://pixel.quantserve.com/pixel/p-25CIknq_eSg16.gif?idmatch=0", completed: false…} | |
http://p.adsymptotic.com/d/px?_pid=10886&_psign=dfaecdab3231066ee5916cf9368…%2F%2Fus-u.openx.net%2Fw%2F1.0%2Fsd%3Fid%3D537073031%26val%3D%24%7BUUID%7D Resource {requests: Array[3], method: "GET", type: "image", url: "http://p.adsymptotic.com/d/px?_pid=10886&_psign=df…2F1.0%2Fsd%3Fid%3D537073031%26val%3D%24%7BUUID%7D", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537073062&val=776659838172836845 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537073062&val=776659838172836845", completed: true…} | |
http://match.adsrvr.org/track/cmb/openx?oxid=bf754269-a2cb-72d3-1061-ca1ddd0af411 Resource {requests: Array[3], method: "GET", type: "image", url: "http://match.adsrvr.org/track/cmb/openx?oxid=bf754269-a2cb-72d3-1061-ca1ddd0af411", completed: false…} | |
http://dt.videohub.tv/ssframework/uid?url=http%3A%2F%2Fx.bidswitch.net%2Fsync%3Fdsp_id%3D122%26user_id%3D%5BUSER_ID%5D%26expires%3D30Resourcesp%3Dopenx | |
https://cm.g.doubleclick.net/pixel?google_nid=open&google_hm=YCPIVQtNy_32FYaqDhPOqw==&ox_sc=1&ox_init=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://cm.g.doubleclick.net/pixel?google_nid=open…gle_hm=YCPIVQtNy_32FYaqDhPOqw==&ox_sc=1&ox_init=1", completed: false…} | |
http://bcp.crwdcntrl.net/map/ct=y/c=1389/tp=STSC/tpid=ede3189b-7166-484f-a0…2Fsd%253Fid%253D537072977%2526val%253Dede3189b-7166-484f-a09e-8591f8e95f4a Resource {requests: Array[3], method: "GET", type: "image", url: "http://bcp.crwdcntrl.net/map/ct=y/c=1389/tp=STSC/t…%2526val%253Dede3189b-7166-484f-a09e-8591f8e95f4a", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537072979&val=zVYPxuoM1C04aX5 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072979&val=zVYPxuoM1C04aX5", completed: true…} | |
http://oxp.mxptint.net/OpenX.ashx Resource {requests: Array[3], method: "GET", type: "image", url: "http://oxp.mxptint.net/OpenX.ashx", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537072956&val=hHDW_4N8gq6cK9P81CnKrtd5hq6ceN78gSkTngEB Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072956&val=hHDW_4N8gq6cK9P81CnKrtd5hq6ceN78gSkTngEB", completed: true…} | |
http://sync.1rx.io/usersync2/openx Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.1rx.io/usersync2/openx", completed: false…} | |
http://su.addthis.com/red/usync?pid=11185&puid=ede3189b-7166-484f-a09e-8591…w%2F1.0%2Fsd%3Fid%3D537072977%26val%3Dede3189b-7166-484f-a09e-8591f8e95f4a Resource {requests: Array[3], method: "GET", type: "image", url: "http://su.addthis.com/red/usync?pid=11185&puid=ede…2977%26val%3Dede3189b-7166-484f-a09e-8591f8e95f4a", completed: false…} | |
https://rtb.openx.net/sync/dds?ox_sc=1&ox_init=1 Resource {requests: Array[3], method: "GET", type: "image", url: "https://rtb.openx.net/sync/dds?ox_sc=1&ox_init=1", completed: true…} | |
http://p.adsymptotic.com/d/px?_pid=10886&_psign=dfaecdab3231066ee5916cf9368…31%26val%3D%24%7BUUID%7D&_expected_cookie=51c39d4f5653fd65550e70f079e9c2d0 Resource {requests: Array[3], method: "GET", type: "image", url: "http://p.adsymptotic.com/d/px?_pid=10886&_psign=df…_expected_cookie=51c39d4f5653fd65550e70f079e9c2d0", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537072971&val=d57349b6-98c5-4574-b797-a86898045853 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072971&val=d57349b6-98c5-4574-b797-a86898045853", completed: true…} | |
https://cookiex.ngd.yahoo.com/ack?eid=cd89ebf3-674f-4ae4-54d3-2b9f089b88f3&xid=i52ojRyA_orFwL6Qrgsbqs5A Resource {requests: Array[3], method: "GET", type: "image", url: "https://cookiex.ngd.yahoo.com/ack?eid=cd89ebf3-674…e4-54d3-2b9f089b88f3&xid=i52ojRyA_orFwL6Qrgsbqs5A", completed: true…} | |
http://cdn.doubleverify.com/avs628.js Resource {requests: Array[3], method: "GET", type: "script", url: "http://cdn.doubleverify.com/avs628.js", completed: true…} | |
http://rp.gwallet.com/r1/cm/p25?check_uid_cookie Resource {requests: Array[3], method: "GET", type: "image", url: "http://rp.gwallet.com/r1/cm/p25?check_uid_cookie", completed: false…} | |
http://x.bidswitch.net/sync?dsp_id=122&user_id=69a4523774ba38f7bb1790c43e8899fc&expires=30&ssp=openx Resource {requests: Array[3], method: "GET", type: "image", url: "http://x.bidswitch.net/sync?dsp_id=122&user_id=69a4523774ba38f7bb1790c43e8899fc&expires=30&ssp=openx", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537073031&val=51c39d4f5653fd65550e70f079e9c2d0 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537073031&val=51c39d4f5653fd65550e70f079e9c2d0", completed: true…} | |
http://us-u.openx.net/w/1.0/sd?id=537072977&val=ede3189b-7166-484f-a09e-8591f8e95f4a Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072977&val=ede3189b-7166-484f-a09e-8591f8e95f4a", completed: true…} | |
http://us-u.openx.net/w/1.0/sd?id=537116306&val=R9_879FB705_1524276B Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537116306&val=R9_879FB705_1524276B", completed: true…} | |
http://us-u.openx.net/w/1.0/sd?id=537072968&val=7495f79d-310b-4732-8ee3-aeae3b53ddf2 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072968&val=7495f79d-310b-4732-8ee3-aeae3b53ddf2", completed: true…} | |
http://match.adsrvr.org/track/cmf/generic?ttd_pid=adconductor&ttd_tpi=1 Resource {requests: Array[3], method: "GET", type: "image", url: "http://match.adsrvr.org/track/cmf/generic?ttd_pid=adconductor&ttd_tpi=1", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537072983&val=9RHRAvtRc_21WXt0RCuJFKpy4qM Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537072983&val=9RHRAvtRc_21WXt0RCuJFKpy4qM", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649655909 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649655909", completed: true…} | |
http://tps10210.doubleverify.com/event.jpg?ctx=1590491&cmp=10442827&ipos=&s…r=&isbmms=253&isgmmims=253&ismms=253&isumms=253&evid=1&ctime=1477649656025 Resource {requests: Array[3], method: "POST", type: "other", url: "http://tps10210.doubleverify.com/event.jpg?ctx=159…3&ismms=253&isumms=253&evid=1&ctime=1477649656025", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649656050 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649656050", completed: true…} | |
http://bis2.cliipa.com/aggregate?_=1477649656053 Resource {requests: Array[3], method: "POST", type: "xhr", url: "http://bis2.cliipa.com/aggregate?_=1477649656053", completed: true…} | |
http://sync.1rx.io/usersync/tradedesk/d57349b6-98c5-4574-b797-a86898045853 Resource {requests: Array[3], method: "GET", type: "image", url: "http://sync.1rx.io/usersync/tradedesk/d57349b6-98c5-4574-b797-a86898045853", completed: false…} | |
http://us-u.openx.net/w/1.0/sd?id=537113070&val=RX-e5b38f69-e598-41c4-aed7-010e82fc00f4 Resource {requests: Array[3], method: "GET", type: "image", url: "http://us-u.openx.net/w/1.0/sd?id=537113070&val=RX-e5b38f69-e598-41c4-aed7-010e82fc00f4", completed: true…} | |
http://choices.truste.com/ca?aid=turn01&pid=turn01&cid=1519369354&w=300&h=2…js=pmw1&base=te-clr1-47e910e2-2387-4ee1-9d9d-cfcf8fddc055&admarker=dynamic Resource {requests: Array[2], method: "GET", type: "script", url: "http://choices.truste.com/ca?aid=turn01&pid=turn01…10e2-2387-4ee1-9d9d-cfcf8fddc055&admarker=dynamic", completed: false…} | |
http://choices.truste.com/ca?aid=turn01&pid=turn01&cid=1519369354&w=300&h=250&c=7558564148489724897&js=pmw2 Resource {requests: Array[2], method: "GET", type: "script", url: "http://choices.truste.com/ca?aid=turn01&pid=turn01…9369354&w=300&h=250&c=7558564148489724897&js=pmw2", completed: false…} | |
http://choices-or.truste.com/cap?aid=turn01&pid=turn01&cid=1519369354&w=300&h=250&c=ca68 Resource {requests: Array[2], method: "GET", type: "image", url: "http://choices-or.truste.com/cap?aid=turn01&pid=turn01&cid=1519369354&w=300&h=250&c=ca68", completed: false…} | |
http://static.chartbeat.com/js/chartbeat.js Resource {requests: Array[1], method: "GET", type: "script", url: "http://static.chartbeat.com/js/chartbeat.js", completed: false…} | |
http://l.sharethis.com/onload?event=onload&version=buttons.js&lang=en&fpc=7…ainment%20News%20%7C%20Celebrity%20News%20%7C%20TMZ.com&ts1477649656650.0= Resource {requests: Array[1], method: "GET", type: "image", url: "http://l.sharethis.com/onload?event=onload&version…lebrity%20News%20%7C%20TMZ.com&ts1477649656650.0=", completed: false…} |
This file has been truncated, but you can view the full file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
WARC/1.0 | |
WARC-Type: warcinfo | |
Content-Type: application/warc-fields | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-Record-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Filename: mkelly.warc.gz | |
WARC-Block-Digest: sha1:DBHK4TBLI4754YGVVIQ36DTPUTAQMWUZ | |
Content-Length: 452 | |
software: Wget/1.17.1 (linux-gnu) | |
format: WARC File Format 1.0 | |
conformsTo: http://bibnum.bnf.fr/WARC/WARC_ISO_28500_version1_latestdraft.pdf | |
robots: off | |
wget-arguments: "-p" "-k" "-H" "-Dcs.odu.edu" "-erobots=off" "--warc-file=mkelly" "-A" ".gif,.swf,.css,.html,.htm,.jpg,.jpeg,.png,.js" "--mirror" "--recursive" "-l1" "--no-check-certificate" "--page-requisites" "--html-extension" "--convert-links" "--no-parent" "http://cs.odu.edu/~mkelly/" | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://cs.odu.edu/~mkelly/ | |
Content-Type: application/http;msgtype=request | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-Record-ID: <urn:uuid:a0af43c8-4620-4381-9cc8-d17cc5d2c051> | |
WARC-IP-Address: 128.82.4.3 | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Block-Digest: sha1:DD2IDGPULIV65TVCZYVNKPMF6ATDB3UB | |
Content-Length: 145 | |
GET /~mkelly/ HTTP/1.1 | |
User-Agent: Wget/1.17.1 (linux-gnu) | |
Accept: */* | |
Accept-Encoding: identity | |
Host: cs.odu.edu | |
Connection: Keep-Alive | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Record-ID: <urn:uuid:f53c9b6e-9c4a-4575-8dbd-ec2aa57e5dee> | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Concurrent-To: <urn:uuid:a0af43c8-4620-4381-9cc8-d17cc5d2c051> | |
WARC-Target-URI: http://cs.odu.edu/~mkelly/ | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-IP-Address: 128.82.4.3 | |
WARC-Block-Digest: sha1:U2RUILKLTKADIHNDAJXBAJWVY2Q3VTGO | |
WARC-Payload-Digest: sha1:BF64MF2JVSJS3MYOIWU2D6DHH4UJBGO4 | |
Content-Type: application/http;msgtype=response | |
Content-Length: 233 | |
HTTP/1.1 302 Found | |
Date: Fri, 28 Oct 2016 08:48:01 GMT | |
Location: http://www.cs.odu.edu/~mkelly/ | |
Transfer-Encoding: chunked | |
Content-Type: text/html; charset=utf-8 | |
35 | |
<a href="http://www.cs.odu.edu/~mkelly/">Found</a>. | |
0 | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/ | |
Content-Type: application/http;msgtype=request | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-Record-ID: <urn:uuid:f4e4ca48-849b-4803-9cbf-b55acdb3ba49> | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Block-Digest: sha1:TCOS6FYTPRD3QSZELJUK3OFV3XEUZYB4 | |
Content-Length: 149 | |
GET /~mkelly/ HTTP/1.1 | |
User-Agent: Wget/1.17.1 (linux-gnu) | |
Accept: */* | |
Accept-Encoding: identity | |
Host: www.cs.odu.edu | |
Connection: Keep-Alive | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Record-ID: <urn:uuid:61d6fe3c-46a4-464f-ac0f-ef0015e192e7> | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Concurrent-To: <urn:uuid:f4e4ca48-849b-4803-9cbf-b55acdb3ba49> | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/ | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Block-Digest: sha1:SAQNGNHGY2WJVBWCVDMZLSM65U7V463O | |
WARC-Payload-Digest: sha1:USL3TWWXE7KQOQ4RIWNZNAILNKUMBOUY | |
Content-Type: application/http;msgtype=response | |
Content-Length: 40600 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Fri, 28 Oct 2016 08:48:01 GMT | |
Content-Type: text/html | |
Transfer-Encoding: chunked | |
Connection: keep-alive | |
Vary: Accept-Encoding | |
1efe | |
<!DOCTYPE html> | |
<html> | |
<head> | |
<meta charset="utf-8"> | |
<meta name="description" content="Academic Homepage of Mat Kelly, Doctoral Degree student at Old Dominion University in Norfolk, Virginia." /> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> | |
<meta name="theme-color" content="#031fc9" /> | |
<!--[if lt IE 9]> | |
<script src="_js/html5shiv.js"></script> | |
<![endif]--> | |
<title>Mat Kelly, PhD Student of Computer Science, Old Dominion University in Norfolk, Virginia</title> | |
<link rel="stylesheet" href="style.css" media="all" /> | |
<link rel="author" href="https://plus.google.com/u/0/103717513886594190386" /> | |
<script src="_js/html2canvas.js"></script> | |
<script src="index.js"></script> | |
<style type="text/css"> | |
/*#screenshot {position: absolute; right: 300px; top: 10px; width: 500px; -webkit-transition: all ease 1s;}*/ | |
#screenshot {width: 200px;} | |
#screenshot:hover { | |
} | |
#thumbnailFrame {height: 100px; overflow: hidden;} | |
</style> | |
</head> | |
<body> | |
<header itemscope itemtype="http://data-vocabulary.org/Person"> | |
<img src="mofro.png" alt="mug shot" id="mugShot" itemprop="photo" /> | |
<h1 itemprop="name">Mat Kelly</h1> | |
<h2 itemprop="title">PhD Student, Computer Science</h2> | |
<h3 itemprop="affiliation">Web Science & Digital Libraries Research Group</h3> | |
<h3 itemprop="affiliation">Old Dominion University</h3> | |
<!--<a href="http://www.cs.odu.edu/~mkelly" onclick="screenshotTest();return false;"> | |
<img src="amish.jpg" alt="mug shot" id="openMenu" itemprop="photo" /> | |
</a>//future work --> | |
</header> | |
<nav> | |
<ul id="sections"> | |
<li><a href="#currentProjects">Upcoming/Current Projects</a></li> | |
<li><a href="#papersPostersAndPresentations">Papers, Posters & Presentations</a></li> | |
<li><a href="#recognitionAndParticipation">Recognition & Participation</a></li> | |
<li><a href="#teaching">Teaching</a></li> | |
<li><a href="#courseworkHistory">Coursework History</a></li> | |
<li><a href="#projects">Recent Software Projects</a></li> | |
<li><a href="#contact">Contact</a></li> | |
<li id="cv"><a target="_blank" href="http://matkelly.com/cv">C.V.</a></li> | |
</ul> | |
</nav> | |
<section id="currentProjects"> | |
<h2>Current/Upcoming Projects</h2> | |
<ul> | |
<li>Research and paper development on various aspects of personal web archiving.</li> | |
<li>Continued development of <a href="http://warcreate.com">WARCreate</a>, <a href="http://matkelly.com/wail">Web Archiving Integration Layer (WAIL)</a>, and <a href="https://github.com/machawk1/mink">Mink</a> for <a href="http://www.neh.gov/divisions/odh/grant-news/announcing-seven-digital-humanities-implementation-grants-july-2014">NEH Digital Humanities Implementation Grant</a>.</li> | |
<li>Continued development of <a href="http://github.com/oduwsdl/ipwb">InterPlanetary Wayback (ipwb)</a>.</li> | |
</ul> | |
</section> | |
<section id="papersPostersAndPresentations"> | |
<h2 id="ppp_heading">Papers, Posters & Presentations</h2> | |
<ul id="ppp_filter"> | |
<li class="ppp_active"><a id="ppp_all">All</a></li> | |
<li><a id="ppp_pr">Only Peer-Reviewed</a></li> | |
<li><a id="ppp_p">Only Papers</a></li> | |
<li><a id="ppp_j">Only Journals</a></li> | |
</ul> | |
<ul id="ppp"> | |
<li class="paper shortPaper peerReviewed"><em class="me">Mat Kelly</em>, Sawood Alam, Michael L. Nelson, and Michele C. Weigle. "InterPlanetary Wayback: Peer-To-Peer Permanence of Web Archives," In <em>Proceedings of the International Conference on Theory and Practice of Digital Libraries</em> (TPDL). Hannover, Germany, September 2016, pp. 411-416. (<a href="http://www.cs.odu.edu/~mkelly/papers/2016_tpdl_ipwb.pdf">PDF</a>, <a href="publications/kelly-tpdl2016.bib">BibTeX</a>)</li> | |
<li class="poster workshop"><em class="me">Mat Kelly</em>, Sawood Alam, Michael L. Nelson, and Michele C. Weigle, "InterPlanetary Wayback: The Permanent Web Archive," At the <em>Web Archiving and Digital Libraries Workshop (WADL 2016)</em>. Newark, NJ, June 2016.</li> | |
<li class="poster peerReviewed">Sawood Alam, <em class="me">Mat Kelly</em>, and Michael L. Nelson, "InterPlanetary Wayback: The Permanent Web Archive," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. Newark, NJ, June 2016, pp. 273-274. (<a href="http://www.cs.odu.edu/~mkelly/papers/2016_jcdl_ipwb.pdf">PDF</a>, <a href="publications/alam-jcdl2016.bib">BibTeX</a>)</li> | |
<li class="presentation"><em class="me">Mat Kelly</em>, "Exploring Aggregation of Personal, Private, and Institutional Web Archives," Presented At <em>Archives Unleashed 2.0: Web Archive Datathon</em>, 2016 June 15. (<a href="http://www.cs.odu.edu/~mkelly/presentations/2016_archivesUnleashed_aggregation.pptx">PPTX</a>)</li> | |
<li class="online"><em class="me">Mat Kelly</em>, "A Framework for Aggregating Private and Public Web Archives," <em>Bulletin of IEEE Technical Committee on Digital Libraries (IEEE-TCDL)</em>, Vol. 11, No. 3, December 2015. (<a href="http://www.ieee-tcdl.org/Bulletin/v11n3/papers/149-Kelly.pdf">PDF</a>, <a href="publications/kelly-tcdl2015.bib">BibTeX</a>)</li> | |
<li class="presentation"><em class="me">Mat Kelly</em>, "A Framework for Aggregating Private and Public Web Archives," at the <em>ACM/IEEE Joint Conference on Digital Libraries (JCDL)</em>. Doctoral Consortium. Knoxville, TN, June 2015. (<a href="papers/2015_jcdl_aframework.pdf">PDF</a>, <a href="publications/kelly-jcdl2015.bib">BibTeX</a>)</li> | |
<li class="poster peerReviewed">Wesley Jordan, <em class="me">Mat Kelly</em>, Justin F. Brunelle, Laura Vobrak, Michele C. Weigle and Michael L. Nelson, "Mobile Mink: Merging Mobile and Desktop Archived Webs," In <em>Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL)</em>. Knoxville, TN, June 2015, pp. 243-244, <em class="best">Best Poster Award</em>. (<a href="papers/2015_jcdl_mobileMink.pdf">PDF</a>, <a href="publications/jordan-jcdl2015.bib">BibTeX</a>)</li> | |
<li class="presentation"><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle, "Visualizing Digital Collections of Web Archives," <em>Web Archiving Collaboration: New Tools and Models</em>; 2015 June 4; New York City, NY. (<a href="presentations/2015_columbiawac_thumbnails.pptx">PPTX</a>)</li> | |
<li class="journal peerReviewed">Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen, Michele C. Weigle and Michael L. Nelson, "Not All Mementos Are Created Equal: Measuring the Impact of Missing Resources," <em>International Journal of Digital Libraries (IJDL)</em>, 16(3), pp. 283-301. May 2015. (<a href="http://link.springer.com/article/10.1007/s00799-015-0150-6">article</a>, <a href="publications/brunelle-ijdl2015-damage.bib">BibTeX</a>)</li> | |
<li class="presentation"><em class="me">Mat Kelly</em>, "Facilitation of the A Posteriori Replication of Web Published Satellite Imagery", <em>Virginia Space Grant Consortium 2015 Student Research Conference</em>. 2015 April 17; Hampton, VA. (<a href="papers/2015_vsgc_imagery.pdf">PDF</a>, <a href="presentations/2015_vsgc_imagery.pptx">PPTX</a>, <a href="publications/kelly-vsgc2015.bib">BibTeX</a>) | |
<li class="journal peerReviewed">Justin F. Brunelle, <em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson, "The Impact of JavaScript on Archivability," <em>International Journal of Digital Libraries (IJDL)</em>, 15(1), pp. 95-117. January 2015. (<a href="http://link.springer.com/article/10.1007%2Fs00799-015-0140-8">article</a>, <a href="publications/brunelle-ijdl2015-impact.bib">BibTeX</a>)</li> | |
<li class="paper longPaper peerReviewed">Michael Ruffing, Yangyang H | |
1000 | |
e, <em class="me">Mat Kelly</em>, Jason O. Hallstrom, Stephan Olariu, and Michele C. Weigle. "A Retasking Framework For Wireless Sensor Networks," In <em>Proceedings of the IEEE Military Communications Conference (MILCOM)</em>. Baltimore, MD, 2014 October 6-8, pp. 1066-1071 (<a href="papers/2014_milcom_retasking.pdf">PDF</a>, <a href="publications/ruffing-milcom2014.bib">BibTeX</a>)</li> | |
<li class="paper longPaper peerReviewed">Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen, Michele C. Weigle, and Michael L. Nelson, "Not All Mementos Are Created Equal: Measuring The Impact Of Missing Resources," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. London, England, September 2014, pp. 321-330, <em class="best">Best Student Paper Award</em>. (<a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_damage.pdf">PDF</a>, <a href="publications/brunelle-dl2014.bib">BibTeX</a>)</li> | |
<li class="paper shortPaper peerReviewed"><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle, "The Archival Acid Test: Evaluating Archive Performance on Advanced HTML and JavaScript," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. London, England, September 2014, pp. 25-28. (<a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_acid.pdf">PDF</a>, <a href="publications/kelly-dl2014-acid.bib">BibTeX</a>)</li> | |
<li class="poster peerReviewed"><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle, "Mink: Integrating the Live and Archived Web Viewing Experience Using Web Browsers and Memento," In <em>Proceedings of the IEEE/ACM Joint Conference on Digital Libraries (JCDL)</em>. London, England, September 2014, pp. 469-470. (<a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_mink.pdf">PDF</a>, <a href="publications/kelly-dl2014-mink.bib">BibTeX</a>)</li> | |
<li class="presentation">Michael L. Nelson, Scott G. Ainsworth, Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen, Michele C. Weigle. "Assessing the Quality of Web Archives," <em>Digital Preservation 2014</em>, Future of Web Archiving Panel; 2014 July 23; Washington, DC. (<a href="http://www.cs.odu.edu/~mkelly/presentations/2014_digitalPreservation.ppt">PPT</a>)</li> | |
<li class="poster"><em class="me">Mat Kelly</em>, Michael L. Nelson, and Michele C. Weigle. "Efficient Thumbnail Summarization for Web Archives," Digital Preservation 2014, Poster Session; 2014 July 22; Washington, DC. (<a href="http://www.cs.odu.edu/~mkelly/posters/2014_digpres_thumbnails.pdf">PDF</a>)</li> | |
<li class="online peerReviewed"><em class="me">Mat Kelly</em>, Justin F. Brunelle, Michele C. Weigle and Michael L. Nelson. "A Method for Identifying Personalized Representations in the Archives," <em>D-Lib Magazine</em>, 19(11/12), 2013. (<a href="http://www.dlib.org/dlib/november13/kelly/11kelly.html">article</a>, <a href="publications/kelly-dlib2013.bib">BibTeX</a>)</li> | |
<li class="presentation"><em class="me">Mat Kelly</em>. "Archive What I See Now," <em>Archive-It Partner Meeting</em>. Salt Lake City, UT, 2013 November 12. (<a href="presentations/2013_archiveItPartnerMeeting_archiveWhatISeeNow.pptx">PPTX</a>)</li> | |
<li class="poster peerReviewed"><em class="me">Mat Kelly</em>, Michael L. Nelson and Michele C. Weigle. "Graph-Based Navigation of a Box Office Prediction System," In <em>Proceedings of the IEEE VIS 2013</em>. Atlanta, GA, 2013 October 13-18. (<a href="papers/2013_ieeevis_boxofficeprediction.pdf">PDF</a>, <a href="posters/2013_vis_boxoffice.pdf">Poster</a>, <a href="publications/kelly-vis2013.bib">BibTeX</a>)</li> | |
<li class="presentation">Michael L. Nelson, Scott G. Ainsworth, Justin F. Brunelle, <em class="me">Mat Kelly</em>, Hany SalahEldeen and Michele C. Weigle. "Who Will Archive the Archives? Thoughts About the Future of Web Archiving," Wolfram Data Summit 2013. Washington, DC, 2013 September 5-6. (<a href="presentations/2013_wolframDataSumnmit_archiveTheArchives.ppt">PPT</a>)</li | |
6ed2 | |
> | |
<li class="presentation"><em class="me">Mat Kelly</em>, Michael L. Nelson and Michele C. Weigle. "WARCreate and WAIL: WARC, Wayback and Heritrix Made Easy," <em>Digital Preservation 2013</em>, Workshops and Sessions: Web Archiving; 2013 July 24; Alexandria, VA. (<a href="http://www.cs.odu.edu/~mkelly/presentations/2013_digitalPreservation_heritrixMadeEasy.pptx">PPTX</a>)</li> | |
<li class="paper longPaper peerReviewed"><em class="me">Mat Kelly</em>, Justin F. Brunelle, Michele C. Weigle and Michael L. Nelson. "On the Change in Archivability of Websites Over Time," In <em>Proceedings of the International Conference on Theory and Practice of Digital Libraries</em> (TPDL). Valletta, Malta, September 2013, pp. 35-47 (<a href="papers/2013_tpdl_archivabilityOverTime_final.pdf">PDF</a>, <a href="publications/kelly-tpdl2013.bib">BibTeX</a>)</li> | |
<li class="poster"><em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson. "Making Enterprise-Level Archive Tools Accessible for Personal Web Archiving," <em>Personal Digital Archiving 2013</em>; 2013 February 21; College Park, MD. (<a href="posters/2013_pda_wail.pdf">PDF</a>, <a href="publications/kelly-pda2013.bib">BibTeX</a>)</li> | |
<li class="poster"><em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson. "WARCreate - Create Wayback-Consumable WARC Files from Any Webpage," Digital Preservation 2012, Tools Demo Session: Web Archiving; 2012 July 25; Washington, DC. (<a href="presentations/2012_digitalPreservation_warcreate.pptx">PPTX</a>, <a href="presentations/2012_digitalPreservation_warcreate.zip">PPTX w/ videos</a>)</li> | |
<li class="poster peerReviewed"><em class="me">Mat Kelly</em> and Michele C. Weigle, "WARCreate - Create Wayback-Consumable WARC Files from Any Webpage," In <em>Proceedings of the ACM/IEEE Joint Conference on Digital Libraries (JCDL)</em>. Washington, DC, June 2012, pp. 437-438 (<a href="papers/2012_jcdl_warcreate.pdf">PDF</a>, <a href="posters/2012_jcdl_warcreate.pdf">Poster</a>, <a href="publications/kelly-jcdl2012.bib">BibTeX</a>)</li> | |
<li class="poster peerReviewed">Thad Chee (Science Systems & Applications, Inc., Hampton, VA), <em class="me">Matthew Kelly</em> (Science Systems & Applications, Inc., Hampton, VA), Louis Nguyen (NASA-Langley Research Center, Hampton, VA), Patrick Minnis (NASA-Langley Research Center, Hampton, VA), Rabindra Palikonda, Douglas A. Spagenberg (Science Systems & Applications, Inc., Hampton, VA), J. Kirk Ayers (Science Systems & Applications, Inc., Hampton, VA). Access to Real-time and Historic Satellite Products from a Mobile Application. <em>American Geophysical Union Fall Meeting</em>; 2011 December 5-9; San Francisco, CA. (<a href="posters/2012_agu_cloudproducts.ppt">PPT</a>, <a href="publications/chee-agu2011.bib">BibTeX</a>)</li> | |
<li class="poster"><em class="me">Mat Kelly</em>, Syed R. Rizvi, Liang Chen, Chinmay Lokesh, Stephan Olariu and Michele C. Weigle. ALERT: A Next-generation Emergency Response System for First Responders using Retasking of Wireless Sensor Networks. <em>13th Annual Tidewater Student Research Poster Session</em>; 2011 November 18; Newport News, VA. (<a href="posters/2011_cnu_alert.pdf">PDF</a>)</li> | |
<li class="presentation"><em class="me">Mat Kelly</em>, Michele C. Weigle and Michael L. Nelson. Archiving Your Facebook Pages Using Archive Facebook. NDIIPP/NDSA Partners Meeting Special Interest Session: Web Archiving; 2011 July 20; Washington, DC. (<a href="presentations/2011_ndiipp_archivefacebook.pptx">PPTX</a>)</li> | |
<li class="whitePaper">David Helman (BMW Group, Greenville, SC), <em class="me">Matthew Kelly</em> (BMW Group, Greenville, SC ), Martin Guttmann (Intel Corporation, Santa Clara, CA), Bill Carter (Intel Corporation, Santa Clara, CA), Enrique Castro-Leon (Intel Corporation, Santa Clara, CA), Thomas Kellerer (Intel Corporation, Santa Clara, CA), Dror Shenkar (Intel Corporation, Santa Clara, CA). "Preserving Performance While Saving Power Using Intel Intelligent Power Node Manager and Intel Data Center Manger"; December 2009. (<a href="https://software.intel.com/sites/datacentermanager/node_manager_white_paper_bmw.pdf">article</a>, <a href="papers/2009_intel_node_manager_white_paper_bmw.pdf">PDF</a>)</li> | |
</ul> | |
</section> | |
<section id="recognitionAndParticipation"> | |
<h2>Recognition & Participation</h2> | |
<ul> | |
<li>Scholarship Awardee, <a href="https://www.rjionline.org/stories/graduate-students-receive-scholarships-to-attend-digital-news-preservati">Donald W. Reynolds Journalism Institute</a>, October 2016.</li> | |
<li>Participant, <a href="http://www.netpreserve.org/events/iipc-crawler-hackathon-london-2016">IIPC "Building Better Crawlers" Hackathon</a>, September 2016.</li> | |
<li>Invited Participant and Presenter, <a href="http://archivesunleashed.com">Archives Unleashed 2.0: Web Archive Datathon</a>, June 2016.</li> | |
<li>Invited Participant, <a href="http://archivesunleashed.ca">Archives Unleashed: Web Archive Hackathon</a>, March 2016.</li> | |
<li>Sole Presenter, Old Dominion University Department of Computer Science PhD Gathering, November 2015.</li> | |
<li>Best Poster for <a href="papers/2015_jcdl_mobileMink.pdf">"Mobile Mink: Merging Mobile and Desktop Archived Webs"</a> at the ACM/IEEE Joint Conference on Digital Libraries (JCDL), June 2015.</li> | |
<li>Best Student Paper for <a href="http://www.cs.odu.edu/~mkelly/papers/2014_dl_damage.pdf">"Not All Mementos Are Created Equal: Measuring The Impact Of Missing Resources"</a> at IEEE/ACM Digital Libraries 2014, September 2014.</li> | |
<li>NASA <a href="http://vsgc.odu.edu/sf/gradfellow/">Virginia Space Grant Consortium</a> <a href="http://vsgc.odu.edu/awardees/20142015/">Graduate Fellow</a>, August 2014.</li> | |
<li><a href="http://www.cs.odu.edu/~mkelly/presentations/2014_pesUniversity_browserBasedDigitalPreservation.pptx">Doctoral Student Presenter</a>, "Browser-Based Digital Preservation" for Visiting <a href="http://pes.edu/">PES University</a> Students, Old Dominion University, July 2014.</li> | |
<li>Acknowledged Contributor, <a href="https://tools.ietf.org/html/rfc7089">RFC7089: HTTP Framework for Time-Based Access to Resource States -- Memento</a>, December 2013.</li> | |
<li><a href="http://www.cs.odu.edu/~mkelly/presentations/2013_cs595_movieExplorer.pptx">Guest Presenter</a>, CS595 - Intro to Web Science, Old Dominion University, October 2013.</li> | |
<li><a href="http://blogs.loc.gov/digitalpreservation/2012/08/warcreate-and-future-stewardship-an-interview-with-mat-kelly/">Featured Interviewee</a>, The Signal Digital Preservation Blog, August 2012.</li> | |
<li><a href="http://cs.harding.edu/wac-workshop2012/participants.html">Participant</a>, Web Archiving Cooperative (WAC) Summer Workshop, June 2012.</li> | |
<li><a href="http://blogs.loc.gov/digitalpreservation/2012/06/announcing-five-ndsa-innovation-award-winners/">Future Steward Innovation Award Recipient</a>, National Digital Stewardship Alliance (NDSA) / Library of Congress, July 2012.</li> | |
<li><a href="http://www.cs.odu.edu/show_features.shtml?64">Featured Grad Student</a>, Old Dominion University Computer Science Department, June 2012.</li> | |
<li>Reviewer, Joint Conference on Digital Libraries (JCDL) 2012, March 2012.</li> | |
</ul> | |
</section> | |
<section id="teaching"> | |
<h2>Teaching</h2> | |
<ul> | |
<li class="oduphd">Spring 2015: <a href="http://www.cs.odu.edu/~mkelly/semester/2015_spring/cs418/">CS418 - Web Programming</a></li> | |
</ul> | |
</section> | |
<section id="courseworkHistory"> | |
<h2>Coursework History</h2> | |
<ul> | |
<li class="oduphd">Fall 2016 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2016 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2016 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2015 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2015 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2015 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2014 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2014 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2014 | |
<ul> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2013 | |
<ul> | |
<li>CS595 - <a href="http://www.cs.odu.edu/~mln/teaching/cs595-f13/">Introduction to Web Science</a> (<a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)</li> | |
<li>CS899 - Doctoral Dissertation (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
<li>CS690 - Colloquium</li> | |
</ul> | |
</li> | |
<li class="oduphd">Summer 2013 | |
<ul> | |
<li>CS891 - Graduate Seminar (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
<li>CS690 - Colloquium</li> | |
</ul> | |
</li> | |
<li class="oduphd">Spring 2013 | |
<ul> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~mweigle/CS795-S13/Home">Applied Visual Analytics</a> (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>) | |
<ul> | |
<li>Project: You're Gonna Die: Diet Edition (<a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project1/finalReport.pdf">report</a>, <a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project1/">visualization</a>)</li> | |
<li>Project: Box Office Movie Rating and Take Prediction (<a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project2/CS895S13P2_FinalReport_Kelly.pdf">report</a>, <a href="http://www.cs.odu.edu/~mkelly/semester/2013_spring/project2/">visualization</a>)</li> | |
</ul> | |
</li> | |
</ul> | |
</li> | |
<li class="oduphd">Fall 2012 | |
<ul> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~mweigle/CS795-F12/Home">Information Visualization</a> (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>) | |
<ul> | |
<li>Project: <a href="http://www.cs.odu.edu/~mkelly/cs795f12/final/finalReport.pdf">BibT<sub class="texE">e</sub>X Corpus Visualizer</a></li> | |
</ul> | |
</li> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~olariu/cs795-f-2012.html">Topics: Adventures in Sensor Networks</a> (<a href="http://www.cs.odu.edu/~olariu/">Dr. Stephan Olariu</a>)<ul> | |
<li><a href="http://www.cs.odu.edu/~mkelly/semester/2012_fall/cs895SensorNetworks/CS895_midTermPresentation_matKelly.pdf">Presentation</a> of <a href="http://ieeexplore.ieee.org/xpls/abs_all.jsp?arnumber=5585658">a recent paper on sensor networks</a></li> | |
<li>Project/Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2012_fall/cs895SensorNetworks/CS895_projectPresentation_matKelly.pdf">Runtime Reprogramming on TinyOS Sans Deluge Modifications</a></li> | |
</ul></li> | |
</ul></li> | |
<li class="odu">Summer 2012<ul> | |
<li>CS891 - Graduate Seminar (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
</ul> | |
<li class="odu">Spring 2012<ul> | |
<li>CS896 - Topics in Computer Science (<a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)</li> | |
<li>CS699 - Thesis Research (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a> & <a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)<ul> | |
<li>Defense Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2012_summer/thesis_presentation.pptx">An Extensible Framework for Creating Personal Web Archives of Content Behind Authentication</a></li> | |
<li>Thesis: <a href="http://www.cs.odu.edu/~mweigle/papers/kelly-thesis-12.pdf">An Extensible Framework for Creating Personal Archives of Web Resources Requiring Authentication</a></li></ul> | |
</li> | |
</ul> | |
</li> | |
<li class="odu">Fall 2011<ul> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~olariu/cs795-895-sm.html">Topics: Stochastic Modeling Performance Evaluation</a> (<a href="http://www.cs.odu.edu/~olariu/">Dr. Stephan Olariu</a>)<ul> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_stochasticModeling_midtermPresentation.pdf">Midterm Presentation on a chosen Stochastic Modeling Problem</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_stochasticModeling_finalPresentation.pdf">Stochastic Modeling Paper</a></li> | |
</ul></li> | |
<li>CS895 - <a href="http://www.cs.odu.edu/~mln/teaching/cs895-f11/">Topics: Web-based Information Retrieval</a> (<a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>)<ul> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation1.pptx">Evaluation and Relation</a> of a <a href="http://quod.lib.umich.edu/j/jep/3336451.0007.104?view=text;rgn=main" title="The Deep Web: Surfacing Hidden Value by Michael K. Bergman">Seminal Paper</a> and a <a href="http://web.eecs.umich.edu/~michjc/papers/cafarella-webscale-sigmodrecord08.pdf" title="Web-Scale Extraction of Structured Data by Michael J. Cafarella, Jayant Madhavan & Alon Halevy">Followup Paper</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation2.pptx">Evaluation and Relation</a> of a <a href="http://www.aclweb.org/anthology/A88-1019.pdf" title="A Stochastic Parts Program and Noun Phrase Parser for Unrestricted Text by Kenneth Ward Church">Seminal Paper</a> and a <a href="http://www.aclweb.org/anthology/E93-1046" title="Ambiguity Resolution In A Reductionist Parser by Atro Voutilainen & Pasi Tapanainen">Followup Paper</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation3.pptx">Evaluation and Relation</a> of a <a href="http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=5392672&abstractAccess=no&userType=inst" title="The Automatic Creation of Literature Abstracts by H. P. Luhn">Seminal Paper</a> and a <a href="http://dl.acm.org/citation.cfm?id=215333" title="A Trainable Document Summarizer by Julian Kupiec, Jan Pedersen & Francine Chen">Followup Paper</a></li> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/semester/2011_fall/cs895_informationRetrieval_presentation4.pptx">Evaluation and Relation</a> of a <a href="http://www.aaai.org/ojs/index.php/aimagazine/article/viewArticle/1294" title="Question Answering from Frequently Asked Question Files by Robin D. Burke, Kristian J Hammond, Valdimir Kulyukin, Steven L. Lytinen, Noriko Tomurom & Scott Schoenberg">Seminal Paper</a> and a <a href="http://dl.acm.org/citation.cfm?id=1099572" title="Finding Similar Questions in large Question and Answer Archives by Jiwoon Jeon, W. Bruce Croft and Joon Ho Lee">Followup Paper</a></li> | |
</ul></li> | |
<li>CS699 - Thesis Research (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)</li> | |
<li>CS690 - Colloquium</li></ul> | |
</li> | |
<li class="odu">Summer 2011<ul> | |
<li>CS697 - Independent Study In CS (<a href="http://www.cs.odu.edu/~mweigle/">Dr. Michele C. Weigle</a>)<ul> | |
<li><a href="http://www.cs.odu.edu/~mkelly/semester/2011_summer/independent_study_report.pdf">Report on work done</a></li> | |
<li>Project: <a href="https://web.archive.org/web/20110831021613/http://hcil.cs.umd.edu/localphp/hcil/vast11/">IEEE VAST Challenge</a> 2011 (<a href="http://matkelly.com/projects/VAST2011/">submission</a>) (<a href="http://www.cs.odu.edu/~mkelly/semester/2011_summer/submission_review_vast.txt">results</a>)</li> | |
<li>Investigation of <a href="http://docs.tinyos.net/index.php/Deluge_T2">Deluge T2</a> on <a href="https://github.com/tinyos/tinyos-main">TinyOS</a>-based motes for project in Fall 2011</li> | |
<li>Validation of <a href="http://www.cs.odu.edu/~mweigle/papers/tmix-nsdoc.pdf">Tmix</a> for ns-2 and porting of delaybox for <a href="http://www.nsnam.org/">ns-3</a></li> | |
<li>Initial investigation of <a href="https://en.wikipedia.org/wiki/Universal_Software_Radio_Peripheral">USRP</a>s for <a href="http://www.cs.odu.edu/~nadeem/">Dr. Tamer Nadeem</a>. Ongoing into Fall 2011.</li> | |
<li>Further programming of <a href="https://github.com/machawk1/archivefacebook">Archive Facebook</a> for <a href="http://www.cs.odu.edu/~mln/">Dr. Michael L. Nelson</a>/<a href="http://ws-dl.blogspot.com">Web Science and Digital Libraries Research Group</a>.<ul> | |
<li>Presentation: <a href="http://www.cs.odu.edu/~mkelly/archivefb/presentation.pptx">Archive Facebook</a> at NDIIPP/NDSA Partner Meetup in Washington, DC (<a href="http://ws-dl.blogspot.com/2011/07/2011-07-25-ndsandiipp-partner-meetup.html">blog post</a>)</li></ul> | |
</li></ul> | |
</li> | |
</ul></li> | |
<li class="odu">Spring 2011<ul> | |
<li>CS665 - <a href="http://www.cs.odu.edu/~olariu/cs665.html">Computer Architecture</a> (<a href="http://www.cs.odu.edu/~olariu/">Dr. Stephan Olariu</a>)<ul> | |
<li><a href="https://github.com/machawk1/scoreboarding">Project: An illustration of Scoreboarding dynamics</a></li></ul> | |
</li> | |
<li>CS695 - <!--<a href="http://www.cs.odu.edu/~yaohang/cs695/">-->Topics: Monte Carlo Simulation<!--</a>--> (<a href="http://www.cs.odu.edu/~yaohang/">Dr. Yaohang Li</a>)<ul> | |
<li><a href="http://www.cs.odu.edu/~mkelly/semester/2011_spring/cs695_montecarlosimulation_20110426_paper.docx">Paper</a>/<a href="http://www.cs.odu.edu/~mkelly/semester/2011_spring/cs695_montecarlosimulation_20110412_presentation.pptx">Presentation</a>: Simulated Annealing and N Generals as applied to a Synchronized Distributed Operation</li></ul> | |
</li> | |
</ul></li> | |
<li class="odu">Fall 2010 | |
<ul> | |
<li>CS600 - Algorithms and Data Structures (Dr. Desh Ranjan)</li> | |
<li>CS795 - Topics: Machine Learning (<a href="http://www.cs.odu.edu/~zeil/">Dr. Steven J. Zeil</a>) | |
<ul> | |
<li>Paper/Presentation: A Subjectivity Free Analysis and Predictive Scheme for Ranking College Football Teams Using Perceptrons</li> | |
</ul> | |
</li> | |
</ul> | |
</li> | |
<li class="citadel">Spring 2009 | |
<ul> | |
<li>CSCI603 - Object-Oriented Design Patterns (Dr. Christopher W. Starr) | |
<ul> | |
<li>Project: Object-Oriented Design Patterns in OCaml</li> | |
</ul> | |
</li> | |
<li>CSCI618 - <!--<a href="http://macs.citadel.edu/rudolphg/csci618/091/index.html">-->Programming Languages<!--</a>--> (<a href="http://www.mathcs.citadel.edu/rudolphg/">Dr. George Rudolph</a>)<ul> | |
<li>Project: <a href="http://csci618.matkelly.com/">An Exploration of OCaml</a></li></ul> | |
</li> | |
</ul></li> | |
<li class="citadel">Fall 2008<ul> | |
<li>CSCI602 - Foundations of Software Engineering (<a href="http://www.mathcs.citadel.edu/rudolphg/">Dr. George Rudolph</a>)<ul> | |
<li>Projects: Extensive Documentation for the open source <a href="http://spaz.ca/cronometer/">CRON-O-Meter</a> Project</li></ul> | |
</li> | |
<li>CSCI601 - Data Modeling and Database Design (<a href="http://www.cs.cofc.edu/~bowring/">Dr. Jim Bowring</a>)</li> | |
</ul></li> | |
<li class="citadel">Spring 2008<ul> | |
<li>CSCI616 - Automata (<a href="http://www.cs.cofc.edu/~mccauley/">Dr. Renée McCauley</a>)</li> | |
</ul></li> | |
<li class="uf">Spring 2006<ul> | |
<li>EEL4744C - Microprocessor Applications (<a href="http://www.ece.ufl.edu/users/gugel-karl">Dr. Karl Gugel</a>)</li> | |
</ul></li> | |
<li class="uf">Fall 2005<ul> | |
<li>CAP4800 - Systems Simulation (<a href="http://www.cise.ufl.edu/~fishwick/">Dr. Paul Fishwick</a>)<ul> | |
<li>Project: Deadlocked Philosophers, a simulation illustrating the Dining Philosophers and Resource Deadlock ideas</li></ul> | |
</li> | |
<li>CIS4914 - Senior Project (<a href="http://www.cise.ufl.edu/~mssz/">Dr. Mark S. Schmalz</a>, <a href="http://www.cise.ufl.edu/~dts/">Dave Small</a>)<ul> | |
<li>Project: "<a href="https://sourceforge.net/projects/ufseniorproject/">Project: Bob</a>" - a team-based rapidly developed networked 3-D turn-based strategy game.</li></ul> | |
</li> | |
<li>COT4501 - Numerical Analysis - A Computational Approach (<a href="http://www.math.ufl.edu/~rs/">Dr. Rick L. Smith</a>)</li> | |
</ul></li> | |
<li class="uf">Summer 2005<ul> | |
<li>GEO1010 - Geography for a Changing World</li> | |
<li>CEN4500C - Computer Networking Fundamentals (<a href="http://www.cise.ufl.edu/~dts/">Dave Small</a>)</li> | |
<li>ENC1102 - Argument and Persuasion</li> | |
<li>STA4321 - Introduction to Probability</li> | |
</ul></li> | |
<li class="uf">Spring 2005<ul> | |
<li>CEN3031 - Introduction to Software Engineering (<a href="http://www.cise.ufl.edu/~tyavuz/">Dr. Tuba Yavuz</a>)</li> | |
<li>COP4600 - Operating Systems (Dr. Rob Cubert)</li> | |
<li>WIS2040 - Wildlife Issues</li> | |
</ul></li> | |
<li class="uf">Fall 2004<ul> | |
<li>PHY2054 - Physics 2</li> | |
<li>MAS3114 - Computational Linear Algebra</li> | |
</ul></li> | |
<li class="uf">Summer 2004<ul> | |
<li>CDA3101 - Introduction to Computer Organization</li> | |
<li>COP3530 - Data Structures and Algorithms (<a href="http://www.cise.ufl.edu/~sahni/">Dr. Sartaj K. Sahni</a>)</li> | |
</ul></li> | |
<li class="uf">Spring 2004<ul> | |
<li>EEL3701C - <a href="http://mil.ufl.edu/4744/">Digital Logic and Computer Systems</a> (<a href="http://www.mil.ufl.edu/~ems/">Dr. Eric M. Schwartz</a>)</li> | |
<li>PHY4320 - Philosophy of Mind (<a href="http://www.clas.ufl.edu/users/gwitmer/">Dr. D. Gene Witmer</a>)</li> | |
<li>SPN1131 - Beginning Spanish 2</li> | |
</ul></li> | |
<li class="uf">Fall 2003<ul> | |
<li>PHI3130 - Symbolic Logic (<a href="http://faculty.arts.ubc.ca/maydede/">Dr. Murat Aydede</a>)</li> | |
<li>SPN1130 - Beginning Spanish 1</li> | |
</ul></li> | |
<li class="uf">Summer 2003<ul> | |
<li>COT3100 - Applied Discrete Structures</li> | |
<li>PHY2049L - Physics 2 Lab</li> | |
</ul></li> | |
<li class="uf">Spring 2003<ul> | |
<li>ENC2210 - Technical Writing</li> | |
<li>PHI3500 - Metaphysics (<a href="http://www.clas.ufl.edu/users/gwitmer/">Dr. D. Gene Witmer</a>)<ul> | |
<li>Paper: Redefenere Universalia - a proposed solution of the identification of universals through correlating the understanding of universals with Flat Landers</li></ul> | |
</li> | |
<li>PHY2048 - Physics 1</li> | |
<li>POS2041 - American Federal Government</li> | |
</ul></li> | |
<li class="uf">Fall 2002<ul> | |
<li>BSC2008 - Biological Sciences: Evolution, Ecology and Behavior</li> | |
<li>MAC2312 - Calculus 2</li> | |
<li>PHI2630 - Contemporary Moral Issues</li> | |
</ul></li> | |
<li class="uf">Summer 2002<ul> | |
<li>MAC2313 - Calculus 3</li> | |
<li>PHY2048L - Physics 1 Lab</li> | |
</ul></li> | |
<li class="uf">Spring 2002<ul> | |
<li>CGS2414 - Computer Programming Using Java (<a href="http://www.cise.ufl.edu/~pjd/">Peter J. Dobbins</a>)</li> | |
<li>CIS3020 - Advanced Programming Fundamentals/Intro to CIS</li> | |
</ul></li> | |
<li class="uf">Fall 2001<ul> | |
<li>CHM2045L - Chemistry 1 Lab</li> | |
<li>ENC1101 - Expositional and Argumentative Writing</li> | |
<li>MAC2311 - Calculus 1</li> | |
</ul></li> | |
<li>Spring 2001<ul> | |
<li>CHM2030 - Introduction to College Chemistry 1</li> | |
<li>CHM2030L - Introduction to College Chemistry 1 Lab</li> | |
</ul></li> | |
</ul> | |
<h3>Coursework Key</h3> | |
<ul> | |
<li class="oduphd">Doctor of Philosophy, Computer Science; Old Dominion University, Norfolk, Virginia, Expected 2016</li> | |
<li class="odu">Master of Science, Computer Science; Old Dominion University, Norfolk, Virginia, August 2012</li> | |
<li class="citadel">Coursework for Master of Science, Computer Science; The Citadel, Charleston, South Carolina</li> | |
<li class="uf">Bachelor of Science, Computer Science; University of Florida, Gainesville, Florida, June 2006</li> | |
</ul> | |
</section> | |
<section id="projects"> | |
<h2>Recent Software Projects</h2> | |
<ul> | |
<li><a href="https://github.com/oduwsdl/ipwb"><em>Interplanetary Wayback (ipwb)</em></a> - Integration of WARCs into IPFS for more redundant and persistent web archives</li> | |
<li><a href="https://github.com/thing342/mobilememento"><em>Mobile Mink</em></a> - Android application for aggregating and accessing mobile and desktop mementos</li> | |
<li><a href="https://github.com/machawk1/mink"><em>Mink</em></a> - Chrome extension to integrate the live and archived web using Memento</li> | |
<li><a href="https://github.com/machawk1/tachyon"><em>Tachyon</em></a> - Time travel for the web. Memento browser plugin for Google Chrome</li> | |
<li><a href="http://matkelly.com/wail"><em>Web Archiving Integration Layer (WAIL)</em></a> - One-Click User Instigated Preservation</li> | |
<li><a href="http://matkelly.com/warcreate"><em>WARCreate</em></a> - Google Chrome extension to allow a user to create a Web ARCive (WARC) file from any webpage.</li> | |
<li><a href="http://www.cs.odu.edu/~mkelly/reversearchiveit/reverseArchiveIt05102011.crx"><em>Reverse Archive-It</em></a> - Quick prototype to determine the collections to which a webpage has been associated by <a href="https://archive-it.org">Archive-It</a>. (<a href="http://www.cs.odu.edu/~mkelly/reversearchiveit/reverseArchiveItDemo.avi">video demo</a>)</li> | |
<li><a href="https://addons.mozilla.org/en-US/firefox/addon/archivefacebook/"><em>ArchiveFacebook</em></a> - Mozilla Firefox add-on to allow a user to easily download and save the contents of his/her Facebook profile.</li> | |
</ul> | |
</section> | |
<section id="contact"> | |
<h2>Contact</h2> | |
<ul> | |
<li>mkelly at cs.odu.edu (E-mail)</li> | |
<li><a href="https://twitter.com/machawk1" rel="me">@machawk1</a> (Twitter)</li> | |
<li><a href="https://github.com/machawk1" rel="me">GitHub</a></li> | |
<li><a href="http://orcid.org/0000-0002-0236-7389">orcid:0000-0002-0236-7389</a></li> | |
</ul> | |
<!--<p>Further information including employment history can be found at <a href="http://matkelly.com" rel="me">matkelly.com</a></p>--> | |
</section> | |
</body> | |
</html> | |
0 | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/style.css | |
Content-Type: application/http;msgtype=request | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-Record-ID: <urn:uuid:07217554-8c23-40e2-818d-e5a16c769e06> | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Block-Digest: sha1:OARAMBJHR4IKEMUZYAAKKEDCNLKH2NFZ | |
Content-Length: 199 | |
GET /~mkelly/style.css HTTP/1.1 | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
User-Agent: Wget/1.17.1 (linux-gnu) | |
Accept: */* | |
Accept-Encoding: identity | |
Host: www.cs.odu.edu | |
Connection: Keep-Alive | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Record-ID: <urn:uuid:683b27a5-6476-46b9-baa5-35382709016f> | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Concurrent-To: <urn:uuid:07217554-8c23-40e2-818d-e5a16c769e06> | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/style.css | |
WARC-Date: 2016-10-28T08:48:01Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Block-Digest: sha1:POSBV33TRNJCOEJFOPAAAQC2W5AYXSRA | |
WARC-Payload-Digest: sha1:IF3WVY5X4ZJOLI2BDY7UCSFY3O47GOKB | |
Content-Type: application/http;msgtype=response | |
Content-Length: 5499 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Fri, 28 Oct 2016 08:48:02 GMT | |
Content-Type: text/css | |
Content-Length: 5239 | |
Connection: keep-alive | |
Last-Modified: Wed, 05 Oct 2016 17:42:20 GMT | |
ETag: "1477-53e21b2e8d7e9" | |
Accept-Ranges: bytes | |
Vary: Accept-Encoding | |
body {background-color: white; font-size: 16px;} | |
header{font-family: sans-serif; margin-bottom: 1.0em;} | |
h1 {color: #031fc9;} | |
h1,h2,h3 {margin: 0; padding: 0;} | |
section {margin-right: 210px;} | |
img#mugShot {width: 200px; padding: 2px; border: 1px solid #003366; position: fixed; right: 5px; top: 5px; z-index: 2;} | |
li.uf {list-style-image: url(bullet_uf.png);} | |
li.odu {list-style-image: url(bullet_odu.png);} | |
li.citadel {list-style-image: url(bullet_citadel.png);} | |
li.oduphd {list-style-image: url(bullet_oduphd.png);} | |
ul li ul li {list-style-image: none;} /* only show icon for semesters, not courses */ | |
a {color: #031fc9;} | |
nav {position: fixed; right: 5px; top: 205px; text-align: center; z-index: 2;} | |
nav ul {list-style-type: none; width: 206px; } | |
nav ul#sections li {margin: 0; padding: 0; border-bottom: 1px dashed #003366;} | |
nav ul#sections li a {text-decoration: none; color: #031fc9; font-weight: bold; font-family: sans-serif; font-size: 0.8em; display: block;} | |
nav ul#sections li a:hover {color: white; background-color: #031fc9;} | |
nav ul#software {list-style-type: none; width: 70%; text-align: center; padding-left: 20px; display: block;} | |
nav ul#software li {float: left;} | |
nav ul#software li a {border: 0; display: block;} | |
nav ul#software li a img {width: 50px;} | |
nav ul li#cv {margin-top: 2.0em; font-size: 2.0em; border: 0;} | |
nav ul li#cv a {border: 1px solid #031fc9; border-radius: 10px; background-color: rgba(255,255,255,0.8);} | |
em.me {font-weight: bolder; font-style: normal;} | |
em.best {font-weight: bolder; color: red;} | |
#openMenu {display: none;} | |
/* Filtering of papers, posters, and presentations */ | |
#ppp {margin: 1.0em 0 1.0em 0; clear: both;} | |
#ppp_heading {float: left; margin-right: 2.0em;} | |
#ppp_filter {list-style-type: none; vertical-align: bottom;} | |
#ppp_filter li {float: left; margin-right: 1.0em; padding-top: 0.75em; border-bottom: 1px dashed blue; font-size: 0.8em;} | |
#ppp_filter li.ppp_active {border-bottom: 2px solid blue;} | |
#ppp_filter a:hover {cursor:pointer;} | |
#ppp .hidden {display: none;} | |
/* Adapted from http://stackoverflow.com/questions/8160514/is-there-css-for-typesetting-the-latex-logo-in-html */ | |
sub.texE {text-transform: uppercase; vertical-align: -0.5ex; margin-left: -0.1667em; margin-right: -0.125em; font-size: 1em; } | |
a.goToTop {display: none;} | |
@media only screen and (min-width: 100px) and (max-width: 650px) { | |
img#mugShot {position: relative; top: auto; right: auto; margin: 0 auto; display: block;} | |
header h1, header h2, header h3 {text-align: center;} | |
h1 {margin-top: 0.25em;} | |
h2 {width: 100%; white-space: nowrap; font-size: 1.25em;} | |
h3 {font-size: 0.8em;} | |
ul, li {padding-left: 0; margin-left: 0; width: 100%;} | |
nav {position: relative; text-align: left; top: auto; right: auto;} | |
nav ul#sections {margin: 1.0em 0 1.0em 0; padding: 0; width: 100%;} | |
nav ul#sections li {border-bottom: none; background-color: white; border-bottom: 1px solid #ddd;} | |
nav ul#sections:first-child {border-top: 1px solid #ddd;} | |
nav ul#sections li a {text-decoration: none; padding: 2px 0px;} | |
header {margin-bottom: 0;} | |
a.goToTop {display: inline; margin-left: 1.0em; font-size: 0.8em; color: white; background-color: blue; text-decoration: none; font-family: sans-serif; white-space: nowrap;} | |
section {width: 100%;} | |
section ul {list-style-type: none; margin-left: 0;} | |
section ul li {margin-bottom: 1.0em;} | |
section#courseworkHistory ul {list-style-type: disc; margin-left: 1.0em;} | |
section#courseworkHistory ul ul li {margin-bottom: 0;} | |
.pinned {background: linear-gradient(to bottom, rgba(255,255,255,1) 80%,rgba(255,255,255,0) 100%); position: fixed; z-index: 3; top: 0; width: 100%; padding-bottom: 1.5em;} | |
.pinned h1, .pinned h2, .pinned h3 {font-size: 1.0em; width: 100%;} | |
.pinned h2 {font-size: 0.8em;} | |
.pinned h3 {font-size: 0.6em;} | |
.pinned img#mugShot {position: absolute; width: 50px; height: 50px; left: 0px; top: 5px; border: 1px solid #031fc9; padding: 0;} | |
.pinned img#openMenu {z-index: 99;position: absolute; width: 24px; height: 24px; right: 0px; top: 5px; border: 1px solid #031fc9; padding: 0;} | |
nav.vertical {position: fixed; top: 10px; right: 5px; z-index: 100; } | |
nav.vertical ul#sections {} | |
nav.vertical li {transform: rotate(90deg); position: relative; clear: both; float: left; width: 115px; display: block; font-size: 1.0em; height: 115px; } | |
nav.vertical li a {height: 2.0em;} | |
nav.vertical ul#sections li {background-color: transparent; text-align: center;} | |
nav.vertical ul#sections:first-child {padding-left: 100px;} | |
section {position: relative; z-index: 2;} | |
nav ul li#cv {font-size: 1.0em; margin-top: 1.0em; border: 0; text-align center;} | |
nav ul li#cv a:before{content: '⇩ DOWNLOAD ';} | |
#ppp_filter {width: 100%;} | |
#ppp_filter li {padding: 0; margin: 0 0 0.5em 0; border: 1px solid white; width: 20%; text-align: center; height: 3.5em; display: inline-block; border-bottom: none; vertical-align: bottom;} | |
#ppp_filter li.ppp_active {background-color: #eee;} | |
#ppp_filter li a {padding: 1.0em 0 0 0; height: 100%; width: 100%; display: inline-block;} | |
#ppp_filter li:hover:not(.ppp_active) {border: 1px dotted blue;} | |
} | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html2canvas.js | |
Content-Type: application/http;msgtype=request | |
WARC-Date: 2016-10-28T08:48:02Z | |
WARC-Record-ID: <urn:uuid:263363c9-a5ee-4901-89dc-9e2088df8b59> | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Block-Digest: sha1:3FJEFUF3ODWT5XGE3QCVLNPXK3HB3TLZ | |
Content-Length: 208 | |
GET /~mkelly/_js/html2canvas.js HTTP/1.1 | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
User-Agent: Wget/1.17.1 (linux-gnu) | |
Accept: */* | |
Accept-Encoding: identity | |
Host: www.cs.odu.edu | |
Connection: Keep-Alive | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Record-ID: <urn:uuid:65f9e3e9-7d8d-4d04-b99b-c9d0752e4f82> | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Concurrent-To: <urn:uuid:263363c9-a5ee-4901-89dc-9e2088df8b59> | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/_js/html2canvas.js | |
WARC-Date: 2016-10-28T08:48:02Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Block-Digest: sha1:MTIJWIHMN6PGGGGNRU7VCDDRGUQMSQWG | |
WARC-Payload-Digest: sha1:K6X3TJQ6TVADTLVTMV2ZQGHFWNSLM46K | |
Content-Type: application/http;msgtype=response | |
Content-Length: 91763 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Fri, 28 Oct 2016 08:48:02 GMT | |
Content-Type: application/javascript | |
Content-Length: 91487 | |
Connection: keep-alive | |
Last-Modified: Thu, 16 Oct 2014 14:43:30 GMT | |
ETag: "1655f-5058b459c0891" | |
Accept-Ranges: bytes | |
Vary: Accept-Encoding | |
/* | |
html2canvas 0.4.1 <http://html2canvas.hertzen.com> | |
Copyright (c) 2013 Niklas von Hertzen | |
Released under MIT License | |
*/ | |
(function(window, document, undefined){ | |
"use strict"; | |
var _html2canvas = {}, | |
previousElement, | |
computedCSS, | |
html2canvas; | |
_html2canvas.Util = {}; | |
_html2canvas.Util.log = function(a) { | |
if (_html2canvas.logging && window.console && window.console.log) { | |
window.console.log(a); | |
} | |
}; | |
_html2canvas.Util.trimText = (function(isNative){ | |
return function(input) { | |
return isNative ? isNative.apply(input) : ((input || '') + '').replace( /^\s+|\s+$/g , '' ); | |
}; | |
})(String.prototype.trim); | |
_html2canvas.Util.asFloat = function(v) { | |
return parseFloat(v); | |
}; | |
(function() { | |
// TODO: support all possible length values | |
var TEXT_SHADOW_PROPERTY = /((rgba|rgb)\([^\)]+\)(\s-?\d+px){0,})/g; | |
var TEXT_SHADOW_VALUES = /(-?\d+px)|(#.+)|(rgb\(.+\))|(rgba\(.+\))/g; | |
_html2canvas.Util.parseTextShadows = function (value) { | |
if (!value || value === 'none') { | |
return []; | |
} | |
// find multiple shadow declarations | |
var shadows = value.match(TEXT_SHADOW_PROPERTY), | |
results = []; | |
for (var i = 0; shadows && (i < shadows.length); i++) { | |
var s = shadows[i].match(TEXT_SHADOW_VALUES); | |
results.push({ | |
color: s[0], | |
offsetX: s[1] ? s[1].replace('px', '') : 0, | |
offsetY: s[2] ? s[2].replace('px', '') : 0, | |
blur: s[3] ? s[3].replace('px', '') : 0 | |
}); | |
} | |
return results; | |
}; | |
})(); | |
_html2canvas.Util.parseBackgroundImage = function (value) { | |
var whitespace = ' \r\n\t', | |
method, definition, prefix, prefix_i, block, results = [], | |
c, mode = 0, numParen = 0, quote, args; | |
var appendResult = function(){ | |
if(method) { | |
if(definition.substr( 0, 1 ) === '"') { | |
definition = definition.substr( 1, definition.length - 2 ); | |
} | |
if(definition) { | |
args.push(definition); | |
} | |
if(method.substr( 0, 1 ) === '-' && | |
(prefix_i = method.indexOf( '-', 1 ) + 1) > 0) { | |
prefix = method.substr( 0, prefix_i); | |
method = method.substr( prefix_i ); | |
} | |
results.push({ | |
prefix: prefix, | |
method: method.toLowerCase(), | |
value: block, | |
args: args | |
}); | |
} | |
args = []; //for some odd reason, setting .length = 0 didn't work in safari | |
method = | |
prefix = | |
definition = | |
block = ''; | |
}; | |
appendResult(); | |
for(var i = 0, ii = value.length; i<ii; i++) { | |
c = value[i]; | |
if(mode === 0 && whitespace.indexOf( c ) > -1){ | |
continue; | |
} | |
switch(c) { | |
case '"': | |
if(!quote) { | |
quote = c; | |
} | |
else if(quote === c) { | |
quote = null; | |
} | |
break; | |
case '(': | |
if(quote) { break; } | |
else if(mode === 0) { | |
mode = 1; | |
block += c; | |
continue; | |
} else { | |
numParen++; | |
} | |
break; | |
case ')': | |
if(quote) { break; } | |
else if(mode === 1) { | |
if(numParen === 0) { | |
mode = 0; | |
block += c; | |
appendResult(); | |
continue; | |
} else { | |
numParen--; | |
} | |
} | |
break; | |
case ',': | |
if(quote) { break; } | |
else if(mode === 0) { | |
appendResult(); | |
continue; | |
} | |
else if (mode === 1) { | |
if(numParen === 0 && !method.match(/^url$/i)) { | |
args.push(definition); | |
definition = ''; | |
block += c; | |
continue; | |
} | |
} | |
break; | |
} | |
block += c; | |
if(mode === 0) { method += c; } | |
else { definition += c; } | |
} | |
appendResult(); | |
return results; | |
}; | |
_html2canvas.Util.Bounds = function (element) { | |
var clientRect, bounds = {}; | |
if (element.getBoundingClientRect){ | |
clientRect = element.getBoundingClientRect(); | |
// TODO add scroll position to bounds, so no scrolling of window necessary | |
bounds.top = clientRect.top; | |
bounds.bottom = clientRect.bottom || (clientRect.top + clientRect.height); | |
bounds.left = clientRect.left; | |
bounds.width = element.offsetWidth; | |
bounds.height = element.offsetHeight; | |
} | |
return bounds; | |
}; | |
// TODO ideally, we'd want everything to go through this function instead of Util.Bounds, | |
// but would require further work to calculate the correct positions for elements with offsetParents | |
_html2canvas.Util.OffsetBounds = function (element) { | |
var parent = element.offsetParent ? _html2canvas.Util.OffsetBounds(element.offsetParent) : {top: 0, left: 0}; | |
return { | |
top: element.offsetTop + parent.top, | |
bottom: element.offsetTop + element.offsetHeight + parent.top, | |
left: element.offsetLeft + parent.left, | |
width: element.offsetWidth, | |
height: element.offsetHeight | |
}; | |
}; | |
function toPX(element, attribute, value ) { | |
var rsLeft = element.runtimeStyle && element.runtimeStyle[attribute], | |
left, | |
style = element.style; | |
// Check if we are not dealing with pixels, (Opera has issues with this) | |
// Ported from jQuery css.js | |
// From the awesome hack by Dean Edwards | |
// http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291 | |
// If we're not dealing with a regular pixel number | |
// but a number that has a weird ending, we need to convert it to pixels | |
if ( !/^-?[0-9]+\.?[0-9]*(?:px)?$/i.test( value ) && /^-?\d/.test(value) ) { | |
// Remember the original values | |
left = style.left; | |
// Put in the new values to get a computed value out | |
if (rsLeft) { | |
element.runtimeStyle.left = element.currentStyle.left; | |
} | |
style.left = attribute === "fontSize" ? "1em" : (value || 0); | |
value = style.pixelLeft + "px"; | |
// Revert the changed values | |
style.left = left; | |
if (rsLeft) { | |
element.runtimeStyle.left = rsLeft; | |
} | |
} | |
if (!/^(thin|medium|thick)$/i.test(value)) { | |
return Math.round(parseFloat(value)) + "px"; | |
} | |
return value; | |
} | |
function asInt(val) { | |
return parseInt(val, 10); | |
} | |
function parseBackgroundSizePosition(value, element, attribute, index) { | |
value = (value || '').split(','); | |
value = value[index || 0] || value[0] || 'auto'; | |
value = _html2canvas.Util.trimText(value).split(' '); | |
if(attribute === 'backgroundSize' && (!value[0] || value[0].match(/cover|contain|auto/))) { | |
//these values will be handled in the parent function | |
} else { | |
value[0] = (value[0].indexOf( "%" ) === -1) ? toPX(element, attribute + "X", value[0]) : value[0]; | |
if(value[1] === undefined) { | |
if(attribute === 'backgroundSize') { | |
value[1] = 'auto'; | |
return value; | |
} else { | |
// IE 9 doesn't return double digit always | |
value[1] = value[0]; | |
} | |
} | |
value[1] = (value[1].indexOf("%") === -1) ? toPX(element, attribute + "Y", value[1]) : value[1]; | |
} | |
return value; | |
} | |
_html2canvas.Util.getCSS = function (element, attribute, index) { | |
if (previousElement !== element) { | |
computedCSS = document.defaultView.getComputedStyle(element, null); | |
} | |
var value = computedCSS[attribute]; | |
if (/^background(Size|Position)$/.test(attribute)) { | |
return parseBackgroundSizePosition(value, element, attribute, index); | |
} else if (/border(Top|Bottom)(Left|Right)Radius/.test(attribute)) { | |
var arr = value.split(" "); | |
if (arr.length <= 1) { | |
arr[1] = arr[0]; | |
} | |
return arr.map(asInt); | |
} | |
return value; | |
}; | |
_html2canvas.Util.resizeBounds = function( current_width, current_height, target_width, target_height, stretch_mode ){ | |
var target_ratio = target_width / target_height, | |
current_ratio = current_width / current_height, | |
output_width, output_height; | |
if(!stretch_mode || stretch_mode === 'auto') { | |
output_width = target_width; | |
output_height = target_height; | |
} else if(target_ratio < current_ratio ^ stretch_mode === 'contain') { | |
output_height = target_height; | |
output_width = target_height * current_ratio; | |
} else { | |
output_width = target_width; | |
output_height = target_width / current_ratio; | |
} | |
return { | |
width: output_width, | |
height: output_height | |
}; | |
}; | |
function backgroundBoundsFactory( prop, el, bounds, image, imageIndex, backgroundSize ) { | |
var bgposition = _html2canvas.Util.getCSS( el, prop, imageIndex ) , | |
topPos, | |
left, | |
percentage, | |
val; | |
if (bgposition.length === 1){ | |
val = bgposition[0]; | |
bgposition = []; | |
bgposition[0] = val; | |
bgposition[1] = val; | |
} | |
if (bgposition[0].toString().indexOf("%") !== -1){ | |
percentage = (parseFloat(bgposition[0])/100); | |
left = bounds.width * percentage; | |
if(prop !== 'backgroundSize') { | |
left -= (backgroundSize || image).width*percentage; | |
} | |
} else { | |
if(prop === 'backgroundSize') { | |
if(bgposition[0] === 'auto') { | |
left = image.width; | |
} else { | |
if (/contain|cover/.test(bgposition[0])) { | |
var resized = _html2canvas.Util.resizeBounds(image.width, image.height, bounds.width, bounds.height, bgposition[0]); | |
left = resized.width; | |
topPos = resized.height; | |
} else { | |
left = parseInt(bgposition[0], 10); | |
} | |
} | |
} else { | |
left = parseInt( bgposition[0], 10); | |
} | |
} | |
if(bgposition[1] === 'auto') { | |
topPos = left / image.width * image.height; | |
} else if (bgposition[1].toString().indexOf("%") !== -1){ | |
percentage = (parseFloat(bgposition[1])/100); | |
topPos = bounds.height * percentage; | |
if(prop !== 'backgroundSize') { | |
topPos -= (backgroundSize || image).height * percentage; | |
} | |
} else { | |
topPos = parseInt(bgposition[1],10); | |
} | |
return [left, topPos]; | |
} | |
_html2canvas.Util.BackgroundPosition = function( el, bounds, image, imageIndex, backgroundSize ) { | |
var result = backgroundBoundsFactory( 'backgroundPosition', el, bounds, image, imageIndex, backgroundSize ); | |
return { left: result[0], top: result[1] }; | |
}; | |
_html2canvas.Util.BackgroundSize = function( el, bounds, image, imageIndex ) { | |
var result = backgroundBoundsFactory( 'backgroundSize', el, bounds, image, imageIndex ); | |
return { width: result[0], height: result[1] }; | |
}; | |
_html2canvas.Util.Extend = function (options, defaults) { | |
for (var key in options) { | |
if (options.hasOwnProperty(key)) { | |
defaults[key] = options[key]; | |
} | |
} | |
return defaults; | |
}; | |
/* | |
* Derived from jQuery.contents() | |
* Copyright 2010, John Resig | |
* Dual licensed under the MIT or GPL Version 2 licenses. | |
* http://jquery.org/license | |
*/ | |
_html2canvas.Util.Children = function( elem ) { | |
var children; | |
try { | |
children = (elem.nodeName && elem.nodeName.toUpperCase() === "IFRAME") ? elem.contentDocument || elem.contentWindow.document : (function(array) { | |
var ret = []; | |
if (array !== null) { | |
(function(first, second ) { | |
var i = first.length, | |
j = 0; | |
if (typeof second.length === "number") { | |
for (var l = second.length; j < l; j++) { | |
first[i++] = second[j]; | |
} | |
} else { | |
while (second[j] !== undefined) { | |
first[i++] = second[j++]; | |
} | |
} | |
first.length = i; | |
return first; | |
})(ret, array); | |
} | |
return ret; | |
})(elem.childNodes); | |
} catch (ex) { | |
_html2canvas.Util.log("html2canvas.Util.Children failed with exception: " + ex.message); | |
children = []; | |
} | |
return children; | |
}; | |
_html2canvas.Util.isTransparent = function(backgroundColor) { | |
return (backgroundColor === "transparent" || backgroundColor === "rgba(0, 0, 0, 0)"); | |
}; | |
_html2canvas.Util.Font = (function () { | |
var fontData = {}; | |
return function(font, fontSize, doc) { | |
if (fontData[font + "-" + fontSize] !== undefined) { | |
return fontData[font + "-" + fontSize]; | |
} | |
var container = doc.createElement('div'), | |
img = doc.createElement('img'), | |
span = doc.createElement('span'), | |
sampleText = 'Hidden Text', | |
baseline, | |
middle, | |
metricsObj; | |
container.style.visibility = "hidden"; | |
container.style.fontFamily = font; | |
container.style.fontSize = fontSize; | |
container.style.margin = 0; | |
container.style.padding = 0; | |
doc.body.appendChild(container); | |
// http://probablyprogramming.com/2009/03/15/the-tiniest-gif-ever (handtinywhite.gif) | |
img.src = "data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACwAAAAAAQABAAACAkQBADs="; | |
img.width = 1; | |
img.height = 1; | |
img.style.margin = 0; | |
img.style.padding = 0; | |
img.style.verticalAlign = "baseline"; | |
span.style.fontFamily = font; | |
span.style.fontSize = fontSize; | |
span.style.margin = 0; | |
span.style.padding = 0; | |
span.appendChild(doc.createTextNode(sampleText)); | |
container.appendChild(span); | |
container.appendChild(img); | |
baseline = (img.offsetTop - span.offsetTop) + 1; | |
container.removeChild(span); | |
container.appendChild(doc.createTextNode(sampleText)); | |
container.style.lineHeight = "normal"; | |
img.style.verticalAlign = "super"; | |
middle = (img.offsetTop-container.offsetTop) + 1; | |
metricsObj = { | |
baseline: baseline, | |
lineWidth: 1, | |
middle: middle | |
}; | |
fontData[font + "-" + fontSize] = metricsObj; | |
doc.body.removeChild(container); | |
return metricsObj; | |
}; | |
})(); | |
(function(){ | |
var Util = _html2canvas.Util, | |
Generate = {}; | |
_html2canvas.Generate = Generate; | |
var reGradients = [ | |
/^(-webkit-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-o-linear-gradient)\(([a-z\s]+)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-webkit-gradient)\((linear|radial),\s((?:\d{1,3}%?)\s(?:\d{1,3}%?),\s(?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)\-]+)\)$/, | |
/^(-moz-linear-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?))([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-webkit-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-moz-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s?([a-z\-]*)([\w\d\.\s,%\(\)]+)\)$/, | |
/^(-o-radial-gradient)\(((?:\d{1,3}%?)\s(?:\d{1,3}%?)),\s(\w+)\s([a-z\-]+)([\w\d\.\s,%\(\)]+)\)$/ | |
]; | |
/* | |
* TODO: Add IE10 vendor prefix (-ms) support | |
* TODO: Add W3C gradient (linear-gradient) support | |
* TODO: Add old Webkit -webkit-gradient(radial, ...) support | |
* TODO: Maybe some RegExp optimizations are possible ;o) | |
*/ | |
Generate.parseGradient = function(css, bounds) { | |
var gradient, i, len = reGradients.length, m1, stop, m2, m2Len, step, m3, tl,tr,br,bl; | |
for(i = 0; i < len; i+=1){ | |
m1 = css.match(reGradients[i]); | |
if(m1) { | |
break; | |
} | |
} | |
if(m1) { | |
switch(m1[1]) { | |
case '-webkit-linear-gradient': | |
case '-o-linear-gradient': | |
gradient = { | |
type: 'linear', | |
x0: null, | |
y0: null, | |
x1: null, | |
y1: null, | |
colorStops: [] | |
}; | |
// get coordinates | |
m2 = m1[2].match(/\w+/g); | |
if(m2){ | |
m2Len = m2.length; | |
for(i = 0; i < m2Len; i+=1){ | |
switch(m2[i]) { | |
case 'top': | |
gradient.y0 = 0; | |
gradient.y1 = bounds.height; | |
break; | |
case 'right': | |
gradient.x0 = bounds.width; | |
gradient.x1 = 0; | |
break; | |
case 'bottom': | |
gradient.y0 = bounds.height; | |
gradient.y1 = 0; | |
break; | |
case 'left': | |
gradient.x0 = 0; | |
gradient.x1 = bounds.width; | |
break; | |
} | |
} | |
} | |
if(gradient.x0 === null && gradient.x1 === null){ // center | |
gradient.x0 = gradient.x1 = bounds.width / 2; | |
} | |
if(gradient.y0 === null && gradient.y1 === null){ // center | |
gradient.y0 = gradient.y1 = bounds.height / 2; | |
} | |
// get colors and stops | |
m2 = m1[3].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g); | |
if(m2){ | |
m2Len = m2.length; | |
step = 1 / Math.max(m2Len - 1, 1); | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/); | |
if(m3[2]){ | |
stop = parseFloat(m3[2]); | |
if(m3[3] === '%'){ | |
stop /= 100; | |
} else { // px - stupid opera | |
stop /= bounds.width; | |
} | |
} else { | |
stop = i * step; | |
} | |
gradient.colorStops.push({ | |
color: m3[1], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
case '-webkit-gradient': | |
gradient = { | |
type: m1[2] === 'radial' ? 'circle' : m1[2], // TODO: Add radial gradient support for older mozilla definitions | |
x0: 0, | |
y0: 0, | |
x1: 0, | |
y1: 0, | |
colorStops: [] | |
}; | |
// get coordinates | |
m2 = m1[3].match(/(\d{1,3})%?\s(\d{1,3})%?,\s(\d{1,3})%?\s(\d{1,3})%?/); | |
if(m2){ | |
gradient.x0 = (m2[1] * bounds.width) / 100; | |
gradient.y0 = (m2[2] * bounds.height) / 100; | |
gradient.x1 = (m2[3] * bounds.width) / 100; | |
gradient.y1 = (m2[4] * bounds.height) / 100; | |
} | |
// get colors and stops | |
m2 = m1[4].match(/((?:from|to|color-stop)\((?:[0-9\.]+,\s)?(?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)\))+/g); | |
if(m2){ | |
m2Len = m2.length; | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/(from|to|color-stop)\(([0-9\.]+)?(?:,\s)?((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\)/); | |
stop = parseFloat(m3[2]); | |
if(m3[1] === 'from') { | |
stop = 0.0; | |
} | |
if(m3[1] === 'to') { | |
stop = 1.0; | |
} | |
gradient.colorStops.push({ | |
color: m3[3], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
case '-moz-linear-gradient': | |
gradient = { | |
type: 'linear', | |
x0: 0, | |
y0: 0, | |
x1: 0, | |
y1: 0, | |
colorStops: [] | |
}; | |
// get coordinates | |
m2 = m1[2].match(/(\d{1,3})%?\s(\d{1,3})%?/); | |
// m2[1] == 0% -> left | |
// m2[1] == 50% -> center | |
// m2[1] == 100% -> right | |
// m2[2] == 0% -> top | |
// m2[2] == 50% -> center | |
// m2[2] == 100% -> bottom | |
if(m2){ | |
gradient.x0 = (m2[1] * bounds.width) / 100; | |
gradient.y0 = (m2[2] * bounds.height) / 100; | |
gradient.x1 = bounds.width - gradient.x0; | |
gradient.y1 = bounds.height - gradient.y0; | |
} | |
// get colors and stops | |
m2 = m1[3].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}%)?)+/g); | |
if(m2){ | |
m2Len = m2.length; | |
step = 1 / Math.max(m2Len - 1, 1); | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%)?/); | |
if(m3[2]){ | |
stop = parseFloat(m3[2]); | |
if(m3[3]){ // percentage | |
stop /= 100; | |
} | |
} else { | |
stop = i * step; | |
} | |
gradient.colorStops.push({ | |
color: m3[1], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
case '-webkit-radial-gradient': | |
case '-moz-radial-gradient': | |
case '-o-radial-gradient': | |
gradient = { | |
type: 'circle', | |
x0: 0, | |
y0: 0, | |
x1: bounds.width, | |
y1: bounds.height, | |
cx: 0, | |
cy: 0, | |
rx: 0, | |
ry: 0, | |
colorStops: [] | |
}; | |
// center | |
m2 = m1[2].match(/(\d{1,3})%?\s(\d{1,3})%?/); | |
if(m2){ | |
gradient.cx = (m2[1] * bounds.width) / 100; | |
gradient.cy = (m2[2] * bounds.height) / 100; | |
} | |
// size | |
m2 = m1[3].match(/\w+/); | |
m3 = m1[4].match(/[a-z\-]*/); | |
if(m2 && m3){ | |
switch(m3[0]){ | |
case 'farthest-corner': | |
case 'cover': // is equivalent to farthest-corner | |
case '': // mozilla removes "cover" from definition :( | |
tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
gradient.rx = gradient.ry = Math.max(tl, tr, br, bl); | |
break; | |
case 'closest-corner': | |
tl = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
tr = Math.sqrt(Math.pow(gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
br = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.y1 - gradient.cy, 2)); | |
bl = Math.sqrt(Math.pow(gradient.x1 - gradient.cx, 2) + Math.pow(gradient.cy, 2)); | |
gradient.rx = gradient.ry = Math.min(tl, tr, br, bl); | |
break; | |
case 'farthest-side': | |
if(m2[0] === 'circle'){ | |
gradient.rx = gradient.ry = Math.max( | |
gradient.cx, | |
gradient.cy, | |
gradient.x1 - gradient.cx, | |
gradient.y1 - gradient.cy | |
); | |
} else { // ellipse | |
gradient.type = m2[0]; | |
gradient.rx = Math.max( | |
gradient.cx, | |
gradient.x1 - gradient.cx | |
); | |
gradient.ry = Math.max( | |
gradient.cy, | |
gradient.y1 - gradient.cy | |
); | |
} | |
break; | |
case 'closest-side': | |
case 'contain': // is equivalent to closest-side | |
if(m2[0] === 'circle'){ | |
gradient.rx = gradient.ry = Math.min( | |
gradient.cx, | |
gradient.cy, | |
gradient.x1 - gradient.cx, | |
gradient.y1 - gradient.cy | |
); | |
} else { // ellipse | |
gradient.type = m2[0]; | |
gradient.rx = Math.min( | |
gradient.cx, | |
gradient.x1 - gradient.cx | |
); | |
gradient.ry = Math.min( | |
gradient.cy, | |
gradient.y1 - gradient.cy | |
); | |
} | |
break; | |
// TODO: add support for "30px 40px" sizes (webkit only) | |
} | |
} | |
// color stops | |
m2 = m1[5].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\)(?:\s\d{1,3}(?:%|px))?)+/g); | |
if(m2){ | |
m2Len = m2.length; | |
step = 1 / Math.max(m2Len - 1, 1); | |
for(i = 0; i < m2Len; i+=1){ | |
m3 = m2[i].match(/((?:rgb|rgba)\(\d{1,3},\s\d{1,3},\s\d{1,3}(?:,\s[0-9\.]+)?\))\s*(\d{1,3})?(%|px)?/); | |
if(m3[2]){ | |
stop = parseFloat(m3[2]); | |
if(m3[3] === '%'){ | |
stop /= 100; | |
} else { // px - stupid opera | |
stop /= bounds.width; | |
} | |
} else { | |
stop = i * step; | |
} | |
gradient.colorStops.push({ | |
color: m3[1], | |
stop: stop | |
}); | |
} | |
} | |
break; | |
} | |
} | |
return gradient; | |
}; | |
function addScrollStops(grad) { | |
return function(colorStop) { | |
try { | |
grad.addColorStop(colorStop.stop, colorStop.color); | |
} | |
catch(e) { | |
Util.log(['failed to add color stop: ', e, '; tried to add: ', colorStop]); | |
} | |
}; | |
} | |
Generate.Gradient = function(src, bounds) { | |
if(bounds.width === 0 || bounds.height === 0) { | |
return; | |
} | |
var canvas = document.createElement('canvas'), | |
ctx = canvas.getContext('2d'), | |
gradient, grad; | |
canvas.width = bounds.width; | |
canvas.height = bounds.height; | |
// TODO: add support for multi defined background gradients | |
gradient = _html2canvas.Generate.parseGradient(src, bounds); | |
if(gradient) { | |
switch(gradient.type) { | |
case 'linear': | |
grad = ctx.createLinearGradient(gradient.x0, gradient.y0, gradient.x1, gradient.y1); | |
gradient.colorStops.forEach(addScrollStops(grad)); | |
ctx.fillStyle = grad; | |
ctx.fillRect(0, 0, bounds.width, bounds.height); | |
break; | |
case 'circle': | |
grad = ctx.createRadialGradient(gradient.cx, gradient.cy, 0, gradient.cx, gradient.cy, gradient.rx); | |
gradient.colorStops.forEach(addScrollStops(grad)); | |
ctx.fillStyle = grad; | |
ctx.fillRect(0, 0, bounds.width, bounds.height); | |
break; | |
case 'ellipse': | |
var canvasRadial = document.createElement('canvas'), | |
ctxRadial = canvasRadial.getContext('2d'), | |
ri = Math.max(gradient.rx, gradient.ry), | |
di = ri * 2; | |
canvasRadial.width = canvasRadial.height = di; | |
grad = ctxRadial.createRadialGradient(gradient.rx, gradient.ry, 0, gradient.rx, gradient.ry, ri); | |
gradient.colorStops.forEach(addScrollStops(grad)); | |
ctxRadial.fillStyle = grad; | |
ctxRadial.fillRect(0, 0, di, di); | |
ctx.fillStyle = gradient.colorStops[gradient.colorStops.length - 1].color; | |
ctx.fillRect(0, 0, canvas.width, canvas.height); | |
ctx.drawImage(canvasRadial, gradient.cx - gradient.rx, gradient.cy - gradient.ry, 2 * gradient.rx, 2 * gradient.ry); | |
break; | |
} | |
} | |
return canvas; | |
}; | |
Generate.ListAlpha = function(number) { | |
var tmp = "", | |
modulus; | |
do { | |
modulus = number % 26; | |
tmp = String.fromCharCode((modulus) + 64) + tmp; | |
number = number / 26; | |
}while((number*26) > 26); | |
return tmp; | |
}; | |
Generate.ListRoman = function(number) { | |
var romanArray = ["M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"], | |
decimal = [1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1], | |
roman = "", | |
v, | |
len = romanArray.length; | |
if (number <= 0 || number >= 4000) { | |
return number; | |
} | |
for (v=0; v < len; v+=1) { | |
while (number >= decimal[v]) { | |
number -= decimal[v]; | |
roman += romanArray[v]; | |
} | |
} | |
return roman; | |
}; | |
})(); | |
function h2cRenderContext(width, height) { | |
var storage = []; | |
return { | |
storage: storage, | |
width: width, | |
height: height, | |
clip: function() { | |
storage.push({ | |
type: "function", | |
name: "clip", | |
'arguments': arguments | |
}); | |
}, | |
translate: function() { | |
storage.push({ | |
type: "function", | |
name: "translate", | |
'arguments': arguments | |
}); | |
}, | |
fill: function() { | |
storage.push({ | |
type: "function", | |
name: "fill", | |
'arguments': arguments | |
}); | |
}, | |
save: function() { | |
storage.push({ | |
type: "function", | |
name: "save", | |
'arguments': arguments | |
}); | |
}, | |
restore: function() { | |
storage.push({ | |
type: "function", | |
name: "restore", | |
'arguments': arguments | |
}); | |
}, | |
fillRect: function () { | |
storage.push({ | |
type: "function", | |
name: "fillRect", | |
'arguments': arguments | |
}); | |
}, | |
createPattern: function() { | |
storage.push({ | |
type: "function", | |
name: "createPattern", | |
'arguments': arguments | |
}); | |
}, | |
drawShape: function() { | |
var shape = []; | |
storage.push({ | |
type: "function", | |
name: "drawShape", | |
'arguments': shape | |
}); | |
return { | |
moveTo: function() { | |
shape.push({ | |
name: "moveTo", | |
'arguments': arguments | |
}); | |
}, | |
lineTo: function() { | |
shape.push({ | |
name: "lineTo", | |
'arguments': arguments | |
}); | |
}, | |
arcTo: function() { | |
shape.push({ | |
name: "arcTo", | |
'arguments': arguments | |
}); | |
}, | |
bezierCurveTo: function() { | |
shape.push({ | |
name: "bezierCurveTo", | |
'arguments': arguments | |
}); | |
}, | |
quadraticCurveTo: function() { | |
shape.push({ | |
name: "quadraticCurveTo", | |
'arguments': arguments | |
}); | |
} | |
}; | |
}, | |
drawImage: function () { | |
storage.push({ | |
type: "function", | |
name: "drawImage", | |
'arguments': arguments | |
}); | |
}, | |
fillText: function () { | |
storage.push({ | |
type: "function", | |
name: "fillText", | |
'arguments': arguments | |
}); | |
}, | |
setVariable: function (variable, value) { | |
storage.push({ | |
type: "variable", | |
name: variable, | |
'arguments': value | |
}); | |
return value; | |
} | |
}; | |
} | |
_html2canvas.Parse = function (images, options) { | |
window.scroll(0,0); | |
var element = (( options.elements === undefined ) ? document.body : options.elements[0]), // select body by default | |
numDraws = 0, | |
doc = element.ownerDocument, | |
Util = _html2canvas.Util, | |
support = Util.Support(options, doc), | |
ignoreElementsRegExp = new RegExp("(" + options.ignoreElements + ")"), | |
body = doc.body, | |
getCSS = Util.getCSS, | |
pseudoHide = "___html2canvas___pseudoelement", | |
hidePseudoElements = doc.createElement('style'); | |
hidePseudoElements.innerHTML = '.' + pseudoHide + '-before:before { content: "" !important; display: none !important; }' + | |
'.' + pseudoHide + '-after:after { content: "" !important; display: none !important; }'; | |
body.appendChild(hidePseudoElements); | |
images = images || {}; | |
function documentWidth () { | |
return Math.max( | |
Math.max(doc.body.scrollWidth, doc.documentElement.scrollWidth), | |
Math.max(doc.body.offsetWidth, doc.documentElement.offsetWidth), | |
Math.max(doc.body.clientWidth, doc.documentElement.clientWidth) | |
); | |
} | |
function documentHeight () { | |
return Math.max( | |
Math.max(doc.body.scrollHeight, doc.documentElement.scrollHeight), | |
Math.max(doc.body.offsetHeight, doc.documentElement.offsetHeight), | |
Math.max(doc.body.clientHeight, doc.documentElement.clientHeight) | |
); | |
} | |
function getCSSInt(element, attribute) { | |
var val = parseInt(getCSS(element, attribute), 10); | |
return (isNaN(val)) ? 0 : val; // borders in old IE are throwing 'medium' for demo.html | |
} | |
function renderRect (ctx, x, y, w, h, bgcolor) { | |
if (bgcolor !== "transparent"){ | |
ctx.setVariable("fillStyle", bgcolor); | |
ctx.fillRect(x, y, w, h); | |
numDraws+=1; | |
} | |
} | |
function capitalize(m, p1, p2) { | |
if (m.length > 0) { | |
return p1 + p2.toUpperCase(); | |
} | |
} | |
function textTransform (text, transform) { | |
switch(transform){ | |
case "lowercase": | |
return text.toLowerCase(); | |
case "capitalize": | |
return text.replace( /(^|\s|:|-|\(|\))([a-z])/g, capitalize); | |
case "uppercase": | |
return text.toUpperCase(); | |
default: | |
return text; | |
} | |
} | |
function noLetterSpacing(letter_spacing) { | |
return (/^(normal|none|0px)$/.test(letter_spacing)); | |
} | |
function drawText(currentText, x, y, ctx){ | |
if (currentText !== null && Util.trimText(currentText).length > 0) { | |
ctx.fillText(currentText, x, y); | |
numDraws+=1; | |
} | |
} | |
function setTextVariables(ctx, el, text_decoration, color) { | |
var align = false, | |
bold = getCSS(el, "fontWeight"), | |
family = getCSS(el, "fontFamily"), | |
size = getCSS(el, "fontSize"), | |
shadows = Util.parseTextShadows(getCSS(el, "textShadow")); | |
switch(parseInt(bold, 10)){ | |
case 401: | |
bold = "bold"; | |
break; | |
case 400: | |
bold = "normal"; | |
break; | |
} | |
ctx.setVariable("fillStyle", color); | |
ctx.setVariable("font", [getCSS(el, "fontStyle"), getCSS(el, "fontVariant"), bold, size, family].join(" ")); | |
ctx.setVariable("textAlign", (align) ? "right" : "left"); | |
if (shadows.length) { | |
// TODO: support multiple text shadows | |
// apply the first text shadow | |
ctx.setVariable("shadowColor", shadows[0].color); | |
ctx.setVariable("shadowOffsetX", shadows[0].offsetX); | |
ctx.setVariable("shadowOffsetY", shadows[0].offsetY); | |
ctx.setVariable("shadowBlur", shadows[0].blur); | |
} | |
if (text_decoration !== "none"){ | |
return Util.Font(family, size, doc); | |
} | |
} | |
function renderTextDecoration(ctx, text_decoration, bounds, metrics, color) { | |
switch(text_decoration) { | |
case "underline": | |
// Draws a line at the baseline of the font | |
// TODO As some browsers display the line as more than 1px if the font-size is big, need to take that into account both in position and size | |
renderRect(ctx, bounds.left, Math.round(bounds.top + metrics.baseline + metrics.lineWidth), bounds.width, 1, color); | |
break; | |
case "overline": | |
renderRect(ctx, bounds.left, Math.round(bounds.top), bounds.width, 1, color); | |
break; | |
case "line-through": | |
// TODO try and find exact position for line-through | |
renderRect(ctx, bounds.left, Math.ceil(bounds.top + metrics.middle + metrics.lineWidth), bounds.width, 1, color); | |
break; | |
} | |
} | |
function getTextBounds(state, text, textDecoration, isLast, transform) { | |
var bounds; | |
if (support.rangeBounds && !transform) { | |
if (textDecoration !== "none" || Util.trimText(text).length !== 0) { | |
bounds = textRangeBounds(text, state.node, state.textOffset); | |
} | |
state.textOffset += text.length; | |
} else if (state.node && typeof state.node.nodeValue === "string" ){ | |
var newTextNode = (isLast) ? state.node.splitText(text.length) : null; | |
bounds = textWrapperBounds(state.node, transform); | |
state.node = newTextNode; | |
} | |
return bounds; | |
} | |
function textRangeBounds(text, textNode, textOffset) { | |
var range = doc.createRange(); | |
range.setStart(textNode, textOffset); | |
range.setEnd(textNode, textOffset + text.length); | |
return range.getBoundingClientRect(); | |
} | |
function textWrapperBounds(oldTextNode, transform) { | |
var parent = oldTextNode.parentNode, | |
wrapElement = doc.createElement('wrapper'), | |
backupText = oldTextNode.cloneNode(true); | |
wrapElement.appendChild(oldTextNode.cloneNode(true)); | |
parent.replaceChild(wrapElement, oldTextNode); | |
var bounds = transform ? Util.OffsetBounds(wrapElement) : Util.Bounds(wrapElement); | |
parent.replaceChild(backupText, wrapElement); | |
return bounds; | |
} | |
function renderText(el, textNode, stack) { | |
var ctx = stack.ctx, | |
color = getCSS(el, "color"), | |
textDecoration = getCSS(el, "textDecoration"), | |
textAlign = getCSS(el, "textAlign"), | |
metrics, | |
textList, | |
state = { | |
node: textNode, | |
textOffset: 0 | |
}; | |
if (Util.trimText(textNode.nodeValue).length > 0) { | |
textNode.nodeValue = textTransform(textNode.nodeValue, getCSS(el, "textTransform")); | |
textAlign = textAlign.replace(["-webkit-auto"],["auto"]); | |
textList = (!options.letterRendering && /^(left|right|justify|auto)$/.test(textAlign) && noLetterSpacing(getCSS(el, "letterSpacing"))) ? | |
textNode.nodeValue.split(/(\b| )/) | |
: textNode.nodeValue.split(""); | |
metrics = setTextVariables(ctx, el, textDecoration, color); | |
if (options.chinese) { | |
textList.forEach(function(word, index) { | |
if (/.*[\u4E00-\u9FA5].*$/.test(word)) { | |
word = word.split(""); | |
word.unshift(index, 1); | |
textList.splice.apply(textList, word); | |
} | |
}); | |
} | |
textList.forEach(function(text, index) { | |
var bounds = getTextBounds(state, text, textDecoration, (index < textList.length - 1), stack.transform.matrix); | |
if (bounds) { | |
drawText(text, bounds.left, bounds.bottom, ctx); | |
renderTextDecoration(ctx, textDecoration, bounds, metrics, color); | |
} | |
}); | |
} | |
} | |
function listPosition (element, val) { | |
var boundElement = doc.createElement( "boundelement" ), | |
originalType, | |
bounds; | |
boundElement.style.display = "inline"; | |
originalType = element.style.listStyleType; | |
element.style.listStyleType = "none"; | |
boundElement.appendChild(doc.createTextNode(val)); | |
element.insertBefore(boundElement, element.firstChild); | |
bounds = Util.Bounds(boundElement); | |
element.removeChild(boundElement); | |
element.style.listStyleType = originalType; | |
return bounds; | |
} | |
function elementIndex(el) { | |
var i = -1, | |
count = 1, | |
childs = el.parentNode.childNodes; | |
if (el.parentNode) { | |
while(childs[++i] !== el) { | |
if (childs[i].nodeType === 1) { | |
count++; | |
} | |
} | |
return count; | |
} else { | |
return -1; | |
} | |
} | |
function listItemText(element, type) { | |
var currentIndex = elementIndex(element), text; | |
switch(type){ | |
case "decimal": | |
text = currentIndex; | |
break; | |
case "decimal-leading-zero": | |
text = (currentIndex.toString().length === 1) ? currentIndex = "0" + currentIndex.toString() : currentIndex.toString(); | |
break; | |
case "upper-roman": | |
text = _html2canvas.Generate.ListRoman( currentIndex ); | |
break; | |
case "lower-roman": | |
text = _html2canvas.Generate.ListRoman( currentIndex ).toLowerCase(); | |
break; | |
case "lower-alpha": | |
text = _html2canvas.Generate.ListAlpha( currentIndex ).toLowerCase(); | |
break; | |
case "upper-alpha": | |
text = _html2canvas.Generate.ListAlpha( currentIndex ); | |
break; | |
} | |
return text + ". "; | |
} | |
function renderListItem(element, stack, elBounds) { | |
var x, | |
text, | |
ctx = stack.ctx, | |
type = getCSS(element, "listStyleType"), | |
listBounds; | |
if (/^(decimal|decimal-leading-zero|upper-alpha|upper-latin|upper-roman|lower-alpha|lower-greek|lower-latin|lower-roman)$/i.test(type)) { | |
text = listItemText(element, type); | |
listBounds = listPosition(element, text); | |
setTextVariables(ctx, element, "none", getCSS(element, "color")); | |
if (getCSS(element, "listStylePosition") === "inside") { | |
ctx.setVariable("textAlign", "left"); | |
x = elBounds.left; | |
} else { | |
return; | |
} | |
drawText(text, x, listBounds.bottom, ctx); | |
} | |
} | |
function loadImage (src){ | |
var img = images[src]; | |
return (img && img.succeeded === true) ? img.img : false; | |
} | |
function clipBounds(src, dst){ | |
var x = Math.max(src.left, dst.left), | |
y = Math.max(src.top, dst.top), | |
x2 = Math.min((src.left + src.width), (dst.left + dst.width)), | |
y2 = Math.min((src.top + src.height), (dst.top + dst.height)); | |
return { | |
left:x, | |
top:y, | |
width:x2-x, | |
height:y2-y | |
}; | |
} | |
function setZ(element, stack, parentStack){ | |
var newContext, | |
isPositioned = stack.cssPosition !== 'static', | |
zIndex = isPositioned ? getCSS(element, 'zIndex') : 'auto', | |
opacity = getCSS(element, 'opacity'), | |
isFloated = getCSS(element, 'cssFloat') !== 'none'; | |
// https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Understanding_z_index/The_stacking_context | |
// When a new stacking context should be created: | |
// the root element (HTML), | |
// positioned (absolutely or relatively) with a z-index value other than "auto", | |
// elements with an opacity value less than 1. (See the specification for opacity), | |
// on mobile WebKit and Chrome 22+, position: fixed always creates a new stacking context, even when z-index is "auto" (See this post) | |
stack.zIndex = newContext = h2czContext(zIndex); | |
newContext.isPositioned = isPositioned; | |
newContext.isFloated = isFloated; | |
newContext.opacity = opacity; | |
newContext.ownStacking = (zIndex !== 'auto' || opacity < 1); | |
if (parentStack) { | |
parentStack.zIndex.children.push(stack); | |
} | |
} | |
function renderImage(ctx, element, image, bounds, borders) { | |
var paddingLeft = getCSSInt(element, 'paddingLeft'), | |
paddingTop = getCSSInt(element, 'paddingTop'), | |
paddingRight = getCSSInt(element, 'paddingRight'), | |
paddingBottom = getCSSInt(element, 'paddingBottom'); | |
drawImage( | |
ctx, | |
image, | |
0, //sx | |
0, //sy | |
image.width, //sw | |
image.height, //sh | |
bounds.left + paddingLeft + borders[3].width, //dx | |
bounds.top + paddingTop + borders[0].width, // dy | |
bounds.width - (borders[1].width + borders[3].width + paddingLeft + paddingRight), //dw | |
bounds.height - (borders[0].width + borders[2].width + paddingTop + paddingBottom) //dh | |
); | |
} | |
function getBorderData(element) { | |
return ["Top", "Right", "Bottom", "Left"].map(function(side) { | |
return { | |
width: getCSSInt(element, 'border' + side + 'Width'), | |
color: getCSS(element, 'border' + side + 'Color') | |
}; | |
}); | |
} | |
function getBorderRadiusData(element) { | |
return ["TopLeft", "TopRight", "BottomRight", "BottomLeft"].map(function(side) { | |
return getCSS(element, 'border' + side + 'Radius'); | |
}); | |
} | |
var getCurvePoints = (function(kappa) { | |
return function(x, y, r1, r2) { | |
var ox = (r1) * kappa, // control point offset horizontal | |
oy = (r2) * kappa, // control point offset vertical | |
xm = x + r1, // x-middle | |
ym = y + r2; // y-middle | |
return { | |
topLeft: bezierCurve({ | |
x:x, | |
y:ym | |
}, { | |
x:x, | |
y:ym - oy | |
}, { | |
x:xm - ox, | |
y:y | |
}, { | |
x:xm, | |
y:y | |
}), | |
topRight: bezierCurve({ | |
x:x, | |
y:y | |
}, { | |
x:x + ox, | |
y:y | |
}, { | |
x:xm, | |
y:ym - oy | |
}, { | |
x:xm, | |
y:ym | |
}), | |
bottomRight: bezierCurve({ | |
x:xm, | |
y:y | |
}, { | |
x:xm, | |
y:y + oy | |
}, { | |
x:x + ox, | |
y:ym | |
}, { | |
x:x, | |
y:ym | |
}), | |
bottomLeft: bezierCurve({ | |
x:xm, | |
y:ym | |
}, { | |
x:xm - ox, | |
y:ym | |
}, { | |
x:x, | |
y:y + oy | |
}, { | |
x:x, | |
y:y | |
}) | |
}; | |
}; | |
})(4 * ((Math.sqrt(2) - 1) / 3)); | |
function bezierCurve(start, startControl, endControl, end) { | |
var lerp = function (a, b, t) { | |
return { | |
x:a.x + (b.x - a.x) * t, | |
y:a.y + (b.y - a.y) * t | |
}; | |
}; | |
return { | |
start: start, | |
startControl: startControl, | |
endControl: endControl, | |
end: end, | |
subdivide: function(t) { | |
var ab = lerp(start, startControl, t), | |
bc = lerp(startControl, endControl, t), | |
cd = lerp(endControl, end, t), | |
abbc = lerp(ab, bc, t), | |
bccd = lerp(bc, cd, t), | |
dest = lerp(abbc, bccd, t); | |
return [bezierCurve(start, ab, abbc, dest), bezierCurve(dest, bccd, cd, end)]; | |
}, | |
curveTo: function(borderArgs) { | |
borderArgs.push(["bezierCurve", startControl.x, startControl.y, endControl.x, endControl.y, end.x, end.y]); | |
}, | |
curveToReversed: function(borderArgs) { | |
borderArgs.push(["bezierCurve", endControl.x, endControl.y, startControl.x, startControl.y, start.x, start.y]); | |
} | |
}; | |
} | |
function parseCorner(borderArgs, radius1, radius2, corner1, corner2, x, y) { | |
if (radius1[0] > 0 || radius1[1] > 0) { | |
borderArgs.push(["line", corner1[0].start.x, corner1[0].start.y]); | |
corner1[0].curveTo(borderArgs); | |
corner1[1].curveTo(borderArgs); | |
} else { | |
borderArgs.push(["line", x, y]); | |
} | |
if (radius2[0] > 0 || radius2[1] > 0) { | |
borderArgs.push(["line", corner2[0].start.x, corner2[0].start.y]); | |
} | |
} | |
function drawSide(borderData, radius1, radius2, outer1, inner1, outer2, inner2) { | |
var borderArgs = []; | |
if (radius1[0] > 0 || radius1[1] > 0) { | |
borderArgs.push(["line", outer1[1].start.x, outer1[1].start.y]); | |
outer1[1].curveTo(borderArgs); | |
} else { | |
borderArgs.push([ "line", borderData.c1[0], borderData.c1[1]]); | |
} | |
if (radius2[0] > 0 || radius2[1] > 0) { | |
borderArgs.push(["line", outer2[0].start.x, outer2[0].start.y]); | |
outer2[0].curveTo(borderArgs); | |
borderArgs.push(["line", inner2[0].end.x, inner2[0].end.y]); | |
inner2[0].curveToReversed(borderArgs); | |
} else { | |
borderArgs.push([ "line", borderData.c2[0], borderData.c2[1]]); | |
borderArgs.push([ "line", borderData.c3[0], borderData.c3[1]]); | |
} | |
if (radius1[0] > 0 || radius1[1] > 0) { | |
borderArgs.push(["line", inner1[1].end.x, inner1[1].end.y]); | |
inner1[1].curveToReversed(borderArgs); | |
} else { | |
borderArgs.push([ "line", borderData.c4[0], borderData.c4[1]]); | |
} | |
return borderArgs; | |
} | |
function calculateCurvePoints(bounds, borderRadius, borders) { | |
var x = bounds.left, | |
y = bounds.top, | |
width = bounds.width, | |
height = bounds.height, | |
tlh = borderRadius[0][0], | |
tlv = borderRadius[0][1], | |
trh = borderRadius[1][0], | |
trv = borderRadius[1][1], | |
brh = borderRadius[2][0], | |
brv = borderRadius[2][1], | |
blh = borderRadius[3][0], | |
blv = borderRadius[3][1], | |
topWidth = width - trh, | |
rightHeight = height - brv, | |
bottomWidth = width - brh, | |
leftHeight = height - blv; | |
return { | |
topLeftOuter: getCurvePoints( | |
x, | |
y, | |
tlh, | |
tlv | |
).topLeft.subdivide(0.5), | |
topLeftInner: getCurvePoints( | |
x + borders[3].width, | |
y + borders[0].width, | |
Math.max(0, tlh - borders[3].width), | |
Math.max(0, tlv - borders[0].width) | |
).topLeft.subdivide(0.5), | |
topRightOuter: getCurvePoints( | |
x + topWidth, | |
y, | |
trh, | |
trv | |
).topRight.subdivide(0.5), | |
topRightInner: getCurvePoints( | |
x + Math.min(topWidth, width + borders[3].width), | |
y + borders[0].width, | |
(topWidth > width + borders[3].width) ? 0 :trh - borders[3].width, | |
trv - borders[0].width | |
).topRight.subdivide(0.5), | |
bottomRightOuter: getCurvePoints( | |
x + bottomWidth, | |
y + rightHeight, | |
brh, | |
brv | |
).bottomRight.subdivide(0.5), | |
bottomRightInner: getCurvePoints( | |
x + Math.min(bottomWidth, width + borders[3].width), | |
y + Math.min(rightHeight, height + borders[0].width), | |
Math.max(0, brh - borders[1].width), | |
Math.max(0, brv - borders[2].width) | |
).bottomRight.subdivide(0.5), | |
bottomLeftOuter: getCurvePoints( | |
x, | |
y + leftHeight, | |
blh, | |
blv | |
).bottomLeft.subdivide(0.5), | |
bottomLeftInner: getCurvePoints( | |
x + borders[3].width, | |
y + leftHeight, | |
Math.max(0, blh - borders[3].width), | |
Math.max(0, blv - borders[2].width) | |
).bottomLeft.subdivide(0.5) | |
}; | |
} | |
function getBorderClip(element, borderPoints, borders, radius, bounds) { | |
var backgroundClip = getCSS(element, 'backgroundClip'), | |
borderArgs = []; | |
switch(backgroundClip) { | |
case "content-box": | |
case "padding-box": | |
parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftInner, borderPoints.topRightInner, bounds.left + borders[3].width, bounds.top + borders[0].width); | |
parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightInner, borderPoints.bottomRightInner, bounds.left + bounds.width - borders[1].width, bounds.top + borders[0].width); | |
parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightInner, borderPoints.bottomLeftInner, bounds.left + bounds.width - borders[1].width, bounds.top + bounds.height - borders[2].width); | |
parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftInner, borderPoints.topLeftInner, bounds.left + borders[3].width, bounds.top + bounds.height - borders[2].width); | |
break; | |
default: | |
parseCorner(borderArgs, radius[0], radius[1], borderPoints.topLeftOuter, borderPoints.topRightOuter, bounds.left, bounds.top); | |
parseCorner(borderArgs, radius[1], radius[2], borderPoints.topRightOuter, borderPoints.bottomRightOuter, bounds.left + bounds.width, bounds.top); | |
parseCorner(borderArgs, radius[2], radius[3], borderPoints.bottomRightOuter, borderPoints.bottomLeftOuter, bounds.left + bounds.width, bounds.top + bounds.height); | |
parseCorner(borderArgs, radius[3], radius[0], borderPoints.bottomLeftOuter, borderPoints.topLeftOuter, bounds.left, bounds.top + bounds.height); | |
break; | |
} | |
return borderArgs; | |
} | |
function parseBorders(element, bounds, borders){ | |
var x = bounds.left, | |
y = bounds.top, | |
width = bounds.width, | |
height = bounds.height, | |
borderSide, | |
bx, | |
by, | |
bw, | |
bh, | |
borderArgs, | |
// http://www.w3.org/TR/css3-background/#the-border-radius | |
borderRadius = getBorderRadiusData(element), | |
borderPoints = calculateCurvePoints(bounds, borderRadius, borders), | |
borderData = { | |
clip: getBorderClip(element, borderPoints, borders, borderRadius, bounds), | |
borders: [] | |
}; | |
for (borderSide = 0; borderSide < 4; borderSide++) { | |
if (borders[borderSide].width > 0) { | |
bx = x; | |
by = y; | |
bw = width; | |
bh = height - (borders[2].width); | |
switch(borderSide) { | |
case 0: | |
// top border | |
bh = borders[0].width; | |
borderArgs = drawSide({ | |
c1: [bx, by], | |
c2: [bx + bw, by], | |
c3: [bx + bw - borders[1].width, by + bh], | |
c4: [bx + borders[3].width, by + bh] | |
}, borderRadius[0], borderRadius[1], | |
borderPoints.topLeftOuter, borderPoints.topLeftInner, borderPoints.topRightOuter, borderPoints.topRightInner); | |
break; | |
case 1: | |
// right border | |
bx = x + width - (borders[1].width); | |
bw = borders[1].width; | |
borderArgs = drawSide({ | |
c1: [bx + bw, by], | |
c2: [bx + bw, by + bh + borders[2].width], | |
c3: [bx, by + bh], | |
c4: [bx, by + borders[0].width] | |
}, borderRadius[1], borderRadius[2], | |
borderPoints.topRightOuter, borderPoints.topRightInner, borderPoints.bottomRightOuter, borderPoints.bottomRightInner); | |
break; | |
case 2: | |
// bottom border | |
by = (by + height) - (borders[2].width); | |
bh = borders[2].width; | |
borderArgs = drawSide({ | |
c1: [bx + bw, by + bh], | |
c2: [bx, by + bh], | |
c3: [bx + borders[3].width, by], | |
c4: [bx + bw - borders[3].width, by] | |
}, borderRadius[2], borderRadius[3], | |
borderPoints.bottomRightOuter, borderPoints.bottomRightInner, borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner); | |
break; | |
case 3: | |
// left border | |
bw = borders[3].width; | |
borderArgs = drawSide({ | |
c1: [bx, by + bh + borders[2].width], | |
c2: [bx, by], | |
c3: [bx + bw, by + borders[0].width], | |
c4: [bx + bw, by + bh] | |
}, borderRadius[3], borderRadius[0], | |
borderPoints.bottomLeftOuter, borderPoints.bottomLeftInner, borderPoints.topLeftOuter, borderPoints.topLeftInner); | |
break; | |
} | |
borderData.borders.push({ | |
args: borderArgs, | |
color: borders[borderSide].color | |
}); | |
} | |
} | |
return borderData; | |
} | |
function createShape(ctx, args) { | |
var shape = ctx.drawShape(); | |
args.forEach(function(border, index) { | |
shape[(index === 0) ? "moveTo" : border[0] + "To" ].apply(null, border.slice(1)); | |
}); | |
return shape; | |
} | |
function renderBorders(ctx, borderArgs, color) { | |
if (color !== "transparent") { | |
ctx.setVariable( "fillStyle", color); | |
createShape(ctx, borderArgs); | |
ctx.fill(); | |
numDraws+=1; | |
} | |
} | |
function renderFormValue (el, bounds, stack){ | |
var valueWrap = doc.createElement('valuewrap'), | |
cssPropertyArray = ['lineHeight','textAlign','fontFamily','color','fontSize','paddingLeft','paddingTop','width','height','border','borderLeftWidth','borderTopWidth'], | |
textValue, | |
textNode; | |
cssPropertyArray.forEach(function(property) { | |
try { | |
valueWrap.style[property] = getCSS(el, property); | |
} catch(e) { | |
// Older IE has issues with "border" | |
Util.log("html2canvas: Parse: Exception caught in renderFormValue: " + e.message); | |
} | |
}); | |
valueWrap.style.borderColor = "black"; | |
valueWrap.style.borderStyle = "solid"; | |
valueWrap.style.display = "block"; | |
valueWrap.style.position = "absolute"; | |
if (/^(submit|reset|button|text|password)$/.test(el.type) || el.nodeName === "SELECT"){ | |
valueWrap.style.lineHeight = getCSS(el, "height"); | |
} | |
valueWrap.style.top = bounds.top + "px"; | |
valueWrap.style.left = bounds.left + "px"; | |
textValue = (el.nodeName === "SELECT") ? (el.options[el.selectedIndex] || 0).text : el.value; | |
if(!textValue) { | |
textValue = el.placeholder; | |
} | |
textNode = doc.createTextNode(textValue); | |
valueWrap.appendChild(textNode); | |
body.appendChild(valueWrap); | |
renderText(el, textNode, stack); | |
body.removeChild(valueWrap); | |
} | |
function drawImage (ctx) { | |
ctx.drawImage.apply(ctx, Array.prototype.slice.call(arguments, 1)); | |
numDraws+=1; | |
} | |
function getPseudoElement(el, which) { | |
var elStyle = window.getComputedStyle(el, which); | |
if(!elStyle || !elStyle.content || elStyle.content === "none" || elStyle.content === "-moz-alt-content" || elStyle.display === "none") { | |
return; | |
} | |
var content = elStyle.content + '', | |
first = content.substr( 0, 1 ); | |
//strips quotes | |
if(first === content.substr( content.length - 1 ) && first.match(/'|"/)) { | |
content = content.substr( 1, content.length - 2 ); | |
} | |
var isImage = content.substr( 0, 3 ) === 'url', | |
elps = document.createElement( isImage ? 'img' : 'span' ); | |
elps.className = pseudoHide + "-before " + pseudoHide + "-after"; | |
Object.keys(elStyle).filter(indexedProperty).forEach(function(prop) { | |
// Prevent assigning of read only CSS Rules, ex. length, parentRule | |
try { | |
elps.style[prop] = elStyle[prop]; | |
} catch (e) { | |
Util.log(['Tried to assign readonly property ', prop, 'Error:', e]); | |
} | |
}); | |
if(isImage) { | |
elps.src = Util.parseBackgroundImage(content)[0].args[0]; | |
} else { | |
elps.innerHTML = content; | |
} | |
return elps; | |
} | |
function indexedProperty(property) { | |
return (isNaN(window.parseInt(property, 10))); | |
} | |
function injectPseudoElements(el, stack) { | |
var before = getPseudoElement(el, ':before'), | |
after = getPseudoElement(el, ':after'); | |
if(!before && !after) { | |
return; | |
} | |
if(before) { | |
el.className += " " + pseudoHide + "-before"; | |
el.parentNode.insertBefore(before, el); | |
parseElement(before, stack, true); | |
el.parentNode.removeChild(before); | |
el.className = el.className.replace(pseudoHide + "-before", "").trim(); | |
} | |
if (after) { | |
el.className += " " + pseudoHide + "-after"; | |
el.appendChild(after); | |
parseElement(after, stack, true); | |
el.removeChild(after); | |
el.className = el.className.replace(pseudoHide + "-after", "").trim(); | |
} | |
} | |
function renderBackgroundRepeat(ctx, image, backgroundPosition, bounds) { | |
var offsetX = Math.round(bounds.left + backgroundPosition.left), | |
offsetY = Math.round(bounds.top + backgroundPosition.top); | |
ctx.createPattern(image); | |
ctx.translate(offsetX, offsetY); | |
ctx.fill(); | |
ctx.translate(-offsetX, -offsetY); | |
} | |
function backgroundRepeatShape(ctx, image, backgroundPosition, bounds, left, top, width, height) { | |
var args = []; | |
args.push(["line", Math.round(left), Math.round(top)]); | |
args.push(["line", Math.round(left + width), Math.round(top)]); | |
args.push(["line", Math.round(left + width), Math.round(height + top)]); | |
args.push(["line", Math.round(left), Math.round(height + top)]); | |
createShape(ctx, args); | |
ctx.save(); | |
ctx.clip(); | |
renderBackgroundRepeat(ctx, image, backgroundPosition, bounds); | |
ctx.restore(); | |
} | |
function renderBackgroundColor(ctx, backgroundBounds, bgcolor) { | |
renderRect( | |
ctx, | |
backgroundBounds.left, | |
backgroundBounds.top, | |
backgroundBounds.width, | |
backgroundBounds.height, | |
bgcolor | |
); | |
} | |
function renderBackgroundRepeating(el, bounds, ctx, image, imageIndex) { | |
var backgroundSize = Util.BackgroundSize(el, bounds, image, imageIndex), | |
backgroundPosition = Util.BackgroundPosition(el, bounds, image, imageIndex, backgroundSize), | |
backgroundRepeat = getCSS(el, "backgroundRepeat").split(",").map(Util.trimText); | |
image = resizeImage(image, backgroundSize); | |
backgroundRepeat = backgroundRepeat[imageIndex] || backgroundRepeat[0]; | |
switch (backgroundRepeat) { | |
case "repeat-x": | |
backgroundRepeatShape(ctx, image, backgroundPosition, bounds, | |
bounds.left, bounds.top + backgroundPosition.top, 99999, image.height); | |
break; | |
case "repeat-y": | |
backgroundRepeatShape(ctx, image, backgroundPosition, bounds, | |
bounds.left + backgroundPosition.left, bounds.top, image.width, 99999); | |
break; | |
case "no-repeat": | |
backgroundRepeatShape(ctx, image, backgroundPosition, bounds, | |
bounds.left + backgroundPosition.left, bounds.top + backgroundPosition.top, image.width, image.height); | |
break; | |
default: | |
renderBackgroundRepeat(ctx, image, backgroundPosition, { | |
top: bounds.top, | |
left: bounds.left, | |
width: image.width, | |
height: image.height | |
}); | |
break; | |
} | |
} | |
function renderBackgroundImage(element, bounds, ctx) { | |
var backgroundImage = getCSS(element, "backgroundImage"), | |
backgroundImages = Util.parseBackgroundImage(backgroundImage), | |
image, | |
imageIndex = backgroundImages.length; | |
while(imageIndex--) { | |
backgroundImage = backgroundImages[imageIndex]; | |
if (!backgroundImage.args || backgroundImage.args.length === 0) { | |
continue; | |
} | |
var key = backgroundImage.method === 'url' ? | |
backgroundImage.args[0] : | |
backgroundImage.value; | |
image = loadImage(key); | |
// TODO add support for background-origin | |
if (image) { | |
renderBackgroundRepeating(element, bounds, ctx, image, imageIndex); | |
} else { | |
Util.log("html2canvas: Error loading background:", backgroundImage); | |
} | |
} | |
} | |
function resizeImage(image, bounds) { | |
if(image.width === bounds.width && image.height === bounds.height) { | |
return image; | |
} | |
var ctx, canvas = doc.createElement('canvas'); | |
canvas.width = bounds.width; | |
canvas.height = bounds.height; | |
ctx = canvas.getContext("2d"); | |
drawImage(ctx, image, 0, 0, image.width, image.height, 0, 0, bounds.width, bounds.height ); | |
return canvas; | |
} | |
function setOpacity(ctx, element, parentStack) { | |
return ctx.setVariable("globalAlpha", getCSS(element, "opacity") * ((parentStack) ? parentStack.opacity : 1)); | |
} | |
function removePx(str) { | |
return str.replace("px", ""); | |
} | |
var transformRegExp = /(matrix)\((.+)\)/; | |
function getTransform(element, parentStack) { | |
var transform = getCSS(element, "transform") || getCSS(element, "-webkit-transform") || getCSS(element, "-moz-transform") || getCSS(element, "-ms-transform") || getCSS(element, "-o-transform"); | |
var transformOrigin = getCSS(element, "transform-origin") || getCSS(element, "-webkit-transform-origin") || getCSS(element, "-moz-transform-origin") || getCSS(element, "-ms-transform-origin") || getCSS(element, "-o-transform-origin") || "0px 0px"; | |
transformOrigin = transformOrigin.split(" ").map(removePx).map(Util.asFloat); | |
var matrix; | |
if (transform && transform !== "none") { | |
var match = transform.match(transformRegExp); | |
if (match) { | |
switch(match[1]) { | |
case "matrix": | |
matrix = match[2].split(",").map(Util.trimText).map(Util.asFloat); | |
break; | |
} | |
} | |
} | |
return { | |
origin: transformOrigin, | |
matrix: matrix | |
}; | |
} | |
function createStack(element, parentStack, bounds, transform) { | |
var ctx = h2cRenderContext((!parentStack) ? documentWidth() : bounds.width , (!parentStack) ? documentHeight() : bounds.height), | |
stack = { | |
ctx: ctx, | |
opacity: setOpacity(ctx, element, parentStack), | |
cssPosition: getCSS(element, "position"), | |
borders: getBorderData(element), | |
transform: transform, | |
clip: (parentStack && parentStack.clip) ? Util.Extend( {}, parentStack.clip ) : null | |
}; | |
setZ(element, stack, parentStack); | |
// TODO correct overflow for absolute content residing under a static position | |
if (options.useOverflow === true && /(hidden|scroll|auto)/.test(getCSS(element, "overflow")) === true && /(BODY)/i.test(element.nodeName) === false){ | |
stack.clip = (stack.clip) ? clipBounds(stack.clip, bounds) : bounds; | |
} | |
return stack; | |
} | |
function getBackgroundBounds(borders, bounds, clip) { | |
var backgroundBounds = { | |
left: bounds.left + borders[3].width, | |
top: bounds.top + borders[0].width, | |
width: bounds.width - (borders[1].width + borders[3].width), | |
height: bounds.height - (borders[0].width + borders[2].width) | |
}; | |
if (clip) { | |
backgroundBounds = clipBounds(backgroundBounds, clip); | |
} | |
return backgroundBounds; | |
} | |
function getBounds(element, transform) { | |
var bounds = (transform.matrix) ? Util.OffsetBounds(element) : Util.Bounds(element); | |
transform.origin[0] += bounds.left; | |
transform.origin[1] += bounds.top; | |
return bounds; | |
} | |
function renderElement(element, parentStack, pseudoElement, ignoreBackground) { | |
var transform = getTransform(element, parentStack), | |
bounds = getBounds(element, transform), | |
image, | |
stack = createStack(element, parentStack, bounds, transform), | |
borders = stack.borders, | |
ctx = stack.ctx, | |
backgroundBounds = getBackgroundBounds(borders, bounds, stack.clip), | |
borderData = parseBorders(element, bounds, borders), | |
backgroundColor = (ignoreElementsRegExp.test(element.nodeName)) ? "#efefef" : getCSS(element, "backgroundColor"); | |
createShape(ctx, borderData.clip); | |
ctx.save(); | |
ctx.clip(); | |
if (backgroundBounds.height > 0 && backgroundBounds.width > 0 && !ignoreBackground) { | |
renderBackgroundColor(ctx, bounds, backgroundColor); | |
renderBackgroundImage(element, backgroundBounds, ctx); | |
} else if (ignoreBackground) { | |
stack.backgroundColor = backgroundColor; | |
} | |
ctx.restore(); | |
borderData.borders.forEach(function(border) { | |
renderBorders(ctx, border.args, border.color); | |
}); | |
if (!pseudoElement) { | |
injectPseudoElements(element, stack); | |
} | |
switch(element.nodeName){ | |
case "IMG": | |
if ((image = loadImage(element.getAttribute('src')))) { | |
renderImage(ctx, element, image, bounds, borders); | |
} else { | |
Util.log("html2canvas: Error loading <img>:" + element.getAttribute('src')); | |
} | |
break; | |
case "INPUT": | |
// TODO add all relevant type's, i.e. HTML5 new stuff | |
// todo add support for placeholder attribute for browsers which support it | |
if (/^(text|url|email|submit|button|reset)$/.test(element.type) && (element.value || element.placeholder || "").length > 0){ | |
renderFormValue(element, bounds, stack); | |
} | |
break; | |
case "TEXTAREA": | |
if ((element.value || element.placeholder || "").length > 0){ | |
renderFormValue(element, bounds, stack); | |
} | |
break; | |
case "SELECT": | |
if ((element.options||element.placeholder || "").length > 0){ | |
renderFormValue(element, bounds, stack); | |
} | |
break; | |
case "LI": | |
renderListItem(element, stack, backgroundBounds); | |
break; | |
case "CANVAS": | |
renderImage(ctx, element, element, bounds, borders); | |
break; | |
} | |
return stack; | |
} | |
function isElementVisible(element) { | |
return (getCSS(element, 'display') !== "none" && getCSS(element, 'visibility') !== "hidden" && !element.hasAttribute("data-html2canvas-ignore")); | |
} | |
function parseElement (element, stack, pseudoElement) { | |
if (isElementVisible(element)) { | |
stack = renderElement(element, stack, pseudoElement, false) || stack; | |
if (!ignoreElementsRegExp.test(element.nodeName)) { | |
parseChildren(element, stack, pseudoElement); | |
} | |
} | |
} | |
function parseChildren(element, stack, pseudoElement) { | |
Util.Children(element).forEach(function(node) { | |
if (node.nodeType === node.ELEMENT_NODE) { | |
parseElement(node, stack, pseudoElement); | |
} else if (node.nodeType === node.TEXT_NODE) { | |
renderText(element, node, stack); | |
} | |
}); | |
} | |
function init() { | |
var background = getCSS(document.documentElement, "backgroundColor"), | |
transparentBackground = (Util.isTransparent(background) && element === document.body), | |
stack = renderElement(element, null, false, transparentBackground); | |
parseChildren(element, stack); | |
if (transparentBackground) { | |
background = stack.backgroundColor; | |
} | |
body.removeChild(hidePseudoElements); | |
return { | |
backgroundColor: background, | |
stack: stack | |
}; | |
} | |
return init(); | |
}; | |
function h2czContext(zindex) { | |
return { | |
zindex: zindex, | |
children: [] | |
}; | |
} | |
_html2canvas.Preload = function( options ) { | |
var images = { | |
numLoaded: 0, // also failed are counted here | |
numFailed: 0, | |
numTotal: 0, | |
cleanupDone: false | |
}, | |
pageOrigin, | |
Util = _html2canvas.Util, | |
methods, | |
i, | |
count = 0, | |
element = options.elements[0] || document.body, | |
doc = element.ownerDocument, | |
domImages = element.getElementsByTagName('img'), // Fetch images of the present element only | |
imgLen = domImages.length, | |
link = doc.createElement("a"), | |
supportCORS = (function( img ){ | |
return (img.crossOrigin !== undefined); | |
})(new Image()), | |
timeoutTimer; | |
link.href = window.location.href; | |
pageOrigin = link.protocol + link.host; | |
function isSameOrigin(url){ | |
link.href = url; | |
link.href = link.href; // YES, BELIEVE IT OR NOT, that is required for IE9 - http://jsfiddle.net/niklasvh/2e48b/ | |
var origin = link.protocol + link.host; | |
return (origin === pageOrigin); | |
} | |
function start(){ | |
Util.log("html2canvas: start: images: " + images.numLoaded + " / " + images.numTotal + " (failed: " + images.numFailed + ")"); | |
if (!images.firstRun && images.numLoaded >= images.numTotal){ | |
Util.log("Finished loading images: # " + images.numTotal + " (failed: " + images.numFailed + ")"); | |
if (typeof options.complete === "function"){ | |
options.complete(images); | |
} | |
} | |
} | |
// TODO modify proxy to serve images with CORS enabled, where available | |
function proxyGetImage(url, img, imageObj){ | |
var callback_name, | |
scriptUrl = options.proxy, | |
script; | |
link.href = url; | |
url = link.href; // work around for pages with base href="" set - WARNING: this may change the url | |
callback_name = 'html2canvas_' + (count++); | |
imageObj.callbackname = callback_name; | |
if (scriptUrl.indexOf("?") > -1) { | |
scriptUrl += "&"; | |
} else { | |
scriptUrl += "?"; | |
} | |
scriptUrl += 'url=' + encodeURIComponent(url) + '&callback=' + callback_name; | |
script = doc.createElement("script"); | |
window[callback_name] = function(a){ | |
if (a.substring(0,6) === "error:"){ | |
imageObj.succeeded = false; | |
images.numLoaded++; | |
images.numFailed++; | |
start(); | |
} else { | |
setImageLoadHandlers(img, imageObj); | |
img.src = a; | |
} | |
window[callback_name] = undefined; // to work with IE<9 // NOTE: that the undefined callback property-name still exists on the window object (for IE<9) | |
try { | |
delete window[callback_name]; // for all browser that support this | |
} catch(ex) {} | |
script.parentNode.removeChild(script); | |
script = null; | |
delete imageObj.script; | |
delete imageObj.callbackname; | |
}; | |
script.setAttribute("type", "text/javascript"); | |
script.setAttribute("src", scriptUrl); | |
imageObj.script = script; | |
window.document.body.appendChild(script); | |
} | |
function loadPseudoElement(element, type) { | |
var style = window.getComputedStyle(element, type), | |
content = style.content; | |
if (content.substr(0, 3) === 'url') { | |
methods.loadImage(_html2canvas.Util.parseBackgroundImage(content)[0].args[0]); | |
} | |
loadBackgroundImages(style.backgroundImage, element); | |
} | |
function loadPseudoElementImages(element) { | |
loadPseudoElement(element, ":before"); | |
loadPseudoElement(element, ":after"); | |
} | |
function loadGradientImage(backgroundImage, bounds) { | |
var img = _html2canvas.Generate.Gradient(backgroundImage, bounds); | |
if (img !== undefined){ | |
images[backgroundImage] = { | |
img: img, | |
succeeded: true | |
}; | |
images.numTotal++; | |
images.numLoaded++; | |
start(); | |
} | |
} | |
function invalidBackgrounds(background_image) { | |
return (background_image && background_image.method && background_image.args && background_image.args.length > 0 ); | |
} | |
function loadBackgroundImages(background_image, el) { | |
var bounds; | |
_html2canvas.Util.parseBackgroundImage(background_image).filter(invalidBackgrounds).forEach(function(background_image) { | |
if (background_image.method === 'url') { | |
methods.loadImage(background_image.args[0]); | |
} else if(background_image.method.match(/\-?gradient$/)) { | |
if(bounds === undefined) { | |
bounds = _html2canvas.Util.Bounds(el); | |
} | |
loadGradientImage(background_image.value, bounds); | |
} | |
}); | |
} | |
function getImages (el) { | |
var elNodeType = false; | |
// Firefox fails with permission denied on pages with iframes | |
try { | |
Util.Children(el).forEach(getImages); | |
} | |
catch( e ) {} | |
try { | |
elNodeType = el.nodeType; | |
} catch (ex) { | |
elNodeType = false; | |
Util.log("html2canvas: failed to access some element's nodeType - Exception: " + ex.message); | |
} | |
if (elNodeType === 1 || elNodeType === undefined) { | |
loadPseudoElementImages(el); | |
try { | |
loadBackgroundImages(Util.getCSS(el, 'backgroundImage'), el); | |
} catch(e) { | |
Util.log("html2canvas: failed to get background-image - Exception: " + e.message); | |
} | |
loadBackgroundImages(el); | |
} | |
} | |
function setImageLoadHandlers(img, imageObj) { | |
img.onload = function() { | |
if ( imageObj.timer !== undefined ) { | |
// CORS succeeded | |
window.clearTimeout( imageObj.timer ); | |
} | |
images.numLoaded++; | |
imageObj.succeeded = true; | |
img.onerror = img.onload = null; | |
start(); | |
}; | |
img.onerror = function() { | |
if (img.crossOrigin === "anonymous") { | |
// CORS failed | |
window.clearTimeout( imageObj.timer ); | |
// let's try with proxy instead | |
if ( options.proxy ) { | |
var src = img.src; | |
img = new Image(); | |
imageObj.img = img; | |
img.src = src; | |
proxyGetImage( img.src, img, imageObj ); | |
return; | |
} | |
} | |
images.numLoaded++; | |
images.numFailed++; | |
imageObj.succeeded = false; | |
img.onerror = img.onload = null; | |
start(); | |
}; | |
} | |
methods = { | |
loadImage: function( src ) { | |
var img, imageObj; | |
if ( src && images[src] === undefined ) { | |
img = new Image(); | |
if ( src.match(/data:image\/.*;base64,/i) ) { | |
img.src = src.replace(/url\(['"]{0,}|['"]{0,}\)$/ig, ''); | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
setImageLoadHandlers(img, imageObj); | |
} else if ( isSameOrigin( src ) || options.allowTaint === true ) { | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
setImageLoadHandlers(img, imageObj); | |
img.src = src; | |
} else if ( supportCORS && !options.allowTaint && options.useCORS ) { | |
// attempt to load with CORS | |
img.crossOrigin = "anonymous"; | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
setImageLoadHandlers(img, imageObj); | |
img.src = src; | |
} else if ( options.proxy ) { | |
imageObj = images[src] = { | |
img: img | |
}; | |
images.numTotal++; | |
proxyGetImage( src, img, imageObj ); | |
} | |
} | |
}, | |
cleanupDOM: function(cause) { | |
var img, src; | |
if (!images.cleanupDone) { | |
if (cause && typeof cause === "string") { | |
Util.log("html2canvas: Cleanup because: " + cause); | |
} else { | |
Util.log("html2canvas: Cleanup after timeout: " + options.timeout + " ms."); | |
} | |
for (src in images) { | |
if (images.hasOwnProperty(src)) { | |
img = images[src]; | |
if (typeof img === "object" && img.callbackname && img.succeeded === undefined) { | |
// cancel proxy image request | |
window[img.callbackname] = undefined; // to work with IE<9 // NOTE: that the undefined callback property-name still exists on the window object (for IE<9) | |
try { | |
delete window[img.callbackname]; // for all browser that support this | |
} catch(ex) {} | |
if (img.script && img.script.parentNode) { | |
img.script.setAttribute("src", "about:blank"); // try to cancel running request | |
img.script.parentNode.removeChild(img.script); | |
} | |
images.numLoaded++; | |
images.numFailed++; | |
Util.log("html2canvas: Cleaned up failed img: '" + src + "' Steps: " + images.numLoaded + " / " + images.numTotal); | |
} | |
} | |
} | |
// cancel any pending requests | |
if(window.stop !== undefined) { | |
window.stop(); | |
} else if(document.execCommand !== undefined) { | |
document.execCommand("Stop", false); | |
} | |
if (document.close !== undefined) { | |
document.close(); | |
} | |
images.cleanupDone = true; | |
if (!(cause && typeof cause === "string")) { | |
start(); | |
} | |
} | |
}, | |
renderingDone: function() { | |
if (timeoutTimer) { | |
window.clearTimeout(timeoutTimer); | |
} | |
} | |
}; | |
if (options.timeout > 0) { | |
timeoutTimer = window.setTimeout(methods.cleanupDOM, options.timeout); | |
} | |
Util.log('html2canvas: Preload starts: finding background-images'); | |
images.firstRun = true; | |
getImages(element); | |
Util.log('html2canvas: Preload: Finding images'); | |
// load <img> images | |
for (i = 0; i < imgLen; i+=1){ | |
methods.loadImage( domImages[i].getAttribute( "src" ) ); | |
} | |
images.firstRun = false; | |
Util.log('html2canvas: Preload: Done.'); | |
if (images.numTotal === images.numLoaded) { | |
start(); | |
} | |
return methods; | |
}; | |
_html2canvas.Renderer = function(parseQueue, options){ | |
// http://www.w3.org/TR/CSS21/zindex.html | |
function createRenderQueue(parseQueue) { | |
var queue = [], | |
rootContext; | |
rootContext = (function buildStackingContext(rootNode) { | |
var rootContext = {}; | |
function insert(context, node, specialParent) { | |
var zi = (node.zIndex.zindex === 'auto') ? 0 : Number(node.zIndex.zindex), | |
contextForChildren = context, // the stacking context for children | |
isPositioned = node.zIndex.isPositioned, | |
isFloated = node.zIndex.isFloated, | |
stub = {node: node}, | |
childrenDest = specialParent; // where children without z-index should be pushed into | |
if (node.zIndex.ownStacking) { | |
// '!' comes before numbers in sorted array | |
contextForChildren = stub.context = { '!': [{node:node, children: []}]}; | |
childrenDest = undefined; | |
} else if (isPositioned || isFloated) { | |
childrenDest = stub.children = []; | |
} | |
if (zi === 0 && specialParent) { | |
specialParent.push(stub); | |
} else { | |
if (!context[zi]) { context[zi] = []; } | |
context[zi].push(stub); | |
} | |
node.zIndex.children.forEach(function(childNode) { | |
insert(contextForChildren, childNode, childrenDest); | |
}); | |
} | |
insert(rootContext, rootNode); | |
return rootContext; | |
})(parseQueue); | |
function sortZ(context) { | |
Object.keys(context).sort().forEach(function(zi) { | |
var nonPositioned = [], | |
floated = [], | |
positioned = [], | |
list = []; | |
// positioned after static | |
context[zi].forEach(function(v) { | |
if (v.node.zIndex.isPositioned || v.node.zIndex.opacity < 1) { | |
// http://www.w3.org/TR/css3-color/#transparency | |
// non-positioned element with opactiy < 1 should be stacked as if it were a positioned element with ‘z-index: 0’ and ‘opacity: 1’. | |
positioned.push(v); | |
} else if (v.node.zIndex.isFloated) { | |
floated.push(v); | |
} else { | |
nonPositioned.push(v); | |
} | |
}); | |
(function walk(arr) { | |
arr.forEach(function(v) { | |
list.push(v); | |
if (v.children) { walk(v.children); } | |
}); | |
})(nonPositioned.concat(floated, positioned)); | |
list.forEach(function(v) { | |
if (v.context) { | |
sortZ(v.context); | |
} else { | |
queue.push(v.node); | |
} | |
}); | |
}); | |
} | |
sortZ(rootContext); | |
return queue; | |
} | |
function getRenderer(rendererName) { | |
var renderer; | |
if (typeof options.renderer === "string" && _html2canvas.Renderer[rendererName] !== undefined) { | |
renderer = _html2canvas.Renderer[rendererName](options); | |
} else if (typeof rendererName === "function") { | |
renderer = rendererName(options); | |
} else { | |
throw new Error("Unknown renderer"); | |
} | |
if ( typeof renderer !== "function" ) { | |
throw new Error("Invalid renderer defined"); | |
} | |
return renderer; | |
} | |
return getRenderer(options.renderer)(parseQueue, options, document, createRenderQueue(parseQueue.stack), _html2canvas); | |
}; | |
_html2canvas.Util.Support = function (options, doc) { | |
function supportSVGRendering() { | |
var img = new Image(), | |
canvas = doc.createElement("canvas"), | |
ctx = (canvas.getContext === undefined) ? false : canvas.getContext("2d"); | |
if (ctx === false) { | |
return false; | |
} | |
canvas.width = canvas.height = 10; | |
img.src = [ | |
"data:image/svg+xml,", | |
"<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10'>", | |
"<foreignObject width='10' height='10'>", | |
"<div xmlns='http://www.w3.org/1999/xhtml' style='width:10;height:10;'>", | |
"sup", | |
"</div>", | |
"</foreignObject>", | |
"</svg>" | |
].join(""); | |
try { | |
ctx.drawImage(img, 0, 0); | |
canvas.toDataURL(); | |
} catch(e) { | |
return false; | |
} | |
_html2canvas.Util.log('html2canvas: Parse: SVG powered rendering available'); | |
return true; | |
} | |
// Test whether we can use ranges to measure bounding boxes | |
// Opera doesn't provide valid bounds.height/bottom even though it supports the method. | |
function supportRangeBounds() { | |
var r, testElement, rangeBounds, rangeHeight, support = false; | |
if (doc.createRange) { | |
r = doc.createRange(); | |
if (r.getBoundingClientRect) { | |
testElement = doc.createElement('boundtest'); | |
testElement.style.height = "123px"; | |
testElement.style.display = "block"; | |
doc.body.appendChild(testElement); | |
r.selectNode(testElement); | |
rangeBounds = r.getBoundingClientRect(); | |
rangeHeight = rangeBounds.height; | |
if (rangeHeight === 123) { | |
support = true; | |
} | |
doc.body.removeChild(testElement); | |
} | |
} | |
return support; | |
} | |
return { | |
rangeBounds: supportRangeBounds(), | |
svgRendering: options.svgRendering && supportSVGRendering() | |
}; | |
}; | |
window.html2canvas = function(elements, opts) { | |
elements = (elements.length) ? elements : [elements]; | |
var queue, | |
canvas, | |
options = { | |
// general | |
logging: false, | |
elements: elements, | |
background: "#fff", | |
// preload options | |
proxy: null, | |
timeout: 0, // no timeout | |
useCORS: false, // try to load images as CORS (where available), before falling back to proxy | |
allowTaint: false, // whether to allow images to taint the canvas, won't need proxy if set to true | |
// parse options | |
svgRendering: false, // use svg powered rendering where available (FF11+) | |
ignoreElements: "IFRAME|OBJECT|PARAM", | |
useOverflow: true, | |
letterRendering: false, | |
chinese: false, | |
// render options | |
width: null, | |
height: null, | |
taintTest: true, // do a taint test with all images before applying to canvas | |
renderer: "Canvas" | |
}; | |
options = _html2canvas.Util.Extend(opts, options); | |
_html2canvas.logging = options.logging; | |
options.complete = function( images ) { | |
if (typeof options.onpreloaded === "function") { | |
if ( options.onpreloaded( images ) === false ) { | |
return; | |
} | |
} | |
queue = _html2canvas.Parse( images, options ); | |
if (typeof options.onparsed === "function") { | |
if ( options.onparsed( queue ) === false ) { | |
return; | |
} | |
} | |
canvas = _html2canvas.Renderer( queue, options ); | |
if (typeof options.onrendered === "function") { | |
options.onrendered( canvas ); | |
} | |
}; | |
// for pages without images, we still want this to be async, i.e. return methods before executing | |
window.setTimeout( function(){ | |
_html2canvas.Preload( options ); | |
}, 0 ); | |
return { | |
render: function( queue, opts ) { | |
return _html2canvas.Renderer( queue, _html2canvas.Util.Extend(opts, options) ); | |
}, | |
parse: function( images, opts ) { | |
return _html2canvas.Parse( images, _html2canvas.Util.Extend(opts, options) ); | |
}, | |
preload: function( opts ) { | |
return _html2canvas.Preload( _html2canvas.Util.Extend(opts, options) ); | |
}, | |
log: _html2canvas.Util.log | |
}; | |
}; | |
window.html2canvas.log = _html2canvas.Util.log; // for renderers | |
window.html2canvas.Renderer = { | |
Canvas: undefined // We are assuming this will be used | |
}; | |
_html2canvas.Renderer.Canvas = function(options) { | |
options = options || {}; | |
var doc = document, | |
safeImages = [], | |
testCanvas = document.createElement("canvas"), | |
testctx = testCanvas.getContext("2d"), | |
Util = _html2canvas.Util, | |
canvas = options.canvas || doc.createElement('canvas'); | |
function createShape(ctx, args) { | |
ctx.beginPath(); | |
args.forEach(function(arg) { | |
ctx[arg.name].apply(ctx, arg['arguments']); | |
}); | |
ctx.closePath(); | |
} | |
function safeImage(item) { | |
if (safeImages.indexOf(item['arguments'][0].src ) === -1) { | |
testctx.drawImage(item['arguments'][0], 0, 0); | |
try { | |
testctx.getImageData(0, 0, 1, 1); | |
} catch(e) { | |
testCanvas = doc.createElement("canvas"); | |
testctx = testCanvas.getContext("2d"); | |
return false; | |
} | |
safeImages.push(item['arguments'][0].src); | |
} | |
return true; | |
} | |
function renderItem(ctx, item) { | |
switch(item.type){ | |
case "variable": | |
ctx[item.name] = item['arguments']; | |
break; | |
case "function": | |
switch(item.name) { | |
case "createPattern": | |
if (item['arguments'][0].width > 0 && item['arguments'][0].height > 0) { | |
try { | |
ctx.fillStyle = ctx.createPattern(item['arguments'][0], "repeat"); | |
} | |
catch(e) { | |
Util.log("html2canvas: Renderer: Error creating pattern", e.message); | |
} | |
} | |
break; | |
case "drawShape": | |
createShape(ctx, item['arguments']); | |
break; | |
case "drawImage": | |
if (item['arguments'][8] > 0 && item['arguments'][7] > 0) { | |
if (!options.taintTest || (options.taintTest && safeImage(item))) { | |
ctx.drawImage.apply( ctx, item['arguments'] ); | |
} | |
} | |
break; | |
default: | |
ctx[item.name].apply(ctx, item['arguments']); | |
} | |
break; | |
} | |
} | |
return function(parsedData, options, document, queue, _html2canvas) { | |
var ctx = canvas.getContext("2d"), | |
newCanvas, | |
bounds, | |
fstyle, | |
zStack = parsedData.stack; | |
canvas.width = canvas.style.width = options.width || zStack.ctx.width; | |
canvas.height = canvas.style.height = options.height || zStack.ctx.height; | |
fstyle = ctx.fillStyle; | |
ctx.fillStyle = (Util.isTransparent(zStack.backgroundColor) && options.background !== undefined) ? options.background : parsedData.backgroundColor; | |
ctx.fillRect(0, 0, canvas.width, canvas.height); | |
ctx.fillStyle = fstyle; | |
queue.forEach(function(storageContext) { | |
// set common settings for canvas | |
ctx.textBaseline = "bottom"; | |
ctx.save(); | |
if (storageContext.transform.matrix) { | |
ctx.translate(storageContext.transform.origin[0], storageContext.transform.origin[1]); | |
ctx.transform.apply(ctx, storageContext.transform.matrix); | |
ctx.translate(-storageContext.transform.origin[0], -storageContext.transform.origin[1]); | |
} | |
if (storageContext.clip){ | |
ctx.beginPath(); | |
ctx.rect(storageContext.clip.left, storageContext.clip.top, storageContext.clip.width, storageContext.clip.height); | |
ctx.clip(); | |
} | |
if (storageContext.ctx.storage) { | |
storageContext.ctx.storage.forEach(function(item) { | |
renderItem(ctx, item); | |
}); | |
} | |
ctx.restore(); | |
}); | |
Util.log("html2canvas: Renderer: Canvas renderer done - returning canvas obj"); | |
if (options.elements.length === 1) { | |
if (typeof options.elements[0] === "object" && options.elements[0].nodeName !== "BODY") { | |
// crop image to the bounds of selected (single) element | |
bounds = _html2canvas.Util.Bounds(options.elements[0]); | |
newCanvas = document.createElement('canvas'); | |
newCanvas.width = Math.ceil(bounds.width); | |
newCanvas.height = Math.ceil(bounds.height); | |
ctx = newCanvas.getContext("2d"); | |
ctx.drawImage(canvas, bounds.left, bounds.top, bounds.width, bounds.height, 0, 0, bounds.width, bounds.height); | |
canvas = null; | |
return newCanvas; | |
} | |
} | |
return canvas; | |
}; | |
}; | |
})(window,document); | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/index.js | |
Content-Type: application/http;msgtype=request | |
WARC-Date: 2016-10-28T08:48:02Z | |
WARC-Record-ID: <urn:uuid:c4037b6b-734b-487f-b3cf-290d04f0fcc8> | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Block-Digest: sha1:WHHSKKUBA3UMEXBTDRMSCBSQ3NDCSZFH | |
Content-Length: 198 | |
GET /~mkelly/index.js HTTP/1.1 | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
User-Agent: Wget/1.17.1 (linux-gnu) | |
Accept: */* | |
Accept-Encoding: identity | |
Host: www.cs.odu.edu | |
Connection: Keep-Alive | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Record-ID: <urn:uuid:3e165cb4-8427-4c90-8da1-d4016a37017b> | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Concurrent-To: <urn:uuid:c4037b6b-734b-487f-b3cf-290d04f0fcc8> | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/index.js | |
WARC-Date: 2016-10-28T08:48:02Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Block-Digest: sha1:CZ5UBWLQ4JWU3KO7LUX6HZGAL6EE55CG | |
WARC-Payload-Digest: sha1:BZHG7OLFLPJ4XBJQIRADFWSWUSX6YWNI | |
Content-Type: application/http;msgtype=response | |
Content-Length: 2745 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Fri, 28 Oct 2016 08:48:02 GMT | |
Content-Type: application/javascript | |
Content-Length: 2472 | |
Connection: keep-alive | |
Last-Modified: Fri, 30 Sep 2016 14:26:20 GMT | |
ETag: "9a8-53dba60c09b4f" | |
Accept-Ranges: bytes | |
Vary: Accept-Encoding | |
function screenshotTest () { | |
html2canvas(document.body, { | |
allowTaint: true, | |
onrendered: function(canvas) { | |
if (!document.getElementById('screenshot')) { // Exec below only once | |
canvas.id = 'screenshot' | |
var tf = document.createElement('div') | |
tf.id = 'thumbnailFrame' | |
document.getElementsByTagName('header')[0].insertBefore(tf,document.getElementsByTagName('h1')[0]) | |
document.getElementById('thumbnailFrame').appendChild(canvas) | |
} | |
} | |
}) | |
} | |
function addPPPFilters () { | |
// Get children li's as array (default is a Nodelist) | |
var ppps = Array.from(document.getElementById('ppp').children) | |
var filter_all = document.getElementById('ppp_all') | |
var filter_pr = document.getElementById('ppp_pr') | |
var filter_p = document.getElementById('ppp_p') | |
var filter_j = document.getElementById('ppp_j') | |
filter_pr.onclick = function showOnlyPeerReviewed () { | |
ppp_showOnly('peerReviewed') | |
ppp_highlightNavItem(this.id) | |
} | |
filter_p.onclick = function showOnlyPapers () { | |
ppp_showOnly('paper') | |
ppp_highlightNavItem(this.id) | |
} | |
filter_j.onclick = function showOnlyJournal () { | |
ppp_showOnly('journal') | |
ppp_highlightNavItem(this.id) | |
} | |
filter_all.onclick = function showAll () { | |
ppp_showAll() | |
ppp_highlightNavItem(this.id) | |
} | |
} | |
// Show pubs, pres, etc. only of a certain type className | |
function ppp_showOnly (className) { | |
var ppps = Array.from(document.getElementById('ppp').children) | |
ppps.forEach(function changeHidden (el, i, arr) { | |
el.classList.contains(className) ? el.classList.remove('hidden') : el.classList.add('hidden') | |
}) | |
} | |
function ppp_showAll () { | |
var ppps = Array.from(document.getElementById('ppp').children) | |
ppps.forEach(function changeHidden (el, i, arr) { | |
el.classList.remove('hidden') | |
}) | |
} | |
// Change selection UI style on click | |
function ppp_highlightNavItem (id) { | |
var filterOptions = Array.from(document.getElementById('ppp_filter').children) | |
filterOptions.forEach(function selectOption (el, i, arr) { | |
el.firstChild.id == id ? el.classList.add('ppp_active') : el.classList.remove('ppp_active') | |
}) | |
} | |
document.addEventListener('DOMContentLoaded', function (event) { | |
document.onscroll = function () { | |
if (window.innerWidth <= 600) { //responsive design showing | |
if (window.pageYOffset > 400) { | |
document.getElementsByTagName('header')[0].className = 'pinned' | |
} else { | |
document.getElementsByTagName('header')[0].className = '' | |
} | |
} | |
} | |
addPPPFilters() | |
}) | |
WARC/1.0 | |
WARC-Type: request | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/mofro.png | |
Content-Type: application/http;msgtype=request | |
WARC-Date: 2016-10-28T08:48:02Z | |
WARC-Record-ID: <urn:uuid:ce89387d-b629-4dab-8c52-ed68998f4245> | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Block-Digest: sha1:55VARLB6QSWGDHRL7PRWVBULIRT4GFDQ | |
Content-Length: 199 | |
GET /~mkelly/mofro.png HTTP/1.1 | |
Referer: http://www.cs.odu.edu/~mkelly/ | |
User-Agent: Wget/1.17.1 (linux-gnu) | |
Accept: */* | |
Accept-Encoding: identity | |
Host: www.cs.odu.edu | |
Connection: Keep-Alive | |
WARC/1.0 | |
WARC-Type: response | |
WARC-Record-ID: <urn:uuid:235941ac-3df8-427c-a5d4-6657d7b3049c> | |
WARC-Warcinfo-ID: <urn:uuid:e839ab48-87d0-48ac-9c68-84a5b3a63aee> | |
WARC-Concurrent-To: <urn:uuid:ce89387d-b629-4dab-8c52-ed68998f4245> | |
WARC-Target-URI: http://www.cs.odu.edu/~mkelly/mofro.png | |
WARC-Date: 2016-10-28T08:48:02Z | |
WARC-IP-Address: 128.82.4.2 | |
WARC-Block-Digest: sha1:SCMHHXKFHEX36VGQNAF4IJHGZGEG7JJC | |
WARC-Payload-Digest: sha1:BS6G6CFUVUI7F4OGD6BKXDJCJLIPSLPO | |
Content-Type: application/http;msgtype=response | |
Content-Length: 56389 | |
HTTP/1.1 200 OK | |
Server: nginx | |
Date: Fri, 28 Oct 2016 08:48:02 GMT | |
Content-Type: image/png | |
Content-Length: 56150 | |
Connection: keep-alive | |
Last-Modified: Tue, 12 May 2015 13:09:44 GMT | |
ETag: "db56-515e235441609" | |
Accept-Ranges: bytes | |
\89PNG | |
\00\00\00 | |
IHDR\00\00\00\C8\00\00\00\C8\00\00\00":9\C9\00\00\00tEXtSoftware\00Adobe ImageReadyq\C9e<\00\00\DA\F8IDATx\DA|\BDi\97d\C9q%\E6\EEo\8F-\B3\B2\AA\BA\BA\BA\BAp\E7\D1h\9B\AF:\FA\BF:\FA6\D4\E9p8C-#R\CDP\E4\80[co\A0k\CB%\96\B7\BAϽf\FE\96\88\CCf(deF\C6\F2\9E\B9\D95\B3k\D7lUf\C6k\AD\91?\F8\FF\F8E\C1\B9\F8M\FD\8E\FET\FFɇ\E1\9F\C6$6\FE.\AF\DF\E2?\F1\9B\FC\9D`\F9O眑\AF\F1'\E0\A1.qV~\9F\CF*\8F\C7\EF\CAO\F5\D9M|U\F9\E3\F9#\BC\E7\FD\80\DF\F4\F8\BF\F0\CEX?\FE\9F\A0(\CAO?\FBb\BB{\99dE\9A\A6.ɒ,\CD\F3<I\F0\FFi\9E\E5i\92\F2{Y\9A\E5y\86\FF\E1\EF"/\CB2/r\FC_Q\AB</\E4\8B\DFI\F9\B0\BF\89\87&\A9\B5\8B7(\97{\E4?~\EF}\D7u\FD0\F4]\D74\ED\A9kN\A7\E3\E1p4C8\9D\9A\BEo\EB\B6\E5O\FB\CE\E3\FF\FE\DD\CB\FC\FE\8D'\C4\DF\F2\E1qq\F8\AFV\A8\9B\87\E0\87\DF\FB\DD\DF/\AB\FC\BF\FB\BD_\FC\FC^ހ\BCk\BC\E7U«\87 o \97\C7\E3\F7\F9\83/ | |
^\DE˷\F9\BE\BA0\C8?\F0\A3/\EAyG\87ˇ\C2\CB\F9\B3i\E2=\8A/f;qj\E3c\E5\87\F2\E0\F1\EE9\A7l\B4\9D\85 | |
-\EF\EFt5\D0?\BF~K\9F͍V(O2\BEb|w\F1\E8eOm\93v\B4x'\FC\E3\ECh\84\D6\EA\E5o\E1K\D3/>\BEZ\B6\BC&\F6,/\B4\F8̴Oy\D1\F8\C6\E6\CF7\BE+'ߴv\A9\F9"\9F_\A5 ?\D7\F2Ia\BA \9F9\B8\D4\E1}$\C6f\F2\FEaz\B0,\DCw+\EFM~/\DE@\DCvyE\F9\B0<\CA\F1\98\C5\CB!6+\A7\98\AF\E2\C5F&\C7e\B1rj\D5\FDq\BCr|\92\F8\C3\F1f\CD.`v"!\BE\94qg7z\BE6тm0\E6\D2 \E2#\C3\D9\E3K\E5\A3\F2 \FC\F9/N\CEi\F9hs\F9\BDj\C1\E9\F5\B2\D3=\F6&z4\FD\C5\F1\BC\E3\E9\9C|\98\F8)\E9\FB\8Cځ\89\A6e\C7_\98lk\E1M\C5h\E46g'\CF1^\00\B1\F3\E0\F5:\F0\B2\DA\F8}\BEO\A4\B1f\F9ɜ\E9\F8\V\ACe<8\D0<<\8E\BE9Z/\F8$Yf\F1~<\FEM{\AC\EB\FEs8<\F6x xH\93f\C6\F6p\98\D9\D0\EF<\F6\FF\EB\F5\CD\E1\83\F4!\9E\81Ѫ\F4\8DD\E3\F108\8F˜\88S2\F1\D8\C6\82l\C7\CF\E1qy\9CM\AC\83\AF\9E\DEU;]ɥmM\DB1R-lN\EC_/\BE\9Fo\BF\99<\E3\E4,\C6/\C7/Lj\EC\E8\C2\F4\93-Ϋ\86<\F9\C2>eTf\B4;~8\FE\82ӓd\ED\FEfC\91;\E6\F4\ED\AB\89\B8sסQ\F3\C2eZ\FDE\84\86\E9\A8\D8\C9.\EC\F8\FE\F5\F5\F4uq\81\BD\F3&I\E18\92\E8VG\AB\91\F4\C1\A71\9A\F0w\E1h\92\81f\C4\E7O\E6#\8A{\E3\C2)\C3\F1\E1T\C3\C1ԇ\D3\FD\DD\DDa\FF\F0\E3\FF\E8\EBwo\F1ww\8BHs\FF\F0\80X\D3\EB\A6>\96\EB\F5\F5\F5\F3\CDͳ\D5f\93Y\D74M\E2\DC\C3\FE\B0\BD\BAz\F6\E2E\92\A7]\DB"0\F2\C3\8B\A7\C7W^B\97\D5{\BDg|\DBƩ \C9|bG\A8\E0}JT\C0[@\E5}\B4\86\E8\E9y\81`\C31fy?Z-23 4\9B`\BCda\BA\B7a\F6C\FC)fz*TF | |
\AFn?<鴖\EEJ\FF9Z\D5\CC\E4\98\CC\F4$˷k\C6kt\F6\F2\E12\E0\8Eގ6\C5=c\C7\F7\E0\C3젧\8B\A6\97\B0tIb\D9 #\BC\B9p\CF\F5 :\BCOB\8AOL\90\E3\BB\C2\E6V\ADʺ\C1\84\9Eן1\9F(\EB\F6\FE\E1\AF\FE\EF\BF\F8\DE\DF\FD\DD\F1x\F8\F0\EEk\FC\F7\FE\E3\C7\D3\F0\E9\D8 | |
-\AF<\9B\F7,M}u\89˃ \9Au\C2o[ \B6 \AEns}\F5\E6\DB\DF~\F5\C9g\88\97\88\90iQ^=\BBڳ.\C0\D9\FD\C0c\94$&\DE>O\88A?\AA\FFT\F8\EB\A6+9\88\BDx[VO,\E0\E5\FE+8K\9C\CB\E4\DB\C5wL\E7yta\D3\B5\86{ | |
\DEO\B65\D9\D2\D2\98G\A16\B5\D3\E9\B7g\B7y\B4'{]\97\D6f\97\F7Ym*D@Q\C2\F4\8Aww | |
\EB&s\"\86\E5\87\D1\EF\EB\C9E\A1\C2\E5\E5]:3s\A3\A7GN\AE~*\DF!2K\\FC\90 \EEQ\DA\F8\E70"@\E2\F5\98<\F0o\8E\97\86\91:\87\B6\AA\B6\C7\C3\FE?\FC\D5\F8\E1\8F~\F8\FF\E2/~\FA\E3\B4\CD\AEh~ \F6\E6\81w|\A4\EB\BB\E9H\9EW\BC\8B\83 e:#ÿ\F5\B30X\E2\D7:8?\BB\B9\FD\FAt\FB\F6\B7\FFh]!<~\BB(\9E\DD<\FF\E2\DB\DFYm\D7\C8 \F0M<\B06\B7\91k\81k\95f\98;] | |
Sh\D3 5~1\A2!\BDy'\F8/\968\81L\BD\AD\FA<a | |
5"\96~k\A0\CD\BB\8F;{\9E\F3wlg\C0\FF\B8\8Axo2\A2\F8\D4a\E1?$%\9CQ.ψ3\89\E4n\F49\A3\8B\C1\CEfm\91\DE-2+\87\D2\D9sh9^S\E2\8B\F8T\FC./!\F2:\FC_\87\DFJll\96Z\E6zUQV\ABu\B5\82\87X\ADJ䏫 | |
\B2\C0\AA(\98\E2\DB\EDn8\FD\DB?\FD\D3?\FF7\FF\EB?\FC\FDw\FB\BE\C9[e.O+\B8M\B5\E4^\B9\CD\EC\FA\F1%\BD\EB{\B2#\CC\E9\FBWkS\\96\95\E6\80z\97 | |
\9B\BA\8Fc\BE\FE\D5\CF\FE\E9{\FF\F9\FAً\97\9Fq}u\FDɫO\CAU;v\9A\D7%H_L\B8\B3\BC#\84eV\C1C\DCox1\FE\CF1$\8E\A6cG\F4}R\C4Wa\89[\96^\E6\CC\C8\E6\F4%\9C\BD\8D 3)x\F3L\FF\FF\FC48\B7\C4z\B3\E7\9Cﶝ~\87\FEҹ\F8]\9A\95\CF%g\C4O\D6=!\85`\83=\F7\A2v\B4\D4跜"\ABvd\A6D\D3\CA5\B34\AE1\A5I\9A\95U\B9ޮ\D6+\B8\B8\B4Hn\AE\AE6\9B\EDv\BD^\AD*\BA\83\AA\82U%p?Y\E6\E86\E0\A1r|\81\8B\EA\FF\E3\CF\FE\ED\9F\FC\EB\F5\C3\EF\FF}&o\BB\80YI|\E9ھ\93\A2\80F"\B1\F2)4\84\B6m\BD\A6ur\A34\D9\A1\80W\84\87ɗNm\8BDŽ\B7\9C\91\E9\A4\F7\B7\FB\F8.\C3*\8B\ED\F5\B3Ͽ\F5\ED\E7/op\B2$\F7Ʒ%\FD\88{}\B0c\C4P\F7\A4\995]\9Cb \8C~\F4Z1(NE\9Ax\9C\E8\F9Dڴ\E1\91s\99\AD9\E6:\8AH\E4\B9S;\81\FF9]\8Be\FBd*\B8\CC\EF5\DB\F2\92\91H6y\DC3c|dG\8BQ4`bz\A6\94ךe\DD#\BEI+\00&\E21foގu\95h\D0\DEh\AA\84ۂ\EB[\B9~\FE\F2\93O__\BD\B8\BE\DE\C1\98`bUU\AD`JE\9E!\D4\E9}r\A4P\C04m\D7\D7LJ\F7o\DF\FD\BB?\FBӿ\FFۿ\F9\C1\F7\BF\8Bp\81\DF`k\DEvR\F5 L͜"\91\F3YCv\8C\86\88`rM$ ;3\E1!\FC\E9\BA^\CA|N`\A5\DE7& | |
r)\E0\A2}axh\EEn\F3\EB_^]?\FB\F4\B378o>\FB\8C\97xqٱ槁\C1\8D\00\88\98A\AARx\DE\D91\D9\B1\E8\E4\E5jj\F4B3\A51v\F4\9A\E3_\A4\E4\E7~+\$\986/\E3\BBbn\E44Q[X\D5\E2\EF'\00\96F+g'c\F48.\A2bp>\B5\9D\EB\93C\D4\A9\B9\E0F\F8)\B3\D5 | |
\96\93pC\BF$\8Fq\D1\D5MOM.&=xx\91\E5\9F}\F1\C5\EF\FD\C1\EF]?\DBnJ\82\95\C9!\93:}Q\FF\83\C85\F8\87\E3\FE\FC\FC\BF\F8\E9O\F4\FE\9B?\FDɏ\FE)KͦD<\CC,\E3\ED \9A\B2\BC\AE\B3*\C7D\D1i\DC\C1\97\82\B742R\CE\C5eLG\C6Xo\91/$\C8\D2T | |
\AA}<\D2ft+ZY6 | |
\E8\D8>\BE\F7\F1\C3\FB\FE\D3\F7\F9|\BB\BB\C2\F5\80ӕO\C0O\EEUB\F5\F1\FA&G\F0\E5\ED\j6\A3g\F1\93\A9 \8Dtr\F1\,\A2\C8ۦe{w^\9B\B8\F02rl\CCED\9Ek\DC\DEcE"DȲ|\E8\94A\84\C9C\C87\C3\86섴BXf\82 | |
\E1ǐ\EC\CEp\DF\E2\EB1\A96\8Bp\91_\D8Xyœ\E1f*\B7,p@ | |
p\BF\AE̒\ED\D5\EE\D9\CD | |
\82s4qN\FA\A1\BB~h\DA\D2~<Mb\D3\DB\DB\FB\F7w\FE\E1?\F7{\F77?\FB\C9?u\CD\E9j[e\B0\89S\83q7X\B0\90\CB\C2`\A8\A3\CB\D29\A5\94\BE&} | |
R\90\FC;=*\FCg/\85y\D8\8D\9B\C7\C6G%`\F4mk\A5\E6dc\C6\B4\DC`5/\8D\F1\8E\EF\8E\AA\FF\F2\C7?\C47\BB\DDͳ\9B\CD\F6\AAZ\AF\92$\A32\FE\C0\C0\DE\F8\E4\D2z\AF^ 7\A1\CBҦ\E09)V\93\E80\96\C3\EC\\87Z\94"\97F6\98\A9Ԯ | |
\95hԩ\F7\E12l\9EA7z&\AD\AF\F3M\86\C7\D0~~\E4\A3ک\9D\B2\93\B1\B7\E3\A6\C8\F40\E9'\\BCu#\A0\C0\9CW\F4\AC\8D\91\FFXRrI\E3\D9Iط!\E0푂\E1{\A1\87o\C0=4\A1b\EEOu}8\D6\DF\FF\EE\DF\FE\E4\87\DF\FF\CD/~Z9\C2dU\A9\8Bn\9AZ\EE4\ACЪ\87=/\D2[D[\C3j\B8\81\D7az\A8\E5 \B94y\9EK*7\84x\AD\B8\CBd\89T\A6/\F0}\B8Ʈ\EF]\AC\E6* | |
\FA\A3\88\FA>M"\8EܬV+\DAw}\FA\FA\B7\BF\B9\FD\F0\F1\F9˗\9B\CD\D2I\C4[\B6\FA\B0\F0\94/\85VG\E5I\EDQB쬍\E5S5)o"\8B\9A&\D89\CE,M\8A_3\81\AC9\CB\D0\C7dtQn\98\FE\E2\86N\D8\DANU{q\BB\CF\FB"\E9ɲ\85\C6\FC\EE\DCi\99ə\EDc\D0~\AAv\84\F9\AF\D9}Nge\B4`\9Eu8-@\F1\BAin\EF\8F\C8\D4i\B0K\99f\F7\FB\F7\EF{\F7\F1\FD\FF\F1\9F~\F2\83\FF\C7c\91't?C\CA[\E8\91\FA[\97\F4\82\D2\CA\D3\9A\CARb\A5\B1\E21>Vi\8E\D3\C4\D4X\B8\82\FA\AAD\81\97\9Dsg5#S\D75\00\BEpJV\96aT\9D:\81 | |
\FF\91>\90\94\EAL\D77_\FF\F6\AB\E3᰻\BE\DA\EC\9E5\88\A9m\93\A7\B9\ | |
?A|v=\D3!\C6\C70\DF3\85_0b;\B5f\C2TY\8C^\CD\D9\C9\F\F0Ĩ\AF6\BE\E7\85\D9-\9BB\E9X9\EB7K\82\A2M\E8\F0\B7\EBI\98\8Cl.\AE]B\B1\CB\00\A6\A6\DA\E8b\C1⬗\E95g\96\CBa\A7\B4\C2F\F4c\B7\FA\B9\98=\F8\A9\8A\EB\8F\ECft8\9E\DA\FA\D8\D6\F5\D5\D5vU\AE\F0\FBH\EC?\FC\E6\D7\DF\FBۿ~\FB\F5\AF\F5\EB_}\97'^\A6\C8\F3,Ϗ\C7\D3\FEp\849\F4m\9B\97\E5Y7x="\F0U05\89hnP/(~X\AF>L | |
\EE*"Hc\D9-\D4n\E00蕴6,A\D76\C8*\86\DE*x[\9Em\8D\8CRY\95\9C1MM\EC\FA\BB)\9B\EB\BA\FA\F0`\BA\BAF\82\8B\C0\DA\D4G\C4G\ADs\C7f\D9\A5\A4X1G*;&}\B1Q\A2mZ3"$\BA\B4\E9\BD\CEGb\EC\C3M\8D5\D9e5k\BA\DD\E9\B0\E02,C\90]`s\BF\EC"\84\B38\E8\85\E0\B0\9F\8Bz\84V\8Bg\E5Ǝ\E9\E8q\E6\E6\EBE\F9d\C2Prp\81\9C\AB|&\96֢W\9BΊ\D4l\8E\80\B1^\E3\F1\EB\00\D36\F0S\B7*\8A\87\FB\BB\BF\FB\EB\BF\FEO\F9}x\F7۞\8E\BC\C7\91궁i\E4z\FB\FE}S7.\8C\E0:I\F04\95\84S\C0?\F5\B5`^Zt\D50\A7֦akQd\B2\8A\AB\A27\81R;\A5 \DFE\\9E\E0\84"z\DFi\8B4\BED\AD4\D0<Ŷ\A4,\8B\AE^®?\D9B\FF\A9.\F2\B2r02\C9,\E6|mӳ_Q/\81B\AB]l\CFk虲8;C\A1e\93g\E6\D2:s\C1\CC\EE\A2\D0\A4\E7\85\FC\97s\E1\E5.|>|\B0\E6\ACt\BEx@X\D6\C7\F5U]l\B6\8CE\83G\E5\B8%<<\AF&\8F\CD\E3\D8\D2<s\92r\86x\FE\CA\F5\BA*W|\95\CC\E5\F6t\EF\DB\F4\B7\BF\FA\F2\FF\FD\F7\FE\9F\FE\9F\BFD\9ED|$w&\CB\C9`Fo\EFO\C7#\EE'#N\CAg j\8E\F3i\92NEN\ED\CAѶ\FC\E0\8CB\EF\98%\A5\A9\9B\A9Vᩛ>E\EC\A8\9D\85\BE\E7\CA\CB\F8G^\D2ڎl=\F0\8EX\9C\E5I\B0R\8F\D5\93k\FA\EC!\B4M״ê\DAl\B7}nIceJ\AE\D1X\DC\8B\A6\A3&IS\DF\F09-\80\AE\C0|X\BC\9F[#\E1\FC\96M\9F+}D1\8F\C0\D6\E3o\8Eu\F3\B1\E7\83Y\94\9A\C6\89$\C61\A14\DA\C8+Uv | |
\E0»\F2\E3\A7[\DA\F4\C2O\9B\B3B\EEhb\F8\A8\842U\B5\CE\F2B>aZ\B7\DD\E1P\F7o\FE\E6?\FEſ{\FF\9B_e\B4\A5\88k\B5)\9CMOM | |
\F5\9B\B7oaU0\96"c4\E9\A5Ph\FA)db\E6+\A5\8B%\F5\B1\A3\D6\E0\F2\CE\C5K9if\BC\FF\9E]\A3 \B8J\8A[\92<\92\D5a}\D7\D3q:\89~R\F8Lд\99G\EC2;g'\F0\8A\8E\DDP\DE]\AD\EF\EB\DFxu\98Tߵ\F0\88\CD\E9\88l\A0(+|X#!7F\B1\91\BFfͲ\897\E2+k.z\F1t\F3&\F6\82\ED\C7 \C5<.\A5\A6\E761ǖ\8Bz\EB\82\E9K\EA\9A4\84\F3\C88s\FD\C6v\90x5\EDȰдD\E8\91A05\A4b\AF1\B6\B8\BC\9D\D3%M\98\ED0{\AAXPv\894|FRl\83\E4i\D6\D7ͯ~\FA\F3\BF\FD\AB\BF\FC\F7\FE\BF\8Eo6\C4 \D8\D0n\BB۬\D8׃ | |
}\FD\EE-nn\CEZ\80[U+\A0\E9\B2,k\E2N\96J\ED \D1";<S,\90z\B1\84~\C8\F4(AO/\D70\B0\E8\85< Rt\AC\B2 \A4&7\C2\FF\A9l\D8mdM`\A2i\BE\87e6\C3Xl]l\F4\C6ւ@iv\D0\C7P\88?M\D3Hc\91\81 6-\DEv\90\BE\A9E\CA9\93g\B5͌7e\9B)\86\BB\A8Y\CE\F5\F7s\F9\EE\DCԳ\9B\B1\D6T^\9DQ\F3Y(\9C | |
T\CELx\92ڰpg\\C1\A6\BD\ECd\8F\B6%\A5\F1\B9\DF|\9E{/]\B2\DA4ƙ\E2\AFski\A6\CE,\88~\B4:g\81\858n\FB\AF~\FE˿\F8\DF\FF\CDw\FF\FA\AF\AAUZVe\D7\C1 u/\99\A2o\EE\87Çp\DC\F5\F6 \F1?\8F\82d\C81Q\DE)\89.\F8A\9A\E2\8D>z\CF\F8\C9\FB\00\85h\D6j+\D2a\AF\F2R\F1\D6t\BE\ED\B2\9D*@l*O\8E | |
\BF\DCKe\C1%\E9#'\D8\E7\C4K\A9\B6\EBڈk-A\BDںv\93\F0&\E1\F16\DF\E1e\86rXgj"\86X2uq<\FA\88\9C,!˵\FE\E9F\8B9w\DA^\B4\8FB\A4ɛ#a2®tY\BA\88\86\8F\F3\BB\A9X\B9@\CFgܔ\B3\FA\D6\FC\BEh\E9~\CE\FFO\DE\F0\D8´a\D1\9C8@aN\E5By\B60F\9B\91\DB\CCZt\96\A4\AB\AA\C2~\F0\BD\EF\FDٿ\FEW_\FE\F0{ijϾMYVpZx\F6\AF~\F3\FE 3B\E4p\BB\FA>\\A4V\D8vm\96\A7\F2*C\9E\A7e\91Í\B5M\AD\84\AC\C0\DA!,\80\F6\84W\C9bk\C8\D6f\C8\E8\DB.\CC~]\8D)\D8E | |
L\CFS*\B6\A2\90\00\C6 | |
\CB\B1,\80Ò3B\CB@>e\E33\D3+\80a\F4\84\F5\D0)N\98\DAiS<g\C6J\EB,˼\E0\9B\F7\83\EF5K\EA\D6^\99\A4I\A94\82\B3[\F8d[P\A0\95Y\89O\94F\B5\CA\E8\80\85\A4\8B h.h\EF\C1q\82v\8C[f\D90\9A\CA\EA\B1#Z\B7\E1º\9Fjm\86\C9ܦR\AF\A9\FA%_'a\F0f\81\F9\97P\C0{E|\E9j\BB\FB\F9\97_\FE\D9\FF\F2'?\FB\F1?\E4O\BC\97\83\9B\B04\D5O\A7 \B0 \D0\E7\D8u\00FJ\C6\D1\D3/\BDm.\F1\B4\F2gn/\D2S\E2\E6S\95f!\8E \AB\B2mK\CF\C2\F4P\DAG\B4V\92?\DD\C4\E9\D8\E3\E1٣\94v\CF\C8\CBc\85Ƒє\D8#\A2w\E4\D3$0tV\A3\8C)$]\ED\DA.\\A5C \A5T|\A1\A8\DF\D4m۰\8C\E8p8ვU5\A2\8B\B1\9A\A3L\96Ĝ\F1\83\9DL,\\92Y.3*\A3\FE4\Tȧܢ`\9C\CB\F0\CC\D1\E7\9B*RS\D3\CF\CD~J\AD\E3\93,ڙc\CFq&'\DB%S\F4b\82#\F2ѭ\BD COf\A6L\D9\CE\CC\EAy\F5\EA5\BC͟\FC\CF\FF\D3\D7_}\C9qqE\86\F5'\B6\FF`Ut \92ҧ\82\90\90T)\E7l,&\FA#\E9\E70t齖\F27ɐ2c\81,@B;½նf\E4sNH]\B0\B8O\AD8m\8Ba⛒B\E4z\A7\D9t\92\B6c\EA쳫\FE\83o\ACV\AB\\DE=,,p\A8\91>I\89\DEL\91\E7jOEYЈ}\90\C0D\BB\B0Z\F8P\A3Dž\C4'\B0b\851\B3Q\96\E6ɏ}\82's\C1\C3I\8C]\C6u\F6\FC\9E\CE}\CDi2\A6\AF\DF8C\B1@Dg\\D0\D8I-iJ</bs\A4\91,z\E3\BD\A7\98\90φm\A6\B6\8D\8DM\DFh\85R\8EќM\CCk\91.9\B1T\C0\F6\EB\EB\EB\EF\FF\FD\FF\F7p\F7۲Dbp\A4 \E5\8E\C7\EFJ\96çTU\85\97\CE\C7\C3Tnp9\9B\D4\C5\CA\E7pw\AB\A2\00\EE\CA\C8\FCdVX\B1\AF\CD\DB\B5D\C0L\CCB\AB\B5\B8\94\B8\9E\A9\8C\F6\90J%\B0a\B3\C8e\96*Ŋ.\8Df\93\94\E4\EF\C8[\CD\D2M\B5*89\941&)~\DF\DB\F5CLf\BC\F4\FB\E1\C32\AB\95\D2]?h\D9s\D0\FCr\AA\DAk0\85a\C1\F4i\B8Y\A2=~/\F0>\8Cmo)D\FA\85\D7qt;FMkg\F8\A2\AArF\FA\D3\CB\F0\85豒Κ-\8F\F86\93+Z\D9hOg`ɚ\A9\9F\999n.\91^\8CyM\BE\C6>U\A3\9F*\C0\CA\F4:ef\A4?\B58\83tL\91s\BF|\F9\E2\B48<ܯJ\B9Ai\B6\DBn\\9E\B3\F7\7\ABUU\E6\E5\C3~_\95\BC\AEx'\C9?\C2+K\B0\99\E0Rd\C0ѥ"0\EE\8A\C6;,\A6\CA\F3MU\A6\AC\B0\90\A8 | |
x\8Fg\AC\8A\EF\A1HaN\E40){\83\EB\D5 | |
6\B1[\ADp7}\D7R\80!Tb\B9\B4\A7"\87e\E0\D3\C0Jq\DB\F0\A3\8C\00ѥ\92L8\D8R\E7*\{\E9\9F \88\9BXƳ\9Aj \C8+\DF\D8O\A6J\FDl?8)\BF\E9%\C3x*\8A2\95\CE\C1\C8|\F7<\90BpviYܚ)\8C(\97r\91\FF\C9\99H7K,-\F5</M\88\F4Q/\E6\A3B\AF\B1\CB9\9CW7\E8\ECX\90\9A\9F\DA,h\83\C1\8E\C4gg3_Ԥ\EC\E3\BE\F5\92;\DB\D3\FB\EE\C08o\AC\96\ED'F\8A_\D8n\D6\C0\C9w?\E0\D4뱶.9uC{<\B1\AE\93}\DBrctZ\89\CEH\D8\G\AE\84\FAG \A4\85L\82C۱rA\9F\90\E2ɖH\93\FB\FDO\B0ެa$H-OM\9D\8B1\E1ޯY\98\C5慄\CC.\D2s\F4=\8C/c\EA\D8\C3y2\A5\91\A1"K- | |
\B8%74\CC$^$k\ACC0-\C0\A7\EC\DBFʥ\CFѴ\DD+\AC\BE\ADk/\EE\96V\A2\E1\8F͟d\E0\D0bB\E4\E4\E0\A96\D3\F1Ȏ\F9 | |
\A2'\DC(\87\95& #V\92\CA尌]\82\A2\88\EDr2̚\B9\C1\B8H5\AFB\D3z\BB\AA\F2s*K$Ϲ\91(\F4\A2\E7\B3$\E2$'\87s\C1\AC\8F\D6\E7G\92\E9\DD*\F5g\F4\A3N\A7\B5\9CvӗT\99ȺYyv\B3"3S\96\84\E2\E1\A2\D6H\BD߬*2H\F3\BCn\87\FD\B1\E6 | |
_\A7\93A\EC1\93I\97Kke\B0\91\819\D4M\FD\EC\FA\CB\CC\E8;<qӶ\B0\89\84w4߭W\9C\A0!\D5O\87R\F1.\80\B2\F3\849\81}8\D4u\D3\E4\F4h\AC<\B5,\89\8E \BE\A6m\FBc\DD\81_d\EFL\D0J\F4\F1p<\B2"A\88x\FB\C5)\CAhi\E8\8C!߁>u\E8\00\E0x\90\F8\DAu\DFö8\EE!\FE@\93#~\E3H\D9^J \E2\9C0\CE\E11Sm | |
V\C2\CE\8Dɢv\BEz\D0\F9^<V̑\A6\CE\DB=f*簔%\CEb\98xiJYY6H\BC96é | |
\E9X\A9:K֜=\C31Ey+t,\B6\9C\9D[\93P̌\CF,\D2ɕ\A6\8A\B1\93p\9E<.\AB\A6ޟEOkGN\A4zTfX\C4F\F8\F6nd\BDƓ\D4m\87\FF\B2\8Fv\82\AF\CAq\E3\F1T\AB\F5\8Ae'i$\B7]CP\AF&\D0\A1\EA\C3\FB\F7\81-\A5\CB\D8\D050 | |
xA\D8k\91\C5ːLn;)\F0\C8\F7RdaEV\B2\99#pI\85\D4-u\F8%\F8\8E4\98u\B1\DAv\9Dg\FD\D0ѨaX\E4\B1\D3/\E1wڞT|\84\ADo'\95\9A\A9\BD\DF\EF\EB\AEC\D8 | |
^ \AE`Z\9A\E40Ю\97 | |
V0 | |
\BE\D2'\D1\p\9A\9A4M\C3R\88\D4\E5\B5J7\B5\8C\86fp\DA\CEL\A4\A0\AD-L\9B'&#¢\94\AAɊLAqhGݾ\9B*\F1cy\BCL\DDs@|\F6XOMK<9\BCa\BB4\BF\82s\93u\8F5\E51uMGJ\82\B1nb\C7\D1Y77R | |
\9D2Y\E5\D9Sbv\EC\A09$cNb\C4H\B7\BBAqY\ED6[\9C\E6\A6k?\BE\BF=5\8D'\86\E9\C0t䑊W(xpm\D76^\CC.\AD\C5m\F02r\C3\CF\85x\E0\DEuY\AD ֈ\8D\80\BA\CA\D4*ix\BD\D9\F1WL8u\FEW\EF> \A6m\ABf\9C\97nW@\EC\CB | |
#3B\80lBo곡\F7\9D\F4\F9\D8\807\EDۡu$P\00\FE\B8Ɋ\B57#\9D\E9\81 ej\BF\FC\EA\EBc\BCF&\88d\AC\F7\E1д\87C\B0x\F67\DB | |
\DE\CCr\EA\E0\B5\CA\D4\C8 | |
\9CX\F0%\C9\E44\F1\94è\BE\C0\FBOJ\F0~\82\8A\B2ľ\D3\EC\93\C4hP\E9z\BCI\EC4=o\8DS\E1 Gu\E1\B6ӣ\F6\89\92\DA\q\8E\A4\F5\D1c\D9\C8A53&\BEi\F4ba\9Ds[*\9Cu\C45\BE\E2RJ\BA\9E\C0\B9\E0E\8E\87#\8E\FB\C3\FDN\BE˘\EE | |
\AD\9FuB\D34\F5 P8Yf\BE\DA7\B9c\CA | |
\E8\9E\C04:\00\B2u\91\92,\9Fg\DBu\E1䆥ljg\C8\00\C8|2\C3\DD\C3\E1\FD\C7\FB2u\AF_\BC\E2\F9up*Ysj\AE^\DE\D0쐎\B5m^}\91\80c\9A\9E@\D9:`x\8EA3\9Ex\AF\AEi\EFu\87\AF]جV\EC?\B1\E5\B9$\B3\AB\EF\FD\F0K\FC\FE\BA\CA\D7e\81υ7\C7wa\C2\FD\89\C8N\F2\F6p:ԍSF8\C2(\00;\C1z`\B9K\B0,\B5*VyY eQ>.\90\BD\D4D\AC;\E4\FC>\99[\C0\9D\8Aғ\A7XL\AA7q\BBkQćj\FB\00\FF*\ACW\9B\9EW\E8c\AC|$ܰ,bE\AF\A3\83\E7K:\C3\D4?\BEz\9B\FA\87\FA\E4\D3\E4\CFY | |
\C2\D9'2\D3 BF\A6l\98\8E\ABSi\C6ʲ\B5\85t\9Dq\86Ou}<It\C3@\CF\C4d;\CD\B3\A8%E7Ƕ\F6 | |
`\D1AҔ1%\DAn\B7W\BB\F07rCd}\DB\CD^O\89d\99\FE\F0\F0\B0M\D3\E3\C3\E9\D3\EB\DD\E7\9F~ZeG\C6ip֯X\85\F0E\C2^\8C\C5U\EE\B7+\B6BEBK谔$e(\B7\AE\A8\CA\F6T\E7\E5\BEi 9\DBz\BB\A9\9Bֈ\A2\CAjU~\E7\F5\8B\B7V r\D9\F5\DE9X\00\z\B56X\B8y\B6NӐ\98\E1X3d\93 \FE\C3hy~֗r\B4\F0\CF\D5ju:\9D\94$y\A6\D1 2\89\D5X\E8\C4\97\E8JY\ACg(;V\84\91&\A3$F\EA.@\87N\9Dh\E0X7'.\DC'\FB\A8 | |
\B4tT\F3\BC\96XƢ\BC\96\B1ra!&\AAK\F2\E4\C8T^\90\8C\FDg8\A8^P\88<H\AE\AE\AE\AEV2\A6\878x:5\87\E3\A1g\E50\ED9'\D3µ8\A5U᮴\ED\C0\AASk\D6\E4\FA"Y\83\E9T\00F\A9+\F2dU\ADv\EBj\9D\BB\B2\AAv\B0\AC\CD | |
a | |
Ƅl\8E\A3c\F8\A7\F7G:8\CF\FC\C0\A5_|\F19\B0\FE\D7o\DFeU\C5!\8E\B2b\C2n\8AK\98\D5ק$$\C8MF\D1r | |
\EA\A6G\82v\B5\D9\C0 \ED\EF\EF3\C0)\86O\CAAf7\F0\9E\EF\B6\CCO\8DEʘT.M\8B\87#\E6\8BOo~\FB\EE\E3j\BD.\8A\ED*\B5w\87\E6\F6؞\FC\80\A4\EF&\A2\89!>\B8v-y^\A4\BA+3\D6pϤϱ\DD\C97\A2mB\C4B\DAHb"O>\98\A7\8B\EFqq\AC\8D\9A\91,\FDolЉ`@\E49^X\D5e1\E9<=\ABZ]>\DEL\F3?\8Bv\A1\FB\D0\E1\92Bu^.\BBxų\A2\97*\F0\A4Y\F7\BCo\B6\9B\DDnWO\88\84\FB=\FF˚\BD \A7X8-RbB\E2\C2;\C0\87^\97\9C`\ȶ\AA\AE\D6=\C5j\B5٬F2kQU\8CW\D7\D7.-|p\80q@\DAH\CANo\CB*{\FDɛg\9B\F5\FB\B7ooo\BB\FC)\8B\BE^\B6%k\E5\00\FF\E0\B2\B00/E\B0\B4,K\D6\D8q\B9s\96/\9A\BA\97\89\FB\8E\F7P}\B5\DE\E23w¢\D6{\F8\FC\F93\DC\EF\C3^6\E0\DDt\ED\F0\81Xpz\8E\C5\FB\DDv\97\BA\DEԫ\FB\E3\C7\FD\E9\E3\81ò20n\90\A9\C2႐\E5\D1\F7l\92*\AA\ABr:K\82\92O\BDA\92\E8\95T(\CC볂\D0LvB\98\A7kt\BC\8A\F7oq\EFd\BB=}M\99\BF\9F[\85c\FC\9AyZv.6\84s\95{Nd\9E\A9\F3Sfw!NrA><{Kge)~\B7\D9]\EF\AEU\E1px@4\81?\C0\99\DD\EF\F7\9A`G\95\90\D3\CB\00\97N\A7\A11ϲu涹[\E7\E9(jU\EDv\DB\EDju | |
\B5^\D1\CE6Wx|\81_\A8V\C0IH\BD\B6\D7\CF\E1L\8E\87\BBd\E8n\AE6\EB\CF>\A0\AA{ \A17\AF\DEΰ1s\BAA\EAH+\97\AF*\E4\86Y\91\E6]߲\E6.\93\F9\8EUPS\AE\D6T\E9\B19\D6)s\85\a*\EF\AEs\B9O<]N\8B0\8F\9B}\BD\DB\E0\9C\E0\F9\D2\9E\83\85`\DCG\9C\A8\D4nov\FB# \FB8\C6n\88\FD\BD\A8p\00.\A3\94\C00d\928\9B\91\94\AB\EA!\DA;o۶\E4O\88\D5?ቈ1x¤r3\A6\EEAЕ\F7jI^\95\AEc\FA\D8[LaN[\A6O\EBfM\A4\85\B3\99\C6G\\F8X\B3\9F$\8D\96N\EB2\EE=\EEU/lklE#<)\C8kA\CA | |
W\AB"\99n\E8\81|URL\CA\D0L\98rָ\D3m\99\E1m"g\AB\B2\E4jS\\AD\8Ag\9BճM\B9\E3t\F4f\BD]?{\F6\F6\94g\C2\9E<\AF\90\83u\F0\8E\EB\F5֓\BAn\B7\D7ۯ~\FA\E3$\81)\AE | |
\9B49G\A8\8F\F7@\EAYϲ-@\81`\C4&\E4y\AD\A9\A4\9E\FF\82\C9\C6RCc\9E\9Cf>mTN>mQ\96fx\DF\8B\E9=~s\E5+\D1H\EA3\B63\A9\91"\B6\C6ٮXq\80\9B\B4\AEb\F3'\A8q\B2\EFOA\AA*drËxb\BB\F0O\BB\D6}F\AC?`\CF\E2E' | |
(g\A7\AA\939S온>K8?1b\E0*\E1\A7I\90\A4\D1\C9"=#N\99qHa\A4\ADX\BB\98R=\A3Q\8C\A5k\97,\97\8B\D0< | |
\CDBj\93\8C\8Cu\F5{Φ\98B!\C7:\87T\94\970`\B8\DE\F7o\89\82\8A#\98\A9hE\E1\AE\C83 p\80\F1\DDU%|\C0\EB\E7W7\D7\F0S\BBg\CFo\80Үi_\A0\9B$\ABXG|\82Ѥ\94\F2C\A8\84\B7@\BA\853\F9\E1\FD\D7\CC7ϊbESvl^\B3\C2H\88_\88P*\EA\A4\D7 | |
mW\AC\A9Z\F2X | |
\93"%d@\C65B\8E\C9+\BCV\A4lJ\B6\B89=\F9d:+\A19^1llӶ\F8\F4\B9vcr\C0В\B4\B2\AE\A9\9B.A\82\C9\E2,l\A7m}\D3 | |
\87\89|\D7\DA\F3\BD5M+\BA\88 \CBu<\87\83\DE\C5a$\93\F1\AD\9E\F7sù\F8\D0\C5T\F4T\8Cd\9D\9D\E2\84^{y*\80b̂\E83\C9ɤϟ\F1b\CEC}\93\92\CC8n\F9:\E3,\FFe\EC\8B\CEV\00\D3\E4\BD\C6T\96Nu!1b\A7TU'\F0\A7\D3q0ˊ\B7\EF?\9E\84\AD\D0K~\AB\CF<\AA*\99s\D4}\E4\FD\E0\ACjS\A4ϟ\AD_\DE\EC>}\F1\EC\C5\CD\F3\EB\9BW۫\AB\8A\D05\DB6\F4\80߽,h/\96V\E5n\B2\AD]\B5ɮ\E1\89J\A4\9E\AEA\A2\D05N\86csVY\DE~#QI\00\91\A4\00\9Cʂ*+\C0~\F0\C4I*!\A9\90iXXB\EB\803\9E\E5Y\CDY\9DU\D7\D7CT\9C\F4\8C(\C1\B6\A6\83(\91Ze\BA\B3\DDA\9C\CC\E0ʢwR\95p\D7\C16\D5`ʢ\DC\EE\B6\FB\B3/tE\85\A6\B8*,\BBPP\87c\A2S\B7,\EB\CB̏$Y\B1\D4\E0\E2C$|\AA\AA\C0\F9d\CDYXSn-\FCf+\FBT0{?u\BA\9C\C4X(\B8\98)\84\CD\F2p\E6&\EETXH-\89\F3\\EC\A2[\BE\CC=\97\A9\E2\DCm<\B3\AA8\AC\9E\D9\AD6\BBwn2\9B+Q\8Eu\D2DhϹݪd\E1\C7\C0\9DU\91\BEX\AFn\AEWo>\F5\E9\ABW\CF_\BC\BC\DA]\ADvװ \97\CBP\85X"\8D%_k\8B#\8E\C0%C\C1\AC\F0XS!>\EBl\EE\B0?"\F8\9B\8D\BA\96\B5\85\AF\E9:\BC\81\B7\8F\90\87\84w\96Т\A8S\B8\9D\FEP\DE\C8\D7FZ\8B@C\83\EFbzo\F5I\E8[%`\9BBf{H\C4\C13{$\B8 | |
9d\A4\86\9A\DEh/!\CFZ\F0]b\8A2-\EAb\00\A0\D4A\C2(wC\FBf\9B$qڋ)\AB2\A5\A0R\AF\87G\88\FES\CB\CFJ>\B3\B8\DAB[jDG\B84M\A6\EE\88"`\F5K\E9S=\E0\E54\FDr$u\A1\E9 \A9EOzW\FA#H\94J\AB\BFT9\EB9ک\D6\E0}xR='\F6\CF\E5\E9\E9\F1\88\DC\DD\A3\E8\DE\D9;\83\FFo\9C\A87\AAa9\C1R7\DB\CArd9}q\BD\BEYWo\E0\A3^>\FF\EC\B37/^>\DF]_\E7U\95%\D2*N5\D1R\AA\96<\C08\F3$" | |
Ly_\854\AC\AF2n\E2\96q\BA\81\B4ѡ`A(\85\AB\83\F9\00fN\E4q\95RID\A7}:?\DDoNI\F3\B7\81\E0\E0۔/\EF\83N\DA\C9YU\85фa\D9\F7\9DMD\A18%!\CE]kVRO\EA\C9\F4r$\92o\98\92\FB\8F\E7\A0\F6\B1\88u\FD\F5\FE\9A\A6_oV\B59!\80)ʼd'Ԏ\E4-;\B6\A7\9C+\98\F0c\80\AD\C0D\D1a\A1Q\C9Ȧ\85ʹ\AE>\8A\8A\CE\\84\E8Gj\F396Z\A41[\9C&\EC\CEuվq\AE\F5\C9A\EA\B1 eU.\00~I\9B\D95ۅ\CBT}\8B\83\98 \99\DAT\9BuS\BB٭\BAyy\BD{\FD\EA\D5'/_\00\89\EFn\9E\E5\DBMW\A40 \C89w\D2C\BA\9C\AB(\EE#}1;\8E\D7R\EA\84h\97*5x\E7\\E7\FATx\E2D\9Ch\907\E7P5\95U\QB\AA\A7|*<\87\F0֩\B2\9Cp\FC\955VU\9C\CAT/P\85O\89WlQ3\B7\E7$){\CC\C1\88\F0a^eP\98C%T\B1$9\C9@\87TAuf\A2n\ABP\BB\C3\E1\983'EV\D8E\E0+ \9E\F0\B7\92YR&,\F4g\CE\C7\BB\E4\8A\D9(\DC6UXK/n\EBD\B89\93dY\E6q\AE\E4\91\C2\C7\D2V\E4X\86YinY\97Z|\E1/\A75Fu\A5\A96\C1$\E4\90\F9\AA$\B6 \B9X\8El\DD,\A9\86\BEsiR\96+\E6e\C3ps\BDݕ\AC\FE\CE\AF_<\89\C4\F1o\B5\CDW\9B-.%\C5\DF\F8\9A)#\87\F2\B8b0\95W\86\B0\98\F5\8F\B4\B5<\81;+\CA | |
W\9D\C5\D8\F5Z\93e\A2\E0\94C;\89\D6uT\96(I\83\B4l<\D2\FE0\84\C8\E6\F4\A2\E5\C2L | |
\AF\D3\F75o |\CB\D2ߑ\E9\CBYE\AF}\D8A\BB\F2*\EC\86_\8C\A8KU\DA\AFӱ\B5,\F9b_\AC~#\A8#\BC\C2ê[\D9\C1\C5\A4hƶ\EC\89+\CB\F0\F1i[c\00q#\95^ \9F(\CD:Ӫ\A4Ү\A5V7\B0\A3\B9x8Z\E9\D3u\CB\FB'\D1}\8D\A2\B1Z\F1T\84m\CE)\A7R\99\F3\E8v^G\F0\E6\\A8u"e\8F\E3\8C | |
\B8\AC\AA5\B5\DDnq\q/\D24\ED\BB\90\FC\B7\F5\A1\90\A6\D2\C0$\F4\9F\DD\\C1\9C\B6e\F1\E2\F9\CD'\AF^UU\F9\EC\EAz\BB\D9U\91\92\94'\97,2\BB\C85S\8A\DC|\84\E66B"\94_\\AA\96\8D6BND\B5\C8rv\9A\BA\B4\9Ea\805!ܣ\D3\D0\F5A\84!\C50\FC\DCK\95ivx/\873\A8E\91F\FE\83\E7\A8\F4\C7̏d|+=\CFf\83\A6M%\E2\B0\E8\E2]\AF\936 | |
$\82r\B3\98\9A\A5\A4v\C2œrV\E2\84\E4F\FF0_r\D5\8C$\A2\99#SDI\9C\8Fp6J߄I\CAk9\E7Ǿ@?,nk0\93^59\ABs\E1j\EC\BDpE\CB©*y\B88O8\AB\FEi\8C\9B\98\93\E4\99 g\A2\FBOM</\D5\DE\C2$\91;%#\B0\A7\9B\9B\FC\ADՄINV\9F\8EeQ\C0\E7TU\F5|\9D}\E7\D3\EB70\A8\9B\AB\B2\ACV\E5zS\AD\B7\EB\DD\D5U\9Er\A0@O\968*\DC\8E$8\F2W\B2:3\D7:\C1.\A9\8E\C4 Z\8D\E3S\B8g%\AB\FA\C3 &\95 | |
S\87\DA\F0^\92<\A9\8C\AB\D2\BD\C4qEZ\9E\89h\85$\88\94\CFb\E7 \A4¨\E8\C6!?a1}\C3\D1gQ\EDPJ\82\8A\C6\82\A9\FF/\D5\DAi*\E8\A7\BFT\AF$\AC-Ol | |
\CFcm\84*%q%В\8A]\90n\AF\8C\87\B0\94\F0\F4K \AE/j\A30\8F:q'_\DD\C4n\B0*nfm-gǼΟ\C9\9A\B0\A4s-\BF\D0f&s\B9\F4[\93\A4\D1Ԁ\8A\F5\B7\CD\C6\C0W \BA\87/\E9\B8\B4\F2\D3\E9ȃ\EE\EC\AEB\90\B3\FF\D5\EF}\FE\BF\FB\ED\DDj[\A49\82"Ҧ\F5ն\\AF\92\AC4\D2c\EE\B5\92L\D5\ED\94\E2+\F5\8Bi\A4x\860\F2!j\B8N\\81:]\98 Ǜ5t | |
\C2ӧj#PL$2\92\CB%$PU\A5\007\FC\C93Խ\A5\A1p\BC\8739$\B0jߒ\960\AFK\85m\E8E\F2Y\C9\EFp\9FH2JԐ$\F7A\C2\DF #\ACCo\F0ڊ\F0a\A2\99\C8\EBZv\D2/\831v\85p\E4g\9D\8Dq\FEb\D8be\DFk\C9\F4L\871 | |
.t\F3\85_0\DE\CC\C5~\84\A5\9C\D7\E3\DBY\B1w1H=\85ŋ\8A\C3\E4\B590i\E4_j\8B?[\E2\E9IRͥ\B4\AC\C0\B9 X\D5\F1\00\8B|f\B7Y!o\FE\9Do}\EB\8F\FF\F8\8F\DE|\FA\AA\94B2\9B\ACȀ\BA8t \9D\A0\93\81,/\A9\9Ft\CDp\D8yL\A8\CF$\D1\92\B4@\A4\AF\C9@\86{do\AA\BA,\E1<\F5f,\A4\CCAT$\89@\CF6\C9\E0$\D0\E1\D0\E2>\E3\86"tz\95۠\FE.\BE\EE\84J\E6\A7R\C1\8C\8D"\83}\8E\C8\E5\C9\E9\94[Z\9B\B4S\AAR\9C\ADQ\B8\C2\89zВ\81\CE]'n\90\F1i\96\94\DF;\C4kT | |
O{t\CEM\99\B8\DAy\EF\9BpqY\A2\D9H\AB0g#Ux\D7\FD\E0E!bn*&\D2\F0\EF%\9B\B3\81U?\9B\E7tO\A3\3\90W`\B1\B5^\BE\EA\99H\97y\A2\D6\FA | |
2$\97\BAd\8A\A2\90AK\97^'3\BD\92$\87\A1\93y\98\F4j\B3k\8E\F7o^?\FF\A3?\F8\CE'T\F1c}&\CD\00+\8C\A7Ft\E9\F7\99|%&q\E3 | |
\AB*\8E\B1\FE\CAF\FF\CAvP\8B:\94 | |
\B8kU]ME\F1|\DC\C5Fu\00)*\C2C\C4m#\C4L}ߒ㕰Ԯe\A0sb'\F8v\F0M\D3ѫ\93\D9|\9Ee\BAa\9C\AE\B1N\E3\F8^\88\AC\F2a\C3ya\B8\F7tS\94\9Bt㉺\88D\E0\DAXe\D4R\96 | |
e\8E#gj \CBy?\C2p | |
\90\88\C2\C4b\F5|\B1@\88\F6\E7\A5i\86\97\88/鹸\F5\C2\FF3;a\92\B1Yn摚\F0=p\E1\E6M\DF\DBo\EA.$\\A24\D9\E8\81\DD\C7;\D19\92L\CA\FD\E1~\9D\99o\BF~\F5|\B7\DD\00X\B1\92#J,\E0\96J\F5\F2tK\89N\AB {ȋ\F4\9FΔ\9A\98\BF\92\B8\A9\95q\E7\89h@F@.\92 | |
\DD\D08?-3\A5 | |
\9C\DAL*5I"zJZ\86\D05\8D\\DC\CBX\BEK\BCk\A9\AB\D32\9E\CF!A/#^.8)~\E2\E4S\90)'ۈ\83*\BC\8D!\BCz\F4\BEbP\92ܡ\FA\F4\F6xj\A1\ED\87\C5?\AA%\B8qSШ\B0&&\DC\E4\BCVӐ 7/\EBJ\E3Y\FF\E2\B4\FE\C55\E37F\DA\CCc\C1\85ǫ%\AC \8F\B9\AA\D3x\C5cy\A4y!\CC\DDa\E6\9E&\FD,\9C_\AC\9F\A1i`\AC5R}\D1)\EC\DB~\BDYK\F9ǿ\FA\E4\F5矽b\AF | |
Q\F7H\D2I_wJ\ACX\8A\8A]\8AnKo\C7RM`\8AG\85K\85\9Em | |
\89\9D\CA쪬G\88R R!\9D˄8]!\93\8EF\B3*\B7 \B3g`\9C\80\F9\E5t\B7m\B0N] B\BE\85\BB\96\9B\9CZ@\B4'\DF\F6\AD | |
\B1\B3@\EET*\93\B1\83PNM\E8\BCH\99x\FFza1\C3'Tہ\A5-\FC` k4K\89\D9h\87\E5\EA\A5'ZXw\93CY\CE\C8\8032\89}F?\E5\C7\E3\CDx\ADT[WF\AB\87IG4NYD\ED\86e\A4ݝ\AD\C40\B3\B2\A3\8A\EC,7\ED\CCJj\AA\F3\91\F8.4\C4\CF;?O\F83\B9\A9H\B9\F3S\D3*4R\BD\A2\90\BE/+\CA\F4<\EC\F7\DB"\B9\BEZ\DD<\BFFV\98f\CB\D3aq>(\89HB\94\F5x\ECC/.\C0\AD3\93\EF\98qr\D4I | |
5X\95\95=\CEX\CCs\9CE\D6mm\D2\C6i\8B\9E\BDBQ\AE\A2\A9w\F8\9E\AC\93\D1h$Z\94Y ]\D8IQ".\B5u\E3+ac\92\CEw,\AF\FA@\8E\D8\E0\AD9\C5\DD3\BAU\BAfv\8E\F9\9E8=\91tRQ\88 | |
>N\C9X=&\00v\AA\C5\C5L>\83\C1׳\B8aݤ"h\8D=\93{8+-\C5)\A9\9B<\8BD | |
\CBh\A6lAE \838}8\F6\E3ٛ\A5\FA\A4\8E\93^T\C0/|ƴG.N=\8F$\F4\C7$\F7 \B3/M[\87)\96K\ADB\97\A3ُ\9B\95\82\AEp\F6\E8\98\C2R\813FQ]\D7\8EEY}\BC\BB\C5;Z\ED\D6ϟ߬V\EB?MEM\CFOj\B9R\C51\BA]\AEWM)\98 \98ׅO\81eG\F6^H\90\E9\B5\D4\8Bс\8E\AA\F2\AD\C0\93\E1\D5V\B3\99~`d\B4>i#Ɨ\CEN]\C1V\E1\DAh\EB.麓$⎵u\C1;\D2\F2\E5}I\98ІH\A5\E1쌍\AAX\AC\DE\EAhy\B2o[\C55\\E4V\B8\86\BB\C8\E3\90\E2\E1W*\BD\8FA\97\90e\85\CD0\EE\EB\93\91(`\C2\F9\E9Խ\A5\AA$\C2)\C7x#\A5g\D6_\E5Y\8A\BA\F7\C1\9Ey75\98\D5V\D3Gsd\E1i)6\B3l9\87Œ\953\97j\BE\873\ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment