7 Video Quality Enhancers to Improve Low Resolution on Your Videos (2024)

")),[e.width,e.height]=v[r.size_id].split("x").map((e=>Number(e)))),e.rubiconTargeting=(Array.isArray(r.targeting)?r.targeting:[]).reduce(((e,t)=>(e[t.key]=t.values[0],e)),{rpfl_elemid:n.adUnitCode}),t.push(e)}else(0,p.logError)("Rubicon: bidRequest undefined at index position:".concat(i),a,e);var c,l;return t}),[]).sort(((e,t)=>(t.cpm||0)-(e.cpm||0))),l=null===(r=e.component_auction_config)||void 0===r?void 0:r.map((e=>({config:e,bidId:e.bidId})));return l?{bids:c,fledgeAuctionConfigs:l}:c},getUserSyncs:function(e,t,r,i,o){if(!R&&e.iframeEnabled){let e={};var n;if(r&&("boolean"==typeof r.gdprApplies&&(e.gdpr=Number(r.gdprApplies)),"string"==typeof r.consentString&&(e.gdpr_consent=r.consentString)),i&&(e.us_privacy=encodeURIComponent(i)),null!=o&&o.gppString)e.gpp=o.gppString,e.gpp_sid=null===(n=o.applicableSections)||void 0===n?void 0:n.toString();return e=Object.keys(e).length?"?".concat((0,p.formatQS)(e)):"",R=!0,{type:"iframe",url:"https://".concat(x.syncHost||"eus",".rubiconproject.com/usync.html")+e}}}};function h(e,t){let r;return r=e.params.referrer?e.params.referrer:t.refererInfo.page,e.params.secure?r.replace(/^http:/i,"https:"):r}function _(e){const t=document.getElementById(e.adUnitCode);!function(e){const t=e.querySelector("div[id^='google_ads']");t&&t.style.setProperty("display","none")}(t),function(e){const t=e.querySelector("script[id^='sas_script']"),r=t&&t.nextSibling;r&&"iframe"===r.localName&&r.style.setProperty("display","none")}(t);const r=e.renderer.getConfig();e.renderer.push((()=>{window.MagniteApex.renderAd({width:e.width,height:e.height,vastUrl:e.vastUrl,placement:{attachTo:t,align:r.align||"center",position:r.position||"append"},closeButton:r.closeButton||!1,label:r.label||void 0,collapse:r.collapse||!0})}))}function k(e,t){let r=e.params;if(t===d.pX){let t=[];return r.video&&r.video.playerWidth&&r.video.playerHeight?t=[r.video.playerWidth,r.video.playerHeight]:Array.isArray((0,m.Z)(e,"mediaTypes.video.playerSize"))&&1===e.mediaTypes.video.playerSize.length?t=e.mediaTypes.video.playerSize[0]:Array.isArray(e.sizes)&&e.sizes.length>0&&Array.isArray(e.sizes[0])&&e.sizes[0].length>1&&(t=e.sizes[0]),t}let i=[];return Array.isArray(r.sizes)?i=r.sizes:void 0!==(0,m.Z)(e,"mediaTypes.banner.sizes")?i=j(e.mediaTypes.banner.sizes):Array.isArray(e.sizes)&&e.sizes.length>0?i=j(e.sizes):(0,p.logWarn)("Rubicon: no sizes are setup or found"),function(e){const t=[15,2,9];return e.sort(((e,r)=>{const i=t.indexOf(e),o=t.indexOf(r);return i>-1||o>-1?-1===i?1:-1===o?-1:i-o:e-r}))}(i)}function j(e){return(0,p.parseSizesInput)(e).reduce(((e,t)=>{let r=parseInt(v[t],10);return r&&e.push(r),e}),[])}function S(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=[];if(function(e){let t=void 0!==(0,m.Z)(e,"mediaTypes.".concat(d.pX)),r=void 0!==(0,m.Z)(e,"mediaTypes.".concat(d.Mk)),i=void 0!==(0,m.Z)(e,"params.bidonmultiformat"),o="object"!=typeof(0,m.Z)(e,"params.video");return!(!t||!i)||(r&&o&&(t=!1),t&&o&&(0,u.N)(e,"params.video",{}),t)}(e)){if(-1===["outstream","instream"].indexOf((0,m.Z)(e,"mediaTypes.".concat(d.pX,".context"))))return t&&(0,p.logError)("Rubicon: mediaTypes.video.context must be outstream or instream"),r;if(k(e,d.pX).length<2)return t&&(0,p.logError)("Rubicon: could not determine the playerSize of the video"),r;t&&(0,p.logMessage)("Rubicon: making video request for adUnit",e.adUnitCode),r.push(d.pX)}if(void 0!==(0,m.Z)(e,"mediaTypes.".concat(d.B5))&&r.push(d.B5),void 0!==(0,m.Z)(e,"mediaTypes.".concat(d.Mk))){if(0===k(e,d.Mk).length)return t&&(0,p.logError)("Rubicon: could not determine the sizes for banner request"),r;t&&(0,p.logMessage)("Rubicon: making banner request for adUnit",e.adUnitCode),r.push(d.Mk)}return r}function A(e){let t=!1;const r=["asi","sid","hp"];return e.nodes?(t=e.nodes.reduce(((e,t)=>e?r.every((e=>t.hasOwnProperty(e))):e),!0),t||(0,p.logError)("Rubicon: required schain params missing"),t):t}function C(e,t){return"rp_schain"===e?"rp_schain=".concat(t):"".concat(e,"=").concat(encodeURIComponent(t))}var R=!1;(0,s.dX)(y),(0,i.z)("rubiconBidAdapter")},26372:(e,t,r)=>{r.d(t,{DZ:()=>n,Px:()=>s,TP:()=>d,YC:()=>a,Z:()=>o,f8:()=>p,fP:()=>u,gm:()=>i,md:()=>c});const i=["request","imp","bidResponse","response"],[o,n,s,a]=i,[d,c]=["default","pbs"],l=new Set(i);const{registerOrtbProcessor:p,getProcessors:u}=function(){const e={};return{registerOrtbProcessor(t){let{type:r,name:o,fn:n,priority:s=0,dialects:a=[d]}=t;if(!l.has(r))throw new Error("ORTB processor type must be one of: ".concat(i.join(", ")));a.forEach((t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(r)||(e[t][r]={}),e[t][r][o]={priority:s,fn:n}}))},getProcessors:t=>e[t]||{}}}()}},e=>{e.O(0,[85279,93157,70951,38409],(()=>{return t=40060,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[33238],{93444:(e,t,n)=>{var i=n(78640),r=n(64358),o=n(14699),a=n(24679),s=n(3193);const p=["inScreen","inImage","inArticle","inBanner"],d={[a.Mk]:"display",[a.pX]:"video"},c="fixed",u="mobile",l="unknown",g=()=>{const e=navigator.connection||navigator.mozConnection||navigator.webkitConnection||{};switch(e.type||e.effectiveType){case"wifi":case"ethernet":return c;case"cellular":case"wimax":return u;default:return/iPad|iPhone|iPod/.test(navigator.userAgent)||/android/i.test(navigator.userAgent)?l:c}};function m(e){return!!e.mediaTypes&&!!e.mediaTypes.video}function h(e){const t=e.params;return!!t.publisherId&&!!t.adUnitId&&p.indexOf(t.placement)>-1}function f(e){var t;const n=e.params,i=(0,r._map)(Object.keys(e.mediaTypes),(function(e){return d[e]})),o={id:e.bidId,transactionId:null===(t=e.ortb2Imp)||void 0===t||null===(t=t.ext)||void 0===t?void 0:t.tid,sizes:e.sizes,supplyTypes:i,adUnitId:n.adUnitId,adUnitCode:e.adUnitCode,geom:S(e.adUnitCode),placement:n.placement,requestCount:e.bidderRequestsCount||1};return m(e)&&(o.videoParams=y(e)),o}function y(e){const t=e.mediaTypes.video||{};return t.playerSize&&(t.w=t.playerSize[0][0],t.h=t.playerSize[0][1]),t}function b(e){const t="display"===(n=e.mediaType)?a.Mk:"video"===n?a.pX:n;var n;const i={requestId:e.bidId,cpm:e.price,width:e.width,height:e.height,creativeId:e.creativeId,currency:e.currency,netRevenue:!0,mediaType:t,ttl:e.ttl,nurl:e.nurl,meta:{advertiserDomains:e&&e.adomain&&e.adomain.length>0?e.adomain:[]}};return t===a.pX?i.vastXml=e.content:i.ad=e.content,i}function v(){const e=(()=>{try{const e=performance.getEntriesByType("navigation")[0];return Math.round(e.responseStart-e.startTime)}catch(e){try{const e=performance.timing;return Math.round(e.responseStart-e.fetchStart)}catch(e){return 0}}})();return e>=0&&e<=performance.now()?e:0}function S(e){const t=document.getElementById(e);if(t){const e=window.scrollY,{top:n,left:i,width:r,height:o}=t.getBoundingClientRect();return{scrollY:e,top:n,left:i,width:r,height:o,viewport:{width:window.innerWidth,height:window.innerHeight}}}}const C={code:"seedtag",gvlid:157,aliases:["st"],supportedMediaTypes:[a.Mk,a.pX],isBidRequestValid:e=>m(e)?function(e){const t=y(e);let n=!!e.params.publisherId&&!!e.params.adUnitId&&m(e)&&!!t.playerSize&&(0,r.isArray)(t.playerSize)&&t.playerSize.length>0;return"inStream"===e.params.placement?n&&"instream"===t.context:n&&"outstream"===t.context&&function(e){return!!e.mediaTypes&&!!e.mediaTypes.banner}(e)&&h(e)}(e):h(e),buildRequests(e,t){var n;const i={url:t.refererInfo.page,publisherToken:e[0].params.publisherId,cmp:!!t.gdprConsent,timeout:t.timeout,version:"8.31.0",connectionType:g(),auctionStart:t.auctionStart||Date.now(),ttfb:v(),bidRequests:(0,r._map)(e,f)};if(i.cmp){const e=t.gdprConsent.gdprApplies;void 0!==e&&(i.ga=e),i.cd=t.gdprConsent.consentString}t.uspConsent&&(i.uspConsent=t.uspConsent),e[0].schain&&(i.schain=e[0].schain);let o=s.config.getConfig("coppa");o&&(i.coppa=o),t.gppConsent?i.gppConsent={gppString:t.gppConsent.gppString,applicableSections:t.gppConsent.applicableSections}:null!==(n=t.ortb2)&&void 0!==n&&null!==(n=n.regs)&&void 0!==n&&n.gpp&&(i.gppConsent={gppString:t.ortb2.regs.gpp,applicableSections:t.ortb2.regs.gpp_sid});return{method:"POST",url:"https://s.seedtag.com/c/hb/bid",data:JSON.stringify(i)}},interpretResponse:function(e){const t=e.body;return t&&t.bids&&(0,r.isArray)(t.bids)?(0,r._map)(t.bids,(function(e){return b(e)})):[]},getUserSyncs(e,t){const n=t[0];if(e.iframeEnabled&&n){const e=n.body.cookieSync;return e?[{type:"iframe",url:e}]:[]}return[]},onTimeout(e){const t=function(e){let t="";if((0,r.isArray)(e)&&e[0]&&(0,r.isArray)(e[0].params)&&e[0].params[0]){const n=e[0].params[0],i=e[0].timeout;t="?publisherToken="+n.publisherId+"&adUnitId="+n.adUnitId+"&timeout="+i}return"https://s.seedtag.com/se/hb/timeout"+t}(e);(0,r.triggerPixel)(t)},onBidWon:function(e){e&&e.nurl&&(0,r.triggerPixel)(e.nurl)}};(0,o.dX)(C),(0,i.z)("seedtagBidAdapter")}},e=>{e.O(0,[38409],(()=>{return t=93444,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[92972],{54834:(o,e,t)=>{var n=t(78640),r=t(64358),d=t(92797),i=t(34516),a=t(15164),u=t(9633),c=t(81694);const l=(0,a.df)({moduleType:u.y2,moduleName:"sharedId"}),s="cookie",m="html5",f="_pubcid_optout",g="PublisherCommonId";function p(o,e){if(e===s)return l.getCookie(o);if(e===m&&l.hasLocalStorage()){const e=l.getDataFromLocalStorage("".concat(o,"_exp"));if(!e)return l.getDataFromLocalStorage(o);if(new Date(e).getTime()-Date.now()>0)return l.getDataFromLocalStorage(o)}}function I(o,e){return function(t,n){e?b(e,o,(()=>{t(n()||o)}))():t(o)}}function b(o){let e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",t=arguments.length>2?arguments[2]:void 0;if(!o)return;const n=(0,r.parseUrl)(o);n.search.id=encodeURIComponent("pubcid:"+e);const d=(0,r.buildUrl)(n);return function(){(0,r.triggerPixel)(d,t)}}function h(){return!!(l.cookiesAreEnabled()&&p(f,s)||l.hasLocalStorage()&&p(f,m))}const v={name:"sharedId",aliasName:"pubCommonId",gvlid:i.$P,decode(o,e){if(h())return void(0,r.logInfo)("PubCommonId decode: Has opted-out");(0,r.logInfo)(" Decoded value PubCommonId "+o);return{pubcid:o}},getId:function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>2?arguments[2]:void 0;if(h())return void(0,r.logInfo)("PubCommonId: Has opted-out");if(i.VP.getCoppa())return void(0,r.logInfo)("PubCommonId: IDs not provided for coppa requests, exiting PubCommonId");const{params:{create:t=!0,pixelUrl:n}={}}=o;let d=e;if(!d){try{"object"==typeof window[g]&&(d=window[g].getId())}catch(o){}d||(d=t&&(0,r.hasDeviceAccess)()?(0,r.generateUUID)():void 0)}return{id:d,callback:I(d,n)}},extendId:function(){let o=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=arguments.length>2?arguments[2]:void 0;if(h())return(0,r.logInfo)("PubCommonId: Has opted-out"),{id:void 0};if(i.VP.getCoppa())return void(0,r.logInfo)("PubCommonId: IDs not provided for coppa requests, exiting PubCommonId");const{params:{extend:t=!1,pixelUrl:n}={}}=o;if(t){if(n){return{callback:b(n,e)}}return{id:e}}},domainOverride:(0,c.U)(l,"sharedId"),eids:{pubcid:{source:"pubcid.org",atype:1}}};(0,d.Bx)("userId",v),(0,n.z)("sharedIdSystem")}},o=>{o.O(0,[57748,38409],(()=>{return e=54834,o(o.s=e);var e}));o.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[88029],{76401:(e,t,n)=>{var r=n(78640),i=n(64358),o=n(20265),a=n(14699),d=n(15164);const s="teads",c=12,p=11,u=0,l=22,m=(0,d.df)({bidderCode:s}),g={code:s,gvlid:132,supportedMediaTypes:["video","banner"],isBidRequestValid:function(e){let t=!1;if(void 0!==e.params){let n=S((0,i.getValue)(e.params,"placementId")),r=S((0,i.getValue)(e.params,"pageId"));t=n&&r}return t||(0,i.logError)("Teads placementId and pageId parameters are required. Bid aborted."),t},buildRequests:function(e,t){var n,r,i,a,d,s;const m=e.map(w),g=window.top,S={referrer:v(t),pageReferrer:document.referrer,pageTitle:I().slice(0,300),pageDescription:f().slice(0,300),networkBandwidth:(q=window.navigator,q&&q.connection&&q.connection.downlink>=0?q.connection.downlink.toString():""),timeToFirstByte:h(window),data:m,deviceWidth:screen.width,screenOrientation:null===(n=screen.orientation)||void 0===n?void 0:n.type,historyLength:null===(r=g.history)||void 0===r?void 0:r.length,viewportHeight:null===(i=g.visualViewport)||void 0===i?void 0:i.height,viewportWidth:null===(a=g.visualViewport)||void 0===a?void 0:a.width,hardwareConcurrency:null===(d=g.navigator)||void 0===d?void 0:d.hardwareConcurrency,deviceMemory:null===(s=g.navigator)||void 0===s?void 0:s.deviceMemory,hb_version:"8.31.0",...y(e),...b(e)};var q;const T=e[0];T.schain&&(S.schain=T.schain);let B=t.gdprConsent;if(t&&B){let e="boolean"==typeof B.gdprApplies,t="string"==typeof B.consentString,n=e?function(e,t){let n=c;e?t&&!t.isServiceSpecific&&(n=p):n=u;return n}(B.gdprApplies,B.vendorData):l;S.gdpr_iab={consent:t?B.consentString:"",status:n,apiVersion:B.apiVersion}}t&&t.uspConsent&&(S.us_privacy=t.uspConsent);const k=(0,o.Z)(T,"ortb2.device.sua");k&&(S.userAgentClientHints=k);return{method:"POST",url:"https://a.teads.tv/hb/bid-request",data:JSON.stringify(S)}},interpretResponse:function(e,t){const n=[];return(e=e.body).responses&&e.responses.forEach((function(e){const t={cpm:e.cpm,width:e.width,height:e.height,currency:e.currency,netRevenue:!0,ttl:e.ttl,meta:{advertiserDomains:e&&e.adomain?e.adomain:[]},ad:e.ad,requestId:e.bidId,creativeId:e.creativeId,placementId:e.placementId};e.dealId&&(t.dealId=e.dealId),n.push(t)})),n}};function y(e){const t={unifiedId2:"uid2.id",liveRampId:"idl_env",lotamePanoramaId:"lotamePanoramaId",id5Id:"id5id.uid",criteoId:"criteoId",yahooConnectId:"connectId",quantcastId:"quantcastId",epsilonPublisherLinkId:"publinkId",publisherFirstPartyViewerId:"pubcid",merkleId:"merkleId.id",kinessoId:"kpuid"};let n={};for(const r in t){const i=t[r],a=(0,o.Z)(e,"0.userId.".concat(i));a&&(n[r]=a)}return n}function v(e){let t="";return e&&e.refererInfo&&e.refererInfo.page&&(t=e.refererInfo.page),t}function I(){try{const e=window.top.document.querySelector('meta[property="og:title"]');return window.top.document.title||e&&e.content||""}catch(e){const t=document.querySelector('meta[property="og:title"]');return document.title||t&&t.content||""}}function f(){let e;try{e=window.top.document.querySelector('meta[name="description"]')||window.top.document.querySelector('meta[property="og:description"]')}catch(t){e=document.querySelector('meta[name="description"]')||document.querySelector('meta[property="og:description"]')}return e&&e.content||""}function h(e){const t=e.performance||e.webkitPerformance||e.msPerformance||e.mozPerformance,n=t&&"function"==typeof t.getEntriesByType&&"[object Function]"===Object.prototype.toString.call(t.getEntriesByType)&&t.getEntriesByType("navigation")[0]&&t.getEntriesByType("navigation")[0].responseStart&&t.getEntriesByType("navigation")[0].requestStart&&t.getEntriesByType("navigation")[0].responseStart>0&&t.getEntriesByType("navigation")[0].requestStart>0&&Math.round(t.getEntriesByType("navigation")[0].responseStart-t.getEntriesByType("navigation")[0].requestStart);if(n)return n.toString();const r=t&&t.timing.responseStart&&t.timing.requestStart&&t.timing.responseStart>0&&t.timing.requestStart>0&&t.timing.responseStart-t.timing.requestStart;return r?r.toString():""}function w(e){var t;const n={};let r=(0,i.getValue)(e.params,"placementId"),a=(0,i.getValue)(e.params,"pageId");const d=(0,o.Z)(e,"ortb2Imp.ext.gpid"),s=(0,o.Z)(e,"mediaTypes.video.plcmt");return n.sizes=function(e){return(0,i.parseSizesInput)(function(e){let t=(0,o.Z)(e,"mediaTypes.video.playerSize"),n=(0,o.Z)(e,"mediaTypes.video.sizes"),r=(0,o.Z)(e,"mediaTypes.banner.sizes");if((0,i.isArray)(r)||(0,i.isArray)(t)||(0,i.isArray)(n)){return[r,n,t].reduce((function(e,t){return(0,i.isArray)(t)&&((0,i.isArray)(t[0])?t.forEach((function(t){e.push(t)})):e.push(t)),e}),[])}return e.sizes}(e))}(e),n.bidId=(0,i.getBidIdParameter)("bidId",e),n.bidderRequestId=(0,i.getBidIdParameter)("bidderRequestId",e),n.placementId=parseInt(r,10),n.pageId=parseInt(a,10),n.adUnitCode=(0,i.getBidIdParameter)("adUnitCode",e),n.transactionId=(null===(t=e.ortb2Imp)||void 0===t||null===(t=t.ext)||void 0===t?void 0:t.tid)||"",d&&(n.gpid=d),s&&(n.videoPlcmt=s),n}function S(e){return parseInt(e)>0}function b(e){const t=(0,o.Z)(e,"0.userId.teadsId");if(t)return{firstPartyCookieTeadsId:t};if(m.cookiesAreEnabled(null)){const e=m.getCookie("_tfpvi",null);if(e)return{firstPartyCookieTeadsId:e}}return{}}(0,a.dX)(g),(0,r.z)("teadsBidAdapter")}},e=>{e.O(0,[38409],(()=>{return t=76401,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[82599],{70789:(e,t,r)=>{var n=r(78640),i=r(64358),o=r(24679),a=r(14699),s=r(3193),d=r(15164),l=r(29865);const c="triplelift";let u=null,p=null;const m=(0,d.df)({bidderCode:c}),f={gvlid:28,code:c,supportedMediaTypes:[o.Mk,o.pX],isBidRequestValid:function(e){return void 0!==e.params.inventoryCode},buildRequests:function(e,t){let r="https://tlx.3lift.com/header/auction?",n=function(e,t){var r;let n={},{schain:o}=e[0];const a=function(e){const t={},r={},n={},o=e.ortb2||{},a=function(){const e=m.getDataFromLocalStorage("opecloud_ctx");if(!e)return null;try{return JSON.parse(e)}catch(e){return(0,i.logError)("Triplelift: error parsing JSON: ",e),null}}(),s=Object.assign({},o.site),d=Object.assign({},o.user);if(a){d.data=d.data||[];try{d.data.push({name:"www.1plusx.com",ext:a})}catch(e){(0,i.logError)("Triplelift: error adding 1plusX segments: ",e)}}h(r,s),h(n,d),(0,i.isEmpty)(r)||(t.context=r);(0,i.isEmpty)(n)||(t.user=n);return t}(t);n.imp=e.map((function(e,t){let r={id:t,tagid:e.params.inventoryCode,floor:v(e)};return g(e)&&(r.video=function(e){let t={...e.params.video,...e.mediaTypes.video};try{t.w||(t.w=t.playerSize[0][0]),t.h||(t.h=t.playerSize[0][1])}catch(e){(0,i.logWarn)("Video size not defined",e)}"instream"===t.context&&(t.placement||(t.placement=1));"outstream"===t.context&&(t.placement?-1===[3,4,5].indexOf(t.placement)&&((0,i.logMessage)("video.placement value of ".concat(t.placement," is invalid for outstream context. Setting placement to 3")),t.placement=3):t.placement=3);t.playbackmethod&&Number.isInteger(t.playbackmethod)&&(t.playbackmethod=Array.from(String(t.playbackmethod),Number));return delete t.playerSize,t}(e)),e.mediaTypes.banner&&!b(e)&&(r.banner={format:O(e.sizes)}),(0,i.isEmpty)(e.ortb2Imp)||(r.fpd=function(e){const t={},r={};h(r,e.ext),(0,i.isEmpty)(r)||(t.context=r);return t}(e.ortb2Imp),(0,i.isEmpty)(e.ortb2Imp.ext)||(r.ext={...e.ortb2Imp.ext})),r}));let s=[...x([e[0]]),...E([e[0]]),...I([e[0]]),...S([e[0]]),..._(e[0])];s.length>0&&(n.user={ext:{eids:s}});let d=function(e,t){let r={};(0,i.isEmpty)(e)||(r.schain={...e});(0,i.isEmpty)(t)||(r.fpd={...t});return r}(o,a);(0,i.isEmpty)(d)||(n.ext=d);null!=t&&null!==(r=t.ortb2)&&void 0!==r&&null!==(r=r.regs)&&void 0!==r&&r.gpp&&(n.regs=Object.assign({},t.ortb2.regs));null!=t&&t.ortb2&&(n.ext.ortb2=Object.assign({},t.ortb2));return n}(e,t);if(r=(0,l.t)(r,"lib","prebid"),r=(0,l.t)(r,"v","8.31.0"),t&&t.refererInfo){let e=t.refererInfo.page;r=(0,l.t)(r,"referrer",e)}return t&&t.timeout&&(r=(0,l.t)(r,"tmax",t.timeout)),t&&t.gdprConsent&&(u=void 0===t.gdprConsent.gdprApplies||t.gdprConsent.gdprApplies,r=(0,l.t)(r,"gdpr",u.toString()),void 0!==t.gdprConsent.consentString&&(p=t.gdprConsent.consentString,r=(0,l.t)(r,"cmp_cs",p))),t&&t.uspConsent&&(r=(0,l.t)(r,"us_privacy",t.uspConsent)),t&&t.fledgeEnabled&&(r=(0,l.t)(r,"fledge",t.fledgeEnabled)),!0===s.config.getConfig("coppa")&&(r=(0,l.t)(r,"coppa",!0)),r.lastIndexOf("&")===r.length-1&&(r=r.substring(0,r.length-1)),(0,i.logMessage)("tlCall request built: "+r),{method:"POST",url:r,data:n,bidderRequest:t}},interpretResponse:function(e,t){let{bidderRequest:r}=t,n=e.body.bids||[];const o=e.body.paapi||[];if(n=n.map((e=>function(e,t){let r={},n=t.width||1,i=t.height||1,o=t.deal_id||"",a=t.crid||"",s=e.bids[t.imp_id];0!=t.cpm&&t.ad&&(r={requestId:s.bidId,cpm:t.cpm,width:n,height:i,netRevenue:!0,ad:t.ad,creativeId:a,dealId:o,currency:"USD",ttl:300,tl_source:t.tl_source,meta:{}},g(s)&&"video"===t.media_type&&(r.vastXml=t.ad,r.mediaType="video",r.ttl=3600),t.advertiser_name&&(r.meta.advertiserName=t.advertiser_name),t.adomain&&t.adomain.length&&(r.meta.advertiserDomains=t.adomain),t.tl_source&&"hdx"==t.tl_source&&(g(s)&&"video"===t.media_type?r.meta.mediaType="video":r.meta.mediaType="banner"),t.tl_source&&"tlx"==t.tl_source&&(r.meta.mediaType="native"),a&&(r.meta.networkId=a.slice(0,a.indexOf("_"))));return r}(r,e))),o.length>0){const e=o.map((e=>({bidId:r.bids[e.imp_id].bidId,config:e.auctionConfig})));return(0,i.logMessage)("Response with FLEDGE:",{bids:n,fledgeAuctionConfigs:e}),{bids:n,fledgeAuctionConfigs:e}}return n},getUserSyncs:function(e,t,r,n,i){let o=function(e){if(!e)return;if(e.iframeEnabled)return"iframe";if(e.pixelEnabled)return"image"}(e);if(!o)return;let a="https://eb2.3lift.com/sync?";return"image"===o&&(a=(0,l.t)(a,"px",1),a=(0,l.t)(a,"src","prebid")),(null!==p||u)&&(a=(0,l.t)(a,"gdpr",u),a=(0,l.t)(a,"cmp_cs",p)),n&&(a=(0,l.t)(a,"us_privacy",n)),i&&(i.gppString&&(a=(0,l.t)(a,"gpp",i.gppString)),i.applicableSections&&0!==i.applicableSections.length&&(a=(0,l.t)(a,"gpp_sid",i.applicableSections.filter((e=>Number.isInteger(e))).join(",")))),[{type:o,url:a}]}};function g(e){return y(e)&&(b(e)||function(e){return y(e)&&"outstream"===e.mediaTypes.video.context.toLowerCase()}(e))}function b(e){return y(e)&&"instream"===e.mediaTypes.video.context.toLowerCase()}function y(e){return e.mediaTypes.video&&e.mediaTypes.video.context}function v(e){let t=null;if("function"==typeof e.getFloor)try{const r=e.getFloor({currency:"USD",mediaType:g(e)?"video":"banner",size:"*"});"object"!=typeof r||"USD"!==r.currency||isNaN(parseFloat(r.floor))||(t=parseFloat(r.floor))}catch(e){(0,i.logError)("Triplelift: getFloor threw an error: ",e)}return null!==t?t:e.params.floor}function h(e,t){(0,i.isEmpty)(t)||Object.keys(t).forEach((r=>{null!=t[r]&&(e[r]=t[r])}))}function x(e){return C(e,"tdid","adserver.org","TDID")}function E(e){return C(e,"idl_env","liveramp.com","idl")}function I(e){return C(e,"criteoId","criteo.com","criteoId")}function S(e){return C(e,"pubcid","pubcid.org","pubcid")}function _(e){let t=["adserver.org","liveramp.com","criteo.com","pubcid.org"],r=[];return e.userIdAsEids&&e.userIdAsEids.forEach((e=>{try{if(-1===t.indexOf(e.source)){let t=e.uids.map((t=>({id:t.id,ext:{rtiPartner:e.source}})));r.push({source:e.source,uids:t})}}catch(t){(0,i.logWarn)("Triplelift: Error attempting to add ".concat(e," to bid request"),t)}})),r}function C(e,t,r,n){return e.map(function(e){return t=>t&&t.userId&&t.userId[e]}(t)).filter(T(t)).map(function(e,t){return r=>({source:e,uids:[{id:r.id?r.id:r,ext:{rtiPartner:t}}]})}(r,n))}const T=e=>(t,r,n)=>{let o=!!t&&((0,i.isStr)(t)?!!t:(0,i.isPlainObject)(t)&&!(0,i.isArray)(t)&&!(0,i.isEmpty)(t)&&t.id&&(0,i.isStr)(t.id)&&!!t.id);return o||void 0===n[0]||(0,i.logWarn)("Triplelift: invalid ".concat(e," userId format")),o};function O(e){return e.filter(w).map((function(e){return{w:e[0],h:e[1]}}))}function w(e){return 2===e.length&&"number"==typeof e[0]&&"number"==typeof e[1]}(0,a.dX)(f),(0,n.z)("tripleliftBidAdapter")}},e=>{e.O(0,[54213,38409],(()=>{return t=70789,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[86433,68102],{78816:(e,t,s)=>{var i=s(78640),r=s(64358),n=s(92797),o=s(15164),a=s(9633),l=s(62906),d=s(21138);const c="uid2",u=l.ov,h="PrebidJS-".concat("8.31.0","-UID2Module-").concat(u),p="UID2: ";function g(e,t){return function(){for(var s=arguments.length,i=new Array(s),r=0;r{s.d(t,{Rh:()=>p,ov:()=>a});var i=s(64572),r=s(78640),n=s(48928),o=s(64358);const a="1.1";function l(e){return!!("object"==typeof e&&null!==e&&e.advertising_token&&e.identity_expires&&e.refresh_from&&e.refresh_token&&e.refresh_expires)}class d{constructor(e,t,s,i){this._baseUrl=e.baseUrl,this._clientVersion=t,this._logInfo=s,this._logWarn=i}createArrayBuffer(e){const t=new Uint8Array(e.length);for(let s=0;s{s=e,i=t}));return this._logInfo("Sending refresh request",e),(0,n.hj)(t,{success:t=>{try{if(e.refresh_response_key){this._logInfo("Decrypting refresh API response");const r=this.createArrayBuffer(atob(t));window.crypto.subtle.importKey("raw",this.createArrayBuffer(atob(e.refresh_response_key)),{name:"AES-GCM"},!1,["decrypt"]).then((e=>{this._logInfo("Imported decryption key"),window.crypto.subtle.decrypt({name:"AES-GCM",iv:r.slice(0,12),tagLength:128},e,r.slice(12)).then((e=>{const t=String.fromCharCode(...new Uint8Array(e));this._logInfo("Decrypted to:",t);const r=JSON.parse(t),n=this.ResponseToRefreshResult(r);"string"==typeof n?i(n):s(n)}),(e=>this._logWarn("Call to UID2 API failed",e)))}),(e=>this._logWarn("Call to UID2 API failed",e)))}else{this._logInfo("No response decryption key available, assuming unencrypted JSON");const e=JSON.parse(t),r=this.ResponseToRefreshResult(e);"string"==typeof r?i(r):s(r)}}catch(e){i(t)}},error:(e,t)=>{try{this._logInfo("Error status, assuming unencrypted JSON");const e=JSON.parse(t.responseText),r=this.ResponseToRefreshResult(e);"string"==typeof r?i(r):s(r)}catch(t){i(e)}}},e.refresh_token,{method:"POST",customHeaders:{"X-UID2-Client-Version":this._clientVersion}}),r}}class c{constructor(e,t,s,i){this._storage=e,this._preferLocalStorage=t,this._storageName=s,this._logInfo=i}readCookie(e){return this._storage.cookiesAreEnabled()?this._storage.getCookie(e):null}readLocalStorage(e){return this._storage.localStorageIsEnabled()?this._storage.getDataFromLocalStorage(e):null}readModuleCookie(){return this.parseIfContainsBraces(this.readCookie(this._storageName))}writeModuleCookie(e){this._storage.setCookie(this._storageName,JSON.stringify(e),Date.now()+864e5)}readModuleStorage(){return this.parseIfContainsBraces(this.readLocalStorage(this._storageName))}writeModuleStorage(e){this._storage.setDataInLocalStorage(this._storageName,JSON.stringify(e))}readProvidedCookie(e){return JSON.parse(this.readCookie(e))}parseIfContainsBraces(e){return null!=e&&e.includes("{")?JSON.parse(e):e}storeValue(e){this._preferLocalStorage?this.writeModuleStorage(e):this.writeModuleCookie(e)}getStoredValueWithFallback(){const e=this._preferLocalStorage?"local storage":"cookie",t=(this._preferLocalStorage?this.readModuleStorage:this.readModuleCookie).bind(this),s=(this._preferLocalStorage?this.writeModuleStorage:this.writeModuleCookie).bind(this),i=(this._preferLocalStorage?this.readModuleCookie:this.readModuleStorage).bind(this),r=t();if(r){if("string"==typeof r){const t=i();if(t&&"object"==typeof t)return this._logInfo("".concat(e," contained a basic token, but found a refreshable token fallback. Copying the fallback value to ").concat(e,".")),s(t),t}}else{const t=i();if(t)return this._logInfo("".concat(e," was empty, but found a fallback value.")),"object"==typeof t&&(this._logInfo("Copying the fallback value to ".concat(e,".")),s(t)),t}return r}}function u(e,t,s,i,r,n){r("UID2 base url provided: ",e);return new d({baseUrl:e},s,r,n).callRefreshApi(t).then((e=>{r("Refresh endpoint responded with:",e);const s={originalToken:t,latestToken:e.identity};let n=i.getStoredValueWithFallback();return null!=n&&n.originalIdentity&&(s.originalIdentity=n.originalIdentity),i.storeValue(s),s}))}let h;{const e=9;h={isCSTGOptionsValid(e,t){if("object"!=typeof e||null===e)return t("CSTG opts must be an object"),!1;const s=e;if("string"!=typeof s.serverPublicKey)return t("CSTG opts.serverPublicKey must be a string"),!1;const i=/^UID2-X-[A-Z]-.+/;return i.test(s.serverPublicKey)?"string"!=typeof s.subscriptionId?(t("CSTG opts.subscriptionId must be a string"),!1):0!==s.subscriptionId.length||(t("CSTG opts.subscriptionId is empty"),!1):(t("CSTG opts.serverPublicKey must match the regular expression ".concat(i)),!1)},getValidIdentity(e,s){if(e.emailHash)return t.isBase64Hash(e.emailHash)?{email_hash:e.emailHash}:void s("CSTG opts.emailHash is invalid");if(e.phoneHash)return t.isBase64Hash(e.phoneHash)?{phone_hash:e.phoneHash}:void s("CSTG opts.phoneHash is invalid");if(e.email){const i=t.normalizeEmail(e.email);return void 0===i?void s("CSTG opts.email is invalid"):{email:i}}return e.phone?t.isNormalizedPhone(e.phone)?{phone:e.phone}:void s("CSTG opts.phone is invalid"):void 0},isStoredTokenInvalid(e,t,s,i){if(t){const i=Object.values(e)[0];if(!this.isStoredTokenFromSameIdentity(t,i))return s("CSTG supplied new identity - ignoring stored value.",t.originalIdentity,e),!0}return!1},async generateTokenAndStore(e,t,i,r,n,o){n("UID2 cstg opts provided: ",JSON.stringify(t));const a=new s({baseUrl:e,cstg:t},n,o),l=await a.generateToken(i);n("CSTG endpoint responded with:",l);const d={originalIdentity:this.encodeOriginalIdentity(i),latestToken:l.identity};return r.storeValue(d),d},isStoredTokenFromSameIdentity:(e,t)=>!!e.originalIdentity&&(0,o.cyrb53Hash)(t,e.originalIdentity.salt)===e.originalIdentity.identity,encodeOriginalIdentity(e){const t=Object.values(e)[0],s=Math.floor(Math.random()*Math.pow(2,32));return{identity:(0,o.cyrb53Hash)(t,s),salt:s}}};class t{static isBase64Hash(e){if(!e||44!==e.length)return!1;try{return btoa(atob(e))===e}catch(e){return!1}}static isNormalizedPhone(e){return/^\+[0-9]{10,15}$/.test(e)}static normalizeEmail(e){if(!e||!e.length)return;const t=e.trim().toLowerCase();if(t.indexOf(" ")>0)return;const s=this.splitEmailIntoAddressAndDomain(t);if(!s)return;const{address:i,domain:r}=s,n=this.isGmail(r),o=this.normalizeAddressPart(i,n,n);return o?"".concat(o,"@").concat(r):void 0}static splitEmailIntoAddressAndDomain(e){const t=e.split("@");if(2===t.length&&!t.some((e=>""===e)))return{address:t[0],domain:t[1]}}static isGmail(e){return e===this.GMAIL_DOMAIN}static dropExtension(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.EMAIL_EXTENSION_SYMBOL;return e.split(t)[0]}static normalizeAddressPart(e,t,s){let i=e;return t&&(i=i.replaceAll(this.EMAIL_DOT,"")),s&&(i=this.dropExtension(i)),i}}(0,i.Z)(t,"EMAIL_EXTENSION_SYMBOL","+"),(0,i.Z)(t,"EMAIL_DOT","."),(0,i.Z)(t,"GMAIL_DOMAIN","gmail.com");class s{constructor(e,t,s){this._baseUrl=e.baseUrl,this._serverPublicKey=e.cstg.serverPublicKey,this._subscriptionId=e.cstg.subscriptionId,this._logInfo=t,this._logWarn=s}hasStatusResponse(e){return"object"==typeof e&&e&&e.status}isCstgApiSuccessResponse(e){return this.hasStatusResponse(e)&&"success"===e.status&&l(e.body)}isCstgApiClientErrorResponse(e){return this.hasStatusResponse(e)&&"client_error"===e.status&&"string"==typeof e.message}isCstgApiForbiddenResponse(e){return this.hasStatusResponse(e)&&"invalid_http_origin"===e.status&&"string"==typeof e.message}stripPublicKeyPrefix(t){return t.substring(e)}async generateCstgRequest(e){if("email_hash"in e||"phone_hash"in e)return e;if("email"in e){return{email_hash:await a.hash(e.email)}}if("phone"in e){return{phone_hash:await a.hash(e.phone)}}}async generateToken(e){const t=await this.generateCstgRequest(e);this._logInfo("Building CSTG request for",t);const s=await r.build(this.stripPublicKeyPrefix(this._serverPublicKey)),i=new TextEncoder,n=Date.now(),{iv:o,ciphertext:l}=await s.encrypt(i.encode(JSON.stringify(t)),i.encode(JSON.stringify([n]))),d=await a.exportPublicKey(s.clientPublicKey),c={payload:a.bytesToBase64(new Uint8Array(l)),iv:a.bytesToBase64(new Uint8Array(o)),public_key:a.bytesToBase64(new Uint8Array(d)),timestamp:n,subscription_id:this._subscriptionId};return this.callCstgApi(c,s)}async callCstgApi(e,t){const s=this._baseUrl+"/v2/token/client-generate";let i,r;const o=new Promise(((e,t)=>{i=e,r=t}));return this._logInfo("Sending CSTG request",e),(0,n.hj)(s,{success:async(e,s)=>{try{const s=a.base64ToBytes(e),n=await t.decrypt(s.slice(0,12),s.slice(12)),o=(new TextDecoder).decode(n),l=JSON.parse(o);this.isCstgApiSuccessResponse(l)?i({status:"success",identity:l.body}):r("API error: Response body was invalid for HTTP status 200: ".concat(o))}catch(e){r(e)}},error:(e,t)=>{try{if(400===t.status){const e=JSON.parse(t.responseText);this.isCstgApiClientErrorResponse(e)?r("Client error: ".concat(e.message)):r("API error: Response body was invalid for HTTP status 400: ".concat(t.responseText))}else if(403===t.status){const e=JSON.parse(t.responseText);this.isCstgApiForbiddenResponse(t)?r("Forbidden: ".concat(e.message)):r("API error: Response body was invalid for HTTP status 403: ".concat(t.responseText))}else r("API error: Unexpected HTTP status ".concat(t.status,": ").concat(e))}catch(t){r(e)}}},JSON.stringify(e),{method:"POST"}),o}}class r{constructor(e,t){this._clientPublicKey=e,this._sharedKey=t}static async build(e){const t=await a.generateKeyPair(r._namedCurve),s=await a.importPublicKey(e,this._namedCurve),i=await a.deriveKey(s,t.privateKey);return new r(t.publicKey,i)}async encrypt(e,t){const s=window.crypto.getRandomValues(new Uint8Array(12));return{iv:s,ciphertext:await window.crypto.subtle.encrypt({name:"AES-GCM",iv:s,additionalData:t},this._sharedKey,e)}}async decrypt(e,t){return window.crypto.subtle.decrypt({name:"AES-GCM",iv:e},this._sharedKey,t)}get clientPublicKey(){return this._clientPublicKey}}(0,i.Z)(r,"_namedCurve","P-256");class a{static base64ToBytes(e){const t=atob(e);return Uint8Array.from(t,(e=>e.codePointAt(0)))}static bytesToBase64(e){const t=Array.from(e,(e=>String.fromCodePoint(e))).join("");return btoa(t)}static async generateKeyPair(e){const t={name:"ECDH",namedCurve:e};return window.crypto.subtle.generateKey(t,!1,["deriveKey"])}static async importPublicKey(e,t){const s={name:"ECDH",namedCurve:t};return window.crypto.subtle.importKey("spki",this.base64ToBytes(e),s,!1,[])}static exportPublicKey(e){return window.crypto.subtle.exportKey("spki",e)}static async deriveKey(e,t){return window.crypto.subtle.deriveKey({name:"ECDH",public:e},t,{name:"AES-GCM",length:256},!1,["encrypt","decrypt"])}static async hash(e){const t=await window.crypto.subtle.digest("SHA-256",(new TextEncoder).encode(e));return this.bytesToBase64(new Uint8Array(t))}}}function p(e,t,s,i){var r,n,o;let a=null;const l="cookie"!==e.storage,d=new c(t,l,e.internalStorage,s);s("Module is using ".concat(l?"local storage":"cookies"," for internal storage."));const p=h&&h.isCSTGOptionsValid(e.cstg,i);p?(s("Module is using client-side token generation."),a=null):e.paramToken?(a=e.paramToken,s("Read token from params",a)):e.serverCookieName&&(a=d.readProvidedCookie(e.serverCookieName),s("Read token from server-supplied cookie",a));let g=d.getStoredValueWithFallback();if(s("Loaded module-stored tokens:",g),g&&"string"==typeof g){if(!a&&!p)return s("Returning legacy cookie value."),{id:g};s("Discarding superseded legacy cookie."),g=null}var y,f;a&&g&&((null===(y=g.originalToken)||void 0===y?void 0:y.advertising_token)!==a.advertising_token&&(s("Server supplied new token - ignoring stored value.",null===(f=g.originalToken)||void 0===f?void 0:f.advertising_token,a.advertising_token),g=null));if(p){const t=h.getValidIdentity(e.cstg,i);if(t&&(g&&h.isStoredTokenInvalid(t,g,s,i)&&(g=null),!g||Date.now()>g.latestToken.refresh_expires)){const r=h.generateTokenAndStore(e.apiBaseUrl,e.cstg,t,d,s,i);return s("Generate token using CSTG"),{callback:e=>{r.then((t=>{s("Token generation responded, passing the new token on.",t),e(t)}))}}}}const b=!(null!==(r=g)&&void 0!==r&&r.latestToken)||a&&a.identity_expires>g.latestToken.identity_expires,m=b?a:g.latestToken;if(s("UID2 module selected latest token",b,m),!m||Date.now()>m.refresh_expires)return s("Newest available token is expired and not refreshable."),{id:null};if(Date.now()>m.identity_expires){const t=u(e.apiBaseUrl,m,e.clientId,d,s,i);return s("Token is expired but can be refreshed, attempting refresh."),{callback:e=>{t.then((t=>{s("Refresh reponded, passing the updated token on.",t),e(t)}))}}}Date.now()>m.refresh_from&&(s("Refreshing token in background with low priority."),u(e.apiBaseUrl,m,e.clientId,d,s,i));const v={originalToken:null!==(n=a)&&void 0!==n?n:null===(o=g)||void 0===o?void 0:o.originalToken,latestToken:m};var _;p&&(v.originalIdentity=null===(_=g)||void 0===_?void 0:_.originalIdentity);return d.storeValue(v),{id:v}}(0,r.z)("uid2IdSystem_shared")}},e=>{e.O(0,[67292,38409],(()=>{return t=78816,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[34579],{98709:(r,e,t)=>{var n=t(78640),o=t(64358),d=t(48928),s=t(92797);const i="unifiedId",a={name:i,gvlid:21,decode:r=>r&&"string"==typeof r.TDID?{tdid:r.TDID}:void 0,getId(r){const e=r&&r.params||{};if(!e||"string"!=typeof e.partner&&"string"!=typeof e.url)return void(0,o.logError)("User ID - unifiedId submodule requires either partner or url to be defined");const t=e.url||"https://match.adsrvr.org/track/rid?ttd_pid=".concat(e.partner,"&fmt=json");return{callback:function(r){const e={success:e=>{let t;if(e)try{t=JSON.parse(e)}catch(r){(0,o.logError)(r)}r(t)},error:e=>{(0,o.logError)("".concat(i,": ID fetch encountered an error"),e),r()}};(0,d.hj)(t,e,void 0,{method:"GET",withCredentials:!0})}}},eids:{tdid:{source:"adserver.org",atype:1,getUidExt:function(){return{rtiPartner:"TDID"}}}}};(0,s.Bx)("userId",a),(0,n.z)("unifiedIdSystem")}},r=>{r.O(0,[38409],(()=>{return e=98709,r(r.s=e);var e}));r.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[69039],{83806:(e,r,n)=>{var t=n(78640),i=n(20265),d=n(64358),o=n(35706),s=n(14699),a=n(24679);const u=(e,r,n)=>{const{bids:t,bidderRequestId:d,bidderCode:o,...s}=n,a=n.bids.length-r.length;let u={};r.forEach((r=>{const n=r.params.siteId;(e=>{Object.keys(e.mediaTypes).forEach((r=>{let n;n="function"==typeof e.getFloor?e.getFloor({currency:"USD",mediaType:r,size:"*"}).floor||0:e.params.floor||0,e.mediaTypes[r].floor=n}))})(r),(e=>{let r=(0,i.Z)(e,"mediaTypes.banner");if(r){let e={},n=[];r.sizes.forEach((r=>{e[r.toString()]||(e[r.toString()]=!0,n.push(r))})),r.sizes=n}})(r),((e,r)=>{!r&&e.ortb2Imp&&e.ortb2Imp.ext&&delete e.ortb2Imp.ext.ae})(r,e.protectedAudienceEnabled),u[n]=u[n]||[],u[n].push(r)}));let l=[];return Object.keys(u).forEach((r=>{let n={bidderRequest:Object.assign({},{bids:u[r],invalidBidsCount:a,prebidVersion:"8.31.0",...s})};l.push(Object.assign({},{data:n,...e}))})),l},l=e=>{if(e.ad)return e;(0,d.logError)(new Error("UnrulyBidAdapter: Missing ad config."))},p=e=>{if(e.vastUrl||e.vastXml)return e;(0,d.logError)(new Error("UnrulyBidAdapter: Missing vastUrl or vastXml config."))},c=e=>{const r=!!(0,i.Z)(e,"ext.renderer.config"),n=!!(0,i.Z)(e,"ext.renderer.config.siteId");if(!r)return void(0,d.logError)(new Error("UnrulyBidAdapter: Missing renderer config."));if(!n)return void(0,d.logError)(new Error("UnrulyBidAdapter: Missing renderer siteId."));const t=(0,i.Z)(e,"ext.renderer");!function(e,r){if(!e.config)throw new Error("UnrulyBidAdapter: Missing renderer config.");if(!e.config.siteId)throw new Error("UnrulyBidAdapter: Missing renderer siteId.");parent.window.unruly=parent.window.unruly||{},parent.window.unruly.native=parent.window.unruly.native||{},parent.window.unruly.native.siteId=parent.window.unruly.native.siteId||e.config.siteId,parent.window.unruly.native.adSlotId=r,parent.window.unruly.native.supplyMode="prebid"}(t,e.requestId),parent.window.unruly.native.prebid=parent.window.unruly.native.prebid||{},parent.window.unruly.native.prebid.uq=parent.window.unruly.native.prebid.uq||[];const s=o.Th.install(Object.assign({},t)),a=Object.assign({},e,{renderer:s,adUnitCode:(0,i.Z)(e,"ext.adUnitCode")});return s.setRender((()=>{var e;e=a,parent.window.unruly.native.prebid.uq.push(["render",e])})),e.renderer=e.renderer||s,e},f=e=>{if(!e.context)return!1;return-1!==["outstream","instream"].indexOf(e.context)},y=e=>e.sizes,b={code:"unruly",supportedMediaTypes:[a.pX,a.Mk],gvlid:36,isBidRequestValid:function(e){let r=(0,i.Z)(e,"params.siteId")&&(e=>{const r=(0,i.Z)(e,"mediaTypes.video"),n=(0,i.Z)(e,"mediaTypes.banner");let t=!(!r&&!n);return t&&r&&(t=f(r)),t&&n&&(t=y(n)),t})(e);return!!r},buildRequests:function(e,r){let n="https://targeting.unrulymedia.com/unruly_prebid";return e[0]&&(n=(0,i.Z)(e[0],"params.endpoint")||n),u({url:n,method:"POST",options:{contentType:"application/json"},protectedAudienceEnabled:r.fledgeEnabled},e,r)},interpretResponse:function(e){if(!e||!e.body||!e.body.auctionConfigs&&!e.body.bids)return[];const r=e.body;let n=[],t=null;if(r.bids.length&&(n=(e=>{let r=[];return e.forEach((e=>{let n,t=(0,i.Z)(e,"meta.mediaType");if(t&&"banner"===t.toLowerCase())e.mediaType=a.Mk,n=l(e);else if(t&&"video"===t.toLowerCase()){let r=(0,i.Z)(e,"meta.videoContext");e.mediaType=a.pX,"instream"===r?n=p(e):"outstream"===r&&(n=c(e))}n&&r.push(n)})),r})(r.bids)),r.auctionConfigs){let e=r.auctionConfigs,n=Object.keys(e);n.length&&n.forEach((r=>{t=[{bidId:r,config:e[r]}]}))}return t?{bids:n,fledgeAuctionConfigs:t}:n}};(0,s.dX)(b),(0,t.z)("unrulyBidAdapter")}},e=>{e.O(0,[38409],(()=>{return r=83806,e(e.s=r);var r}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[9215],{82547:(e,t,n)=>{var o=n(78640),r=n(34614),s=n(3193),i=n(52021),c=n(34516),a=n(86104),u=n(5644),l=n(92797),d=n(64358),g=n(20265);const f=new Map;function m(e){const t={};function n(e){var n;const o=JSON.stringify([null===(n=e.source)||void 0===n?void 0:n.toLowerCase(),e.ext]);t.hasOwnProperty(o)?t[o].uids.push(...e.uids):t[o]=e}return Object.entries(e).forEach((e=>{let[t,o]=e;o=Array.isArray(o)?o:[o];("pubProvidedId"===t?(0,d.deepClone)(o):o.map((e=>function(e,t){const n=f.get(t);if(n&&e){let t={};t.source=(0,d.isFn)(n.getSource)?n.getSource(e):n.source;const o=(0,d.isFn)(n.getValue)?n.getValue(e):e;if((0,d.isStr)(o)){const r={id:o,atype:n.atype};if((0,d.isFn)(n.getUidExt)){const t=n.getUidExt(e);t&&(r.ext=t)}if(t.uids=[r],(0,d.isFn)(n.getEidExt)){const o=n.getEidExt(e);o&&(t.ext=o)}return t}}return null}(e,t)))).filter((e=>null!=e)).forEach(n)})),Object.values(t)}var b=n(15164),h=n(96475),y=n(7563),p=n(68792),v=n(26372),E=n(99128),I=n(38196),w=n(9633),S=n(50571),O=n(74947),D=n(10286);const j="User ID",P=b.c$,k=b.Dp,A="_pbjs_id_optout",C=(0,b.eA)("userId"),N={isAllowed:S.xD};let T,x,U,R,L,_,F=!1,Z=[],q=[],G={},M=[];const B=(()=>{let e;return()=>(null==e&&(e=(0,E.V6)()),e)})();function W(e){return B().fork().renameWith((t=>["userId.mod.".concat(t),"userId.mods.".concat(e,".").concat(t)]))}function J(e,t){t=t||e.storageMgr;const n="function"==typeof e.submodule.domainOverride?e.submodule.domainOverride():null,o=e.config.storage.name;return function(e,r,s){t.setCookie(o+(e||""),r,s,"Lax",n)}}function V(e,t){const n=e.config.storage,o=e.storageMgr;try{const r=new Date(Date.now()+864e5*n.expires).toUTCString(),s=(0,d.isPlainObject)(t)?JSON.stringify(t):t;if(n.type===P){const t=J(e);t(null,s,r),t("_cst",ge(),r),"number"==typeof n.refreshInSeconds&&t("_last",(new Date).toUTCString(),r)}else n.type===k&&(o.setDataInLocalStorage("".concat(n.name,"_exp"),r),o.setDataInLocalStorage("".concat(n.name,"_cst"),ge()),o.setDataInLocalStorage(n.name,encodeURIComponent(s)),"number"==typeof n.refreshInSeconds&&o.setDataInLocalStorage("".concat(n.name,"_last"),(new Date).toUTCString()))}catch(e){(0,d.logError)(e)}}function z(e){let t=(0,d.getPrebidInternal)().setEidPermissions;"function"==typeof t&&(0,d.isArray)(e)&&t(function(e){let t=[];return e.filter((e=>(0,d.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length)).forEach((e=>{Object.keys(e.idObj).forEach((n=>{const o=f.get(n)||{};(0,g.Z)(e,"config.bidders")&&Array.isArray(e.config.bidders)&&o.source&&t.push({source:o.source,bidders:e.config.bidders})}))})),t}(e))}function Y(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:void 0;const n=e.storageMgr,o=e.config.storage,r=t?"".concat(o.name,"_").concat(t):o.name;let s;try{if(o.type===P)s=n.getCookie(r);else if(o.type===k){const e=n.getDataFromLocalStorage("".concat(o.name,"_exp"));""===e?s=n.getDataFromLocalStorage(r):e&&new Date(e).getTime()-Date.now()>0&&(s=decodeURIComponent(n.getDataFromLocalStorage(r)))}"string"==typeof s&&"{"===s.trim().charAt(0)&&(s=JSON.parse(s))}catch(e){(0,d.logError)(e)}return s}function $(e,t,n){t=B().fork().startTiming("userId.callbacks.total").stopBefore(t);const o=(0,d.delayExecution)((()=>{clearTimeout(x),t()}),e.length);e.forEach((function(e){const t=W(e.submodule.name).startTiming("callback").stopBefore(o);try{e.callback((function(o){o?(e.config.storage&&V(e,o),e.idObj=e.submodule.decode(o,e.config),me(H(n))):(0,d.logInfo)("".concat(j,": ").concat(e.submodule.name," - request id responded with an empty value")),t()}),Y.bind(null,e))}catch(n){(0,d.logError)("Error in userID module '".concat(e.submodule.name,"':"),n),t()}e.callback=void 0}))}function H(e){return Array.isArray(e)&&e.length?Q(e):{}}function K(e,t,n){return Object.fromEntries(Object.entries(e.reduce(((e,o)=>{const r=t(o);return r&&Object.keys(r).forEach((t=>{var s;const i=null===(s=G[t])||void 0===s?void 0:s.indexOf(n(o)),c={priority:(0,d.isNumber)(i)?i:-1,value:r[t]};if(e[t]){const n=c.priority>e[t].priority?c:e[t];e[t]=n}else e[t]=c})),e}),{})).map((e=>{let[t,n]=e;return[t,n.value]})))}function Q(e){return K(e.filter((e=>(0,d.isPlainObject)(e.idObj)&&Object.keys(e.idObj).length)),(e=>e.idObj),(e=>e.submodule.name))}function X(e,t){[e].some((e=>!Array.isArray(e)||!e.length))||e.forEach((e=>{e.bids&&(0,d.isArray)(e.bids)&&e.bids.forEach((e=>{const n=function(e,t){return Array.isArray(e)&&e.length&&t?Q(e.filter((e=>!e.config.bidders||!(0,d.isArray)(e.config.bidders)||(0,r.q9)(e.config.bidders,t)))):{}}(t,e.bidder);Object.keys(n).length&&(e.userId=n,e.userIdAsEids=m(n))}))}))}const ee={};let te;function ne(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:se()||[];const t=L&&e.find((e=>e.source===L));if(t&&"string"==typeof(0,g.Z)(t,"uids.0.id")){const e=t.uids[0].id.replace(/[\W_]/g,"");if(e.length>=32&&e.length<=150)return e;(0,d.logWarn)("User ID - Googletag Publisher Provided ID for ".concat(L," is not between 32 and 150 characters - ").concat(e))}}const oe=(0,E.g3)("userId",(function(e,t){let{delay:n=p.Z.timeout,getIds:r=de}=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};p.Z.race([r().catch((()=>null)),n(R)]).then((()=>{X(t.adUnits||(0,o.R)().adUnits,T),B().join((0,E.Bf)(t.metrics),{propagate:!1,includeGroups:!0}),e.call(this,t)}))}));function re(){return H(T)}function se(){return m(re())}function ie(e){return m(function(e,t){if(!Array.isArray(e)||!e.length)return{};const n=Q(e),o=Object.keys(n).find((e=>{const n=f.get(e);return(null==n?void 0:n.source)===t||(0,d.isFn)(null==n?void 0:n.getSource)&&n.getSource()===t}));return o?{[o]:n[o]}:[]}(T,e))[0]}function ce(e,t,n){return te().then((()=>{let o={};if((0,d.isFn)(n)){(0,d.logInfo)("".concat(j," - Getting encrypted signal from custom function : ").concat(n.name," & source : ").concat(e," "));const t=n(e);o[e]=t?ae(t):null}else{const n=ie(e);(0,d.logInfo)("".concat(j," - Getting encrypted signal for eids :").concat(JSON.stringify(n))),(0,d.isEmpty)(n)||(o[n.source]=!0===t?ae(n):n.uids[0].id)}return(0,d.logInfo)("".concat(j," - Fetching encrypted eids: ").concat(o[e])),o[e]}))}function ae(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,n="";if(1===t)n="object"==typeof e?window.btoa(JSON.stringify(e)):window.btoa(e);return"".concat(t,"||").concat(n)}function ue(){if(!(0,d.isGptPubadsDefined)())return;window.googletag.secureSignalProviders=window.googletag.secureSignalProviders||[];const e=s.config.getConfig("userSync.encryptedSignalSources");if(e){const t=e.registerDelay||0;setTimeout((()=>{e.sources&&e.sources.forEach((e=>{let{source:t,encrypt:n,customFunc:o}=e;t.forEach((e=>{window.googletag.secureSignalProviders.push({id:e,collectorFunction:()=>ce(e,n,o)})}))}))}),t)}else(0,d.logWarn)("".concat(j," - ESP : encryptedSignalSources config not defined under userSync Object"))}function le(){let{submoduleNames:e}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0;return te({refresh:!0,submoduleNames:e}).then((()=>(t&&(0,d.isFn)(t)&&t(),re())))}function de(){return te().then((()=>re()),(e=>e===ee?Promise.resolve().then(de):((0,d.logError)("Error initializing userId",e),p.Z.reject(e))))}function ge(){let e=Number(c.NO.hash);const t=[];for(;e>0;)t.push(String.fromCharCode(255&e)),e>>>=8;return btoa(t.join())}function fe(e,t,n){const o=c.rp.getConsentData();if(e.config.storage){let n,r=Y(e),s=!1;if("number"==typeof e.config.storage.refreshInSeconds){const t=new Date(Y(e,"last"));s=t&&Date.now()-t.getTime()>1e3*e.config.storage.refreshInSeconds}!r||s||t||function(e){const t=Y(e,"cst");return!t||t!==ge()}(e)?n=e.submodule.getId(e.config,o,r):"function"==typeof e.submodule.extendId&&(n=e.submodule.extendId(e.config,o,r)),(0,d.isPlainObject)(n)&&(n.id&&(V(e,n.id),r=n.id),"function"==typeof n.callback&&(e.callback=n.callback)),r&&(e.idObj=e.submodule.decode(r,e.config))}else if(e.config.value)e.idObj=e.config.value;else{const t=e.submodule.getId(e.config,o,void 0);(0,d.isPlainObject)(t)&&("function"==typeof t.callback&&(e.callback=t.callback),t.id&&(e.idObj=e.submodule.decode(t.id,e.config)))}me(H(n))}function me(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:re();if(e&&L){const t=ne(m(e));t&&((0,d.isGptPubadsDefined)()?window.googletag.pubads().setPublisherProvidedId(t):(window.googletag=window.googletag||{},window.googletag.cmd=window.googletag.cmd||[],window.googletag.cmd.push((function(){window.googletag.pubads().setPublisherProvidedId(t)}))))}}function be(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];return B().fork().measureTime("userId.init.modules",(function(){if(!t.length)return[];if(!(t=t.filter((e=>(!e.config.storage||function(e){var t;switch(null===(t=e.config)||void 0===t||null===(t=t.storage)||void 0===t?void 0:t.type){case k:if(e.storageMgr.localStorageIsEnabled())return!C.getDataFromLocalStorage(A)||((0,d.logInfo)("".concat(j," - opt-out localStorage found, storage disabled")),!1);break;case P:if(e.storageMgr.cookiesAreEnabled())return!C.getCookie(A)||((0,d.logInfo)("".concat(j," - opt-out cookie found, storage disabled")),!1)}return!1}(e))&&N.isAllowed(O.EL,(0,D.T)(w.y2,e.config.name))))).length)return(0,d.logWarn)("".concat(j," - no ID module configured")),[];const o=t.reduce(((e,o)=>W(o.submodule.name).measureTime("init",(()=>{try{fe(o,n,t),e.push(o)}catch(e){(0,d.logError)("Error in userID module '".concat(o.submodule.name,"':"),e)}return e}))),[]);return o.length&&z(o),o.forEach(he.bind(null,e)),o}))}function he(e,t){let n=!1;for(let o=0;oe.eids),(e=>e.name))).forEach((e=>{let[t,n]=e;return f.set(t,n)}))}function ve(){pe(M);const e=function(e){return Array.isArray(e)?e.reduce(((e,t)=>(!t||(0,d.isEmptyStr)(t.name)||(t.storage&&!(0,d.isEmptyStr)(t.storage.type)&&!(0,d.isEmptyStr)(t.storage.name)&&ye.has(t.storage.type)||(0,d.isPlainObject)(t.value)?e.push(t):t.storage||t.value||e.push(t)),e)),[]):[]}(q);if(!e.length)return;const t=M.filter((e=>!(0,r.sE)(Z,(t=>t.name===e.name))));Z.splice(0,Z.length),t.map((t=>{const n=(0,r.sE)(e,(e=>e.name&&(e.name.toLowerCase()===t.name.toLowerCase()||t.aliasName&&e.name.toLowerCase()===t.aliasName.toLowerCase())));return n&&t.name!==n.name&&(n.name=t.name),t.findRootDomain=I.W,n?{submodule:t,config:n,callback:void 0,idObj:void 0,storageMgr:(0,b.df)({moduleType:w.y2,moduleName:n.name})}:null})).filter((e=>null!==e)).forEach((e=>Z.push(e))),!F&&Z.length&&((0,o.R)().requestBids.before(oe,40),a.ZP.callDataDeletionRequest.before(Ee),y.G.after((e=>e(ne()))),(0,d.logInfo)("".concat(j," - usersync config updated for ").concat(Z.length," submodules: "),Z.map((e=>e.submodule.name))),F=!0)}function Ee(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),o=1;o{if("function"==typeof e.submodule.onDataDeletionRequest)try{e.submodule.onDataDeletionRequest(e.config,e.idObj,...n)}catch(t){(0,d.logError)("Error calling onDataDeletionRequest for ID submodule ".concat(e.submodule.name),t)}!function(e){var t;let n,o;switch(null===(t=e.config)||void 0===t||null===(t=t.storage)||void 0===t?void 0:t.type){case P:const t=J(e,C),r=new Date(Date.now()-864e5).toUTCString();n=e=>t(e,"",r),o=["","_last","_cst"];break;case k:n=t=>C.removeDataFromLocalStorage(e.config.storage.name+t),o=["","_last","_exp","_cst"]}n&&o.forEach((e=>{try{n(e)}catch(e){(0,d.logError)(e)}}))}(e)})),e.apply(this,n)}function Ie(e){return function(){return Promise.resolve(e.apply(this,arguments))}}!function(e){let{delay:t=p.Z.timeout}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};L=void 0,Z=[],q=[],F=!1,T=[],te=function(){let{delay:e=p.Z.timeout}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const t=(0,p.P)(),n=(0,p.P)();let o,r,s=!1;function a(e){return r=B().fork(),null!=o&&o.reject(ee),o=(0,p.P)(),p.Z.race([e,o.promise]).finally(r.startTiming("userId.total"))}let g=T,f=Z;function m(e){return function(){if(g===T&&f===Z)return e(...arguments)}}function b(){return c.NO.promise.finally(r.startTiming("userId.init.consent"))}let h=a(p.Z.all([l.Cd,t.promise]).then(b).then(m((()=>{be(g,f)}))).then((()=>n.promise.finally(r.startTiming("userId.callbacks.pending")))).then(m((()=>{const e=g.filter((e=>(0,d.isFn)(e.callback)));if(e.length)return new p.Z((t=>$(e,t,g)))}))));return function(){let{refresh:o=!1,submoduleNames:r=null,ready:c=!1}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return c&&!s&&(s=!0,t.resolve(),R>0?n.resolve():i.on(u.EVENTS.AUCTION_END,(function t(){i.off(u.EVENTS.AUCTION_END,t),e(U).then(n.resolve)}))),o&&s&&(h=a(h.catch((()=>null)).then(b).then(m((()=>{const e=be(g,f.filter((e=>null==r||r.includes(e.submodule.name))),!0).filter((e=>null!=e.callback));if(e.length)return new p.Z((t=>$(e,t,g)))}))))),h}}({delay:t}),null!=_&&_(),M=[],_=e.getConfig("userSync",(e=>{const t=e.userSync;t&&(L=t.ppid,t.userIds&&(q=t.userIds,U=(0,d.isNumber)(t.syncDelay)?t.syncDelay:500,R=(0,d.isNumber)(t.auctionDelay)?t.auctionDelay:0,ve(),function(e,t){if(e){const n={},o=new Map(t.map((e=>e.submodule.aliasName?[e.submodule.aliasName,e.submodule.name]:[])));Object.keys(e).forEach((t=>{const r=(0,d.isArray)(e[t])?[...e[t]].reverse():[];n[t]=r.map((e=>o.has(e)?o.get(e):e))})),G=n}else G={}}(t.idPriority,Z),te({ready:!0})))})),(0,o.R)().getUserIds=re,(0,o.R)().getUserIdsAsEids=se,(0,o.R)().getEncryptedEidsForSource=Ie(ce),(0,o.R)().registerSignalSources=ue,(0,o.R)().refreshUserIds=Ie(le),(0,o.R)().getUserIdsAsync=Ie(de),(0,o.R)().getUserIdsAsEidBySource=ie}(s.config),(0,l.bA)("userId",(function(e){(0,r.sE)(M,(t=>t.name===e.name))||(M.push(e),c.qh.register(w.y2,e.name,e.gvlid),ve(),te({refresh:!0,submoduleNames:[e.name]}))})),(0,v.f8)({type:v.Z,name:"userExtEids",fn:function(e,t,n){const o=(0,g.Z)(n,"bidRequests.0.userIdAsEids");o&&Object.keys(o).length>0&&(0,h.N)(e,"user.ext.eids",o)}}),(0,o.z)("userId")},7563:(e,t,n)=>{n.d(t,{G:()=>o});const o=(0,n(92797).z3)("sync",(()=>{}))},26372:(e,t,n)=>{n.d(t,{DZ:()=>s,Px:()=>i,TP:()=>a,YC:()=>c,Z:()=>r,f8:()=>d,fP:()=>g,gm:()=>o,md:()=>u});const o=["request","imp","bidResponse","response"],[r,s,i,c]=o,[a,u]=["default","pbs"],l=new Set(o);const{registerOrtbProcessor:d,getProcessors:g}=function(){const e={};return{registerOrtbProcessor(t){let{type:n,name:r,fn:s,priority:i=0,dialects:c=[a]}=t;if(!l.has(n))throw new Error("ORTB processor type must be one of: ".concat(o.join(", ")));c.forEach((t=>{e.hasOwnProperty(t)||(e[t]={}),e[t].hasOwnProperty(n)||(e[t][n]={}),e[t][n][r]={priority:i,fn:s}}))},getProcessors:t=>e[t]||{}}}()}},e=>{e.O(0,[38409],(()=>{return t=82547,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[66635],{63273:(e,t,n)=>{var o=n(78640),i=n(64358),r=n(20265),s=n(14699),a=n(24679),c=n(15164),d=n(55975),p=n(3193),u=n(26296);const l="prebid",g="vidazoo",b="1.0.0",f=9e5,m=36e5,h="vidSid",I="vdzwopt",v="wsid_"+parseInt(Date.now()*Math.random()),S=(0,c.df)({bidderCode:g});function C(){try{return(0,i.parseUrl)(window.top.document.URL,{decodeSearchAsString:!0}).search}catch(e){return""}}function y(){return"https://".concat(arguments.length>0&&void 0!==arguments[0]?arguments[0]:l,".cootlogix.com")}function D(e){return e.cId||e.CID||e.cID||e.CId||e.cid||e.ciD||e.Cid||e.CiD}function R(e){return e.pId||e.PID||e.pID||e.PId||e.pid||e.piD||e.Pid||e.PiD}function w(e){return e.subDomain||e.SubDomain||e.Subdomain||e.subdomain||e.SUBDOMAIN||e.subDOMAIN}function z(e,t,n,o,s){var a,c;const{params:p,bidId:u,userId:l,adUnitCode:y,schain:D,mediaTypes:w,ortb2Imp:z,bidderRequestId:U,bidRequestsCount:k,bidderRequestsCount:O,bidderWinsCount:x}=e,{ext:A}=p;let{bidFloor:M}=p;const _=function(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"_";const n=e.length;let o=0,i=0;if(n>0)for(;i1&&void 0!==arguments[1]?arguments[1]:f;try{const n=q(e);let o,i=0;n&&n.value&&Date.now()-n.created1&&void 0!==arguments[1]?arguments[1]:m;const n="u_".concat(e),o=Date.now(),i=q(n);let r;!i||!i.value||o-i.created>t?(r="".concat(e,"_").concat(o.toString()),T(n,r)):r=i.value;return r}(_),F=q(h)||"",P=R(p),L=function(){let e=S.getDataFromLocalStorage(I);e||(e=String(Date.now()),S.setDataInLocalStorage(I,e));return e}(),E=d.S.get(g,"storageAllowed"),X=(0,r.Z)(e,"ortb2Imp.ext.gpid",(0,r.Z)(e,"ortb2Imp.ext.data.pbadslot","")),N=(0,r.Z)(o,"ortb2.site.cat",[]),B=(0,r.Z)(o,"ortb2.site.pagecat",[]);if((0,i.isFn)(e.getFloor)){const t=e.getFloor({currency:"USD",mediaType:"*",size:"*"});"USD"===t.currency&&(M=t.floor)}let V={url:encodeURIComponent(t),uqs:C(),cb:Date.now(),bidFloor:M,bidId:u,referrer:o.refererInfo.ref,adUnitCode:y,publisherId:P,sessionId:F,sizes:n,dealId:j,uniqueDealId:Z,bidderVersion:b,prebidVersion:"8.31.0",res:"".concat(screen.width,"x").concat(screen.height),schain:D,mediaTypes:w,ptrace:L,isStorageAllowed:E,gpid:X,cat:N,pagecat:B,transactionId:null==z||null===(a=z.ext)||void 0===a?void 0:a.tid,bidderRequestId:U,bidRequestsCount:k,bidderRequestsCount:O,bidderWinsCount:x,bidderTimeout:s,webSessionId:v};!function(e,t){let n;(0,i._each)(t,((t,o)=>{switch(n="uid.".concat(o),o){case"digitrustid":e[n]=(0,r.Z)(t,"data.id");break;case"lipb":e[n]=t.lipbid;break;case"parrableId":e[n]=t.eid;break;case"id5id":e[n]=t.uid;break;default:e[n]=t}}))}(V,l);const J=(0,r.Z)(o,"ortb2.device.sua");return J&&(V.sua=J),o.gdprConsent&&(o.gdprConsent.consentString&&(V.gdprConsent=o.gdprConsent.consentString),void 0!==o.gdprConsent.gdprApplies&&(V.gdpr=o.gdprConsent.gdprApplies?1:0)),o.uspConsent&&(V.usPrivacy=o.uspConsent),o.gppConsent?(V.gppString=o.gppConsent.gppString,V.gppSid=o.gppConsent.applicableSections):null!==(c=o.ortb2)&&void 0!==c&&null!==(c=c.regs)&&void 0!==c&&c.gpp&&(V.gppString=o.ortb2.regs.gpp,V.gppSid=o.ortb2.regs.gpp_sid),(0,i._each)(A,((e,t)=>{V["ext."+t]=e})),V}function U(e,t,n,o,i){const{params:r}=e,s=D(r),a=w(r),c=z(e,t,n,o,i);return{method:"POST",url:"".concat(y(a),"/prebid/multi/").concat(s),data:c}}function q(e){try{return function(e){try{return JSON.parse(e)}catch(t){return e}}(S.getDataFromLocalStorage(e))}catch(e){}return null}function T(e,t,n){try{const o=n||Date.now(),i=JSON.stringify({value:t,created:o});S.setDataInLocalStorage(e,i)}catch(e){}}const k={code:g,version:b,gvlid:744,supportedMediaTypes:[a.Mk,a.pX],isBidRequestValid:function(e){const t=e.params||{};return!(!D(t)||!R(t))},buildRequests:function(e,t){const n=t.refererInfo.page||t.refererInfo.topmostLocation,o=p.config.getConfig("bidderTimeout"),r=p.config.getConfig("vidazoo.singleRequest"),s=[];if(r){const r=e.filter((e=>(0,i.isArray)(e.mediaTypes)?e.mediaTypes.includes(a.Mk):void 0!==e.mediaTypes[a.Mk]));if(r.length>0){const e=function(e,t,n,o){const{params:r}=e[0],s=D(r),a=w(r),c=e.map((e=>{const r=(0,i.parseSizesInput)(e.sizes);return z(e,n,r,t,o)})),d=Math.min(20,p.config.getConfig("vidazoo.chunkSize")||10);return(0,u.y)(c,d).map((e=>({method:"POST",url:"".concat(y(a),"/prebid/multi/").concat(s),data:{bids:e}})))}(r,t,n,o);s.push(...e)}e.filter((e=>void 0!==e.mediaTypes[a.pX])).forEach((e=>{const r=(0,i.parseSizesInput)(e.sizes),a=U(e,n,r,t,o);s.push(a)}))}else e.forEach((e=>{const r=(0,i.parseSizesInput)(e.sizes),a=U(e,n,r,t,o);s.push(a)}));return s},interpretResponse:function(e,t){if(!e||!e.body)return[];const n=p.config.getConfig("vidazoo.singleRequest"),o=(0,r.Z)(t,"data.bidId"),{results:i}=e.body;let s=[];try{return i.forEach(((e,t)=>{const{creativeId:i,ad:r,price:c,exp:d,width:p,height:u,currency:l,bidId:g,advertiserDomains:b,metaData:f,mediaType:m=a.Mk}=e;if(!r||!c)return;const h={requestId:n&&g?g:o,cpm:c,width:p,height:u,creativeId:i,currency:l||"USD",netRevenue:!0,ttl:d||300};f?Object.assign(h,{meta:f}):Object.assign(h,{meta:{advertiserDomains:b||[]}}),m===a.Mk?Object.assign(h,{ad:r}):Object.assign(h,{vastXml:r,mediaType:a.pX}),s.push(h)})),s}catch(e){return[]}},getUserSyncs:function(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"",s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},a=[];const{iframeEnabled:c,pixelEnabled:d}=e,{gdprApplies:p,consentString:u=""}=n,{gppString:l,applicableSections:g}=s,b=t.filter((e=>(0,r.Z)(e,"body.cid"))).map((e=>e.body.cid)).filter(i.uniques);let f="?cid=".concat(encodeURIComponent(b.join(",")),"&gdpr=").concat(p?1:0,"&gdpr_consent=").concat(encodeURIComponent(u||""),"&us_privacy=").concat(encodeURIComponent(o||""));return l&&null!=g&&g.length&&(f+="&gpp="+encodeURIComponent(l),f+="&gpp_sid="+encodeURIComponent(g.join(","))),c&&a.push({type:"iframe",url:"https://sync.cootlogix.com/api/sync/iframe/".concat(f)}),d&&a.push({type:"image",url:"https://sync.cootlogix.com/api/sync/image/".concat(f)}),a}};(0,s.dX)(k),(0,o.z)("vidazooBidAdapter")}},e=>{e.O(0,[2284,38409],(()=>{return t=63273,e(e.s=t);var t}));e.O()}]);(self.pbjsChunk=self.pbjsChunk||[]).push([[15337],{55511:(e,t,r)=>{var i=r(78640),n=r(64358),o=r(20265),a=r(96475),d=r(24679),s=r(14699),c=r(35706),p=r(34614);const u="USD",m=300,l=!0,f="https://prebid-outstream.yieldmo.com/bundle.js",g=["mimes","startdelay","placement","plcmt","skipafter","protocols","api","playbackmethod","maxduration","minduration","pos","skip","skippable"],y=["name","domain","cat","keywords"],v=(0,n.getWindowTop)(),b=2,h=0,I=["description","title","pr","page_url"],x={code:"yieldmo",supportedMediaTypes:[d.Mk,d.pX],gvlid:173,isBidRequestValid:function(e){return!!(e&&e.adUnitCode&&e.bidId&&(w(e)||Z(e))&&function(e){if(!Z(e))return!0;const t=(e,t,r)=>{let i='"'.concat(e,'" is required');throw r&&(i+=" when "+r),new Error(i)},r=(e,t,r)=>{throw r=r?", expected: "+r:"",t=JSON.stringify(t),new Error('"'.concat(e,'"=').concat(t," is invalid").concat(r))},i=e=>void 0!==e,a=(t,r,i,n)=>{if(0===t.indexOf("video")){const a="params."+t,d="mediaTypes."+t,s=(0,o.Z)(e,a),c=(0,o.Z)(e,d),p=r(s),u=r(c);return p?s:u||(p?u||i(d,c,n):i(a,s,n),s||c)}{const a=(0,o.Z)(e,t);return r(a)||i(t,a,n),a}};try{a("video.context",(e=>!(0,n.isEmpty)(e)),t),a("params.placementId",(e=>!(0,n.isEmpty)(e)),t),a("video.playerSize",(e=>(0,n.isArrayOfNums)(e,2)||(0,n.isArray)(e)&&e.every((e=>(0,n.isArrayOfNums)(e,2)))),r,"array of 2 integers, ex: [640,480] or [[640,480]]"),a("video.mimes",(e=>i(e)),t),a("video.mimes",(e=>(0,n.isArray)(e)&&e.every((e=>(0,n.isStr)(e)))),r,'array of strings, ex: ["video/mp4"]');const e=a("video.placement",(e=>i(e)),t);return a("video.placement",(e=>e>=1&&e<=5),r),1===e&&(a("video.startdelay",(e=>i(e)),((e,r)=>t(e,r,"placement == 1"))),a("video.startdelay",(e=>(0,n.isNumber)(e)),r,"number, ex: 5")),a("video.protocols",(e=>i(e)),t),a("video.protocols",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=12&&9!=e&&10!=e))),r,"array of numbers between 1 and 12 except for 9 or 10 , ex: [2,3, 7, 11]"),a("video.api",(e=>i(e)),t),a("video.api",(e=>(0,n.isArrayOfNums)(e)&&e.every((e=>e>=1&&e<=6))),r,"array of numbers, ex: [2,3]"),a("video.playbackmethod",(e=>!i(e)||(0,n.isArrayOfNums)(e)),r,"array of integers, ex: [2,6]"),a("video.maxduration",(e=>i(e)),t),a("video.maxduration",(e=>(0,n.isInteger)(e)),r),a("video.minduration",(e=>!i(e)||(0,n.isNumber)(e)),r),a("video.skippable",(e=>!i(e)||(0,n.isBoolean)(e)),r),a("video.skipafter",(e=>!i(e)||(0,n.isNumber)(e)),r),a("video.pos",(e=>!i(e)||(0,n.isNumber)(e)),r),a("params.badv",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["ford.com","pepsi.com"]'),a("params.bcat",(e=>!i(e)||(0,n.isArray)(e)),r,'array of strings, ex: ["IAB1-5","IAB1-6"]'),!0}catch(e){return(0,n.logError)(e.message),!1}}(e))},buildRequests:function(e,t){const r=function(e){var t;return!(null===(t=e.refererInfo)||void 0===t||null===(t=t.referer)||void 0===t||!t.includes("pb_force_a"))}(t),i=_("/exchange/prebid",r),s=_("/exchange/prebidvideo",r),c=e.filter((e=>w(e))),u=e.filter((e=>Z(e)));let m=[];const l=function(e){if((0,o.Z)(e,"userIdAsEids"))return e.userIdAsEids||[]}(e[0])||[];if(c.length>0){let e={pbav:"8.31.0",p:[],page_url:t.refererInfo.page,bust:(new Date).getTime().toString(),dnt:"1"===window.doNotTrack||"1"===window.navigator.doNotTrack||!1,description:k(),tmax:t.timeout||400,userConsent:JSON.stringify({gdprApplies:(0,o.Z)(t,"gdprConsent.gdprApplies")||"",cmp:(0,o.Z)(t,"gdprConsent.consentString")||"",gpp:(0,o.Z)(t,"gppConsent.gppString")||"",gpp_sid:(0,o.Z)(t,"gppConsent.applicableSections")||[]}),us_privacy:(0,o.Z)(t,"uspConsent")||""};(function(){try{if((0,n.getWindowTop)().location.href)return!0}catch(e){return!1}})()&&(e.pr=v.document&&v.document.referrer||"",e.scrd=v.devicePixelRatio||0,e.title=v.document.title||"",e.w=v.innerWidth,e.h=v.innerHeight);const r=window.navigator.maxTouchPoints;r&&(e.mtp=r),c.forEach((t=>{e.p.push(function(e){const t=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot"),r={placement_id:e.adUnitCode,callback_id:e.bidId,sizes:e.mediaTypes.banner.sizes};if(e.params){e.params.placementId&&(r.ym_placement_id=e.params.placementId);const t=S(e,d.Mk);t&&(r.bidFloor=t)}t&&(r.gpid=t);const i=(0,o.Z)(e,"ortb2Imp.ext.tid");i&&(r.tid=i);e.auctionId&&(r.auctionId=e.auctionId);return JSON.stringify(r)}(t));const r=N(t,"pubcid");r?e.pubcid=r:t.crumbs&&t.crumbs.pubcid&&(e.pubcid=t.crumbs.pubcid);const i=N(t,"tdid");i&&(e.tdid=i);const n=N(t,"criteoId");n&&(e.cri_prebid=n),t.schain&&(e.schain=JSON.stringify(t.schain)),(0,o.Z)(t,"params.lr_env")&&(e.ats_envelope=t.params.lr_env)})),e.p="["+e.p.toString()+"]",l.length&&(e.eids=JSON.stringify(l));let a="".concat(i,"?").concat((0,n.parseQueryStringParameters)(e)).length-8e3;if(a>0)for(let t=0;t0){const e=function(e,t){const r=e[0].schain;let i={id:e[0].bidderRequestId,tmax:t.timeout||400,at:1,imp:e.map((e=>function(e){const t=(0,o.Z)(e,"ortb2Imp.ext.data.pbadslot"),r=function(e){const t=(0,o.Z)(e,"mediaTypes.video.playerSize");if((0,n.isArrayOfNums)(t,2))return t;if((0,n.isArray)(t)&&(0,n.isArrayOfNums)(t[0],2))return t[0];return null}(e),i={id:e.bidId,tagid:e.adUnitCode,bidfloor:S(e,d.pX),ext:{placement_id:e.params.placementId,tid:(0,o.Z)(e,"ortb2Imp.ext.tid")},video:{w:r[0],h:r[1],linearity:1}},a=(0,o.Z)(e,"mediaTypes.video",{});Object.keys(a).filter((e=>(0,p.q9)(g,e))).forEach((e=>i.video[e]=a[e]));const s=(0,o.Z)(e,"params.video",{});Object.keys(s).filter((e=>(0,p.q9)(g,e))).forEach((e=>i.video[e]=s[e])),i.video.skippable&&(i.video.skip=1,delete i.video.skippable);1===i.video.plcmt&&1===i.video.placement||(i.video.startdelay=h,i.video.playbackmethod=[b]);t&&(i.ext.gpid=t);return i}(e))),site:A(e[0],t),device:(0,o.Z)(t,"ortb2.device"),badv:e[0].params.badv||[],bcat:(0,o.Z)(t,"bcat")||e[0].params.bcat||[],ext:{prebid:"8.31.0"},ats_envelope:e[0].params.lr_env};r&&(i.schain=r);e[0].auctionId&&(i.auctionId=e[0].auctionId);return function(e,t){const r=t.gdprConsent,i=(0,o.Z)(t,"gppConsent.gppString"),n=(0,o.Z)(t,"gppConsent.applicableSections");i?(0,a.N)(e,"regs.ext.gpp",i):((0,a.N)(e,"regs.ext.gdpr",r&&r.gdprApplies?1:0),(0,a.N)(e,"user.ext.consent",r&&r.consentString?r.consentString:""));n&&n.length>0&&(0,a.N)(e,"regs.ext.gpp_sid",n);const d=(0,o.Z)(t,"uspConsent");!i&&d&&(0,a.N)(e,"regs.ext.us_privacy",d)}(i,t),i}(u,t);l.length&&(e.user={eids:l}),m.push({method:"POST",url:s,data:e})}return m},interpretResponse:function(e,t){let r=[];const i=e.body;if(i.length>0&&i.forEach((e=>{e.cpm>0&&r.push(function(e){return{dealId:e.publisherDealId,requestId:e.callback_id,cpm:e.cpm,width:e.width,height:e.height,creativeId:e.creative_id,currency:u,netRevenue:l,ttl:300,ad:e.ad,meta:{advertiserDomains:e.adomain||[],mediaType:d.Mk}}}(e))})),i.seatbid){i.seatbid.reduce(((e,t)=>e.concat(t.bid)),[]).forEach((e=>r.push(function(e,t){const r=(0,p.sE)((0,o.Z)(t,"data.imp")||[],(t=>t.id===e.impid));let i={dealId:e.dealid,requestId:r.id,cpm:e.price,width:r.video.w,height:r.video.h,creativeId:e.crid||e.adid,currency:u,netRevenue:l,mediaType:d.pX,ttl:m,vastXml:e.adm,meta:{advertiserDomains:e.adomain||[],mediaType:d.pX}};if(r.video.placement&&1!==r.video.placement){const e=c.Th.install({url:f,config:{width:i.width,height:i.height,vastTimeout:15e3,maxAllowedVastTagRedirects:5,allowVpaid:!0,autoPlay:!0,preload:!0,mute:!0},id:r.tagid,loaded:!1});e.setRender((function(e){e.renderer.push((()=>{const{id:t,config:r}=e.renderer;window.YMoutstreamPlayer(e,t,r)}))})),i.renderer=e}return i}(e,t))))}return r},getUserSyncs:function(e,t){let r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"";const n=[],o="&gdpr=".concat(r.gdprApplies?1:0),a="&gdpr_consent=".concat(encodeURIComponent(r.consentString||"")),d="us_privacy=".concat(encodeURIComponent(i)),s="".concat("https://ads.yieldmo.com/pbcas","?").concat(d).concat(o).concat(a);return e.iframeEnabled?n.push({type:"iframe",url:s+"&type=iframe"}):e.pixelEnabled&&n.push({type:"image",url:s+"&type=image"}),n}};function w(e){return!!(0,o.Z)(e,"mediaTypes.banner")}function Z(e){return!!(0,o.Z)(e,"mediaTypes.video")}function k(){return document.querySelector('meta[name="description"]')&&document.querySelector('meta[name="description"]').getAttribute("content")||""}function N(e,t){return"object"==typeof(0,o.Z)(e,"userId")?e.userId[t]:void 0}function S(e,t){let r={};return"function"==typeof e.getFloor&&(r=e.getFloor({currency:u,mediaType:t,size:"*"})),r.floor||e.params.bidfloor||e.params.bidFloor||0}function A(e,t){var r;let i={};const a=(0,n.parseUrl)((0,o.Z)(t,"refererInfo.page"));(0,n.isEmpty)(a)||(i.page="".concat(a.protocol,"://").concat(a.hostname).concat(a.pathname)),null!==(r=t.refererInfo)&&void 0!==r&&r.ref&&(i.ref=t.refererInfo.ref);const d=document.getElementsByTagName("meta").keywords;d&&d.content&&(i.keywords=d.content);const s=(0,o.Z)(e,"params.site");return s&&Object.keys(s).filter((e=>(0,p.q9)(y,e))).forEach((e=>i[e]=s[e])),i}function T(e,t,r){if(t[r].length>e)return t[r]=t[r].substring(0,t[r].length-e),0;const i=e-t[r].length;return t[r]="",i}function _(e,t){return"".concat(t?"https://ads-stg.yieldmo.com":"https://ads.yieldmo.com").concat(e)}(0,s.dX)(x),(0,i.z)("yieldmoBidAdapter")}},e=>{e.O(0,[38409],(()=>{return t=55511,e(e.s=t);var t}));e.O()}]);})(),pbjs.processQueue();

