function dv_rolloutManager(handlersDefsArray, baseHandler) {
this.handle = function () {
var errorsArr = [];
var handler = chooseEvaluationHandler(handlersDefsArray);
if (handler) {
var errorObj = handleSpecificHandler(handler);
if (errorObj === null) {
return errorsArr;
}
else {
var debugInfo = handler.onFailure();
if (debugInfo) {
for (var key in debugInfo) {
if (debugInfo.hasOwnProperty(key)) {
if (debugInfo[key] !== undefined || debugInfo[key] !== null) {
errorObj[key] = encodeURIComponent(debugInfo[key]);
}
}
}
}
errorsArr.push(errorObj);
}
}
var errorObjHandler = handleSpecificHandler(baseHandler);
if (errorObjHandler) {
errorObjHandler['dvp_isLostImp'] = 1;
errorsArr.push(errorObjHandler);
}
return errorsArr;
};
function handleSpecificHandler(handler) {
var request;
var errorObj = null;
try {
request = handler.createRequest();
if (request && !request.isSev1) {
var url = request.url || request;
if (url) {
if (!handler.sendRequest(url)) {
errorObj = createAndGetError('sendRequest failed.',
url,
handler.getVersion(),
handler.getVersionParamName(),
handler.dv_script);
}
} else {
errorObj = createAndGetError('createRequest failed.',
url,
handler.getVersion(),
handler.getVersionParamName(),
handler.dv_script,
handler.dvScripts,
handler.dvStep,
handler.dvOther
);
}
}
}
catch (e) {
errorObj = createAndGetError(e.name + ': ' + e.message, request ? (request.url || request) : null, handler.getVersion(), handler.getVersionParamName(), (handler ? handler.dv_script : null));
}
return errorObj;
}
function createAndGetError(error, url, ver, versionParamName, dv_script, dvScripts, dvStep, dvOther) {
var errorObj = {};
errorObj[versionParamName] = ver;
errorObj['dvp_jsErrMsg'] = encodeURIComponent(error);
if (dv_script && dv_script.parentElement && dv_script.parentElement.tagName && dv_script.parentElement.tagName == 'HEAD') {
errorObj['dvp_isOnHead'] = '1';
}
if (url) {
errorObj['dvp_jsErrUrl'] = url;
}
if (dvScripts) {
var dvScriptsResult = '';
for (var id in dvScripts) {
if (dvScripts[id] && dvScripts[id].src) {
dvScriptsResult += encodeURIComponent(dvScripts[id].src) + ":" + dvScripts[id].isContain + ",";
}
}
}
return errorObj;
}
function chooseEvaluationHandler(handlersArray) {
var config = window._dv_win.dv_config;
var index = 0;
var isEvaluationVersionChosen = false;
if (config.handlerVersionSpecific) {
for (var i = 0; i < handlersArray.length; i++) {
if (handlersArray[i].handler.getVersion() == config.handlerVersionSpecific) {
isEvaluationVersionChosen = true;
index = i;
break;
}
}
}
else if (config.handlerVersionByTimeIntervalMinutes) {
var date = config.handlerVersionByTimeInputDate || new Date();
var hour = date.getUTCHours();
var minutes = date.getUTCMinutes();
index = Math.floor(((hour * 60) + minutes) / config.handlerVersionByTimeIntervalMinutes) % (handlersArray.length + 1);
if (index != handlersArray.length) {
isEvaluationVersionChosen = true;
}
}
else {
var rand = config.handlerVersionRandom || (Math.random() * 100);
for (var i = 0; i < handlersArray.length; i++) {
if (rand >= handlersArray[i].minRate && rand < handlersArray[i].maxRate) {
isEvaluationVersionChosen = true;
index = i;
break;
}
}
}
if (isEvaluationVersionChosen == true && handlersArray[index].handler.isApplicable()) {
return handlersArray[index].handler;
}
else {
return null;
}
}
}
function doesBrowserSupportHTML5Push() {
"use strict";
return typeof window.parent.postMessage === 'function' && window.JSON;
}
function dv_GetParam(url, name, checkFromStart) {
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = (checkFromStart ? "(?:\\?|&|^)" : "[\\?&]") + name + "=([^]*)";
var regex = new RegExp(regexS, 'i');
var results = regex.exec(url);
if (results == null)
return null;
else
return results[1];
}
function dv_Contains(array, obj) {
var i = array.length;
while (i--) {
if (array[i] === obj) {
return true;
}
}
return false;
}
function dv_GetDynamicParams(url) {
try {
var regex = new RegExp("[\\?&](dvp_[^&]*=[^]*)", "gi");
var dvParams = regex.exec(url);
var results = new Array();
while (dvParams != null) {
results.push(dvParams[1]);
dvParams = regex.exec(url);
}
return results;
}
catch (e) {
return [];
}
}
function dv_createIframe() {
var iframe;
if (document.createElement && (iframe = document.createElement('iframe'))) {
iframe.name = iframe.id = 'iframe_' + Math.floor((Math.random() + "") * 1000000000000);
iframe.width = 0;
iframe.height = 0;
iframe.style.display = 'none';
iframe.src = 'about:blank';
}
return iframe;
}
function dv_GetRnd() {
return ((new Date()).getTime() + "" + Math.floor(Math.random() * 1000000)).substr(0, 16);
}
function dv_SendErrorImp(serverUrl, errorsArr) {
for (var j = 0; j < errorsArr.length; j++) {
var errorObj = errorsArr[j];
var errorImp = dv_CreateAndGetErrorImp(serverUrl, errorObj);
dv_sendImgImp(errorImp);
}
}
function dv_CreateAndGetErrorImp(serverUrl, errorObj) {
var errorQueryString = '';
for (key in errorObj) {
if (errorObj.hasOwnProperty(key)) {
if (key.indexOf('dvp_jsErrUrl') == -1) {
errorQueryString += '&' + key + '=' + errorObj[key];
}
else {
var params = ['ctx', 'cmp', 'plc', 'sid'];
for (var i = 0; i < params.length; i++) {
var pvalue = dv_GetParam(errorObj[key], params[i]);
if (pvalue) {
errorQueryString += '&dvp_js' + params[i] + '=' + pvalue;
}
}
}
}
}
var windowProtocol = 'https:';
var sslFlag = '&ssl=1';
var errorImp = windowProtocol + '//' + serverUrl + sslFlag + errorQueryString;
return errorImp;
}
function dv_sendImgImp(url) {
(new Image()).src = url;
}
function dv_sendScriptRequest(url) {
document.write('');
}
function dv_getPropSafe(obj, propName) {
try {
if (obj)
return obj[propName];
} catch (e) {
}
}
function dvBsType() {
var that = this;
var eventsForDispatch = {};
this.t2tEventDataZombie = {};
this.processT2TEvent = function (data, tag) {
try {
if (tag.ServerPublicDns) {
data.timeStampCollection.push({"beginProcessT2TEvent": getCurrentTime()});
data.timeStampCollection.push({'beginVisitCallback': tag.beginVisitCallbackTS});
var tpsServerUrl = tag.dv_protocol + '//' + tag.ServerPublicDns + '/event.gif?impid=' + tag.uid;
if (!tag.uniquePageViewId) {
tag.uniquePageViewId = data.uniquePageViewId;
}
tpsServerUrl += '&dvp_upvid=' + tag.uniquePageViewId;
tpsServerUrl += '&dvp_numFrames=' + data.totalIframeCount;
tpsServerUrl += '&dvp_numt2t=' + data.totalT2TiframeCount;
tpsServerUrl += '&dvp_frameScanDuration=' + data.scanAllFramesDuration;
tpsServerUrl += '&dvp_scene=' + tag.adServingScenario;
tpsServerUrl += '&dvp_ist2twin=' + (data.isWinner ? '1' : '0');
tpsServerUrl += '&dvp_numTags=' + Object.keys($dvbs.tags).length;
tpsServerUrl += '&dvp_isInSample=' + data.isInSample;
tpsServerUrl += (data.wasZombie) ? '&dvp_wasZombie=1' : '&dvp_wasZombie=0';
tpsServerUrl += '&dvp_ts_t2tCreatedOn=' + data.creationTime;
if (data.timeStampCollection) {
if (window._dv_win.t2tTimestampData) {
for (var tsI = 0; tsI < window._dv_win.t2tTimestampData.length; tsI++) {
data.timeStampCollection.push(window._dv_win.t2tTimestampData[tsI]);
}
}
for (var i = 0; i < data.timeStampCollection.length; i++) {
var item = data.timeStampCollection[i];
for (var propName in item) {
if (item.hasOwnProperty(propName)) {
tpsServerUrl += '&dvp_ts_' + propName + '=' + item[propName];
}
}
}
}
$dvbs.domUtilities.addImage(tpsServerUrl, tag.tagElement.parentElement);
}
} catch (e) {
try {
dv_SendErrorImp(window._dv_win.dv_config.tpsErrAddress + '/visit.jpg?ctx=818052&cmp=1619415&dvtagver=6.1.src&jsver=0&dvp_ist2tProcess=1', {dvp_jsErrMsg: encodeURIComponent(e)});
} catch (ex) {
}
}
};
this.processTagToTagCollision = function (collision, tag) {
var i;
var tpsServerUrl = tag.dv_protocol + '//' + tag.ServerPublicDns + '/event.gif?impid=' + tag.uid;
var additions = [
'&dvp_collisionReasons=' + collision.reasonBitFlag,
'&dvp_ts_reporterDvTagCreated=' + collision.thisTag.dvTagCreatedTS,
'&dvp_ts_reporterVisitJSMessagePosted=' + collision.thisTag.visitJSPostMessageTS,
'&dvp_ts_reporterReceivedByT2T=' + collision.thisTag.receivedByT2TTS,
'&dvp_ts_collisionPostedFromT2T=' + collision.postedFromT2TTS,
'&dvp_ts_collisionReceivedByCommon=' + collision.commonRecievedTS,
'&dvp_collisionTypeId=' + collision.allReasonsForTagBitFlag
];
tpsServerUrl += additions.join("");
for (i = 0; i < collision.reasons.length; i++) {
var reason = collision.reasons[i];
tpsServerUrl += '&dvp_' + reason + "MS=" + collision[reason + "MS"];
}
if (tag.uniquePageViewId) {
tpsServerUrl += '&dvp_upvid=' + tag.uniquePageViewId;
}
$dvbs.domUtilities.addImage(tpsServerUrl, tag.tagElement.parentElement);
};
var messageEventListener = function (event) {
try {
var timeCalled = getCurrentTime();
var data = window.JSON.parse(event.data);
if (!data.action) {
data = window.JSON.parse(data);
}
if (data.timeStampCollection) {
data.timeStampCollection.push({messageEventListenerCalled: timeCalled});
}
var myUID;
var visitJSHasBeenCalledForThisTag = false;
if ($dvbs.tags) {
for (var uid in $dvbs.tags) {
if ($dvbs.tags.hasOwnProperty(uid) && $dvbs.tags[uid] && $dvbs.tags[uid].t2tIframeId === data.iFrameId) {
myUID = uid;
visitJSHasBeenCalledForThisTag = true;
break;
}
}
}
switch (data.action) {
case 'uniquePageViewIdDetermination' :
if (visitJSHasBeenCalledForThisTag) {
$dvbs.processT2TEvent(data, $dvbs.tags[myUID]);
$dvbs.t2tEventDataZombie[data.iFrameId] = undefined;
}
else {
data.wasZombie = 1;
$dvbs.t2tEventDataZombie[data.iFrameId] = data;
}
break;
case 'maColl':
var tag = $dvbs.tags[myUID];
tag.AdCollisionMessageRecieved = true;
if (!tag.uniquePageViewId) {
tag.uniquePageViewId = data.uniquePageViewId;
}
data.collision.commonRecievedTS = timeCalled;
$dvbs.processTagToTagCollision(data.collision, tag);
break;
}
} catch (e) {
try {
dv_SendErrorImp(window._dv_win.dv_config.tpsErrAddress + '/visit.jpg?ctx=818052&cmp=1619415&dvtagver=6.1.src&jsver=0&dvp_ist2tListener=1', {dvp_jsErrMsg: encodeURIComponent(e)});
} catch (ex) {
}
}
};
if (window.addEventListener)
addEventListener("message", messageEventListener, false);
else
attachEvent("onmessage", messageEventListener);
this.pubSub = new function () {
var subscribers = [];
this.subscribe = function (eventName, uid, actionName, func) {
if (!subscribers[eventName + uid])
subscribers[eventName + uid] = [];
subscribers[eventName + uid].push({Func: func, ActionName: actionName});
};
this.publish = function (eventName, uid) {
var actionsResults = [];
if (eventName && uid && subscribers[eventName + uid] instanceof Array)
for (var i = 0; i < subscribers[eventName + uid].length; i++) {
var funcObject = subscribers[eventName + uid][i];
if (funcObject && funcObject.Func && typeof funcObject.Func == "function" && funcObject.ActionName) {
var isSucceeded = runSafely(function () {
return funcObject.Func(uid);
});
actionsResults.push(encodeURIComponent(funcObject.ActionName) + '=' + (isSucceeded ? '1' : '0'));
}
}
return actionsResults.join('&');
};
};
this.domUtilities = new function () {
this.addImage = function (url, parentElement) {
var image = parentElement.ownerDocument.createElement("img");
image.width = 0;
image.height = 0;
image.style.display = 'none';
image.src = appendCacheBuster(url);
parentElement.insertBefore(image, parentElement.firstChild);
};
this.addScriptResource = function (url, parentElement) {
if (parentElement) {
var scriptElem = parentElement.ownerDocument.createElement("script");
scriptElem.type = 'text/javascript';
scriptElem.src = appendCacheBuster(url);
parentElement.insertBefore(scriptElem, parentElement.firstChild);
}
else {
addScriptResourceFallBack(url);
}
};
function addScriptResourceFallBack(url) {
var scriptElem = document.createElement('script');
scriptElem.type = "text/javascript";
scriptElem.src = appendCacheBuster(url);
var firstScript = document.getElementsByTagName('script')[0];
firstScript.parentNode.insertBefore(scriptElem, firstScript);
}
this.addScriptCode = function (srcCode, parentElement) {
var scriptElem = parentElement.ownerDocument.createElement("script");
scriptElem.type = 'text/javascript';
scriptElem.innerHTML = srcCode;
parentElement.insertBefore(scriptElem, parentElement.firstChild);
};
this.addHtml = function (srcHtml, parentElement) {
var divElem = parentElement.ownerDocument.createElement("div");
divElem.style = "display: inline";
divElem.innerHTML = srcHtml;
parentElement.insertBefore(divElem, parentElement.firstChild);
};
};
this.resolveMacros = function (str, tag) {
var viewabilityData = tag.getViewabilityData();
var viewabilityBuckets = viewabilityData && viewabilityData.buckets ? viewabilityData.buckets : {};
var upperCaseObj = objectsToUpperCase(tag, viewabilityData, viewabilityBuckets);
var newStr = str.replace('[DV_PROTOCOL]', upperCaseObj.DV_PROTOCOL);
newStr = newStr.replace('[PROTOCOL]', upperCaseObj.PROTOCOL);
newStr = newStr.replace(/\[(.*?)\]/g, function (match, p1) {
var value = upperCaseObj[p1];
if (value === undefined || value === null)
value = '[' + p1 + ']';
return encodeURIComponent(value);
});
return newStr;
};
this.settings = new function () {
};
this.tagsType = function () {
};
this.tagsPrototype = function () {
this.add = function (tagKey, obj) {
if (!that.tags[tagKey])
that.tags[tagKey] = new that.tag();
for (var key in obj)
that.tags[tagKey][key] = obj[key];
};
};
this.tagsType.prototype = new this.tagsPrototype();
this.tagsType.prototype.constructor = this.tags;
this.tags = new this.tagsType();
this.tag = function () {
};
this.tagPrototype = function () {
this.set = function (obj) {
for (var key in obj)
this[key] = obj[key];
};
this.getViewabilityData = function () {
};
};
this.tag.prototype = new this.tagPrototype();
this.tag.prototype.constructor = this.tag;
this.getTagObjectByService = function (serviceName) {
for (var impressionId in this.tags) {
if (typeof this.tags[impressionId] === 'object'
&& this.tags[impressionId].services
&& this.tags[impressionId].services[serviceName]
&& !this.tags[impressionId].services[serviceName].isProcessed) {
this.tags[impressionId].services[serviceName].isProcessed = true;
return this.tags[impressionId];
}
}
return null;
};
this.addService = function (impressionId, serviceName, paramsObject) {
if (!impressionId || !serviceName)
return;
if (!this.tags[impressionId])
return;
else {
if (!this.tags[impressionId].services)
this.tags[impressionId].services = {};
this.tags[impressionId].services[serviceName] = {
params: paramsObject,
isProcessed: false
};
}
};
this.Enums = {
BrowserId: {Others: 0, IE: 1, Firefox: 2, Chrome: 3, Opera: 4, Safari: 5},
TrafficScenario: {OnPage: 1, SameDomain: 2, CrossDomain: 128}
};
this.CommonData = {};
var runSafely = function (action) {
try {
var ret = action();
return ret !== undefined ? ret : true;
} catch (e) {
return false;
}
};
var objectsToUpperCase = function () {
var upperCaseObj = {};
for (var i = 0; i < arguments.length; i++) {
var obj = arguments[i];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
upperCaseObj[key.toUpperCase()] = obj[key];
}
}
}
return upperCaseObj;
};
var appendCacheBuster = function (url) {
if (url !== undefined && url !== null && url.match("^http") == "http") {
if (url.indexOf('?') !== -1) {
if (url.slice(-1) == '&')
url += 'cbust=' + dv_GetRnd();
else
url += '&cbust=' + dv_GetRnd();
}
else
url += '?cbust=' + dv_GetRnd();
}
return url;
};
var messagesClass = function () {
var waitingMessages = [];
this.registerMsg = function(dvFrame, data) {
if (!waitingMessages[dvFrame.$frmId]) {
waitingMessages[dvFrame.$frmId] = [];
}
waitingMessages[dvFrame.$frmId].push(data);
if (dvFrame.$uid) {
sendWaitingEventsForFrame(dvFrame, dvFrame.$uid);
}
};
this.startSendingEvents = function(dvFrame, impID) {
sendWaitingEventsForFrame(dvFrame, impID);
};
function sendWaitingEventsForFrame(dvFrame, impID) {
if (waitingMessages[dvFrame.$frmId]) {
var eventObject = {};
for (var i = 0; i < waitingMessages[dvFrame.$frmId].length; i++) {
var obj = waitingMessages[dvFrame.$frmId].pop();
for (var key in obj) {
if (typeof obj[key] !== 'function' && obj.hasOwnProperty(key)) {
eventObject[key] = obj[key];
}
}
}
that.registerEventCall(impID, eventObject);
}
}
function startMessageManager() {
for (var frm in waitingMessages) {
if (frm && frm.$uid) {
sendWaitingEventsForFrame(frm, frm.$uid);
}
}
setTimeout(startMessageManager, 10);
}
};
this.messages = new messagesClass();
this.dispatchRegisteredEventsFromAllTags = function () {
for (var impressionId in this.tags) {
if (typeof this.tags[impressionId] !== 'function' && typeof this.tags[impressionId] !== 'undefined')
dispatchEventCalls(impressionId, this);
}
};
var dispatchEventCalls = function (impressionId, dvObj) {
var tag = dvObj.tags[impressionId];
var eventObj = eventsForDispatch[impressionId];
if (typeof eventObj !== 'undefined' && eventObj != null) {
var url = tag.protocol + '//' + tag.ServerPublicDns + "/bsevent.gif?impid=" + impressionId + '&' + createQueryStringParams(eventObj);
dvObj.domUtilities.addImage(url, tag.tagElement.parentElement);
eventsForDispatch[impressionId] = null;
}
};
this.registerEventCall = function (impressionId, eventObject, timeoutMs) {
addEventCallForDispatch(impressionId, eventObject);
if (typeof timeoutMs === 'undefined' || timeoutMs == 0 || isNaN(timeoutMs))
dispatchEventCallsNow(this, impressionId, eventObject);
else {
if (timeoutMs > 2000)
timeoutMs = 2000;
var dvObj = this;
setTimeout(function () {
dispatchEventCalls(impressionId, dvObj);
}, timeoutMs);
}
};
var dispatchEventCallsNow = function (dvObj, impressionId, eventObject) {
addEventCallForDispatch(impressionId, eventObject);
dispatchEventCalls(impressionId, dvObj);
};
var addEventCallForDispatch = function (impressionId, eventObject) {
for (var key in eventObject) {
if (typeof eventObject[key] !== 'function' && eventObject.hasOwnProperty(key)) {
if (!eventsForDispatch[impressionId])
eventsForDispatch[impressionId] = {};
eventsForDispatch[impressionId][key] = eventObject[key];
}
}
};
if (window.addEventListener) {
window.addEventListener('unload', function () {
that.dispatchRegisteredEventsFromAllTags();
}, false);
window.addEventListener('beforeunload', function () {
that.dispatchRegisteredEventsFromAllTags();
}, false);
}
else if (window.attachEvent) {
window.attachEvent('onunload', function () {
that.dispatchRegisteredEventsFromAllTags();
}, false);
window.attachEvent('onbeforeunload', function () {
that.dispatchRegisteredEventsFromAllTags();
}, false);
}
else {
window.document.body.onunload = function () {
that.dispatchRegisteredEventsFromAllTags();
};
window.document.body.onbeforeunload = function () {
that.dispatchRegisteredEventsFromAllTags();
};
}
var createQueryStringParams = function (values) {
var params = '';
for (var key in values) {
if (typeof values[key] !== 'function') {
var value = encodeURIComponent(values[key]);
if (params === '')
params += key + '=' + value;
else
params += '&' + key + '=' + value;
}
}
return params;
};
}
function dv_baseHandler(){function K(e,a){var d=document.createElement("iframe");d.name=window._dv_win.dv_config.emptyIframeID||"iframe_"+L();d.width=0;d.height=0;d.id=a;d.style.display="none";d.src=e;return d}function M(e,a,d){var d=d||150,g=window._dv_win||window;if(g.document&&g.document.body)return a&&a.parentNode?a.parentNode.insertBefore(e,a):g.document.body.insertBefore(e,g.document.body.firstChild),!0;if(0h&&j!=window._dv_win.top;)h++,j=j.parent;g.depth=h;var f=W(g);y="&aUrl="+encodeURIComponent(f.url);
i="&aUrlD="+f.depth;l=g.depth+b;c&&g.depth--}catch(L){i=y=l=g.depth=""}void 0!=a.aUrl&&(y="&aUrl="+a.aUrl);var m;a:{try{if("object"==typeof window.$ovv||"object"==typeof window.parent.$ovv){m=1;break a}}catch(F){}m=0}b=a.script.src;m="&ctx="+(dv_GetParam(b,"ctx")||"")+"&cmp="+(dv_GetParam(b,"cmp")||"")+"&plc="+(dv_GetParam(b,"plc")||"")+"&sid="+(dv_GetParam(b,"sid")||"")+"&advid="+(dv_GetParam(b,"advid")||"")+"&adsrv="+(dv_GetParam(b,"adsrv")||"")+"&unit="+(dv_GetParam(b,"unit")||"")+"&isdvvid="+
(dv_GetParam(b,"isdvvid")||"")+"&uid="+a.uid+"&tagtype="+(dv_GetParam(b,"tagtype")||"")+"&adID="+(dv_GetParam(b,"adID")||"")+"&app="+(dv_GetParam(b,"app")||"")+"&sup="+(dv_GetParam(b,"sup")||"")+"&isovv="+m;(c=dv_GetParam(b,"xff"))&&(m+="&xff="+c);(c=dv_GetParam(b,"useragent"))&&(m+="&useragent="+c);m+="&dup="+dv_GetParam(b,"dup");if(void 0!=window._dv_win.$dvbs.CommonData.BrowserId&&void 0!=window._dv_win.$dvbs.CommonData.BrowserVersion&&void 0!=window._dv_win.$dvbs.CommonData.BrowserIdFromUserAgent)h=
window._dv_win.$dvbs.CommonData.BrowserId,j=window._dv_win.$dvbs.CommonData.BrowserVersion,c=window._dv_win.$dvbs.CommonData.BrowserIdFromUserAgent;else{var w=c?decodeURIComponent(c):navigator.userAgent;h=[{id:4,brRegex:"OPR|Opera",verRegex:"(OPR/|Version/)"},{id:1,brRegex:"MSIE|Trident/7.*rv:11|rv:11.*Trident/7|Edge/",verRegex:"(MSIE |rv:| Edge/)"},{id:2,brRegex:"Firefox",verRegex:"Firefox/"},{id:0,brRegex:"Mozilla.*Android.*AppleWebKit(?!.*Chrome.*)|Linux.*Android.*AppleWebKit.* Version/.*Chrome",
verRegex:null},{id:0,brRegex:"AOL/.*AOLBuild/|AOLBuild/.*AOL/|Puffin|Maxthon|Valve|Silk|PLAYSTATION|PlayStation|Nintendo|wOSBrowser",verRegex:null},{id:3,brRegex:"Chrome",verRegex:"Chrome/"},{id:5,brRegex:"Safari|(OS |OS X )[0-9].*AppleWebKit",verRegex:"Version/"}];c=0;j="";for(f=0;f>>4*q&15,b+=c.toString(16);return b},c=[1518500249,1859775393,2400959708,3395469782],t=t+String.fromCharCode(128),u=Math.ceil((t.length/4+2)/16),q=Array(u);for(j=0;jh;h++)q[j][h]=t.charCodeAt(64*j+4*h)<<24|t.charCodeAt(64*j+4*h+1)<<16|t.charCodeAt(64*j+4*h+2)<<8|t.charCodeAt(64*j+4*h+3)}q[u-1][14]=8*(t.length-1)/Math.pow(2,32);q[u-1][14]=Math.floor(q[u-1][14]);q[u-1][15]=8*(t.length-1)&
4294967295;t=1732584193;h=4023233417;var f=2562383102,w=271733878,P=3285377520,z=Array(80),G,A,C,D,Q;for(j=0;jr;r++)z[r]=q[j][r];for(r=16;80>r;r++)z[r]=(z[r-3]^z[r-8]^z[r-14]^z[r-16])<<1|(z[r-3]^z[r-8]^z[r-14]^z[r-16])>>>31;G=t;A=h;C=f;D=w;Q=P;for(r=0;80>r;r++){var V=Math.floor(r/20),Y=G<<5|G>>>27,H;c:{switch(V){case 0:H=A&C^~A&D;break c;case 1:H=A^C^D;break c;case 2:H=A&C^A&D^C&D;break c;case 3:H=A^C^D;break c}H=void 0}var Z=Y+H+Q+c[V]+z[r]&4294967295;Q=D;D=C;C=A<<30|A>>>2;
A=G;G=Z}t=t+G&4294967295;h=h+A&4294967295;f=f+C&4294967295;w=w+D&4294967295;P=P+Q&4294967295}v=n(t)+n(h)+n(f)+n(w)+n(P)}}catch(ba){v=null}var R;a:{u=window._dv_win;q=0;try{for(;10>q;){if(u.maple&&"object"===typeof u.maple){R=!0;break a}if(u==u.parent){R=!1;break a}q++;u=u.parent}}catch(M){}R=!1}a=(window._dv_win.dv_config.verifyJSURL||a.protocol+"//"+(window._dv_win.dv_config.bsAddress||"rtb"+a.dvregion+".doubleverify.com")+"/verify.js")+"?jsCallback="+a.callbackName+"&jsTagObjCallback="+a.tagObjectCallbackName+
"&num=6"+m+"&srcurlD="+g.depth+"&ssl="+a.ssl+(p?"&dvf=0":"")+(R?"&dvf=1":"")+"&refD="+l+a.tagIntegrityFlag+a.tagHasPassbackFlag+"&htmlmsging="+(x?"1":"0")+(null!=v?"&aadid="+v:"");(g=dv_GetDynamicParams(b).join("&"))&&(a+="&"+g);if(!1===k||s)a=a+("&dvp_isBodyExistOnLoad="+(k?"1":"0"))+("&dvp_isOnHead="+(s?"1":"0"));d="srcurl="+encodeURIComponent(d);if((k=window._dv_win[S("=@42E:@?")][S("2?46DE@C~C:8:?D")])&&0=new Number(RegExp.$1)&&(k=2E3);if(b=dv_GetParam(b,"referrer"))b="&referrer="+b,a.length+b.length<=k&&(a+=b);y.length+i.length+a.length<=k&&(a+=i,d+=y);var E;try{var T=0;y=function(a,b){b&&32>a&&(T=(T|1<>>0)};var K=function(a,b){return function(){return a.apply(b,arguments)}},O="svg"===document.documentElement.nodeName.toLowerCase(),
I=function(){return"function"!==typeof document.createElement?document.createElement(arguments[0]):O?document.createElementNS.call(document,"http://www.w3.org/2000/svg",arguments[0]):document.createElement.apply(document,arguments)},N=["Moz","O","ms","Webkit"],$=["moz","o","ms","webkit"],B={style:I("modernizr").style};i=function(a,b,c,q,e){var d=a.charAt(0).toUpperCase()+a.slice(1),g=(a+" "+N.join(d+" ")+d).split(" ");if("string"===typeof b||"undefined"===typeof b){a:{c=g;a=function(){h&&(delete B.style,
delete B.modElem)};e="undefined"===typeof e?!1:e;if("undefined"!==typeof q&&(d=nativeTestProps(c,q),"undefined"!==typeof d)){b=d;break a}for(var h,f,i,d=["modernizr","tspan","samp"];!B.style&&d.length;)h=!0,B.modElem=I(d.shift()),B.style=B.modElem.style;g=c.length;for(d=0;d-1&&(!21||21(1H[1N])))v 1y}v 1F}19 g(s){d h=\"\",t=\"5B.;j&5C}5y/0:5x'5t=B(5u-5v!,5w)5r\\\\{ >5D+5E\\\"5L<\";18(i=0;i1I-1U}2}\"2x\"5\"5l}2A<}5k','e','=J','10}U\"<5}5g\"7}F\\\\<}4\\\\[5h}5i:5j]k}9\\\\<}4\\\\[t:2W\"5Q]k}9\\\\<}4\\\\[5R})5-u<}t]k}9\\\\<}4\\\\[6n]k}9\\\\<}4\\\\[6o}6p]k}6q','e','6m',':6l}<\"H-1L/2M','p','6h','\\\\<}4\\\\121I-1U}2}\"z<3R-2}\"3S\"2.42-2}\"3T=3Z\"7}40\"7}P=48','e','x','49)','p','+','\\\\<}4\\\\2g:4a<5}47\\\\<}4\\\\2g\"46?\"6','e','3Q','L!!44.45.H 4b','p','x=','\\\\<}4\\\\3I}3D)u\"3E\\\\<}4\\\\3M-2?\"6','e','+=','\\\\<}4\\\\2k\"3N\\\\<}4\\\\2k\"3O--3L<\"2f?\"6','e','x+','\\\\<}4\\\\8-2}\"2l}\"2o2s','p','4t','\\\\<}4\\\\1h:<1Y}s<4u}9\\\\<}4\\\\1h:<1Y}s<4v<}f\"u}2P\\\\<}4\\\\2H\\\\<}4\\\\1h:<1Y}sg;H\\'T)Y.8P\\\\<}4\\\\33.L>g;8V&&8W>H\\'T)Y.I?\"6','e','l=','1d\\\\<}4\\\\91\\\\92>90}U\"<5}1B\"7}F\"32}U\"<5}8Z\\\\<}4\\\\8X<2K-20\"u\"8Y}U\"<5}1B\"7}F\"32}U\"<5}85','e','{J','H:1I-1U}2}\"q\\\\<}4\\\\r\"<5}1k\"}u-2D','e','=S','\\\\<}4\\\\70\"1f\\\\<}4\\\\6Z}U\"<5}1j\\\\<}4\\\\6L?\"6','e','{o','\\\\<}4\\\\6M}<6N\\\\<}4\\\\6K}?\"6','e','=6J','\\\\<}4\\\\G<1J\\\\<}4\\\\G<2d\\\\A','p','=','10}U\"<5}O\"17\"7}F\\\\<}4\\\\E\"6F\"6G:6H}6I^[6O,][6P+]6W\\'<}4\\\\6X\"2f\"q\\\\<}4\\\\E}u-6Y\"14\"7}6V=6U','e','6Q','\\\\<}4\\\\1G:!3g\\\\<}4\\\\8-2}\"E(n\"16}b?\\\\<}4\\\\8-2}\"E(n\"1O<:[f\"29*6R;7v\"<4f','p','h{','\\\\<}4\\\\7s15){v{m:V.X[0]}}18(d 1b=0;1b0)1W.X=1K.3A(\"&\");v 1W}1q(e){v{m:\"-8Q\"}}})();",
62,567," Z5 Ma2vsu4f2 aM EZ5Ua a44OO a44 var P1 res a2MQ0242U E45Uu return if OO E3 _ results qD8 ri currentResults C3 err qsa EBM 3RSvsu4f2 U3q2D8M2 5ML44P1 MQ8M2 for function window cri currWindow U5q length QN25sF Z27 E_ WDE42 tOO E35f ENuM2 EsMu try E2 fP1 catch g5 break EC2 vFoS fc ci true exists fMU q5D8M2 push ZZ2 abs false Eu wnd Tg5 M5OO errors uM U5Z2c prop 5ML44qWZ UT _t ei Euf UIuCTZOO N5 EfaNN_uZf_35f response EuZ ZU5 Math func _7Z fC_ 2MM _5 zt__ Ea Q42 3OO M5E32 M511tsa M5E 5Mu E27 z5 Z2711t Q42E EU E_UaMM2 ELZg5 EufB 0UM EuZ_lEf Q42OO fu charAt indexOf str Ef35M ENM5 EuZ_hEf E_Y Z2s ZP1 a44nD 5ML44qWfUM uZf ALZ02M ELMMuQOO BuZfEU5 kN7 sMu E__ MuU U25sF E__N Ef2 2Qfq BV2U uf ENu 2M_ _NuM tzsa QN25sF511tsa EcIT_0 Fsu4f2HnnDqD NTZOOqsa sqtfQ toString Ma2vsu4f2nUu m42s uMC vF3 2Ms45 SN7HF5 2HFB5MZ2MvFSN7HF vFuBf54a 4uQ2MOO Ma2HnnDqD eval uNfQftD11m vFl 3vFJlSN7HF32 top HF 3RSOO vB4u co Ht vFmheSN7HF42s 2qtf Q42tD11tN5f parent EM2s2MM2ME E3M2sP1tuB5a Ba HFM join else ujuM Z42 uOO 2r2 EZ5p5 EA5Cba 2s2MI5pu 35ZP1 MU0 EuZZTsMu 7__OO 7__E2U u_Z2U5Z2OO xJ 1Z5Ua EUM2u tDRm null E2fUuN2z21 sq2 OO2 sqt DM2 PSHM2 oo _ALb A_pLr IQN2 _V5V5OO HnDqD Ld0 2Mf cAA_cg 5MqWfUM F5ENaB4 zt_M f32M_faB D11m lJ oJ NTZ NLZZM2ff Je V0 7A5C fOO fDE42 fY45 5IMu hx CP1 CF M2 ox squ EM2s2MM2MOO fD aNP1 2MUaMQE sOO kC5 1tk27 UEVft WD 5ML44qtZ 99D uCUuZ2OOZ5Ua CEC2 Mu 2cM4 JJ UmBu Um u_faB Jl hJ 2MUaMQOO 2MUaMQEU5 _tD zt_ tDE42 eS zt__uZ_M f_tDOOU5q COO parseInt ZBu kUM EVft eo r5 u4f ENaBf_uZ_faB xh g5a fgM2Z2 E7LZfKrA 24N2MTZ qD8M2 tf5a ZA2 24t 2Zt QN2P1ta E7GXLss0aBTZIuC 25a QN211ta 2ZtOO QOO 5Zu4 Kt Q6T uic2EHVO LnG s7 YDoMw8FRp3gd94 99 in Ue PzA NhCZ lkSvfxWX C2 Na 2Z0 ENaBf_uZ_uZ unknown message 1bqyJIma href location 1000 r5Z2t tUZ xx _M he EuZ_hOO 5Z2f EfUM 2TsMu 2OO EuZZ I5b5ZQOO EuZ_lOO UufUuZ2 fbQIuCpu 2qtfUM tDHs5Mq 1SH uMF21 xo xl Ef aM4P1 2BfM2Z EaNZu U2OO ho zt_4 Mtzsa q5BVD8M2 u_a ee tUBt tB LMMt a44nDqD F5BVEa a44OO5BVEu445 AEBuf2g lS M__ 2_M2s2M2 100 AOO IuMC2 b4u UCMOO UCME i2E42 s5 5NENM5U2ff_ uC_ uMfP1 a44OOk Sh EuZfBQuZf E5U4U5qDEN4uQ ELZ0 N2MOO um Sm xe 1t32 vFSN7t FZ HnnDqD FP 8lzn kE 2DnUu E5U4U511tsa E5U4U5OO E3M2szsu4f2nUu Ma2nnDqDvsu4f2 oS M2sOO FN1 2DRm hh 5NOO sq JS ___U E35aMfUuND _NM _uZB45U 2P1 CfE35aMfUuN OOq _ZBf le CfOO So uC2MOO f2MP1 Sl N4uU2_faUU2ffP1 Jo bM5 ENM LZZ035NN2Mf lo _c bQTZqtMffmU5 2MtD11 EIMuss u60 Ma2nDvsu4f2 ztIMuss ol a2TZ a44HnUu E_NUCOO E_NUCEYp_c Eu445Uu gI Z5Ua eh 1tB2uU5 Jx 1tfMmN4uQ2Mt Z25 uC2MEUB B24 xS 1tNk4CEN3Nt HnUu E4u CcM4P1 Ef2A ENuM ZC2 lh oe B__tDOOU5q B_UB_tD tnD CfEf2U lx ll gaf Egaf u1 ErF hl 4P1 ErP1 M5 wZ8 uZf35f DkE SS UP1 _f 5M2f zlnuZf2M UUUN 2N5 rLTp E3M2sD fNNOO E0N2U u4buf2Jl E_Vu Se fzuOOuE42 ubuf2b45U Jh ZOO fN uCOO u_ 2M_f35 a44OOkuZwkwZ8ezhn7wZ8ezhnwE3 4kE fC532M2P1 ENuMu U2f uCEa u_uZ_M2saf2_M2sM2f3P1 4Zf 2MOOkq IOO 999 ZfF EUuU oh ZfOO _I AbL zt af_tzsa tnDOOU5q A_tzsa ztBM5 f2Mc 4Qg5 U25sFLMMuQ kZ 2u4 fN4uQLZfEVft eJ".split(" "),
0,{}));a.hasOwnProperty("err")&&(e=a.err);return{vdcv:25,vdcd:a.res,err:e}}catch(d){return{vdcv:25,vdcd:"0",err:e}}}function W(e){try{if(1>=e.depth)return{url:"",depth:""};var a,d=[];d.push({win:window._dv_win.top,depth:0});for(var g,b=1,c=0;0c;){try{if(c++,g=d.shift(),b--,0?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~".indexOf(b),0<=g&&(b="!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~".charAt((g+47)%94)),a+=b;return a}function L(){return Math.floor(1E12*(Math.random()+
""))}function X(){try{if("function"===typeof window.callPhantom)return 99;try{if("function"===typeof window.top.callPhantom)return 99}catch(e){}if(void 0!=window.opera&&void 0!=window.history.navigationMode||void 0!=window.opr&&void 0!=window.opr.addons&&"function"==typeof window.opr.addons.installExtension)return 4;if(void 0!=window.chrome&&"function"==typeof window.chrome.csi&&"function"==typeof window.chrome.loadTimes&&void 0!=document.webkitHidden&&(!0==document.webkitHidden||!1==document.webkitHidden))return 3;
if(void 0!=window.mozInnerScreenY&&"number"==typeof window.mozInnerScreenY&&void 0!=window.mozPaintCount&&0<=window.mozPaintCount&&void 0!=window.InstallTrigger&&void 0!=window.InstallTrigger.install)return 2;if(void 0!=document.uniqueID&&"string"==typeof document.uniqueID&&(void 0!=document.documentMode&&0<=document.documentMode||void 0!=document.all&&"object"==typeof document.all||void 0!=window.ActiveXObject&&"function"==typeof window.ActiveXObject)||window.document&&window.document.updateSettings&&
"function"==typeof window.document.updateSettings)return 1;var a=!1;try{var d=document.createElement("p");d.innerText=".";d.style="text-shadow: rgb(99, 116, 171) 20px -12px 2px";a=void 0!=d.style.textShadow}catch(g){}return(0=b;b++)if(null!=a.parent&&a.parent!=a)if(0":/<\/scr\+ipt>/g;"function"!==typeof String.prototype.trim&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});var n=function(a){if((a=a.previousSibling)&&
"#text"==a.nodeName&&(null==a.nodeValue||void 0==a.nodeValue||0==a.nodeValue.trim().length))a=a.previousSibling;if(a&&"SCRIPT"==a.tagName&&a.getAttribute("type")&&("text/adtag"==a.getAttribute("type").toLowerCase()||"text/passback"==a.getAttribute("type").toLowerCase())&&""!=a.innerHTML.trim()){if("text/adtag"==a.getAttribute("type").toLowerCase())return m=a.innerHTML.replace(w,"<\/script>"),{isBadImp:!1,hasPassback:!1,tagAdTag:m,tagPassback:F};if(null!=F)return{isBadImp:!0,hasPassback:!1,tagAdTag:m,
tagPassback:F};F=a.innerHTML.replace(w,"<\/script>");a=n(a);a.hasPassback=!0;return a}return{isBadImp:!0,hasPassback:!1,tagAdTag:m,tagPassback:F}},l=n(l);i.tagAdtag=l.tagAdTag;i.tagPassback=l.tagPassback;l.isBadImp?i.tagIntegrityFlag="&isbadimp=1":l.hasPassback&&(i.tagHasPassbackFlag="&tagpb=1")}var J;J=(/iPhone|iPad|iPod|\(Apple TV|iOS|Coremedia|CFNetwork\/.*Darwin/i.test(navigator.userAgent)||navigator.vendor&&"apple, inc."===navigator.vendor.toLowerCase())&&!window.MSStream;l=i;if(J)f="https:";
else{f=i.script.src;p="http:";k=window._dv_win.location.toString().match("^http(?:s)?");if("https"==f.match("^https")&&("https"==k||"http"!=k))p="https:";f=p}l.protocol=f;i.ssl="0";"https:"===i.protocol&&(i.ssl="1");l=i;(f=window._dv_win.dvRecoveryObj)?("2"!=l.tagformat&&(f=f[l.ctx]?f[l.ctx].RecoveryTagID:f._fallback_?f._fallback_.RecoveryTagID:1,1===f&&l.tagAdtag?document.write(l.tagAdtag):2===f&&l.tagPassback&&document.write(l.tagPassback)),l=!0):l=!1;if(l)return{isSev1:!0};this.dvStep=2;var v=
i,t,u=window._dv_win.document.visibilityState;window[v.tagObjectCallbackName]=function(a){var b=window._dv_win.$dvbs;if(b){var c;J?c="https:":(c="http:","http:"!=window._dv_win.location.protocol&&(c="https:"));t=a.ImpressionID;b.tags.add(a.ImpressionID,v);b.tags[a.ImpressionID].set({tagElement:v.script,impressionId:a.ImpressionID,dv_protocol:v.protocol,protocol:c,uid:v.uid,serverPublicDns:a.ServerPublicDns,ServerPublicDns:a.ServerPublicDns});v.script&&v.script.dvFrmWin&&(v.script.dvFrmWin.$uid=a.ImpressionID,
b.messages&&b.messages.startSendingEvents&&b.messages.startSendingEvents(v.script.dvFrmWin,a.ImpressionID));var d=function(){var b=window._dv_win.document.visibilityState;"prerender"===u&&("prerender"!==b&&"unloaded"!==b)&&(u=b,window._dv_win.$dvbs.registerEventCall(a.ImpressionID,{prndr:0}),window._dv_win.document.removeEventListener(e,d))};if("prerender"===u)if("prerender"!==window._dv_win.document.visibilityState&&"unloaded"!==visibilityStateLocal)window._dv_win.$dvbs.registerEventCall(a.ImpressionID,
{prndr:0});else{var e;"undefined"!==typeof window._dv_win.document.hidden?e="visibilitychange":"undefined"!==typeof window._dv_win.document.mozHidden?e="mozvisibilitychange":"undefined"!==typeof window._dv_win.document.msHidden?e="msvisibilitychange":"undefined"!==typeof window._dv_win.document.webkitHidden&&(e="webkitvisibilitychange");window._dv_win.document.addEventListener(e,d,!1)}}try{var f;var b={verify:{prefix:"vf",stats:[{name:"duration",prefix:"dur"}]}},g;b:{c={};try{if(window&&window.performance&&
window.performance.getEntries)for(var h=window.performance.getEntries(),i=0;i