7 Video Quality Enhancers to Improve Low Resolution on Your Videos (2024)

FAQs

How do I increase the resolution of a low quality video? ›

a) Use a Video Enhancer Software

Consider utilizing a reliable video enhancer app to enhance the quality of your videos. A video enhancement software tool will offer advanced features to improve video resolution, enhance colors, reduce noise, and optimize overall visual clarity.

What is the best way to enhance video quality? ›

You can enhance your video quality by changing your recording equipment or adjusting your settings with these factors in mind:
  1. Resolution. Video resolution refers to the number of pixels in each video frame. ...
  2. Bitrate. ...
  3. Frame rate. ...
  4. Lighting. ...
  5. Camera settings. ...
  6. Framing. ...
  7. Internet speed. ...
  8. Edit for pacing.
Dec 26, 2023

What does enhance video quality mean? ›

The term "enhance video quality" can have multiple meanings. Sometimes, cutting out unnecessary parts of a video clip means enhancing its quality. Other times, it refers to a technical improvement, such as sharpening or upscaling.

Is there a program to enhance video quality? ›

Filmora helps you take your video content to the next level. This application offers a range of editing tools and features that support great quality enhancements. The system even includes AI technology that automatically adjusts visual elements and removes unwanted background noise.

What is the app that enhances blurry videos? ›

You Might Also Like
  • Sharpen Video: Enhance Quality. Photo & Video.
  • AI Video Enhancer - HiQuality. Photo & Video.
  • Picture Enhancer: Clear & Fix. Photo & Video.
  • Photo editor&Repair-Clear AI. Photo & Video.
  • Image Enhancer AI - Fix Blurry. Photo & Video.
  • Video Effect Enhance Tool. Photo & Video.

Is there an app to make videos clearer? ›

Fix Blurry Video for Clearer Visuals

Fotor allows you to unblur video to get rid of blurriness and achieve better clarity and resolution with ease. Upload, and witness the magic transformation from blurry to clear video quality. Try out our video blur remover and effortlessly bring your precious moment back to life!

Is there a free video enhancer? ›

Fotor stands out as the best free video enhancer, providing all the essential features for automatically enhancing your videos effectively. There is no need for downloading and installation. Just visit the website to get started.

What is the fastest video enhancer? ›

Pinnacle Studio is one of the fastest video editors, making it similar to the best software to the best AI video enhancer, PowerDirector. But unlike PowerDirector, Pinnacle Studio doesn't feature a split-screen preview, so you can only see the enhanced video quality once you move the play head.

How to make a blurry video clear? ›

Change Contrast

Lowering the contrast on a video will help out by showing some more details, when coupled with upping the brightness it will help in making a video look clearer.

Why is my videos low quality? ›

Wrong Camera Settings

Shutter speed, in particular, can affect how clearly your camera captures your video. Also, check the settings when uploading your video to a platform or website. If you are not uploading your video with HD settings, the video will appear to be lower quality than it truly is.

Does higher resolution mean better video quality? ›

Video resolution determines the amount of detail in your video, or how realistic and clear the video appears. It's measured by the number of pixels contained in the standard aspect ratio of 16:9, the most common aspect ratio for television and computer monitors.

Can you fix the quality of a blurry video? ›

No matter what reasons cause the blurry video, you can use third-party software to fix the blurry videos to make them clear and acquire a visually new look. You can use software like Video Enhancer AI, professional video editors like Adobe Premiere Pro, or a standalone product that allows you to deblur effortlessly.

How do I increase a video from 480p to 1080p? ›

A. The best way to convert 480P to 1080P without quality loss is to use a video converter such as AVCLabs Video Enhancer AI or Video Enhancer AI. These converters use AI technology to automatically upscale low-resolution videos to 1080P without introducing any artifacts or other distortions.

Can low resolution videos be fixed? ›

No matter whatever the reason behind the bad video quality issues, you can easily repair poor quality videos by using the video enhancement tool. There are many third-party tools like Video Enhancer AI, Adobe Premiere Pro, Adobe After Effects on the market that can help users to improve the video quality with ease.

Can we convert 360p to 1080p? ›

AVCLabs Video Enhancer AI is an AI-powered video enhancement and upscaling software. It allows you to use a neural network to enhance and optimize the video. It can upscale 360p, 480p, and 720p videos to 1080p with obvious visual improvements.

Top Articles
Latest Posts
Article information

Author: Domingo Moore

Last Updated:

Views: 6075

Rating: 4.2 / 5 (73 voted)

Reviews: 80% of readers found this page helpful

Author information

Name: Domingo Moore

Birthday: 1997-05-20

Address: 6485 Kohler Route, Antonioton, VT 77375-0299

Phone: +3213869077934

Job: Sales Analyst

Hobby: Kayaking, Roller skating, Cabaret, Rugby, Homebrewing, Creative writing, amateur radio

Introduction: My name is Domingo Moore, I am a attractive, gorgeous, funny, jolly, spotless, nice, fantastic person who loves writing and wants to share my knowledge and understanding with you.