{"version":3,"sources":["prebid.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","id","loaded","call","m","c","p","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","processQueue","queue","forEach","cmd","_typeof","called","objectType_undefined","e","utils","logError","checkDefinedPlacement","placementCodes","pbjs","_bidsRequested","map","bidSet","bids","bid","placementCode","reduce","_utils","flatten","filter","uniques","contains","clearPlacements","_bidsReceived","_adUnitCodes","includes","adUnitCode","setRenderSize","doc","width","height","defaultView","frameElement","_extends","assign","target","i","arguments","length","source","prototype","hasOwnProperty","Symbol","iterator","constructor","_prebidGlobal","_video","_native","_url","_cpmBucketManager","_secureCreatives","_cookie","_adloader","_ajax","getGlobal","CONSTANTS","bidmanager","adaptermanager","bidfactory","events","adserver","targeting","custom","objectType_function","objectType_object","BID_WON","EVENTS","SET_TARGETING","auctionRunning","bidRequestQueue","eventValidators","bidWon","_winningBids","_adsReceived","_sendAllBids","bidderSettings","bidderTimeout","cbTimeout","timeoutBuffer","logging","publisherDomain","window","location","origin","libLoaded","version","logInfo","adUnits","cookieSyncDelay","push","message","que","getAdserverTargetingForAdUnitCodeStr","adunitCode","res","getAdserverTargetingForAdUnitCode","transformAdServerTargetingObj","logMessage","getAdserverTargeting","getAllTargeting","keys","join","accumulator","getBidResponses","responses","adUnitsFilter","bind","this","currentRequestId","requestId","a","b","getBidResponsesForAdUnitCode","setTargetingForGPTAsync","adUnit","isGptPubadsDefined","targetingSet","resetPresetTargeting","setTargeting","emit","setTargetingForAst","isApntagDefined","allBidsAvailable","bidsBackAll","renderAd","find","adId","ad","replaceAuctionPrice","cpm","url","mediaType","adUrl","renderer","render","document","inIframe","write","close","iframe","createInvisibleIframe","style","display","overflow","src","insertElement","removeAdUnit","code","splice","clearAuction","syncCookies","shift","requestBids","_ref4","undefined","bidsBackHandler","timeout","adUnitCodes","ifEnabled","unit","invalidVideoAdUnits","videoAdUnit","hasNonVideoBidder","nativeAdUnit","hasNonNativeBidder","nonNativeBidders","nativeBidder","bidder","externalCallbackReset","addOneTimeCallback","executeCallback","timedOut","timeoutCallback","timer","setTimeout","setAjaxTimeout","callBids","addAdUnits","adUnitArr","isArray","transactionId","generateUUID","apply","onEvent","event","handler","isFn","on","offEvent","off","addCallback","eventStr","func","getUniqueIdentifierStr","removeCallback","registerBidAdapter","bidderAdaptor","bidderCode","registerAnalyticsAdapter","options","bidsAvailableForAdapter","bidderRequest","createBid","statusCode","addBidResponse","loadScript","tagSrc","callback","useCache","enableAnalytics","config","isEmpty","aliasBidder","alias","aliasBidAdapter","setPriceGranularity","granularity","isValidePriceConfig","setCustomPriceBucket","GRANULARITY_OPTIONS","CUSTOM","enableSendAllBids","getAllWinningBids","buildMasterVideoTagFromAdserverTag","adserverTag","urlComponents","parse","masterTag","toLowerCase","dfpAdserverObj","dfpAdserver","verifyAdserverTag","appendQueryParams","format","setBidderSequence","order","ORDER","RANDOM","getHighestCpmBids","getWinningBids","setS2SConfig","enabled","endpoint","S2S","DEFAULT_ENDPOINT","maxBids","adapter","listenMessagesFromCreative","_getUniqueIdentifierStr","getIncrementalInteger","Math","random","toString","substr","hasConsoleLogger","console","log","index","arry","indexOf","concat","getBidRequest","bidId","getKeys","getValue","getBidderCodes","googletag","pubads","getSlots","getHighestCpm","previous","current","timeToRespond","shuffle","array","counter","floor","temp","isSrcdocSupported","test","navigator","userAgent","cloneJson","JSON","stringify","self","top","isSafariBrowser","str","replace","getBidderRequestAllAdUnits","request","getBidderRequest","start","objectType_string","objectType_number","_loggingChecked","t_Arr","t_Str","t_Fn","t_Numb","infoLogger","info","replaceTokenInString","token","_each","keyString","toUpperCase","re","RegExp","count","placeholder","getBidIdParameter","paramsObj","tryAppendQueryString","existingUrl","encodeURIComponent","parseQueryStringParameters","queryObj","result","k","getOwnPropertyNames","parseSizesInput","sizeObj","parsedSizes","sizes","split","sizeRegex","curSizePos","hasOwn","match","sizeArrayLength","parseGPTSingleSizeArray","singleSize","isNaN","getTopWindowLocation","getTopWindowUrl","href","logWarn","msg","debugTurnedOn","warn","args","errLogFn","hasLogger","error","getParameterByName","DEBUG_MODE","exception","errCode","f","createElement","border","hspace","vspace","marginWidth","marginHeight","scrolling","frameBorder","name","regexS","regex","results","exec","search","decodeURIComponent","hasValidBidRequest","paramObj","requiredParamsArr","findParam","found","addEventHandler","element","addEventListener","attachEvent","isA","object","_t","isStr","isNumber","isEmptyStr","fn","l","Array","_map","output","objectToCheck","propertyToCheckFor","elm","elToAppend","getElementsByTagName","insertBefore","firstChild","insertPixel","img","Image","onload","parentNode","removeChild","insertCookieSyncIframe","encodeUri","iframeHtml","createTrackPixelIframeHtml","div","innerHTML","createTrackPixelHtml","escapedUrl","encodeURI","getIframeDocument","contentWindow","contentDocument","getValueString","param","val","defaultValue","JSON_MAPPING","PL_CODE","PL_SIZE","PL_BIDS","BD_BIDDER","BD_ID","BD_PL_ID","ADSERVER_TARGETING","BD_SETTING_STANDARD","REPO_AND_VERSION","STATUS","GOOD","NO_BID","CB","TYPE","ALL_BIDS_BACK","AD_UNIT_BIDS_BACK","REQUEST_BIDS","AUCTION_INIT","AUCTION_END","BID_ADJUSTMENT","BID_TIMEOUT","BID_REQUESTED","BID_RESPONSE","EVENT_ID_PATHS","LOW","MEDIUM","HIGH","AUTO","DENSE","TARGETING_KEYS","_adaptermanager","nonVideoBidder","videoAdapters","_interopRequireDefault","__esModule","default","getBids","_ref","bidderRequestId","sizeMapping","_sizeMapping","mapSizes","nativeParams","_native2","bid_id","transformHeightWidth","sizesObj","size","heightWidth","w","parseInt","h","_baseAdapter","_bidderRegistry","bidderRegistry","_s2sConfig","_analyticsRegistry","_bidderSequence","_ref2","auctionStart","Date","now","auctionInit","timestamp","bidderCodes","adaptersServerSide","bidders","adUnitsCopy","tid","getTime","s2sBidRequest","ad_units","s2sAdapter","setConfig","bidAdaptor","existingAlias","newAdapter","BaseAdapter","createNew","setBidderCode","_ref3","adapterConfig","provider","AolAdapter","CriteoAdapter","KomoonaAdapter","AppnexusAdapter","AppnexusAstAdapter","DistrictmDMXAdapter","PulsepointAdapter","UnderdogmediaAdapter","RhythmoneAdapter","SharethroughAdapter","AdyoulikeAdapter","AudienceNetworkAdapter","PubmaticAdapter","LockerdomeAdapter","GumgumAdapter","OpenxAdapter","SonobiAdapter","roxot","cortex","_interopRequireWildcard","newObj","isSizeMappingValid","getScreenWidth","_mapping","prev","curr","minWidth","mapping","win","_win","d","innerWidth","body","clientWidth","documentElement","setWindow","processNativeAdUnitParams","params","type","typeIsSupported","SUPPORTED_TYPES","nativeBidIsValid","bidRequest","requestedAssets","requiredAssets","required","returnedAssets","native","every","asset","fireNativeImpressions","adObject","impressionTrackers","tracker","NATIVE_TARGETING_KEYS","NATIVE_KEYS","nativeAdapters","title","sponsoredBy","image","icon","clickUrl","IMAGE","_classCallCheck","instance","Constructor","TypeError","_createClass","defineProperties","props","descriptor","protoProps","staticProps","slice","allEvents","v","idPaths","eventsFired","_dispatch","eventString","eventPayload","idPath","_handlers","eventKeys","callbacks","eventType","_checkAvailableEvent","_public","_handler","get","getEvents","arrayCopy","newProp","_taggedTemplateLiteral","strings","raw","freeze","_templateObject","_templateObject2","_templateObject3","ajax","constants","aolGlobals","pixelsDropped","dropSyncCookies","pixels","pixelElements","parsePixelItems","renderPixelElements","itemsRegExp","tagNameRegExp","srcRegExp","pixelsItems","matchedItems","item","tagNameMatches","sourcesPathMatches","tagName","pixelsElements","SYNC_TYPES","renderPixelImage","renderPixelIframe","pixelsItem","readyState","appendChild","domReady","template","_len","_key","_len2","values","_key2","dict","Number","isInteger","_buildMarketplaceUrl","serverParam","server","regionParam","region","MP_SERVER_MAP","pubapiTemplate","protocol","host","network","placement","pageid","pageId","sizeid","sizeId","bidfloor","bidFloor","misc","_buildNexageApiUrl","_bid$params","dcn","pos","nexageApi","nexageBaseApiTemplate","NEXAGE_SERVER","ext","nexageGetApiTemplate","_addErrorBidResponse","response","bidResponse","BIDDER_CODE","reason","nbr","_addBidResponse","bidData","seatbid","encp","price","adm","userSyncOn","formattedPixels","creativeId","crid","pubapiId","currencyCode","cur","dealid","dealId","_isNexageRequestPost","imp","tagid","banner","video","mimes","minduration","maxduration","_callBids","apiUrl","data","withCredentials","isNexageRequestPost","customHeaders","x-openrtb-version","method","contentType","showCpmAdjustmentWarning","aol","bidCpmAdjustment","us","eu","as","readyEventFired","idempotentFn","_timeout","x","useXDomainRequest","success","XMLHttpRequest","responseType","XDomainRequest","responseText","onerror","ontimeout","onprogress","onreadystatechange","XHR_DONE","status","statusText","urlInfo","open","header","setRequestHeader","preflight","send","parseQS","query","acc","criteria","_criteria$split","_criteria$split2","_slicedToArray","formatQS","parsed","hostname","port","pathname","hash","sliceIterator","arr","_arr","_n","_d","_e","_s","_i","next","done","err","Bid","_getStatus","_statusCode","_bidId","statusMessage","getStatusCode","getSize","Function","getBidderCode","getBidders","bidsBackAdUnit","_this","requested","add","received","getKeyValueTargetingPairs","custBidObj","keyValues","bidder_settings","standardSettings","getStandardBidderSettings","setKeys","alwaysUseBid","sendStandardTargeting","defaultBidderSettingsMap","kvPair","suppressEmptyKeys","triggerAdUnitCallbacks","singleAdUnitCode","processCallbacks","externalCallbacks","byAdUnit","callbackQueue","_this2","groupByPlacement","bidsByPlacement","adjustBids","bidPriceAdjusted","adserverTargeting","_granularity","pbAg","pbDg","pbLg","pbMg","pbHg","pbCg","getStandardBidderAdServerTargeting","all","oneTime","_customPriceBucket","customConfig","getTimedOutBidders","_getBidderRequest","responseTimestamp","requestTimestamp","parseFloat","priceStringsObj","getPriceBucketString","low","med","high","auto","dense","granularityOptions","option","registerDefaultBidderSetting","defaultSetting","clearTimeout","timedOutBidders","cbEvent","cpmFloat","getCpmStringValue","_lgPriceConfig","_mgPriceConfig","_hgPriceConfig","_autoPriceConfig","_densePriceConfig","cpmStr","cap","buckets","max","bucket","precision","_defaultPrecision","toFixed","min","getCpmTarget","increment","isValid","bucketSize","adloader","criteo_pubtag","_pushBidRequestEvent","_publisherTagUrl","Criteo","biddingEventFunc","slots","isAudit","PubTag","DirectBidding","DirectBiddingSlot","zoneId","audit","biddingEvent","DirectBiddingEvent","_profileId","DirectBiddingUrlBuilder","_callbackSuccess","_callbackError","parseBidResponse","bidsResponse","isNoBidResponse","jsonbidsResponse","j","impid","impId","bidObject","_bidderCode","creative","_invalidBidResponse","sProt","requestResource","jptScript","async","_requestCache","cacheRequest","kbConf","ts_as","hb_placements","hb_placement_bidids","kb_callback","_bid_arrived","hb_floors","currentBid","hdbdid","hbid","encode_bid","placementId","floorPrice","scriptUrl","KmnKB","bidObj","bidid","bidStatus","KOMOONA_BIDDER_NAME","AppNexusAdapter","Adapter","buildJPTCall","callbackId","memberId","member","inventoryCode","referrer","altReferrer","jptCall","sizeQueryString","parsedSizesLength","charAt","targetingParams","paramsCopy","invCode","alt_referrer","queryParams","lastIndexOf","substring","startTime","baseAdapter","usersync","anArr","handleAnCB","jptResponseObj","bidCode","callback_uid","responseCPM","creative_id","deal_id","_toConsumableArray","arr2","from","handleResponse","errorMessage","bidRequests","_bidmanager2","_constants","tags","tag","getRtbBid","ad_type","SUPPORTED_AD_TYPES","uuid","valid","getKeywords","keywords","arrs","getSizes","requestSizes","ads","rtb","outstreamRender","ANOutstreamVideo","tagId","adResponse","tag_id","targetId","rendererOptions","getConfig","handleOutstreamRendererEvents","eventName","handleVideoEvent","_bidfactory2","player_width","player_height","vastUrl","asset_url","descriptionUrl","renderer_url","_Renderer","Renderer","install","renderer_id","adText","setRender","logWarning","setEventHandlers","impression","ended","querySelector","desc","sponsored","main_img","link","impression_trackers","content","trackers","impression_urls","_adapter2","userObj","primary_size","allow_smaller_sizes","allowSmallerSizes","prebid","disable_psa","reserve","position","above","below","trafficSourceCode","traffic_source_code","privateSizes","private_sizes","supplyType","supply_type","pubClick","pubclick","extInvCode","ext_inv_code","externalImpId","external_imp_id","ad_types","nativeRequest","requestKey","NATIVE_MAPPING","serverName","serverParams","layouts","require_asset_url","VIDEO_TARGETING","user","USER_PARAMS","payloadJson","member_id","payload","ENDPOINT","_adapter","_bidfactory","_bidmanager","handlers","process","adLoader","DistrictmAdaptor","districtmUrl","hb_dmx_res","sendBids","handlerRes","auction","fixSize","run","ssp","PulsePointAdapter","pp","getJsStaticUrl","requestBid","ppBidRequest","Ad","bidRequestOptions","bidResponseAvailable","bidResponseCallback","cn","ca","requestActions","BID","cu","bidUrl","adUnitId","adSize","cf","bidCpm","html","passback","UnderdogMediaAdapter","udm_header_lib","mapped_bids","siteId","divId","subId","udmBidRequest","BidRequestArray","udm_bid","ad_url","ad_html","nobid","bidManager","global","loader","applyMacros","txt","load","bidParams","flashInstalled","n","plugins","mimeTypes","t","ActiveXObject","enabledPlugin","attempt","valueFunction","ex","logToConsole","debug","getBidParameters","noBids","getRMPURL","zone","defaultZone","path","defaultPath","trace","placementid","ancestorOrigins","screen","getTimezoneOffset","heights","widths","floors","mediaTypes","configuredPlacements","fat","th","tw","sendAuditBeacon","doc_version","doc_type","placement_id","ao","q","u","ancestor_origins","popped","opener","framed","prebid_instance","prebid_version","response_ms","loadStart","placement_codes","bidder_version","prebid_timeout","sort","requestCompleted","slotMap","registerBid","pbResponse","nurl","STR_BIDDER_CODE","STR_VERSION","placementCodeSet","_buildSharethroughCall","_createCallback","_strcallback","pkey","STR_BTLR_HOST","appendEnvFields","creatives","adserverRequestId","windowLocation","bidJsonString","_handleInvalidBid","STR_BEACON_HOST","createEndpoint","createEndpointQS","qs","ref","getReferrerUrl","RefererUrl","can","getCanonicalUrl","CanonicalUrl","createBody","placements","Version","_VERSION","Placements","performance","navigation","PageRefreshed","TYPE_RELOAD","bidResponses","Placement","addResponse","referer","head","parsedSize","Banner","Price","validBids","_createNew","validateBidRequest","flattenSize","isValidSize","isTestmode","Boolean","parseJson","jsonAsString","createAdHtml","nativeStyle","nativeContainer","createSuccessBidResponse","cpmCents","_size$split$map","_size$split$map2","hb_bidder","fb_bidid","fb_format","fb_placementid","createFailureBidResponse","placementids","adformats","testmode","sdk","errors","noBid","bid_price_cents","AudienceNetwork","_pm_optimize_adslots","_pm_pub_id","publisherId","_pm_pub_age","age","_pm_pub_gender","gender","_pm_pub_kvs","kvs","adSlot","_getBids","iframeDoc","_createRequestContent","PM_PUB_ID","PM_ADDCTR","PM_GENDER","PM_AGE","PM_OPTIMIZE_ADSLOTS","handlePubmaticCallback","bidDetailsMap","progKeyValueMap","adUnitInfo","dimensions","bidResponseMap","bidInfoMap","pair","parts","bidstatus","unescape","creative_tag","tracking_url","wdeal","LockerDomeAdapter","makeBidRequests","bail","DONE","serverResponse","serverBidResponses","bidById","_bid","_i2","serverBidResponse","bidFactory","currency","netRevenue","ttl","_i3","_bid2","_bidResponse","adUnitBidRequests","pageUrl","adapterManager","CALLBACKS","_getTimeStamp","_getDigiTrustQueryParams","getDigiTrustId","digiTrustUser","DigiTrust","getUser","dtCredentials","identity","digiTrustId","privacy","optout","dt","browserParams","vw","topWindow","vh","innerHeight","sw","topScreen","sh","pu","ce","cookieEnabled","dpr","devicePixelRatio","_bidRequest$params","trackingId","inScreen","nativeId","slotId","inSlot","tmax","inImage","pi","productId","throttle","throttleTable","latestRequest","requestCache","ni","si","pageViewId","pv","cachedBid","jsonp","_handleGumGumResponse","bidCall","bidEndpoint","defaultThrottle","cachedBidRequest","_bidResponse$ad","_bidResponse$pag","pag","thms","pvid","encodedResponse","gumgumAdLoader","handleGumGumCB","getViewportDimensions","isIfr","tWin","tDoc","docEl","clientHeight","makePDCall","pixelsUrl","pdFrame","setAttribute","rootNode","pdNode","replaceChild","pub_rev","ad_id","adid","buildQueryStringFromParams","buildBoPixel","recordPixel","tracking","boBase","adUnitHasValidSizeFromBid","sizeLength","creative_size","String","buildRequest","delDomain","auid","aus","customParam","customParams","queryString","currentURL","parent","ju","jr","ch","charSet","characterSet","colorDepth","ifr","tz","tws","ef","be","bc","BIDDER_CONFIG","oxARJResponse","oxResponseObj","adunitid","used","beaconParams","bd","br","bt","bs","bp","ts","_phone_in","trinity","adSlots","_keymaker","_operator","keyring","slotIdentifier","ad_unit","keymakerAssoc","bidReqAssoc","_failure","cb_name","_trinity","sbi_dc","slot_id","sbi_aid","sbi_mouse","sbi_size","_success","_seraph","theOne","goodBid","sbi_dozer","_creative","failBid","formRequest","parseResponse","failure","checkOptions","initOptions","publisherIds","buildBidWon","buildEventStack","eventStack","sendDataType","fullUrl","pushEvent","flushEvents","_AnalyticsAdapter","_AnalyticsAdapter2","_constants2","analyticsType","auctionInitConst","auctionEndConst","bidWonConst","auctionStatus","roxotAdapter","track","originEnableAnalytics","AnalyticsAdapter","_track","getAdapterType","LIBRARY","BUNDLE","_callEndpoint","_enqueue","_queue","_eventCount","_enable","_sampled","sampling","_handlers2","_timedOutBidders","enqueue","_disable","_emptyQueue","_enableCheck","disableAnalytics","getHandler","getUrl","CORTEX_LOG","send_log","request_type","event_type","auction_status","auction_timeout","getContribution","winningBidObject","unitBids","tailingBidCpm","auctionTimeout","cortexAdapter","hashcode","pbjs_hash","contribution","active","isFinite","$export","$find","KEY","forced","P","F","callbackfn","core","hide","redefine","ctx","PROTOTYPE","own","out","exp","IS_FORCED","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","expProto","U","W","R","__g","__e","dP","createDesc","anObject","IE8_DOM_DEFINE","toPrimitive","O","Attributes","isObject","it","is","valueOf","bitmap","has","SRC","TO_STRING","$toString","TPL","inspectSource","safe","isFunction","px","aFunction","that","IObject","toObject","toLength","asc","$create","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","create","$this","cof","propertyIsEnumerable","defined","toInteger","ceil","speciesConstructor","original","SPECIES","C","arg","store","uid","USE_SYMBOL","$exports","SHARED","mode","copyright","UNSCOPABLES","ArrayProto","$includes","el","toIObject","toAbsoluteIndex","IS_INCLUDES","fromIndex","gOPS","pIE","$assign","A","K","T","aLen","getSymbols","isEnum","$keys","enumBugKeys","arrayIndexOf","IE_PROTO","names","shared","getOwnPropertySymbols","receiveMessage","ev","sendAdToCreative","adServerDomain","_events2","remoteDomain","resizeRemoteCreative","postMessage","getElementById","slot","getAdUnitPath","getSlotElementId","_events","fireSyncs","linkOverride","links","displayFooter","msgHtml","cookie","createFooter","footer","background","color","boxShadow","fontFamily","lineHeight","bottom","left","right","padding","zindex","footerText","margin","queueSync","persist","_targeting","AdServer","attr","getWinningBidByCode","dfpReqParams","env","gdfp_req","impl","unviewed_position_start","dfpParamsWithVariableValue","getCustomParams","description_url","cust_params","correlator","getAdUnitCodes","getWinningBidTargeting","winners","standardKeys","getStandardKeys","winner","getAlwaysUseBidTargeting","getBidLandscapeTargeting","getTargetingMap","pbTargetingKeys","targetKey","targetingConfig","use_original","_winAlgoVersion","getWinningBids_v2","getBidderWins","_winsPerBidder","updateBidderWins","originalBids","totalCpmReducer","sumOriginalWinners","sumModifiedWinners","maxWinsPerBidder","adUnitBids","winnerCandidate","adUnitBidsReduced","previousBid","total","_overallAuctionLoss","keywordsObj","input","nKey","apntag","setKeywords","trackingCookie","slotRenderEndedCallback","slotName","slotPath","_dfpReportedStack","logEvent","unitsStackHandler","slotPrebidWinner","pbjsWinners","pbjsWinner","pbjsWon","getTargeting","_dfpRenderStack","passbackUnit","advertiser","advertisersStack","4479040442","4479058261","4479060616","4430251159","4422921304","4478389641","advertiserId","getFromEvent","getFromApsBids","_apsBidsResponse","slotID","apsAdSize","cpmCode","adType","CORTEX","unitsStack","cortexReady","eventsEmitter","fallback_value","getResponseInformation","campaignId","lineItemId","sourceAgnosticCreativeId","sourceAgnosticLineItemId","_dfpRenderCallback","iframeWindow","containerId","unitId","container"],"mappings":"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","file":"prebid.js","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\n/******/ \t\t};\n\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.loaded = true;\n\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n\n\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; /** @module pbjs */\n\n\tvar _prebidGlobal = __webpack_require__(1);\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar _video = __webpack_require__(4);\n\n\tvar _native = __webpack_require__(7);\n\n\t__webpack_require__(38);\n\n\tvar _url = __webpack_require__(12);\n\n\tvar _cpmBucketManager = __webpack_require__(15);\n\n\tvar _secureCreatives = __webpack_require__(87);\n\n\tvar _cookie = __webpack_require__(88);\n\n\tvar _adloader = __webpack_require__(17);\n\n\tvar _ajax = __webpack_require__(11);\n\n\tfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n\tvar pbjs = (0, _prebidGlobal.getGlobal)();\n\tvar CONSTANTS = __webpack_require__(3);\n\tvar utils = __webpack_require__(2);\n\tvar bidmanager = __webpack_require__(14);\n\tvar adaptermanager = __webpack_require__(5);\n\tvar bidfactory = __webpack_require__(13);\n\tvar events = __webpack_require__(9);\n\tvar adserver = __webpack_require__(89);\n\tvar targeting = __webpack_require__(90);\n\tvar custom = __webpack_require__(91);\n\n\t/* private variables */\n\n\tvar objectType_function = 'function';\n\tvar objectType_undefined = 'undefined';\n\tvar objectType_object = 'object';\n\tvar BID_WON = CONSTANTS.EVENTS.BID_WON;\n\tvar SET_TARGETING = CONSTANTS.EVENTS.SET_TARGETING;\n\n\tvar auctionRunning = false;\n\tvar bidRequestQueue = [];\n\n\tvar eventValidators = {\n\t bidWon: checkDefinedPlacement\n\t};\n\n\t/* Public vars */\n\n\tpbjs._bidsRequested = [];\n\tpbjs._bidsReceived = [];\n\t// _adUnitCodes stores the current filter to use for adUnits as an array of adUnitCodes\n\tpbjs._adUnitCodes = [];\n\tpbjs._winningBids = [];\n\tpbjs._adsReceived = [];\n\tpbjs._sendAllBids = false;\n\tpbjs.custom = custom;\n\n\tpbjs.bidderSettings = pbjs.bidderSettings || {};\n\n\t// default timeout for all bids\n\tpbjs.bidderTimeout = pbjs.bidderTimeout || 3000;\n\n\t// current timeout set in `requestBids` or to default `bidderTimeout`\n\tpbjs.cbTimeout = pbjs.cbTimeout || 200;\n\n\t// timeout buffer to adjust for bidder CDN latency\n\tpbjs.timeoutBuffer = 200;\n\n\tpbjs.logging = pbjs.logging || false;\n\n\t// domain where prebid is running for cross domain iframe communication\n\tpbjs.publisherDomain = pbjs.publisherDomain || window.location.origin;\n\n\t// let the world know we are loaded\n\tpbjs.libLoaded = true;\n\n\t// version auto generated from build\n\tpbjs.version = 'v0.25.0';\n\tutils.logInfo('Prebid.js v0.25.0 loaded');\n\n\t// create adUnit array\n\tpbjs.adUnits = pbjs.adUnits || [];\n\n\t// delay to request cookie sync to stay out of critical path\n\tpbjs.cookieSyncDelay = pbjs.cookieSyncDelay || 100;\n\n\t/**\n\t * This queue lets users load Prebid asynchronously, but run functions the same way regardless of whether it gets loaded\n\t * before or after their script executes. For example, given the code:\n\t *\n\t * \n\t * \n\t *\n\t * If the page's script runs before prebid loads, then their function gets added to the queue, and executed\n\t * by prebid once it's done loading. If it runs after prebid loads, then this monkey-patch causes their\n\t * function to execute immediately.\n\t *\n\t * @param {function} cmd A function which takes no arguments. This is guaranteed to run exactly once, and only after\n\t * the Prebid script has been fully loaded.\n\t * @alias module:pbjs.cmd.push\n\t */\n\tpbjs.cmd.push = function (cmd) {\n\t if ((typeof cmd === 'undefined' ? 'undefined' : _typeof(cmd)) === objectType_function) {\n\t try {\n\t cmd.call();\n\t } catch (e) {\n\t utils.logError('Error processing command :' + e.message);\n\t }\n\t } else {\n\t utils.logError('Commands written into pbjs.cmd.push must be wrapped in a function');\n\t }\n\t};\n\n\tpbjs.que.push = pbjs.cmd.push;\n\n\tfunction processQueue(queue) {\n\t queue.forEach(function (cmd) {\n\t if (_typeof(cmd.called) === objectType_undefined) {\n\t try {\n\t cmd.call();\n\t cmd.called = true;\n\t } catch (e) {\n\t utils.logError('Error processing command :', 'prebid.js', e);\n\t }\n\t }\n\t });\n\t}\n\n\tfunction checkDefinedPlacement(id) {\n\t var placementCodes = pbjs._bidsRequested.map(function (bidSet) {\n\t return bidSet.bids.map(function (bid) {\n\t return bid.placementCode;\n\t });\n\t }).reduce(_utils.flatten).filter(_utils.uniques);\n\n\t if (!utils.contains(placementCodes, id)) {\n\t utils.logError('The \"' + id + '\" placement is not defined.');\n\t return;\n\t }\n\n\t return true;\n\t}\n\n\t/**\n\t * When a request for bids is made any stale bids remaining will be cleared for\n\t * a placement included in the outgoing bid request.\n\t */\n\tfunction clearPlacements() {\n\t pbjs._bidsRequested = [];\n\n\t // leave bids received for ad slots not in this bid request\n\t pbjs._bidsReceived = pbjs._bidsReceived.filter(function (bid) {\n\t return !pbjs._adUnitCodes.includes(bid.adUnitCode);\n\t });\n\t}\n\n\tfunction setRenderSize(doc, width, height) {\n\t if (doc.defaultView && doc.defaultView.frameElement) {\n\t doc.defaultView.frameElement.width = width;\n\t doc.defaultView.frameElement.height = height;\n\t }\n\t}\n\n\t/// ///////////////////////////////\n\t// //\n\t// Start Public APIs //\n\t// //\n\t/// ///////////////////////////////\n\n\t/**\n\t * This function returns the query string targeting parameters available at this moment for a given ad unit. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent.\n\t * @param {string} [adunitCode] adUnitCode to get the bid responses for\n\t * @alias module:pbjs.getAdserverTargetingForAdUnitCodeStr\n\t * @return {array} returnObj return bids array\n\t */\n\tpbjs.getAdserverTargetingForAdUnitCodeStr = function (adunitCode) {\n\t utils.logInfo('Invoking pbjs.getAdserverTargetingForAdUnitCodeStr', arguments);\n\n\t // call to retrieve bids array\n\t if (adunitCode) {\n\t var res = pbjs.getAdserverTargetingForAdUnitCode(adunitCode);\n\t return utils.transformAdServerTargetingObj(res);\n\t } else {\n\t utils.logMessage('Need to call getAdserverTargetingForAdUnitCodeStr with adunitCode');\n\t }\n\t};\n\n\t/**\n\t * This function returns the query string targeting parameters available at this moment for a given ad unit. Note that some bidder's response may not have been received if you call this function too quickly after the requests are sent.\n\t * @param adUnitCode {string} adUnitCode to get the bid responses for\n\t * @returns {object} returnObj return bids\n\t */\n\tpbjs.getAdserverTargetingForAdUnitCode = function (adUnitCode) {\n\t return pbjs.getAdserverTargeting(adUnitCode)[adUnitCode];\n\t};\n\n\t/**\n\t * returns all ad server targeting for all ad units\n\t * @return {object} Map of adUnitCodes and targeting values []\n\t * @alias module:pbjs.getAdserverTargeting\n\t */\n\n\tpbjs.getAdserverTargeting = function (adUnitCode) {\n\t utils.logInfo('Invoking pbjs.getAdserverTargeting', arguments);\n\t return targeting.getAllTargeting(adUnitCode).map(function (targeting) {\n\t return _defineProperty({}, Object.keys(targeting)[0], targeting[Object.keys(targeting)[0]].map(function (target) {\n\t return _defineProperty({}, Object.keys(target)[0], target[Object.keys(target)[0]].join(', '));\n\t }).reduce(function (p, c) {\n\t return _extends(c, p);\n\t }, {}));\n\t }).reduce(function (accumulator, targeting) {\n\t var key = Object.keys(targeting)[0];\n\t accumulator[key] = _extends({}, accumulator[key], targeting[key]);\n\t return accumulator;\n\t }, {});\n\t};\n\n\t/**\n\t * This function returns the bid responses at the given moment.\n\t * @alias module:pbjs.getBidResponses\n\t * @return {object} map | object that contains the bidResponses\n\t */\n\n\tpbjs.getBidResponses = function () {\n\t utils.logInfo('Invoking pbjs.getBidResponses', arguments);\n\t var responses = pbjs._bidsReceived.filter(_utils.adUnitsFilter.bind(this, pbjs._adUnitCodes));\n\n\t // find the last requested id to get responses for most recent auction only\n\t var currentRequestId = responses && responses.length && responses[responses.length - 1].requestId;\n\n\t return responses.map(function (bid) {\n\t return bid.adUnitCode;\n\t }).filter(_utils.uniques).map(function (adUnitCode) {\n\t return responses.filter(function (bid) {\n\t return bid.requestId === currentRequestId && bid.adUnitCode === adUnitCode;\n\t });\n\t }).filter(function (bids) {\n\t return bids && bids[0] && bids[0].adUnitCode;\n\t }).map(function (bids) {\n\t return _defineProperty({}, bids[0].adUnitCode, { bids: bids });\n\t }).reduce(function (a, b) {\n\t return _extends(a, b);\n\t }, {});\n\t};\n\n\t/**\n\t * Returns bidResponses for the specified adUnitCode\n\t * @param {String} adUnitCode adUnitCode\n\t * @alias module:pbjs.getBidResponsesForAdUnitCode\n\t * @return {Object} bidResponse object\n\t */\n\n\tpbjs.getBidResponsesForAdUnitCode = function (adUnitCode) {\n\t var bids = pbjs._bidsReceived.filter(function (bid) {\n\t return bid.adUnitCode === adUnitCode;\n\t });\n\t return {\n\t bids: bids\n\t };\n\t};\n\n\t/**\n\t * Set query string targeting on one or more GPT ad units.\n\t * @param {(string|string[])} adUnit a single `adUnit.code` or multiple.\n\t * @alias module:pbjs.setTargetingForGPTAsync\n\t */\n\tpbjs.setTargetingForGPTAsync = function (adUnit) {\n\t utils.logInfo('Invoking pbjs.setTargetingForGPTAsync', arguments);\n\t if (!(0, _utils.isGptPubadsDefined)()) {\n\t utils.logError('window.googletag is not defined on the page');\n\t return;\n\t }\n\n\t // get our ad unit codes\n\t var targetingSet = targeting.getAllTargeting(adUnit);\n\n\t // first reset any old targeting\n\t targeting.resetPresetTargeting(adUnit);\n\n\t // now set new targeting keys\n\t targeting.setTargeting(targetingSet);\n\n\t // emit event\n\t events.emit(SET_TARGETING);\n\t};\n\n\tpbjs.setTargetingForAst = function () {\n\t utils.logInfo('Invoking pbjs.setTargetingForAn', arguments);\n\t if (!targeting.isApntagDefined()) {\n\t utils.logError('window.apntag is not defined on the page');\n\t return;\n\t }\n\n\t targeting.setTargetingForAst();\n\n\t // emit event\n\t events.emit(SET_TARGETING);\n\t};\n\n\t/**\n\t * Returns a bool if all the bids have returned or timed out\n\t * @alias module:pbjs.allBidsAvailable\n\t * @return {bool} all bids available\n\t */\n\tpbjs.allBidsAvailable = function () {\n\t utils.logInfo('Invoking pbjs.allBidsAvailable', arguments);\n\t return bidmanager.bidsBackAll();\n\t};\n\n\t/**\n\t * This function will render the ad (based on params) in the given iframe document passed through.\n\t * Note that doc SHOULD NOT be the parent document page as we can't doc.write() asynchronously\n\t * @param {HTMLDocument} doc document\n\t * @param {string} id bid id to locate the ad\n\t * @alias module:pbjs.renderAd\n\t */\n\tpbjs.renderAd = function (doc, id) {\n\t utils.logInfo('Invoking pbjs.renderAd', arguments);\n\t utils.logMessage('Calling renderAd with adId :' + id);\n\t if (doc && id) {\n\t // try {\n\t // lookup ad by ad Id\n\t var bid = pbjs._bidsReceived.find(function (bid) {\n\t return bid.adId === id;\n\t });\n\t if (bid) {\n\t // replace macros according to openRTB with price paid = bid.cpm\n\t bid.ad = utils.replaceAuctionPrice(bid.ad, bid.cpm);\n\t bid.url = utils.replaceAuctionPrice(bid.url, bid.cpm);\n\t // save winning bids\n\t pbjs._winningBids.push(bid);\n\n\t // emit 'bid won' event here\n\t events.emit(BID_WON, bid);\n\n\t var height = bid.height,\n\t width = bid.width,\n\t ad = bid.ad,\n\t mediaType = bid.mediaType,\n\t url = bid.adUrl,\n\t renderer = bid.renderer;\n\n\n\t if (renderer && renderer.url) {\n\t renderer.render(bid);\n\t } else if (doc === document && !utils.inIframe() || mediaType === 'video') {\n\t utils.logError('Error trying to write ad. Ad render call ad id ' + id + ' was prevented from writing to the main document.');\n\t } else if (ad) {\n\t doc.write(ad);\n\t doc.close();\n\t setRenderSize(doc, width, height);\n\t } else if (url) {\n\t var iframe = utils.createInvisibleIframe();\n\t iframe.height = height;\n\t iframe.width = width;\n\t iframe.style.display = 'inline';\n\t iframe.style.overflow = 'hidden';\n\t iframe.src = url;\n\n\t utils.insertElement(iframe, doc, 'body');\n\t setRenderSize(doc, width, height);\n\t } else {\n\t utils.logError('Error trying to write ad. No ad for bid response id: ' + id);\n\t }\n\t } else {\n\t utils.logError('Error trying to write ad. Cannot find ad by given id : ' + id);\n\t }\n\t // } catch (e) {\n\t // utils.logError('Error trying to write ad Id :' + id + ' to the page:' + e.message);\n\t // }\n\t } else {\n\t utils.logError('Error trying to write ad Id :' + id + ' to the page. Missing document or adId');\n\t }\n\t};\n\n\t/**\n\t * Remove adUnit from the pbjs configuration\n\t * @param {String} adUnitCode the adUnitCode to remove\n\t * @alias module:pbjs.removeAdUnit\n\t */\n\tpbjs.removeAdUnit = function (adUnitCode) {\n\t utils.logInfo('Invoking pbjs.removeAdUnit', arguments);\n\t if (adUnitCode) {\n\t for (var i = 0; i < pbjs.adUnits.length; i++) {\n\t if (pbjs.adUnits[i].code === adUnitCode) {\n\t pbjs.adUnits.splice(i, 1);\n\t }\n\t }\n\t }\n\t};\n\n\tpbjs.clearAuction = function () {\n\t auctionRunning = false;\n\t (0, _cookie.syncCookies)(pbjs.cookieSyncDelay);\n\t utils.logMessage('Prebid auction cleared');\n\t if (bidRequestQueue.length) {\n\t bidRequestQueue.shift()();\n\t }\n\t};\n\n\t/**\n\t *\n\t * @param bidsBackHandler\n\t * @param timeout\n\t * @param adUnits\n\t * @param adUnitCodes\n\t */\n\tpbjs.requestBids = function () {\n\t var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n\t bidsBackHandler = _ref4.bidsBackHandler,\n\t timeout = _ref4.timeout,\n\t adUnits = _ref4.adUnits,\n\t adUnitCodes = _ref4.adUnitCodes;\n\n\t events.emit('requestBids');\n\t var cbTimeout = pbjs.cbTimeout = timeout || pbjs.bidderTimeout;\n\t adUnits = adUnits || pbjs.adUnits;\n\n\t utils.logInfo('Invoking pbjs.requestBids', arguments);\n\n\t if (!custom.ifEnabled()) {\n\t utils.logInfo('Aborting.');\n\t return;\n\t }\n\n\t if (adUnitCodes && adUnitCodes.length) {\n\t // if specific adUnitCodes supplied filter adUnits for those codes\n\t adUnits = adUnits.filter(function (unit) {\n\t return adUnitCodes.includes(unit.code);\n\t });\n\t } else {\n\t // otherwise derive adUnitCodes from adUnits\n\t adUnitCodes = adUnits && adUnits.map(function (unit) {\n\t return unit.code;\n\t });\n\t }\n\n\t // for video-enabled adUnits, only request bids if all bidders support video\n\t var invalidVideoAdUnits = adUnits.filter(_video.videoAdUnit).filter(_video.hasNonVideoBidder);\n\t invalidVideoAdUnits.forEach(function (adUnit) {\n\t utils.logError('adUnit ' + adUnit.code + ' has \\'mediaType\\' set to \\'video\\' but contains a bidder that doesn\\'t support video. No Prebid demand requests will be triggered for this adUnit.');\n\t for (var i = 0; i < adUnits.length; i++) {\n\t if (adUnits[i].code === adUnit.code) {\n\t adUnits.splice(i, 1);\n\t }\n\t }\n\t });\n\n\t // for native-enabled adUnits, only request bids for bidders that support native\n\t adUnits.filter(_native.nativeAdUnit).filter(_native.hasNonNativeBidder).forEach(function (adUnit) {\n\t var nonNativeBidders = adUnit.bids.filter(function (bid) {\n\t return !(0, _native.nativeBidder)(bid);\n\t }).map(function (bid) {\n\t return bid.bidder;\n\t }).join(', ');\n\n\t utils.logError('adUnit ' + adUnit.code + ' has \\'mediaType\\' set to \\'native\\' but contains non-native bidder(s) ' + nonNativeBidders + '. No Prebid demand requests will be triggered for those bidders.');\n\t adUnit.bids = adUnit.bids.filter(_native.nativeBidder);\n\t });\n\n\t if (auctionRunning) {\n\t bidRequestQueue.push(function () {\n\t pbjs.requestBids({ bidsBackHandler: bidsBackHandler, timeout: cbTimeout, adUnits: adUnits, adUnitCodes: adUnitCodes });\n\t });\n\t return;\n\t }\n\n\t auctionRunning = true;\n\n\t // we will use adUnitCodes for filtering the current auction\n\t pbjs._adUnitCodes = adUnitCodes;\n\n\t bidmanager.externalCallbackReset();\n\t clearPlacements();\n\n\t if (!adUnits || adUnits.length === 0) {\n\t utils.logMessage('No adUnits configured. No bids requested.');\n\t if ((typeof bidsBackHandler === 'undefined' ? 'undefined' : _typeof(bidsBackHandler)) === objectType_function) {\n\t bidmanager.addOneTimeCallback(bidsBackHandler, false);\n\t }\n\t bidmanager.executeCallback();\n\t return;\n\t }\n\n\t // set timeout for all bids\n\t var timedOut = true;\n\t var timeoutCallback = bidmanager.executeCallback.bind(bidmanager, timedOut);\n\t var timer = setTimeout(timeoutCallback, cbTimeout);\n\t (0, _ajax.setAjaxTimeout)(cbTimeout);\n\t if ((typeof bidsBackHandler === 'undefined' ? 'undefined' : _typeof(bidsBackHandler)) === objectType_function) {\n\t bidmanager.addOneTimeCallback(bidsBackHandler, timer);\n\t }\n\n\t adaptermanager.callBids({ adUnits: adUnits, adUnitCodes: adUnitCodes, cbTimeout: cbTimeout });\n\t if (pbjs._bidsRequested.length === 0) {\n\t bidmanager.executeCallback();\n\t }\n\t};\n\n\t/**\n\t *\n\t * Add adunit(s)\n\t * @param {Array|String} adUnitArr Array of adUnits or single adUnit Object.\n\t * @alias module:pbjs.addAdUnits\n\t */\n\tpbjs.addAdUnits = function (adUnitArr) {\n\t utils.logInfo('Invoking pbjs.addAdUnits', arguments);\n\t if (utils.isArray(adUnitArr)) {\n\t // generate transactionid for each new adUnits\n\t // Append array to existing\n\t adUnitArr.forEach(function (adUnit) {\n\t return adUnit.transactionId = utils.generateUUID();\n\t });\n\t pbjs.adUnits.push.apply(pbjs.adUnits, adUnitArr);\n\t } else if ((typeof adUnitArr === 'undefined' ? 'undefined' : _typeof(adUnitArr)) === objectType_object) {\n\t // Generate the transaction id for the adunit\n\t adUnitArr.transactionId = utils.generateUUID();\n\t pbjs.adUnits.push(adUnitArr);\n\t }\n\t};\n\n\t/**\n\t * @param {String} event the name of the event\n\t * @param {Function} handler a callback to set on event\n\t * @param {String} id an identifier in the context of the event\n\t *\n\t * This API call allows you to register a callback to handle a Prebid.js event.\n\t * An optional `id` parameter provides more finely-grained event callback registration.\n\t * This makes it possible to register callback events for a specific item in the\n\t * event context. For example, `bidWon` events will accept an `id` for ad unit code.\n\t * `bidWon` callbacks registered with an ad unit code id will be called when a bid\n\t * for that ad unit code wins the auction. Without an `id` this method registers the\n\t * callback for every `bidWon` event.\n\t *\n\t * Currently `bidWon` is the only event that accepts an `id` parameter.\n\t */\n\tpbjs.onEvent = function (event, handler, id) {\n\t utils.logInfo('Invoking pbjs.onEvent', arguments);\n\t if (!utils.isFn(handler)) {\n\t utils.logError('The event handler provided is not a function and was not set on event \"' + event + '\".');\n\t return;\n\t }\n\n\t if (id && !eventValidators[event].call(null, id)) {\n\t utils.logError('The id provided is not valid for event \"' + event + '\" and no handler was set.');\n\t return;\n\t }\n\n\t events.on(event, handler, id);\n\t};\n\n\t/**\n\t * @param {String} event the name of the event\n\t * @param {Function} handler a callback to remove from the event\n\t * @param {String} id an identifier in the context of the event (see `pbjs.onEvent`)\n\t */\n\tpbjs.offEvent = function (event, handler, id) {\n\t utils.logInfo('Invoking pbjs.offEvent', arguments);\n\t if (id && !eventValidators[event].call(null, id)) {\n\t return;\n\t }\n\n\t events.off(event, handler, id);\n\t};\n\n\t/**\n\t * Add a callback event\n\t * @param {String} eventStr event to attach callback to Options: \"allRequestedBidsBack\" | \"adUnitBidsBack\"\n\t * @param {Function} func function to execute. Parameters passed into the function: (bidResObj), [adUnitCode]);\n\t * @alias module:pbjs.addCallback\n\t * @returns {String} id for callback\n\t */\n\tpbjs.addCallback = function (eventStr, func) {\n\t utils.logInfo('Invoking pbjs.addCallback', arguments);\n\t var id = null;\n\t if (!eventStr || !func || (typeof func === 'undefined' ? 'undefined' : _typeof(func)) !== objectType_function) {\n\t utils.logError('error registering callback. Check method signature');\n\t return id;\n\t }\n\n\t id = utils.getUniqueIdentifierStr;\n\t bidmanager.addCallback(id, func, eventStr);\n\t return id;\n\t};\n\n\t/**\n\t * Remove a callback event\n\t * //@param {string} cbId id of the callback to remove\n\t * @alias module:pbjs.removeCallback\n\t * @returns {String} id for callback\n\t */\n\tpbjs.removeCallback = function () /* cbId */{\n\t // todo\n\t return null;\n\t};\n\n\t/**\n\t * Wrapper to register bidderAdapter externally (adaptermanager.registerBidAdapter())\n\t * @param {[type]} bidderAdaptor [description]\n\t * @param {[type]} bidderCode [description]\n\t * @return {[type]} [description]\n\t */\n\tpbjs.registerBidAdapter = function (bidderAdaptor, bidderCode) {\n\t utils.logInfo('Invoking pbjs.registerBidAdapter', arguments);\n\t try {\n\t adaptermanager.registerBidAdapter(bidderAdaptor(), bidderCode);\n\t } catch (e) {\n\t utils.logError('Error registering bidder adapter : ' + e.message);\n\t }\n\t};\n\n\t/**\n\t * Wrapper to register analyticsAdapter externally (adaptermanager.registerAnalyticsAdapter())\n\t * @param {[type]} options [description]\n\t */\n\tpbjs.registerAnalyticsAdapter = function (options) {\n\t utils.logInfo('Invoking pbjs.registerAnalyticsAdapter', arguments);\n\t try {\n\t adaptermanager.registerAnalyticsAdapter(options);\n\t } catch (e) {\n\t utils.logError('Error registering analytics adapter : ' + e.message);\n\t }\n\t};\n\n\tpbjs.bidsAvailableForAdapter = function (bidderCode) {\n\t utils.logInfo('Invoking pbjs.bidsAvailableForAdapter', arguments);\n\n\t pbjs._bidsRequested.find(function (bidderRequest) {\n\t return bidderRequest.bidderCode === bidderCode;\n\t }).bids.map(function (bid) {\n\t return _extends(bid, bidfactory.createBid(1), {\n\t bidderCode: bidderCode,\n\t adUnitCode: bid.placementCode\n\t });\n\t }).map(function (bid) {\n\t return pbjs._bidsReceived.push(bid);\n\t });\n\t};\n\n\t/**\n\t * Wrapper to bidfactory.createBid()\n\t * @param {[type]} statusCode [description]\n\t * @return {[type]} [description]\n\t */\n\tpbjs.createBid = function (statusCode) {\n\t utils.logInfo('Invoking pbjs.createBid', arguments);\n\t return bidfactory.createBid(statusCode);\n\t};\n\n\t/**\n\t * Wrapper to bidmanager.addBidResponse\n\t * @param {[type]} adUnitCode [description]\n\t * @param {[type]} bid [description]\n\t */\n\tpbjs.addBidResponse = function (adUnitCode, bid) {\n\t utils.logInfo('Invoking pbjs.addBidResponse', arguments);\n\t bidmanager.addBidResponse(adUnitCode, bid);\n\t};\n\n\t/**\n\t * Wrapper to adloader.loadScript\n\t * @param {[type]} tagSrc [description]\n\t * @param {Function} callback [description]\n\t * @return {[type]} [description]\n\t */\n\tpbjs.loadScript = function (tagSrc, callback, useCache) {\n\t utils.logInfo('Invoking pbjs.loadScript', arguments);\n\t (0, _adloader.loadScript)(tagSrc, callback, useCache);\n\t};\n\n\t/**\n\t * Will enable sending a prebid.js to data provider specified\n\t * @param {object} config object {provider : 'string', options : {}}\n\t */\n\tpbjs.enableAnalytics = function (config) {\n\t if (config && !utils.isEmpty(config)) {\n\t utils.logInfo('Invoking pbjs.enableAnalytics for: ', config);\n\t adaptermanager.enableAnalytics(config);\n\t } else {\n\t utils.logError('pbjs.enableAnalytics should be called with option {}');\n\t }\n\t};\n\n\tpbjs.aliasBidder = function (bidderCode, alias) {\n\t utils.logInfo('Invoking pbjs.aliasBidder', arguments);\n\t if (bidderCode && alias) {\n\t adaptermanager.aliasBidAdapter(bidderCode, alias);\n\t } else {\n\t utils.logError('bidderCode and alias must be passed as arguments', 'pbjs.aliasBidder');\n\t }\n\t};\n\n\t/**\n\t * Sets a default price granularity scheme.\n\t * @param {String|Object} granularity - the granularity scheme.\n\t * \"low\": $0.50 increments, capped at $5 CPM\n\t * \"medium\": $0.10 increments, capped at $20 CPM (the default)\n\t * \"high\": $0.01 increments, capped at $20 CPM\n\t * \"auto\": Applies a sliding scale to determine granularity\n\t * \"dense\": Like \"auto\", but the bid price granularity uses smaller increments, especially at lower CPMs\n\t *\n\t * Alternatively a custom object can be specified:\n\t * { \"buckets\" : [{\"min\" : 0,\"max\" : 20,\"increment\" : 0.1,\"cap\" : true}]};\n\t * See http://prebid.org/dev-docs/publisher-api-reference.html#module_pbjs.setPriceGranularity for more details\n\t */\n\tpbjs.setPriceGranularity = function (granularity) {\n\t utils.logInfo('Invoking pbjs.setPriceGranularity', arguments);\n\t if (!granularity) {\n\t utils.logError('Prebid Error: no value passed to `setPriceGranularity()`');\n\t return;\n\t }\n\t if (typeof granularity === 'string') {\n\t bidmanager.setPriceGranularity(granularity);\n\t } else if ((typeof granularity === 'undefined' ? 'undefined' : _typeof(granularity)) === 'object') {\n\t if (!(0, _cpmBucketManager.isValidePriceConfig)(granularity)) {\n\t utils.logError('Invalid custom price value passed to `setPriceGranularity()`');\n\t return;\n\t }\n\t bidmanager.setCustomPriceBucket(granularity);\n\t bidmanager.setPriceGranularity(CONSTANTS.GRANULARITY_OPTIONS.CUSTOM);\n\t utils.logMessage('Using custom price granularity');\n\t }\n\t};\n\n\tpbjs.enableSendAllBids = function () {\n\t pbjs._sendAllBids = true;\n\t};\n\n\tpbjs.getAllWinningBids = function () {\n\t return pbjs._winningBids;\n\t};\n\n\t/**\n\t * Build master video tag from publishers adserver tag\n\t * @param {string} adserverTag default url\n\t * @param {object} options options for video tag\n\t */\n\tpbjs.buildMasterVideoTagFromAdserverTag = function (adserverTag, options) {\n\t utils.logInfo('Invoking pbjs.buildMasterVideoTagFromAdserverTag', arguments);\n\t var urlComponents = (0, _url.parse)(adserverTag);\n\n\t // return original adserverTag if no bids received\n\t if (pbjs._bidsReceived.length === 0) {\n\t return adserverTag;\n\t }\n\n\t var masterTag = '';\n\t if (options.adserver.toLowerCase() === 'dfp') {\n\t var dfpAdserverObj = adserver.dfpAdserver(options, urlComponents);\n\t if (!dfpAdserverObj.verifyAdserverTag()) {\n\t utils.logError('Invalid adserverTag, required google params are missing in query string');\n\t }\n\t dfpAdserverObj.appendQueryParams();\n\t masterTag = (0, _url.format)(dfpAdserverObj.urlComponents);\n\t } else {\n\t utils.logError('Only DFP adserver is supported');\n\t return;\n\t }\n\t return masterTag;\n\t};\n\n\t/**\n\t * Set the order bidders are called in. If not set, the bidders are called in\n\t * the order they are defined within the adUnit.bids array\n\t * @param {string} order - Order to call bidders in. Currently the only possible value\n\t * is 'random', which randomly shuffles the order\n\t */\n\tpbjs.setBidderSequence = function (order) {\n\t if (order === CONSTANTS.ORDER.RANDOM) {\n\t adaptermanager.setBidderSequence(CONSTANTS.ORDER.RANDOM);\n\t }\n\t};\n\n\t/**\n\t * Get array of highest cpm bids for all adUnits, or highest cpm bid\n\t * object for the given adUnit\n\t * @param {string} adUnitCode - optional ad unit code\n\t * @return {array} array containing highest cpm bid object(s)\n\t */\n\tpbjs.getHighestCpmBids = function (adUnitCode) {\n\t return targeting.getWinningBids(adUnitCode);\n\t};\n\n\t/**\n\t * Set config for server to server header bidding\n\t * @param {object} options - config object for s2s\n\t */\n\tpbjs.setS2SConfig = function (options) {\n\t if (!utils.contains(Object.keys(options), 'accountId')) {\n\t utils.logError('accountId missing in Server to Server config');\n\t return;\n\t }\n\n\t if (!utils.contains(Object.keys(options), 'bidders')) {\n\t utils.logError('bidders missing in Server to Server config');\n\t return;\n\t }\n\n\t var config = _extends({\n\t enabled: false,\n\t endpoint: CONSTANTS.S2S.DEFAULT_ENDPOINT,\n\t timeout: 1000,\n\t maxBids: 1,\n\t adapter: 'prebidServer'\n\t }, options);\n\t adaptermanager.setS2SConfig(config);\n\t};\n\n\tpbjs.cmd.push(function () {\n\t return (0, _secureCreatives.listenMessagesFromCreative)();\n\t});\n\tprocessQueue(pbjs.cmd);\n\tprocessQueue(pbjs.que);\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\n\t\"use strict\";\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getGlobal = getGlobal;\n\t// if pbjs already exists in global document scope, use it, if not, create the object\n\t// global defination should happen BEFORE imports to avoid global undefined errors.\n\twindow.pbjs = window.pbjs || {};\n\twindow.pbjs.cmd = window.pbjs.cmd || [];\n\twindow.pbjs.que = window.pbjs.que || [];\n\n\tfunction getGlobal() {\n\t return window.pbjs;\n\t}\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\texports.uniques = uniques;\n\texports.flatten = flatten;\n\texports.getBidRequest = getBidRequest;\n\texports.getKeys = getKeys;\n\texports.getValue = getValue;\n\texports.getBidderCodes = getBidderCodes;\n\texports.isGptPubadsDefined = isGptPubadsDefined;\n\texports.getHighestCpm = getHighestCpm;\n\texports.shuffle = shuffle;\n\texports.adUnitsFilter = adUnitsFilter;\n\texports.isSrcdocSupported = isSrcdocSupported;\n\texports.cloneJson = cloneJson;\n\texports.inIframe = inIframe;\n\texports.isSafariBrowser = isSafariBrowser;\n\texports.replaceAuctionPrice = replaceAuctionPrice;\n\texports.getBidderRequestAllAdUnits = getBidderRequestAllAdUnits;\n\texports.getBidderRequest = getBidderRequest;\n\tvar CONSTANTS = __webpack_require__(3);\n\n\tvar objectType_object = 'object';\n\tvar objectType_string = 'string';\n\tvar objectType_number = 'number';\n\n\tvar _loggingChecked = false;\n\n\tvar t_Arr = 'Array';\n\tvar t_Str = 'String';\n\tvar t_Fn = 'Function';\n\tvar t_Numb = 'Number';\n\tvar toString = Object.prototype.toString;\n\tvar infoLogger = null;\n\ttry {\n\t infoLogger = console.info.bind(window.console);\n\t} catch (e) {}\n\n\t/*\n\t * Substitutes into a string from a given map using the token\n\t * Usage\n\t * var str = 'text %%REPLACE%% this text with %%SOMETHING%%';\n\t * var map = {};\n\t * map['replace'] = 'it was subbed';\n\t * map['something'] = 'something else';\n\t * console.log(replaceTokenInString(str, map, '%%')); => \"text it was subbed this text with something else\"\n\t */\n\texports.replaceTokenInString = function (str, map, token) {\n\t this._each(map, function (value, key) {\n\t value = value === undefined ? '' : value;\n\n\t var keyString = token + key.toUpperCase() + token;\n\t var re = new RegExp(keyString, 'g');\n\n\t str = str.replace(re, value);\n\t });\n\n\t return str;\n\t};\n\n\t/* utility method to get incremental integer starting from 1 */\n\tvar getIncrementalInteger = function () {\n\t var count = 0;\n\t return function () {\n\t count++;\n\t return count;\n\t };\n\t}();\n\n\tfunction _getUniqueIdentifierStr() {\n\t return getIncrementalInteger() + Math.random().toString(16).substr(2);\n\t}\n\n\t// generate a random string (to be used as a dynamic JSONP callback)\n\texports.getUniqueIdentifierStr = _getUniqueIdentifierStr;\n\n\t/**\n\t * Returns a random v4 UUID of the form xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx,\n\t * where each x is replaced with a random hexadecimal digit from 0 to f,\n\t * and y is replaced with a random hexadecimal digit from 8 to b.\n\t * https://gist.github.com/jed/982883 via node-uuid\n\t */\n\texports.generateUUID = function generateUUID(placeholder) {\n\t return placeholder ? (placeholder ^ Math.random() * 16 >> placeholder / 4).toString(16) : ([1e7] + -1e3 + -4e3 + -8e3 + -1e11).replace(/[018]/g, generateUUID);\n\t};\n\n\texports.getBidIdParameter = function (key, paramsObj) {\n\t if (paramsObj && paramsObj[key]) {\n\t return paramsObj[key];\n\t }\n\n\t return '';\n\t};\n\n\texports.tryAppendQueryString = function (existingUrl, key, value) {\n\t if (value) {\n\t return existingUrl += key + '=' + encodeURIComponent(value) + '&';\n\t }\n\n\t return existingUrl;\n\t};\n\n\t// parse a query string object passed in bid params\n\t// bid params should be an object such as {key: \"value\", key1 : \"value1\"}\n\texports.parseQueryStringParameters = function (queryObj) {\n\t var result = '';\n\t for (var k in queryObj) {\n\t if (queryObj.hasOwnProperty(k)) {\n\t result += k + '=' + encodeURIComponent(queryObj[k]) + '&';\n\t }\n\t }\n\n\t return result;\n\t};\n\n\t// transform an AdServer targeting bids into a query string to send to the adserver\n\texports.transformAdServerTargetingObj = function (targeting) {\n\t // we expect to receive targeting for a single slot at a time\n\t if (targeting && Object.getOwnPropertyNames(targeting).length > 0) {\n\t return getKeys(targeting).map(function (key) {\n\t return key + '=' + encodeURIComponent(getValue(targeting, key));\n\t }).join('&');\n\t } else {\n\t return '';\n\t }\n\t};\n\n\t/**\n\t * Parse a GPT-Style general size Array like `[[300, 250]]` or `\"300x250,970x90\"` into an array of sizes `[\"300x250\"]` or '['300x250', '970x90']'\n\t * @param {array[array|number]} sizeObj Input array or double array [300,250] or [[300,250], [728,90]]\n\t * @return {array[string]} Array of strings like `[\"300x250\"]` or `[\"300x250\", \"728x90\"]`\n\t */\n\texports.parseSizesInput = function (sizeObj) {\n\t var parsedSizes = [];\n\n\t // if a string for now we can assume it is a single size, like \"300x250\"\n\t if ((typeof sizeObj === 'undefined' ? 'undefined' : _typeof(sizeObj)) === objectType_string) {\n\t // multiple sizes will be comma-separated\n\t var sizes = sizeObj.split(',');\n\n\t // regular expression to match strigns like 300x250\n\t // start of line, at least 1 number, an \"x\" , then at least 1 number, and the then end of the line\n\t var sizeRegex = /^(\\d)+x(\\d)+$/i;\n\t if (sizes) {\n\t for (var curSizePos in sizes) {\n\t if (hasOwn(sizes, curSizePos) && sizes[curSizePos].match(sizeRegex)) {\n\t parsedSizes.push(sizes[curSizePos]);\n\t }\n\t }\n\t }\n\t } else if ((typeof sizeObj === 'undefined' ? 'undefined' : _typeof(sizeObj)) === objectType_object) {\n\t var sizeArrayLength = sizeObj.length;\n\n\t // don't process empty array\n\t if (sizeArrayLength > 0) {\n\t // if we are a 2 item array of 2 numbers, we must be a SingleSize array\n\t if (sizeArrayLength === 2 && _typeof(sizeObj[0]) === objectType_number && _typeof(sizeObj[1]) === objectType_number) {\n\t parsedSizes.push(this.parseGPTSingleSizeArray(sizeObj));\n\t } else {\n\t // otherwise, we must be a MultiSize array\n\t for (var i = 0; i < sizeArrayLength; i++) {\n\t parsedSizes.push(this.parseGPTSingleSizeArray(sizeObj[i]));\n\t }\n\t }\n\t }\n\t }\n\n\t return parsedSizes;\n\t};\n\n\t// parse a GPT style sigle size array, (i.e [300,250])\n\t// into an AppNexus style string, (i.e. 300x250)\n\texports.parseGPTSingleSizeArray = function (singleSize) {\n\t // if we aren't exactly 2 items in this array, it is invalid\n\t if (this.isArray(singleSize) && singleSize.length === 2 && !isNaN(singleSize[0]) && !isNaN(singleSize[1])) {\n\t return singleSize[0] + 'x' + singleSize[1];\n\t }\n\t};\n\n\texports.getTopWindowLocation = function () {\n\t var location = void 0;\n\t try {\n\t location = window.top.location;\n\t } catch (e) {\n\t location = window.location;\n\t }\n\n\t return location;\n\t};\n\n\texports.getTopWindowUrl = function () {\n\t var href = void 0;\n\t try {\n\t href = this.getTopWindowLocation().href;\n\t } catch (e) {\n\t href = '';\n\t }\n\n\t return href;\n\t};\n\n\texports.logWarn = function (msg) {\n\t if (debugTurnedOn() && console.warn) {\n\t console.warn('WARNING: ' + msg);\n\t }\n\t};\n\n\texports.logInfo = function (msg, args) {\n\t if (debugTurnedOn() && hasConsoleLogger()) {\n\t if (infoLogger) {\n\t if (!args || args.length === 0) {\n\t args = '';\n\t }\n\n\t infoLogger('INFO: ' + msg + (args === '' ? '' : ' : params : '), args);\n\t }\n\t }\n\t};\n\n\texports.logMessage = function (msg) {\n\t if (debugTurnedOn() && hasConsoleLogger()) {\n\t console.log('MESSAGE: ' + msg);\n\t }\n\t};\n\n\tfunction hasConsoleLogger() {\n\t return window.console && window.console.log;\n\t}\n\n\texports.hasConsoleLogger = hasConsoleLogger;\n\n\tvar errLogFn = function (hasLogger) {\n\t if (!hasLogger) return '';\n\t return window.console.error ? 'error' : 'log';\n\t}(hasConsoleLogger());\n\n\tvar debugTurnedOn = function debugTurnedOn() {\n\t if (pbjs.logging === false && _loggingChecked === false) {\n\t pbjs.logging = getParameterByName(CONSTANTS.DEBUG_MODE).toUpperCase() === 'TRUE';\n\t _loggingChecked = true;\n\t }\n\n\t return !!pbjs.logging;\n\t};\n\n\texports.debugTurnedOn = debugTurnedOn;\n\n\texports.logError = function (msg, code, exception) {\n\t var errCode = code || 'ERROR';\n\t if (debugTurnedOn() && hasConsoleLogger()) {\n\t console[errLogFn](console, errCode + ': ' + msg, exception || '');\n\t }\n\t};\n\n\texports.createInvisibleIframe = function _createInvisibleIframe() {\n\t var f = document.createElement('iframe');\n\t f.id = _getUniqueIdentifierStr();\n\t f.height = 0;\n\t f.width = 0;\n\t f.border = '0px';\n\t f.hspace = '0';\n\t f.vspace = '0';\n\t f.marginWidth = '0';\n\t f.marginHeight = '0';\n\t f.style.border = '0';\n\t f.scrolling = 'no';\n\t f.frameBorder = '0';\n\t f.src = 'about:blank';\n\t f.style.display = 'none';\n\t return f;\n\t};\n\n\t/*\n\t * Check if a given parameter name exists in query string\n\t * and if it does return the value\n\t */\n\tvar getParameterByName = function getParameterByName(name) {\n\t var regexS = '[\\\\?&]' + name + '=([^]*)';\n\t var regex = new RegExp(regexS);\n\t var results = regex.exec(window.location.search);\n\t if (results === null) {\n\t return '';\n\t }\n\n\t return decodeURIComponent(results[1].replace(/\\+/g, ' '));\n\t};\n\texports.getParameterByName = getParameterByName;\n\n\t/**\n\t * This function validates paramaters.\n\t * @param {object[string]} paramObj [description]\n\t * @param {string[]} requiredParamsArr [description]\n\t * @return {bool} Bool if paramaters are valid\n\t */\n\texports.hasValidBidRequest = function (paramObj, requiredParamsArr, adapter) {\n\t var found = false;\n\n\t function findParam(value, key) {\n\t if (key === requiredParamsArr[i]) {\n\t found = true;\n\t }\n\t }\n\n\t for (var i = 0; i < requiredParamsArr.length; i++) {\n\t found = false;\n\n\t this._each(paramObj, findParam);\n\n\t if (!found) {\n\t this.logError('Params are missing for bid request. One of these required paramaters are missing: ' + requiredParamsArr, adapter);\n\t return false;\n\t }\n\t }\n\n\t return true;\n\t};\n\n\t// Handle addEventListener gracefully in older browsers\n\texports.addEventHandler = function (element, event, func) {\n\t if (element.addEventListener) {\n\t element.addEventListener(event, func, true);\n\t } else if (element.attachEvent) {\n\t element.attachEvent('on' + event, func);\n\t }\n\t};\n\t/**\n\t * Return if the object is of the\n\t * given type.\n\t * @param {*} object to test\n\t * @param {String} _t type string (e.g., Array)\n\t * @return {Boolean} if object is of type _t\n\t */\n\texports.isA = function (object, _t) {\n\t return toString.call(object) === '[object ' + _t + ']';\n\t};\n\n\texports.isFn = function (object) {\n\t return this.isA(object, t_Fn);\n\t};\n\n\texports.isStr = function (object) {\n\t return this.isA(object, t_Str);\n\t};\n\n\texports.isArray = function (object) {\n\t return this.isA(object, t_Arr);\n\t};\n\n\texports.isNumber = function (object) {\n\t return this.isA(object, t_Numb);\n\t};\n\n\t/**\n\t * Return if the object is \"empty\";\n\t * this includes falsey, no keys, or no items at indices\n\t * @param {*} object object to test\n\t * @return {Boolean} if object is empty\n\t */\n\texports.isEmpty = function (object) {\n\t if (!object) return true;\n\t if (this.isArray(object) || this.isStr(object)) {\n\t return !(object.length > 0); // jshint ignore:line\n\t }\n\n\t for (var k in object) {\n\t if (hasOwnProperty.call(object, k)) return false;\n\t }\n\n\t return true;\n\t};\n\n\t/**\n\t * Return if string is empty, null, or undefined\n\t * @param str string to test\n\t * @returns {boolean} if string is empty\n\t */\n\texports.isEmptyStr = function (str) {\n\t return this.isStr(str) && (!str || str.length === 0);\n\t};\n\n\t/**\n\t * Iterate object with the function\n\t * falls back to es5 `forEach`\n\t * @param {Array|Object} object\n\t * @param {Function(value, key, object)} fn\n\t */\n\texports._each = function (object, fn) {\n\t if (this.isEmpty(object)) return;\n\t if (this.isFn(object.forEach)) return object.forEach(fn, this);\n\n\t var k = 0;\n\t var l = object.length;\n\n\t if (l > 0) {\n\t for (; k < l; k++) {\n\t fn(object[k], k, object);\n\t }\n\t } else {\n\t for (k in object) {\n\t if (hasOwnProperty.call(object, k)) fn.call(this, object[k], k);\n\t }\n\t }\n\t};\n\n\texports.contains = function (a, obj) {\n\t if (this.isEmpty(a)) {\n\t return false;\n\t }\n\n\t if (this.isFn(a.indexOf)) {\n\t return a.indexOf(obj) !== -1;\n\t }\n\n\t var i = a.length;\n\t while (i--) {\n\t if (a[i] === obj) {\n\t return true;\n\t }\n\t }\n\n\t return false;\n\t};\n\n\texports.indexOf = function () {\n\t if (Array.prototype.indexOf) {\n\t return Array.prototype.indexOf;\n\t }\n\n\t // ie8 no longer supported\n\t // return polyfills.indexOf;\n\t}();\n\n\t/**\n\t * Map an array or object into another array\n\t * given a function\n\t * @param {Array|Object} object\n\t * @param {Function(value, key, object)} callback\n\t * @return {Array}\n\t */\n\texports._map = function (object, callback) {\n\t if (this.isEmpty(object)) return [];\n\t if (this.isFn(object.map)) return object.map(callback);\n\t var output = [];\n\t this._each(object, function (value, key) {\n\t output.push(callback(value, key, object));\n\t });\n\n\t return output;\n\t};\n\n\tvar hasOwn = function hasOwn(objectToCheck, propertyToCheckFor) {\n\t if (objectToCheck.hasOwnProperty) {\n\t return objectToCheck.hasOwnProperty(propertyToCheckFor);\n\t } else {\n\t return typeof objectToCheck[propertyToCheckFor] !== 'undefined' && objectToCheck.constructor.prototype[propertyToCheckFor] !== objectToCheck[propertyToCheckFor];\n\t }\n\t};\n\n\texports.insertElement = function (elm, doc, target) {\n\t doc = doc || document;\n\t var elToAppend = void 0;\n\t if (target) {\n\t elToAppend = doc.getElementsByTagName(target);\n\t } else {\n\t elToAppend = doc.getElementsByTagName('head');\n\t }\n\t try {\n\t elToAppend = elToAppend.length ? elToAppend : doc.getElementsByTagName('body');\n\t if (elToAppend.length) {\n\t elToAppend = elToAppend[0];\n\t elToAppend.insertBefore(elm, elToAppend.firstChild);\n\t }\n\t } catch (e) {}\n\t};\n\n\texports.insertPixel = function (url) {\n\t var img = new Image();\n\t img.id = this.getUniqueIdentifierStr();\n\t img.src = url;\n\t img.height = 0;\n\t img.width = 0;\n\t img.style.display = 'none';\n\t img.onload = function () {\n\t try {\n\t this.parentNode.removeChild(this);\n\t } catch (e) {}\n\t };\n\t this.insertElement(img);\n\t};\n\n\t/**\n\t * Inserts empty iframe with the specified `url` for cookie sync\n\t * @param {string} url URL to be requested\n\t * @param {string} encodeUri boolean if URL should be encoded before inserted. Defaults to true\n\t */\n\texports.insertCookieSyncIframe = function (url, encodeUri) {\n\t var iframeHtml = this.createTrackPixelIframeHtml(url, encodeUri);\n\t var div = document.createElement('div');\n\t div.innerHTML = iframeHtml;\n\t var iframe = div.firstChild;\n\t this.insertElement(iframe);\n\t};\n\n\t/**\n\t * Creates a snippet of HTML that retrieves the specified `url`\n\t * @param {string} url URL to be requested\n\t * @return {string} HTML snippet that contains the img src = set to `url`\n\t */\n\texports.createTrackPixelHtml = function (url) {\n\t if (!url) {\n\t return '';\n\t }\n\n\t var escapedUrl = encodeURI(url);\n\t var img = '
';\n\t return img;\n\t};\n\n\t/**\n\t * Creates a snippet of Iframe HTML that retrieves the specified `url`\n\t * @param {string} url plain URL to be requested\n\t * @param {string} encodeUri boolean if URL should be encoded before inserted. Defaults to true\n\t * @return {string} HTML snippet that contains the iframe src = set to `url`\n\t */\n\texports.createTrackPixelIframeHtml = function (url) {\n\t var encodeUri = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n\t if (!url) {\n\t return '';\n\t }\n\t if (encodeUri) {\n\t url = encodeURI(url);\n\t }\n\n\t return '';\n\t};\n\n\t/**\n\t * Returns iframe document in a browser agnostic way\n\t * @param {object} iframe reference\n\t * @return {object} iframe `document` reference\n\t */\n\texports.getIframeDocument = function (iframe) {\n\t if (!iframe) {\n\t return;\n\t }\n\n\t var doc = void 0;\n\t try {\n\t if (iframe.contentWindow) {\n\t doc = iframe.contentWindow.document;\n\t } else if (iframe.contentDocument.document) {\n\t doc = iframe.contentDocument.document;\n\t } else {\n\t doc = iframe.contentDocument;\n\t }\n\t } catch (e) {\n\t this.logError('Cannot get iframe document', e);\n\t }\n\n\t return doc;\n\t};\n\n\texports.getValueString = function (param, val, defaultValue) {\n\t if (val === undefined || val === null) {\n\t return defaultValue;\n\t }\n\t if (this.isStr(val)) {\n\t return val;\n\t }\n\t if (this.isNumber(val)) {\n\t return val.toString();\n\t }\n\t this.logWarn('Unsuported type for param: ' + param + ' required type: String');\n\t};\n\n\tfunction uniques(value, index, arry) {\n\t return arry.indexOf(value) === index;\n\t}\n\n\tfunction flatten(a, b) {\n\t return a.concat(b);\n\t}\n\n\tfunction getBidRequest(id) {\n\t return pbjs._bidsRequested.map(function (bidSet) {\n\t return bidSet.bids.find(function (bid) {\n\t return bid.bidId === id;\n\t });\n\t }).find(function (bid) {\n\t return bid;\n\t });\n\t}\n\n\tfunction getKeys(obj) {\n\t return Object.keys(obj);\n\t}\n\n\tfunction getValue(obj, key) {\n\t return obj[key];\n\t}\n\n\tfunction getBidderCodes() {\n\t var adUnits = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : pbjs.adUnits;\n\n\t // this could memoize adUnits\n\t return adUnits.map(function (unit) {\n\t return unit.bids.map(function (bid) {\n\t return bid.bidder;\n\t }).reduce(flatten, []);\n\t }).reduce(flatten).filter(uniques);\n\t}\n\n\tfunction isGptPubadsDefined() {\n\t if (window.googletag && exports.isFn(window.googletag.pubads) && exports.isFn(window.googletag.pubads().getSlots)) {\n\t return true;\n\t }\n\t}\n\n\tfunction getHighestCpm(previous, current) {\n\t if (previous.cpm === current.cpm) {\n\t return previous.timeToRespond > current.timeToRespond ? current : previous;\n\t }\n\n\t return previous.cpm < current.cpm ? current : previous;\n\t}\n\n\t/**\n\t * Fisher–Yates shuffle\n\t * http://stackoverflow.com/a/6274398\n\t * https://bost.ocks.org/mike/shuffle/\n\t * istanbul ignore next\n\t */\n\tfunction shuffle(array) {\n\t var counter = array.length;\n\n\t // while there are elements in the array\n\t while (counter > 0) {\n\t // pick a random index\n\t var index = Math.floor(Math.random() * counter);\n\n\t // decrease counter by 1\n\t counter--;\n\n\t // and swap the last element with it\n\t var temp = array[counter];\n\t array[counter] = array[index];\n\t array[index] = temp;\n\t }\n\n\t return array;\n\t}\n\n\tfunction adUnitsFilter(filter, bid) {\n\t return filter.includes(bid && bid.placementCode || bid && bid.adUnitCode);\n\t}\n\n\t/**\n\t * Check if parent iframe of passed document supports content rendering via 'srcdoc' property\n\t * @param {HTMLDocument} doc document to check support of 'srcdoc'\n\t */\n\tfunction isSrcdocSupported(doc) {\n\t // Firefox is excluded due to https://bugzilla.mozilla.org/show_bug.cgi?id=1265961\n\t return doc.defaultView && doc.defaultView.frameElement && 'srcdoc' in doc.defaultView.frameElement && !/firefox/i.test(navigator.userAgent);\n\t}\n\n\tfunction cloneJson(obj) {\n\t return JSON.parse(JSON.stringify(obj));\n\t}\n\n\tfunction inIframe() {\n\t try {\n\t return window.self !== window.top;\n\t } catch (e) {\n\t return true;\n\t }\n\t}\n\n\tfunction isSafariBrowser() {\n\t return (/^((?!chrome|android).)*safari/i.test(navigator.userAgent)\n\t );\n\t}\n\n\tfunction replaceAuctionPrice(str, cpm) {\n\t if (!str) return;\n\t return str.replace(/\\$\\{AUCTION_PRICE\\}/g, cpm);\n\t}\n\n\tfunction getBidderRequestAllAdUnits(bidder) {\n\t return pbjs._bidsRequested.find(function (request) {\n\t return request.bidderCode === bidder;\n\t });\n\t}\n\n\tfunction getBidderRequest(bidder, adUnitCode) {\n\t return pbjs._bidsRequested.find(function (request) {\n\t return request.bids.filter(function (bid) {\n\t return bid.bidder === bidder && bid.placementCode === adUnitCode;\n\t }).length > 0;\n\t }) || { start: null, requestId: null };\n\t}\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n\tmodule.exports = {\"JSON_MAPPING\":{\"PL_CODE\":\"code\",\"PL_SIZE\":\"sizes\",\"PL_BIDS\":\"bids\",\"BD_BIDDER\":\"bidder\",\"BD_ID\":\"paramsd\",\"BD_PL_ID\":\"placementId\",\"ADSERVER_TARGETING\":\"adserverTargeting\",\"BD_SETTING_STANDARD\":\"standard\"},\"REPO_AND_VERSION\":\"prebid_prebid_0.25.0\",\"DEBUG_MODE\":\"pbjs_debug\",\"STATUS\":{\"GOOD\":1,\"NO_BID\":2},\"CB\":{\"TYPE\":{\"ALL_BIDS_BACK\":\"allRequestedBidsBack\",\"AD_UNIT_BIDS_BACK\":\"adUnitBidsBack\",\"BID_WON\":\"bidWon\",\"REQUEST_BIDS\":\"requestBids\"}},\"objectType_function\":\"function\",\"objectType_undefined\":\"undefined\",\"objectType_object\":\"object\",\"objectType_string\":\"string\",\"objectType_number\":\"number\",\"EVENTS\":{\"AUCTION_INIT\":\"auctionInit\",\"AUCTION_END\":\"auctionEnd\",\"BID_ADJUSTMENT\":\"bidAdjustment\",\"BID_TIMEOUT\":\"bidTimeout\",\"BID_REQUESTED\":\"bidRequested\",\"BID_RESPONSE\":\"bidResponse\",\"BID_WON\":\"bidWon\",\"SET_TARGETING\":\"setTargeting\",\"REQUEST_BIDS\":\"requestBids\"},\"EVENT_ID_PATHS\":{\"bidWon\":\"adUnitCode\"},\"ORDER\":{\"RANDOM\":\"random\"},\"GRANULARITY_OPTIONS\":{\"LOW\":\"low\",\"MEDIUM\":\"medium\",\"HIGH\":\"high\",\"AUTO\":\"auto\",\"DENSE\":\"dense\",\"CUSTOM\":\"custom\"},\"TARGETING_KEYS\":[\"hb_bidder\",\"hb_adid\",\"hb_pb\",\"hb_size\",\"hb_deal\"],\"S2S\":{\"DEFAULT_ENDPOINT\":\"https://prebid.adnxs.com/pbs/v1/auction\"}}\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.hasNonVideoBidder = exports.videoAdUnit = undefined;\n\n\tvar _adaptermanager = __webpack_require__(5);\n\n\t/**\n\t * Helper functions for working with video-enabled adUnits\n\t */\n\tvar videoAdUnit = exports.videoAdUnit = function videoAdUnit(adUnit) {\n\t return adUnit.mediaType === 'video';\n\t};\n\tvar nonVideoBidder = function nonVideoBidder(bid) {\n\t return !_adaptermanager.videoAdapters.includes(bid.bidder);\n\t};\n\tvar hasNonVideoBidder = exports.hasNonVideoBidder = function hasNonVideoBidder(adUnit) {\n\t return adUnit.bids.filter(nonVideoBidder).length;\n\t};\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /** @module adaptermanger */\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar _sizeMapping = __webpack_require__(6);\n\n\tvar _native = __webpack_require__(7);\n\n\tvar _native2 = _interopRequireDefault(_native);\n\n\tvar _baseAdapter = __webpack_require__(8);\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tvar utils = __webpack_require__(2);\n\tvar CONSTANTS = __webpack_require__(3);\n\tvar events = __webpack_require__(9);\n\n\n\tvar _bidderRegistry = {};\n\texports.bidderRegistry = _bidderRegistry;\n\n\t// create s2s settings objectType_function\n\tvar _s2sConfig = {};\n\tvar _analyticsRegistry = {};\n\tvar _bidderSequence = null;\n\n\tfunction getBids(_ref) {\n\t var bidderCode = _ref.bidderCode,\n\t requestId = _ref.requestId,\n\t bidderRequestId = _ref.bidderRequestId,\n\t adUnits = _ref.adUnits;\n\n\t return adUnits.map(function (adUnit) {\n\t return adUnit.bids.filter(function (bid) {\n\t return bid.bidder === bidderCode;\n\t }).map(function (bid) {\n\t var sizes = adUnit.sizes;\n\t if (adUnit.sizeMapping) {\n\t var sizeMapping = (0, _sizeMapping.mapSizes)(adUnit);\n\t if (sizeMapping === '') {\n\t return '';\n\t }\n\t sizes = sizeMapping;\n\t }\n\n\t if (adUnit.nativeParams) {\n\t bid = _extends({}, bid, {\n\t nativeParams: (0, _native2['default'])(adUnit.nativeParams)\n\t });\n\t }\n\n\t return _extends({}, bid, {\n\t placementCode: adUnit.code,\n\t mediaType: adUnit.mediaType,\n\t transactionId: adUnit.transactionId,\n\t sizes: sizes,\n\t bidId: bid.bid_id || utils.getUniqueIdentifierStr(),\n\t bidderRequestId: bidderRequestId,\n\t requestId: requestId\n\t });\n\t });\n\t }).reduce(_utils.flatten, []).filter(function (val) {\n\t return val !== '';\n\t });\n\t}\n\n\texports.callBids = function (_ref2) {\n\t var adUnits = _ref2.adUnits,\n\t cbTimeout = _ref2.cbTimeout;\n\n\t var requestId = utils.generateUUID();\n\t var auctionStart = Date.now();\n\n\t var auctionInit = {\n\t timestamp: auctionStart,\n\t requestId: requestId\n\t };\n\t events.emit(CONSTANTS.EVENTS.AUCTION_INIT, auctionInit);\n\n\t var bidderCodes = (0, _utils.getBidderCodes)(adUnits);\n\t if (_bidderSequence === CONSTANTS.ORDER.RANDOM) {\n\t bidderCodes = (0, _utils.shuffle)(bidderCodes);\n\t }\n\n\t if (_s2sConfig.enabled) {\n\t // these are called on the s2s adapter\n\t var adaptersServerSide = _s2sConfig.bidders;\n\n\t // don't call these client side\n\t bidderCodes = bidderCodes.filter(function (elm) {\n\t return !adaptersServerSide.includes(elm);\n\t });\n\t var adUnitsCopy = utils.cloneJson(adUnits);\n\n\t // filter out client side bids\n\t adUnitsCopy.forEach(function (adUnit) {\n\t if (adUnit.sizeMapping) {\n\t adUnit.sizes = (0, _sizeMapping.mapSizes)(adUnit);\n\t delete adUnit.sizeMapping;\n\t }\n\t adUnit.sizes = transformHeightWidth(adUnit);\n\t adUnit.bids = adUnit.bids.filter(function (bid) {\n\t return adaptersServerSide.includes(bid.bidder);\n\t }).map(function (bid) {\n\t bid.bid_id = utils.getUniqueIdentifierStr();\n\t return bid;\n\t });\n\t });\n\n\t var tid = utils.generateUUID();\n\t adaptersServerSide.forEach(function (bidderCode) {\n\t var bidderRequestId = utils.getUniqueIdentifierStr();\n\t var bidderRequest = {\n\t bidderCode: bidderCode,\n\t requestId: requestId,\n\t bidderRequestId: bidderRequestId,\n\t tid: tid,\n\t bids: getBids({ bidderCode: bidderCode, requestId: requestId, bidderRequestId: bidderRequestId, 'adUnits': adUnitsCopy }),\n\t start: new Date().getTime(),\n\t auctionStart: auctionStart,\n\t timeout: _s2sConfig.timeout\n\t };\n\t // Pushing server side bidder\n\t pbjs._bidsRequested.push(bidderRequest);\n\t });\n\n\t var s2sBidRequest = { tid: tid, 'ad_units': adUnitsCopy };\n\t var s2sAdapter = _bidderRegistry[_s2sConfig.adapter]; // jshint ignore:line\n\t utils.logMessage('CALLING S2S HEADER BIDDERS ==== ' + adaptersServerSide.join(','));\n\t s2sAdapter.setConfig(_s2sConfig);\n\t s2sAdapter.callBids(s2sBidRequest);\n\t }\n\n\t bidderCodes.forEach(function (bidderCode) {\n\t var adapter = _bidderRegistry[bidderCode];\n\t if (adapter) {\n\t var bidderRequestId = utils.getUniqueIdentifierStr();\n\t var bidderRequest = {\n\t bidderCode: bidderCode,\n\t requestId: requestId,\n\t bidderRequestId: bidderRequestId,\n\t bids: getBids({ bidderCode: bidderCode, requestId: requestId, bidderRequestId: bidderRequestId, adUnits: adUnits }),\n\t start: new Date().getTime(),\n\t auctionStart: auctionStart,\n\t timeout: cbTimeout\n\t };\n\t if (bidderRequest.bids && bidderRequest.bids.length !== 0) {\n\t utils.logMessage('CALLING BIDDER ======= ' + bidderCode);\n\t pbjs._bidsRequested.push(bidderRequest);\n\t events.emit(CONSTANTS.EVENTS.BID_REQUESTED, bidderRequest);\n\t adapter.callBids(bidderRequest);\n\t }\n\t } else {\n\t utils.logError('Adapter trying to be called which does not exist: ' + bidderCode + ' adaptermanager.callBids');\n\t }\n\t });\n\t};\n\n\tfunction transformHeightWidth(adUnit) {\n\t var sizesObj = [];\n\t var sizes = utils.parseSizesInput(adUnit.sizes);\n\t sizes.forEach(function (size) {\n\t var heightWidth = size.split('x');\n\t var sizeObj = {\n\t 'w': parseInt(heightWidth[0]),\n\t 'h': parseInt(heightWidth[1])\n\t };\n\t sizesObj.push(sizeObj);\n\t });\n\t return sizesObj;\n\t}\n\n\texports.registerBidAdapter = function (bidAdaptor, bidderCode) {\n\t if (bidAdaptor && bidderCode) {\n\t if (_typeof(bidAdaptor.callBids) === CONSTANTS.objectType_function) {\n\t _bidderRegistry[bidderCode] = bidAdaptor;\n\t } else {\n\t utils.logError('Bidder adaptor error for bidder code: ' + bidderCode + 'bidder must implement a callBids() function');\n\t }\n\t } else {\n\t utils.logError('bidAdaptor or bidderCode not specified');\n\t }\n\t};\n\n\texports.aliasBidAdapter = function (bidderCode, alias) {\n\t var existingAlias = _bidderRegistry[alias];\n\n\t if ((typeof existingAlias === 'undefined' ? 'undefined' : _typeof(existingAlias)) === CONSTANTS.objectType_undefined) {\n\t var bidAdaptor = _bidderRegistry[bidderCode];\n\n\t if ((typeof bidAdaptor === 'undefined' ? 'undefined' : _typeof(bidAdaptor)) === CONSTANTS.objectType_undefined) {\n\t utils.logError('bidderCode \"' + bidderCode + '\" is not an existing bidder.', 'adaptermanager.aliasBidAdapter');\n\t } else {\n\t try {\n\t var newAdapter = null;\n\t if (bidAdaptor instanceof _baseAdapter.BaseAdapter) {\n\t // newAdapter = new bidAdaptor.constructor(alias);\n\t utils.logError(bidderCode + ' bidder does not currently support aliasing.', 'adaptermanager.aliasBidAdapter');\n\t } else {\n\t newAdapter = bidAdaptor.createNew();\n\t newAdapter.setBidderCode(alias);\n\t this.registerBidAdapter(newAdapter, alias);\n\t }\n\t } catch (e) {\n\t utils.logError(bidderCode + ' bidder does not currently support aliasing.', 'adaptermanager.aliasBidAdapter');\n\t }\n\t }\n\t } else {\n\t utils.logMessage('alias name \"' + alias + '\" has been already specified.');\n\t }\n\t};\n\n\texports.registerAnalyticsAdapter = function (_ref3) {\n\t var adapter = _ref3.adapter,\n\t code = _ref3.code;\n\n\t if (adapter && code) {\n\t if (_typeof(adapter.enableAnalytics) === CONSTANTS.objectType_function) {\n\t adapter.code = code;\n\t _analyticsRegistry[code] = adapter;\n\t } else {\n\t utils.logError('Prebid Error: Analytics adaptor error for analytics \"' + code + '\"\\n analytics adapter must implement an enableAnalytics() function');\n\t }\n\t } else {\n\t utils.logError('Prebid Error: analyticsAdapter or analyticsCode not specified');\n\t }\n\t};\n\n\texports.enableAnalytics = function (config) {\n\t if (!utils.isArray(config)) {\n\t config = [config];\n\t }\n\n\t utils._each(config, function (adapterConfig) {\n\t var adapter = _analyticsRegistry[adapterConfig.provider];\n\t if (adapter) {\n\t adapter.enableAnalytics(adapterConfig);\n\t } else {\n\t utils.logError('Prebid Error: no analytics adapter found in registry for\\n ' + adapterConfig.provider + '.');\n\t }\n\t });\n\t};\n\n\texports.setBidderSequence = function (order) {\n\t _bidderSequence = order;\n\t};\n\n\texports.setS2SConfig = function (config) {\n\t _s2sConfig = config;\n\t};\n\n\tvar AolAdapter = __webpack_require__(10);\n\texports.registerBidAdapter(new AolAdapter(), 'aol');\n\tvar CriteoAdapter = __webpack_require__(16);\n\texports.registerBidAdapter(new CriteoAdapter(), 'criteo');\n\tvar KomoonaAdapter = __webpack_require__(18);\n\texports.registerBidAdapter(new KomoonaAdapter(), 'komoona');\n\tvar AppnexusAdapter = __webpack_require__(19);\n\texports.registerBidAdapter(new AppnexusAdapter(), 'appnexus');\n\tvar AppnexusAstAdapter = __webpack_require__(21);\n\texports.registerBidAdapter(new AppnexusAstAdapter(), 'appnexusAst');\n\tvar DistrictmDMXAdapter = __webpack_require__(23);\n\texports.registerBidAdapter(new DistrictmDMXAdapter(), 'districtmDMX');\n\tvar PulsepointAdapter = __webpack_require__(24);\n\texports.registerBidAdapter(new PulsepointAdapter(), 'pulsepoint');\n\tvar UnderdogmediaAdapter = __webpack_require__(25);\n\texports.registerBidAdapter(new UnderdogmediaAdapter(), 'underdogmedia');\n\tvar RhythmoneAdapter = __webpack_require__(26);\n\texports.registerBidAdapter(new RhythmoneAdapter(), 'rhythmone');\n\tvar SharethroughAdapter = __webpack_require__(27);\n\texports.registerBidAdapter(new SharethroughAdapter(), 'sharethrough');\n\tvar AdyoulikeAdapter = __webpack_require__(28);\n\texports.registerBidAdapter(new AdyoulikeAdapter(), 'adyoulike');\n\tvar AudienceNetworkAdapter = __webpack_require__(29);\n\texports.registerBidAdapter(new AudienceNetworkAdapter(), 'audienceNetwork');\n\tvar PubmaticAdapter = __webpack_require__(30);\n\texports.registerBidAdapter(new PubmaticAdapter(), 'pubmatic');\n\tvar LockerdomeAdapter = __webpack_require__(31);\n\texports.registerBidAdapter(new LockerdomeAdapter(), 'lockerdome');\n\tvar GumgumAdapter = __webpack_require__(32);\n\texports.registerBidAdapter(new GumgumAdapter(), 'gumgum');\n\tvar OpenxAdapter = __webpack_require__(33);\n\texports.registerBidAdapter(new OpenxAdapter(), 'openx');\n\tvar SonobiAdapter = __webpack_require__(34);\n\texports.registerBidAdapter(new SonobiAdapter(), 'sonobi');\n\texports.aliasBidAdapter('appnexus', 'brealtime');\n\texports.videoAdapters = [];\n\n\tvar roxot = __webpack_require__(35)['default'] || __webpack_require__(35);\n\texports.registerAnalyticsAdapter({ adapter: roxot, code: 'roxot' });\n\tvar cortex = __webpack_require__(37)['default'] || __webpack_require__(37);\n\texports.registerAnalyticsAdapter({ adapter: cortex, code: 'cortex' });\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.setWindow = exports.getScreenWidth = exports.mapSizes = undefined;\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar utils = _interopRequireWildcard(_utils);\n\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n\tvar _win = void 0; /**\n\t * @module sizeMapping\n\t */\n\n\n\tfunction mapSizes(adUnit) {\n\t if (!isSizeMappingValid(adUnit.sizeMapping)) {\n\t return adUnit.sizes;\n\t }\n\t var width = getScreenWidth();\n\t if (!width) {\n\t // size not detected - get largest value set for desktop\n\t var _mapping = adUnit.sizeMapping.reduce(function (prev, curr) {\n\t return prev.minWidth < curr.minWidth ? curr : prev;\n\t });\n\t if (_mapping.sizes && _mapping.sizes.length) {\n\t return _mapping.sizes;\n\t }\n\t return adUnit.sizes;\n\t }\n\t var sizes = '';\n\t var mapping = adUnit.sizeMapping.find(function (sizeMapping) {\n\t return width > sizeMapping.minWidth;\n\t });\n\t if (mapping && mapping.sizes && mapping.sizes.length) {\n\t sizes = mapping.sizes;\n\t utils.logMessage('AdUnit : ' + adUnit.code + ' resized based on device width to : ' + sizes);\n\t } else {\n\t utils.logMessage('AdUnit : ' + adUnit.code + ' not mapped to any sizes for device width. This request will be suppressed.');\n\t }\n\t return sizes;\n\t}\n\n\tfunction isSizeMappingValid(sizeMapping) {\n\t if (utils.isArray(sizeMapping) && sizeMapping.length > 0) {\n\t return true;\n\t }\n\t utils.logInfo('No size mapping defined');\n\t return false;\n\t}\n\n\tfunction getScreenWidth(win) {\n\t var w = win || _win || window;\n\t var d = w.document;\n\n\t if (w.innerWidth) {\n\t return w.innerWidth;\n\t } else if (d.body.clientWidth) {\n\t return d.body.clientWidth;\n\t } else if (d.documentElement.clientWidth) {\n\t return d.documentElement.clientWidth;\n\t }\n\t return 0;\n\t}\n\n\tfunction setWindow(win) {\n\t _win = win;\n\t}\n\n\texports.mapSizes = mapSizes;\n\texports.getScreenWidth = getScreenWidth;\n\texports.setWindow = setWindow;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.hasNonNativeBidder = exports.nativeBidder = exports.nativeAdUnit = exports.NATIVE_TARGETING_KEYS = exports.NATIVE_KEYS = undefined;\n\texports['default'] = processNativeAdUnitParams;\n\texports.nativeBidIsValid = nativeBidIsValid;\n\texports.fireNativeImpressions = fireNativeImpressions;\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar nativeAdapters = [];\n\n\tvar NATIVE_KEYS = exports.NATIVE_KEYS = {\n\t title: 'hb_native_title',\n\t body: 'hb_native_body',\n\t sponsoredBy: 'hb_native_brand',\n\t image: 'hb_native_image',\n\t icon: 'hb_native_icon',\n\t clickUrl: 'hb_native_linkurl'\n\t};\n\n\tvar NATIVE_TARGETING_KEYS = exports.NATIVE_TARGETING_KEYS = Object.keys(NATIVE_KEYS).map(function (key) {\n\t return NATIVE_KEYS[key];\n\t});\n\n\tvar IMAGE = {\n\t image: { required: true },\n\t title: { required: true },\n\t sponsoredBy: { required: true },\n\t clickUrl: { required: true },\n\t body: { required: false },\n\t icon: { required: false }\n\t};\n\n\tvar SUPPORTED_TYPES = {\n\t image: IMAGE\n\t};\n\n\t/**\n\t * Recieves nativeParams from an adUnit. If the params were not of type 'type',\n\t * passes them on directly. If they were of type 'type', translate\n\t * them into the predefined specific asset requests for that type of native ad.\n\t */\n\tfunction processNativeAdUnitParams(params) {\n\t if (params && params.type && typeIsSupported(params.type)) {\n\t return SUPPORTED_TYPES[params.type];\n\t }\n\n\t return params;\n\t}\n\n\t/**\n\t * Check if the native type specified in the adUnit is supported by Prebid.\n\t */\n\tfunction typeIsSupported(type) {\n\t if (!(type && Object.keys(SUPPORTED_TYPES).includes(type))) {\n\t (0, _utils.logError)(type + ' nativeParam is not supported');\n\t return false;\n\t }\n\n\t return true;\n\t}\n\n\t/**\n\t * Helper functions for working with native-enabled adUnits\n\t * TODO: abstract this and the video helper functions into general\n\t * adunit validation helper functions\n\t */\n\tvar nativeAdUnit = exports.nativeAdUnit = function nativeAdUnit(adUnit) {\n\t return adUnit.mediaType === 'native';\n\t};\n\tvar nativeBidder = exports.nativeBidder = function nativeBidder(bid) {\n\t return nativeAdapters.includes(bid.bidder);\n\t};\n\tvar hasNonNativeBidder = exports.hasNonNativeBidder = function hasNonNativeBidder(adUnit) {\n\t return adUnit.bids.filter(function (bid) {\n\t return !nativeBidder(bid);\n\t }).length;\n\t};\n\n\t/*\n\t * Validate that the native assets on this bid contain all assets that were\n\t * marked as required in the adUnit configuration.\n\t */\n\tfunction nativeBidIsValid(bid) {\n\t var bidRequest = (0, _utils.getBidRequest)(bid.adId);\n\t if (!bidRequest) {\n\t return false;\n\t }\n\n\t var requestedAssets = bidRequest.nativeParams;\n\t if (!requestedAssets) {\n\t return true;\n\t }\n\n\t var requiredAssets = Object.keys(requestedAssets).filter(function (key) {\n\t return requestedAssets[key].required;\n\t });\n\t var returnedAssets = Object.keys(bid.native);\n\n\t return requiredAssets.every(function (asset) {\n\t return returnedAssets.includes(asset);\n\t });\n\t}\n\n\t/*\n\t * Native responses may have impression trackers. This retrieves the\n\t * impression tracker urls for the given ad object and fires them.\n\t */\n\tfunction fireNativeImpressions(adObject) {\n\t var impressionTrackers = adObject.native && adObject.native.impressionTrackers;\n\n\t (impressionTrackers || []).forEach(function (tracker) {\n\t (0, _utils.insertPixel)(tracker);\n\t });\n\t}\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n\tvar BaseAdapter = exports.BaseAdapter = function () {\n\t function BaseAdapter(code) {\n\t _classCallCheck(this, BaseAdapter);\n\n\t this.code = code;\n\t }\n\n\t _createClass(BaseAdapter, [{\n\t key: 'getCode',\n\t value: function getCode() {\n\t return this.code;\n\t }\n\t }, {\n\t key: 'setCode',\n\t value: function setCode(code) {\n\t this.code = code;\n\t }\n\t }, {\n\t key: 'callBids',\n\t value: function callBids() {\n\t throw 'adapter implementation must override callBids method';\n\t }\n\t }]);\n\n\t return BaseAdapter;\n\t}();\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\t/**\n\t * events.js\n\t */\n\tvar utils = __webpack_require__(2);\n\tvar CONSTANTS = __webpack_require__(3);\n\tvar slice = Array.prototype.slice;\n\tvar push = Array.prototype.push;\n\n\t// define entire events\n\t// var allEvents = ['bidRequested','bidResponse','bidWon','bidTimeout'];\n\tvar allEvents = utils._map(CONSTANTS.EVENTS, function (v) {\n\t return v;\n\t});\n\n\tvar idPaths = CONSTANTS.EVENT_ID_PATHS;\n\n\t// keep a record of all events fired\n\tvar eventsFired = [];\n\n\tmodule.exports = function () {\n\t var _handlers = {};\n\t var _public = {};\n\n\t /**\n\t *\n\t * @param {String} eventString The name of the event.\n\t * @param {Array} args The payload emitted with the event.\n\t * @private\n\t */\n\t function _dispatch(eventString, args) {\n\t utils.logMessage('Emitting event for: ' + eventString);\n\n\t var eventPayload = args[0] || {};\n\t var idPath = idPaths[eventString];\n\t var key = eventPayload[idPath];\n\t var event = _handlers[eventString] || { que: [] };\n\t var eventKeys = utils._map(event, function (v, k) {\n\t return k;\n\t });\n\n\t var callbacks = [];\n\n\t // record the event:\n\t eventsFired.push({\n\t eventType: eventString,\n\t args: eventPayload,\n\t id: key\n\t });\n\n\t /** Push each specific callback to the `callbacks` array.\n\t * If the `event` map has a key that matches the value of the\n\t * event payload id path, e.g. `eventPayload[idPath]`, then apply\n\t * each function in the `que` array as an argument to push to the\n\t * `callbacks` array\n\t * */\n\t if (key && utils.contains(eventKeys, key)) {\n\t push.apply(callbacks, event[key].que);\n\t }\n\n\t /** Push each general callback to the `callbacks` array. */\n\t push.apply(callbacks, event.que);\n\n\t /** call each of the callbacks */\n\t utils._each(callbacks, function (fn) {\n\t if (!fn) return;\n\t try {\n\t fn.apply(null, args);\n\t } catch (e) {\n\t utils.logError('Error executing handler:', 'events.js', e);\n\t }\n\t });\n\t }\n\n\t function _checkAvailableEvent(event) {\n\t return utils.contains(allEvents, event);\n\t }\n\n\t _public.on = function (eventString, handler, id) {\n\t // check whether available event or not\n\t if (_checkAvailableEvent(eventString)) {\n\t var event = _handlers[eventString] || { que: [] };\n\n\t if (id) {\n\t event[id] = event[id] || { que: [] };\n\t event[id].que.push(handler);\n\t } else {\n\t event.que.push(handler);\n\t }\n\n\t _handlers[eventString] = event;\n\t } else {\n\t utils.logError('Wrong event name : ' + eventString + ' Valid event names :' + allEvents);\n\t }\n\t };\n\n\t _public.emit = function (event) {\n\t var args = slice.call(arguments, 1);\n\t _dispatch(event, args);\n\t };\n\n\t _public.off = function (eventString, handler, id) {\n\t var event = _handlers[eventString];\n\n\t if (utils.isEmpty(event) || utils.isEmpty(event.que) && utils.isEmpty(event[id])) {\n\t return;\n\t }\n\n\t if (id && (utils.isEmpty(event[id]) || utils.isEmpty(event[id].que))) {\n\t return;\n\t }\n\n\t if (id) {\n\t utils._each(event[id].que, function (_handler) {\n\t var que = event[id].que;\n\t if (_handler === handler) {\n\t que.splice(utils.indexOf.call(que, _handler), 1);\n\t }\n\t });\n\t } else {\n\t utils._each(event.que, function (_handler) {\n\t var que = event.que;\n\t if (_handler === handler) {\n\t que.splice(utils.indexOf.call(que, _handler), 1);\n\t }\n\t });\n\t }\n\n\t _handlers[eventString] = event;\n\t };\n\n\t _public.get = function () {\n\t return _handlers;\n\t };\n\n\t /**\n\t * This method can return a copy of all the events fired\n\t * @return {Array} array of events fired\n\t */\n\t _public.getEvents = function () {\n\t var arrayCopy = [];\n\t utils._each(eventsFired, function (value) {\n\t var newProp = _extends({}, value);\n\t arrayCopy.push(newProp);\n\t });\n\n\t return arrayCopy;\n\t };\n\n\t return _public;\n\t}();\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _templateObject = _taggedTemplateLiteral(['', '://', '/pubapi/3.0/', '/', '/', '/', '/ADTECH;v=2;cmd=bid;cors=yes;alias=', '', ';misc=', ''], ['', '://', '/pubapi/3.0/', '/', '/', '/', '/ADTECH;v=2;cmd=bid;cors=yes;alias=', '', ';misc=', '']),\n\t _templateObject2 = _taggedTemplateLiteral(['', '://', '/bidRequest?'], ['', '://', '/bidRequest?']),\n\t _templateObject3 = _taggedTemplateLiteral(['dcn=', '&pos=', '&cmd=bid', ''], ['dcn=', '&pos=', '&cmd=bid', '']);\n\n\tfunction _taggedTemplateLiteral(strings, raw) { return Object.freeze(Object.defineProperties(strings, { raw: { value: Object.freeze(raw) } })); }\n\n\tvar utils = __webpack_require__(2);\n\tvar ajax = __webpack_require__(11).ajax;\n\tvar bidfactory = __webpack_require__(13);\n\tvar bidmanager = __webpack_require__(14);\n\tvar constants = __webpack_require__(3);\n\n\tpbjs.aolGlobals = {\n\t pixelsDropped: false\n\t};\n\n\tvar AolAdapter = function AolAdapter() {\n\t var showCpmAdjustmentWarning = true;\n\t var pubapiTemplate = template(_templateObject, 'protocol', 'host', 'network', 'placement', 'pageid', 'sizeid', 'alias', 'bidfloor', 'misc');\n\t var nexageBaseApiTemplate = template(_templateObject2, 'protocol', 'host');\n\t var nexageGetApiTemplate = template(_templateObject3, 'dcn', 'pos', 'ext');\n\t var BIDDER_CODE = 'aol';\n\t var MP_SERVER_MAP = {\n\t us: 'adserver-us.adtech.advertising.com',\n\t eu: 'adserver-eu.adtech.advertising.com',\n\t as: 'adserver-as.adtech.advertising.com'\n\t };\n\t var NEXAGE_SERVER = 'hb.nexage.com';\n\t var SYNC_TYPES = {\n\t iframe: 'IFRAME',\n\t img: 'IMG'\n\t };\n\n\t var domReady = function () {\n\t var readyEventFired = false;\n\t return function (fn) {\n\t var idempotentFn = function idempotentFn() {\n\t if (readyEventFired) {\n\t return;\n\t }\n\t readyEventFired = true;\n\t return fn();\n\t };\n\n\t if (document.readyState === 'complete') {\n\t return idempotentFn();\n\t }\n\n\t document.addEventListener('DOMContentLoaded', idempotentFn, false);\n\t window.addEventListener('load', idempotentFn, false);\n\t };\n\t }();\n\n\t function dropSyncCookies(pixels) {\n\t if (!pbjs.aolGlobals.pixelsDropped) {\n\t var pixelElements = parsePixelItems(pixels);\n\t renderPixelElements(pixelElements);\n\t pbjs.aolGlobals.pixelsDropped = true;\n\t }\n\t }\n\n\t function parsePixelItems(pixels) {\n\t var itemsRegExp = /(img|iframe)[\\s\\S]*?src\\s*=\\s*(\"|')(.*?)\\2/gi;\n\t var tagNameRegExp = /\\w*(?=\\s)/;\n\t var srcRegExp = /src=(\"|')(.*?)\\1/;\n\t var pixelsItems = [];\n\n\t if (pixels) {\n\t var matchedItems = pixels.match(itemsRegExp);\n\t if (matchedItems) {\n\t matchedItems.forEach(function (item) {\n\t var tagNameMatches = item.match(tagNameRegExp);\n\t var sourcesPathMatches = item.match(srcRegExp);\n\t if (tagNameMatches && sourcesPathMatches) {\n\t pixelsItems.push({\n\t tagName: tagNameMatches[0].toUpperCase(),\n\t src: sourcesPathMatches[2]\n\t });\n\t }\n\t });\n\t }\n\t }\n\n\t return pixelsItems;\n\t }\n\n\t function renderPixelElements(pixelsElements) {\n\t pixelsElements.forEach(function (element) {\n\t switch (element.tagName) {\n\t case SYNC_TYPES.img:\n\t return renderPixelImage(element);\n\t case SYNC_TYPES.iframe:\n\t return renderPixelIframe(element);\n\t }\n\t });\n\t }\n\n\t function renderPixelImage(pixelsItem) {\n\t var image = new Image();\n\t image.src = pixelsItem.src;\n\t }\n\n\t function renderPixelIframe(pixelsItem) {\n\t var iframe = document.createElement('iframe');\n\t iframe.width = 1;\n\t iframe.height = 1;\n\t iframe.style.display = 'none';\n\t iframe.src = pixelsItem.src;\n\t if (document.readyState === 'interactive' || document.readyState === 'complete') {\n\t document.body.appendChild(iframe);\n\t } else {\n\t domReady(function () {\n\t document.body.appendChild(iframe);\n\t });\n\t }\n\t }\n\n\t function template(strings) {\n\t for (var _len = arguments.length, keys = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t keys[_key - 1] = arguments[_key];\n\t }\n\n\t return function () {\n\t for (var _len2 = arguments.length, values = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t values[_key2] = arguments[_key2];\n\t }\n\n\t var dict = values[values.length - 1] || {};\n\t var result = [strings[0]];\n\t keys.forEach(function (key, i) {\n\t var value = Number.isInteger(key) ? values[key] : dict[key];\n\t result.push(value, strings[i + 1]);\n\t });\n\t return result.join('');\n\t };\n\t }\n\n\t function _buildMarketplaceUrl(bid) {\n\t var params = bid.params;\n\t var serverParam = params.server;\n\t var regionParam = params.region || 'us';\n\t var server = void 0;\n\n\t if (!MP_SERVER_MAP.hasOwnProperty(regionParam)) {\n\t utils.logWarn('Unknown region \\'' + regionParam + '\\' for AOL bidder.');\n\t regionParam = 'us'; // Default region.\n\t }\n\n\t if (serverParam) {\n\t server = serverParam;\n\t } else {\n\t server = MP_SERVER_MAP[regionParam];\n\t }\n\n\t // Set region param, used by AOL analytics.\n\t params.region = regionParam;\n\n\t return pubapiTemplate({\n\t protocol: document.location.protocol === 'https:' ? 'https' : 'http',\n\t host: server,\n\t network: params.network,\n\t placement: parseInt(params.placement),\n\t pageid: params.pageId || 0,\n\t sizeid: params.sizeId || 0,\n\t alias: params.alias || utils.getUniqueIdentifierStr(),\n\t bidfloor: typeof params.bidFloor !== 'undefined' ? ';bidfloor=' + params.bidFloor.toString() : '',\n\t misc: new Date().getTime() // cache busting\n\t });\n\t }\n\n\t function _buildNexageApiUrl(bid) {\n\t var _bid$params = bid.params,\n\t dcn = _bid$params.dcn,\n\t pos = _bid$params.pos;\n\n\t var nexageApi = nexageBaseApiTemplate({\n\t protocol: document.location.protocol === 'https:' ? 'https' : 'http',\n\t host: bid.params.host || NEXAGE_SERVER\n\t });\n\t if (dcn && pos) {\n\t var ext = '';\n\t utils._each(bid.params.ext, function (value, key) {\n\t ext += '&' + key + '=' + encodeURIComponent(value);\n\t });\n\t nexageApi += nexageGetApiTemplate({ dcn: dcn, pos: pos, ext: ext });\n\t }\n\t return nexageApi;\n\t }\n\n\t function _addErrorBidResponse(bid) {\n\t var response = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n\t var bidResponse = bidfactory.createBid(2, bid);\n\t bidResponse.bidderCode = BIDDER_CODE;\n\t bidResponse.reason = response.nbr;\n\t bidResponse.raw = response;\n\t bidmanager.addBidResponse(bid.placementCode, bidResponse);\n\t }\n\n\t function _addBidResponse(bid, response) {\n\t var bidData = void 0;\n\n\t try {\n\t bidData = response.seatbid[0].bid[0];\n\t } catch (e) {\n\t _addErrorBidResponse(bid, response);\n\t return;\n\t }\n\n\t var cpm = void 0;\n\n\t if (bidData.ext && bidData.ext.encp) {\n\t cpm = bidData.ext.encp;\n\t } else {\n\t cpm = bidData.price;\n\n\t if (cpm === null || isNaN(cpm)) {\n\t utils.logError('Invalid price in bid response', BIDDER_CODE, bid);\n\t _addErrorBidResponse(bid, response);\n\t return;\n\t }\n\t }\n\n\t var ad = bidData.adm;\n\t if (response.ext && response.ext.pixels) {\n\t if (bid.params.userSyncOn === constants.EVENTS.BID_RESPONSE) {\n\t dropSyncCookies(response.ext.pixels);\n\t } else {\n\t var formattedPixels = response.ext.pixels.replace(/<\\/?script( type=('|\")text\\/javascript('|\")|)?>/g, '');\n\n\t ad += '';\n\t }\n\t }\n\n\t var bidResponse = bidfactory.createBid(1, bid);\n\t bidResponse.bidderCode = BIDDER_CODE;\n\t bidResponse.ad = ad;\n\t bidResponse.cpm = cpm;\n\t bidResponse.width = bidData.w;\n\t bidResponse.height = bidData.h;\n\t bidResponse.creativeId = bidData.crid;\n\t bidResponse.pubapiId = response.id;\n\t bidResponse.currencyCode = response.cur;\n\t if (bidData.dealid) {\n\t bidResponse.dealId = bidData.dealid;\n\t }\n\n\t bidmanager.addBidResponse(bid.placementCode, bidResponse);\n\t }\n\n\t function _isNexageRequestPost(bid) {\n\t if (bid.params.id && bid.params.imp && bid.params.imp[0]) {\n\t var imp = bid.params.imp[0];\n\t return imp.id && imp.tagid && (imp.banner && imp.banner.w && imp.banner.h || imp.video && imp.video.mimes && imp.video.minduration && imp.video.maxduration);\n\t }\n\t }\n\n\t function _callBids(params) {\n\t utils._each(params.bids, function (bid) {\n\t var apiUrl = void 0;\n\t var data = null;\n\t var options = {\n\t withCredentials: true\n\t };\n\t var isNexageRequestPost = _isNexageRequestPost(bid);\n\t if (bid.params.placement && bid.params.network) {\n\t apiUrl = _buildMarketplaceUrl(bid);\n\t } else if (bid.params.dcn && bid.params.pos || isNexageRequestPost) {\n\t apiUrl = _buildNexageApiUrl(bid);\n\t if (isNexageRequestPost) {\n\t data = bid.params;\n\t options.customHeaders = {\n\t 'x-openrtb-version': '2.2'\n\t };\n\t options.method = 'POST';\n\t options.contentType = 'application/json';\n\t }\n\t }\n\t if (apiUrl) {\n\t ajax(apiUrl, function (response) {\n\t // Needs to be here in case bidderSettings are defined after requestBids() is called\n\t if (showCpmAdjustmentWarning && pbjs.bidderSettings && pbjs.bidderSettings.aol && typeof pbjs.bidderSettings.aol.bidCpmAdjustment === 'function') {\n\t utils.logWarn('bidCpmAdjustment is active for the AOL adapter. ' + 'As of Prebid 0.14, AOL can bid in net – please contact your accounts team to enable.');\n\t }\n\t showCpmAdjustmentWarning = false; // warning is shown at most once\n\n\t if (!response && response.length <= 0) {\n\t utils.logError('Empty bid response', BIDDER_CODE, bid);\n\t _addErrorBidResponse(bid, response);\n\t return;\n\t }\n\n\t try {\n\t response = JSON.parse(response);\n\t } catch (e) {\n\t utils.logError('Invalid JSON in bid response', BIDDER_CODE, bid);\n\t _addErrorBidResponse(bid, response);\n\t return;\n\t }\n\n\t _addBidResponse(bid, response);\n\t }, data, options);\n\t }\n\t });\n\t }\n\n\t return {\n\t callBids: _callBids\n\t };\n\t};\n\n\tmodule.exports = AolAdapter;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\texports.setAjaxTimeout = setAjaxTimeout;\n\texports.ajax = ajax;\n\n\tvar _url = __webpack_require__(12);\n\n\tvar utils = __webpack_require__(2);\n\n\tvar XHR_DONE = 4;\n\tvar _timeout = 3000;\n\n\t/**\n\t * Simple IE9+ and cross-browser ajax request function\n\t * Note: x-domain requests in IE9 do not support the use of cookies\n\t *\n\t * @param url string url\n\t * @param callback {object | function} callback\n\t * @param data mixed data\n\t * @param options object\n\t */\n\tfunction setAjaxTimeout(timeout) {\n\t _timeout = timeout;\n\t}\n\n\tfunction ajax(url, callback, data) {\n\t var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n\t try {\n\t var x = void 0;\n\t var useXDomainRequest = false;\n\t var method = options.method || (data ? 'POST' : 'GET');\n\n\t var callbacks = (typeof callback === 'undefined' ? 'undefined' : _typeof(callback)) === 'object' ? callback : {\n\t success: function success() {\n\t utils.logMessage('xhr success');\n\t },\n\t error: function error(e) {\n\t utils.logError('xhr error', null, e);\n\t }\n\t };\n\n\t if (typeof callback === 'function') {\n\t callbacks.success = callback;\n\t }\n\n\t if (!window.XMLHttpRequest) {\n\t useXDomainRequest = true;\n\t } else {\n\t x = new window.XMLHttpRequest();\n\t if (x.responseType === undefined) {\n\t useXDomainRequest = true;\n\t }\n\t }\n\n\t x.timeout = _timeout;\n\t if (useXDomainRequest) {\n\t x = new window.XDomainRequest();\n\t x.onload = function () {\n\t callbacks.success(x.responseText, x);\n\t };\n\n\t // http://stackoverflow.com/questions/15786966/xdomainrequest-aborts-post-on-ie-9\n\t x.onerror = function () {\n\t callbacks.error('error', x);\n\t };\n\t x.ontimeout = function () {\n\t callbacks.error('timeout', x);\n\t };\n\t x.onprogress = function () {\n\t utils.logMessage('xhr onprogress');\n\t };\n\t } else {\n\t x.onreadystatechange = function () {\n\t if (x.readyState === XHR_DONE) {\n\t var status = x.status;\n\t if (status >= 200 && status < 300 || status === 304) {\n\t callbacks.success(x.responseText, x);\n\t } else {\n\t callbacks.error(x.statusText, x);\n\t }\n\t }\n\t };\n\t }\n\n\t if (method === 'GET' && data) {\n\t var urlInfo = (0, _url.parse)(url);\n\t _extends(urlInfo.search, data);\n\t url = (0, _url.format)(urlInfo);\n\t }\n\n\t x.open(method, url);\n\n\t if (!useXDomainRequest) {\n\t if (options.withCredentials) {\n\t x.withCredentials = true;\n\t }\n\t utils._each(options.customHeaders, function (value, header) {\n\t x.setRequestHeader(header, value);\n\t });\n\t if (options.preflight) {\n\t x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n\t }\n\t x.setRequestHeader('Content-Type', options.contentType || 'text/plain');\n\t }\n\t x.send(method === 'POST' && data);\n\t } catch (error) {\n\t utils.logError('xhr construction', error);\n\t }\n\t}\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\n\tvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\n\texports.parseQS = parseQS;\n\texports.formatQS = formatQS;\n\texports.parse = parse;\n\texports.format = format;\n\tfunction parseQS(query) {\n\t return !query ? {} : query.replace(/^\\?/, '').split('&').reduce(function (acc, criteria) {\n\t var _criteria$split = criteria.split('='),\n\t _criteria$split2 = _slicedToArray(_criteria$split, 2),\n\t k = _criteria$split2[0],\n\t v = _criteria$split2[1];\n\n\t if (/\\[\\]$/.test(k)) {\n\t k = k.replace('[]', '');\n\t acc[k] = acc[k] || [];\n\t acc[k].push(v);\n\t } else {\n\t acc[k] = v || '';\n\t }\n\t return acc;\n\t }, {});\n\t}\n\n\tfunction formatQS(query) {\n\t return Object.keys(query).map(function (k) {\n\t return Array.isArray(query[k]) ? query[k].map(function (v) {\n\t return k + '[]=' + v;\n\t }).join('&') : k + '=' + query[k];\n\t }).join('&');\n\t}\n\n\tfunction parse(url) {\n\t var parsed = document.createElement('a');\n\t parsed.href = decodeURIComponent(url);\n\t return {\n\t protocol: (parsed.protocol || '').replace(/:$/, ''),\n\t hostname: parsed.hostname,\n\t port: +parsed.port,\n\t pathname: parsed.pathname.replace(/^(?!\\/)/, '/'),\n\t search: parseQS(parsed.search || ''),\n\t hash: (parsed.hash || '').replace(/^#/, ''),\n\t host: parsed.host\n\t };\n\t}\n\n\tfunction format(obj) {\n\t return (obj.protocol || 'http') + '://' + (obj.host || obj.hostname + (obj.port ? ':' + obj.port : '')) + (obj.pathname || '') + (obj.search ? '?' + formatQS(obj.search || '') : '') + (obj.hash ? '#' + obj.hash : '');\n\t}\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar utils = __webpack_require__(2);\n\n\t/**\n\t Required paramaters\n\t bidderCode,\n\t height,\n\t width,\n\t statusCode\n\t Optional paramaters\n\t adId,\n\t cpm,\n\t ad,\n\t adUrl,\n\t dealId,\n\t priceKeyString;\n\t */\n\tfunction Bid(statusCode, bidRequest) {\n\t var _bidId = bidRequest && bidRequest.bidId || utils.getUniqueIdentifierStr();\n\t var _statusCode = statusCode || 0;\n\n\t this.bidderCode = bidRequest && bidRequest.bidder || '';\n\t this.width = 0;\n\t this.height = 0;\n\t this.statusMessage = _getStatus();\n\t this.adId = _bidId;\n\n\t function _getStatus() {\n\t switch (_statusCode) {\n\t case 0:\n\t return 'Pending';\n\t case 1:\n\t return 'Bid available';\n\t case 2:\n\t return 'Bid returned empty or error response';\n\t case 3:\n\t return 'Bid timed out';\n\t }\n\t }\n\n\t this.getStatusCode = function () {\n\t return _statusCode;\n\t };\n\n\t // returns the size of the bid creative. Concatenation of width and height by ‘x’.\n\t this.getSize = function () {\n\t return this.width + 'x' + this.height;\n\t };\n\t}\n\n\t// Bid factory function.\n\texports.createBid = function () {\n\t return new (Function.prototype.bind.apply(Bid, [null].concat(Array.prototype.slice.call(arguments))))();\n\t};\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar _cpmBucketManager = __webpack_require__(15);\n\n\tvar _native = __webpack_require__(7);\n\n\tvar CONSTANTS = __webpack_require__(3);\n\tvar AUCTION_END = CONSTANTS.EVENTS.AUCTION_END;\n\tvar utils = __webpack_require__(2);\n\tvar events = __webpack_require__(9);\n\n\tvar objectType_function = 'function';\n\n\tvar externalCallbacks = { byAdUnit: [], all: [], oneTime: null, timer: false };\n\tvar _granularity = CONSTANTS.GRANULARITY_OPTIONS.MEDIUM;\n\tvar _customPriceBucket = void 0;\n\tvar defaultBidderSettingsMap = {};\n\n\texports.setCustomPriceBucket = function (customConfig) {\n\t _customPriceBucket = customConfig;\n\t};\n\n\t/**\n\t * Returns a list of bidders that we haven't received a response yet\n\t * @return {array} [description]\n\t */\n\texports.getTimedOutBidders = function () {\n\t return pbjs._bidsRequested.map(getBidderCode).filter(_utils.uniques).filter(function (bidder) {\n\t return pbjs._bidsReceived.map(getBidders).filter(_utils.uniques).indexOf(bidder) < 0;\n\t });\n\t};\n\n\tfunction timestamp() {\n\t return new Date().getTime();\n\t}\n\n\tfunction getBidderCode(bidSet) {\n\t return bidSet.bidderCode;\n\t}\n\n\tfunction getBidders(bid) {\n\t return bid.bidder;\n\t}\n\n\tfunction bidsBackAdUnit(adUnitCode) {\n\t var _this = this;\n\n\t var requested = pbjs._bidsRequested.map(function (request) {\n\t return request.bids.filter(_utils.adUnitsFilter.bind(_this, pbjs._adUnitCodes)).filter(function (bid) {\n\t return bid.placementCode === adUnitCode;\n\t });\n\t }).reduce(_utils.flatten, []).map(function (bid) {\n\t return bid.bidder === 'indexExchange' ? bid.sizes.length : 1;\n\t }).reduce(add, 0);\n\n\t var received = pbjs._bidsReceived.filter(function (bid) {\n\t return bid.adUnitCode === adUnitCode;\n\t }).length;\n\t return requested === received;\n\t}\n\n\tfunction add(a, b) {\n\t return a + b;\n\t}\n\n\tfunction bidsBackAll() {\n\t var requested = pbjs._bidsRequested.map(function (request) {\n\t return request.bids;\n\t }).reduce(_utils.flatten, []).filter(_utils.adUnitsFilter.bind(this, pbjs._adUnitCodes)).map(function (bid) {\n\t return bid.bidder === 'indexExchange' ? bid.sizes.length : 1;\n\t }).reduce(function (a, b) {\n\t return a + b;\n\t }, 0);\n\n\t var received = pbjs._bidsReceived.filter(_utils.adUnitsFilter.bind(this, pbjs._adUnitCodes)).length;\n\n\t return requested === received;\n\t}\n\n\texports.bidsBackAll = function () {\n\t return bidsBackAll();\n\t};\n\n\t/*\n\t * This function should be called to by the bidder adapter to register a bid response\n\t */\n\texports.addBidResponse = function (adUnitCode, bid) {\n\t if (!adUnitCode) {\n\t utils.logWarn('No adUnitCode supplied to addBidResponse, response discarded');\n\t return;\n\t }\n\n\t if (bid) {\n\t if (bid.mediaType === 'native' && !(0, _native.nativeBidIsValid)(bid)) {\n\t utils.logError('Native bid response does not contain all required assets. This bid won\\'t be addeed to the auction');\n\t return;\n\t }\n\n\t var _getBidderRequest = (0, _utils.getBidderRequest)(bid.bidderCode, adUnitCode),\n\t requestId = _getBidderRequest.requestId,\n\t start = _getBidderRequest.start;\n\n\t _extends(bid, {\n\t requestId: requestId,\n\t responseTimestamp: timestamp(),\n\t requestTimestamp: start,\n\t cpm: parseFloat(bid.cpm) || 0,\n\t bidder: bid.bidderCode,\n\t adUnitCode: adUnitCode\n\t });\n\n\t bid.timeToRespond = bid.responseTimestamp - bid.requestTimestamp;\n\n\t if (bid.timeToRespond > pbjs.cbTimeout + pbjs.timeoutBuffer) {\n\t var timedOut = true;\n\n\t exports.executeCallback(timedOut);\n\t }\n\n\t // emit the bidAdjustment event before bidResponse, so bid response has the adjusted bid value\n\t events.emit(CONSTANTS.EVENTS.BID_ADJUSTMENT, bid);\n\n\t // emit the bidResponse event\n\t events.emit(CONSTANTS.EVENTS.BID_RESPONSE, bid);\n\n\t // append price strings\n\t var priceStringsObj = (0, _cpmBucketManager.getPriceBucketString)(bid.cpm, _customPriceBucket);\n\t bid.pbLg = priceStringsObj.low;\n\t bid.pbMg = priceStringsObj.med;\n\t bid.pbHg = priceStringsObj.high;\n\t bid.pbAg = priceStringsObj.auto;\n\t bid.pbDg = priceStringsObj.dense;\n\t bid.pbCg = priceStringsObj.custom;\n\n\t // if there is any key value pairs to map do here\n\t var keyValues = {};\n\t if (bid.bidderCode && (bid.cpm > 0 || bid.dealId)) {\n\t keyValues = getKeyValueTargetingPairs(bid.bidderCode, bid);\n\t }\n\n\t bid.adserverTargeting = keyValues;\n\t pbjs._bidsReceived.push(bid);\n\t }\n\n\t if (bid && bid.adUnitCode && bidsBackAdUnit(bid.adUnitCode)) {\n\t triggerAdUnitCallbacks(bid.adUnitCode);\n\t }\n\n\t if (bidsBackAll()) {\n\t exports.executeCallback();\n\t }\n\t};\n\n\tfunction getKeyValueTargetingPairs(bidderCode, custBidObj) {\n\t var keyValues = {};\n\t var bidder_settings = pbjs.bidderSettings;\n\n\t // 1) set the keys from \"standard\" setting or from prebid defaults\n\t if (custBidObj && bidder_settings) {\n\t // initialize default if not set\n\t var standardSettings = getStandardBidderSettings();\n\t setKeys(keyValues, standardSettings, custBidObj);\n\t }\n\n\t // 2) set keys from specific bidder setting override if they exist\n\t if (bidderCode && custBidObj && bidder_settings && bidder_settings[bidderCode] && bidder_settings[bidderCode][CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING]) {\n\t setKeys(keyValues, bidder_settings[bidderCode], custBidObj);\n\t custBidObj.alwaysUseBid = bidder_settings[bidderCode].alwaysUseBid;\n\t custBidObj.sendStandardTargeting = bidder_settings[bidderCode].sendStandardTargeting;\n\t }\n\n\t // 2) set keys from standard setting. NOTE: this API doesn't seem to be in use by any Adapter\n\t else if (defaultBidderSettingsMap[bidderCode]) {\n\t setKeys(keyValues, defaultBidderSettingsMap[bidderCode], custBidObj);\n\t custBidObj.alwaysUseBid = defaultBidderSettingsMap[bidderCode].alwaysUseBid;\n\t custBidObj.sendStandardTargeting = defaultBidderSettingsMap[bidderCode].sendStandardTargeting;\n\t }\n\n\t // set native key value targeting\n\t if (custBidObj.native) {\n\t Object.keys(custBidObj.native).forEach(function (asset) {\n\t var key = _native.NATIVE_KEYS[asset];\n\t var value = custBidObj.native[asset];\n\t if (key) {\n\t keyValues[key] = value;\n\t }\n\t });\n\t }\n\n\t return keyValues;\n\t}\n\n\texports.getKeyValueTargetingPairs = function () {\n\t return getKeyValueTargetingPairs.apply(undefined, arguments);\n\t};\n\n\tfunction setKeys(keyValues, bidderSettings, custBidObj) {\n\t var targeting = bidderSettings[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING];\n\t custBidObj.size = custBidObj.getSize();\n\n\t utils._each(targeting, function (kvPair) {\n\t var key = kvPair.key;\n\t var value = kvPair.val;\n\n\t if (keyValues[key]) {\n\t utils.logWarn('The key: ' + key + ' is getting ovewritten');\n\t }\n\n\t if (utils.isFn(value)) {\n\t try {\n\t value = value(custBidObj);\n\t } catch (e) {\n\t utils.logError('bidmanager', 'ERROR', e);\n\t }\n\t }\n\n\t if ((typeof bidderSettings.suppressEmptyKeys !== 'undefined' && bidderSettings.suppressEmptyKeys === true || key === 'hb_deal') && ( // hb_deal is suppressed automatically if not set\n\t utils.isEmptyStr(value) || value === null || value === undefined)) {\n\t utils.logInfo(\"suppressing empty key '\" + key + \"' from adserver targeting\");\n\t } else {\n\t keyValues[key] = value;\n\t }\n\t });\n\n\t return keyValues;\n\t}\n\n\texports.setPriceGranularity = function setPriceGranularity(granularity) {\n\t var granularityOptions = CONSTANTS.GRANULARITY_OPTIONS;\n\t if (Object.keys(granularityOptions).filter(function (option) {\n\t return granularity === granularityOptions[option];\n\t })) {\n\t _granularity = granularity;\n\t } else {\n\t utils.logWarn('Prebid Warning: setPriceGranularity was called with invalid setting, using' + ' `medium` as default.');\n\t _granularity = CONSTANTS.GRANULARITY_OPTIONS.MEDIUM;\n\t }\n\t};\n\n\texports.registerDefaultBidderSetting = function (bidderCode, defaultSetting) {\n\t defaultBidderSettingsMap[bidderCode] = defaultSetting;\n\t};\n\n\texports.executeCallback = function (timedOut) {\n\t // if there's still a timeout running, clear it now\n\t if (!timedOut && externalCallbacks.timer) {\n\t clearTimeout(externalCallbacks.timer);\n\t }\n\n\t if (externalCallbacks.all.called !== true) {\n\t processCallbacks(externalCallbacks.all);\n\t externalCallbacks.all.called = true;\n\n\t if (timedOut) {\n\t var timedOutBidders = exports.getTimedOutBidders();\n\n\t if (timedOutBidders.length) {\n\t events.emit(CONSTANTS.EVENTS.BID_TIMEOUT, timedOutBidders);\n\t }\n\t }\n\t }\n\n\t // execute one time callback\n\t if (externalCallbacks.oneTime) {\n\t events.emit(AUCTION_END);\n\t try {\n\t processCallbacks([externalCallbacks.oneTime]);\n\t } catch (e) {\n\t utils.logError('Error executing bidsBackHandler', null, e);\n\t } finally {\n\t externalCallbacks.oneTime = null;\n\t externalCallbacks.timer = false;\n\t pbjs.clearAuction();\n\t }\n\t }\n\t};\n\n\texports.externalCallbackReset = function () {\n\t externalCallbacks.all.called = false;\n\t};\n\n\tfunction triggerAdUnitCallbacks(adUnitCode) {\n\t // todo : get bid responses and send in args\n\t var singleAdUnitCode = [adUnitCode];\n\t processCallbacks(externalCallbacks.byAdUnit, singleAdUnitCode);\n\t}\n\n\tfunction processCallbacks(callbackQueue, singleAdUnitCode) {\n\t var _this2 = this;\n\n\t if (utils.isArray(callbackQueue)) {\n\t callbackQueue.forEach(function (callback) {\n\t var adUnitCodes = singleAdUnitCode || pbjs._adUnitCodes;\n\t var bids = [pbjs._bidsReceived.filter(_utils.adUnitsFilter.bind(_this2, adUnitCodes)).reduce(groupByPlacement, {})];\n\n\t callback.apply(pbjs, bids);\n\t });\n\t }\n\t}\n\n\t/**\n\t * groupByPlacement is a reduce function that converts an array of Bid objects\n\t * to an object with placement codes as keys, with each key representing an object\n\t * with an array of `Bid` objects for that placement\n\t * @returns {*} as { [adUnitCode]: { bids: [Bid, Bid, Bid] } }\n\t */\n\tfunction groupByPlacement(bidsByPlacement, bid) {\n\t if (!bidsByPlacement[bid.adUnitCode]) {\n\t bidsByPlacement[bid.adUnitCode] = { bids: [] };\n\t }\n\n\t bidsByPlacement[bid.adUnitCode].bids.push(bid);\n\n\t return bidsByPlacement;\n\t}\n\n\t/**\n\t * Add a one time callback, that is discarded after it is called\n\t * @param {Function} callback\n\t * @param timer Timer to clear if callback is triggered before timer time's out\n\t */\n\texports.addOneTimeCallback = function (callback, timer) {\n\t externalCallbacks.oneTime = callback;\n\t externalCallbacks.timer = timer;\n\t};\n\n\texports.addCallback = function (id, callback, cbEvent) {\n\t callback.id = id;\n\t if (CONSTANTS.CB.TYPE.ALL_BIDS_BACK === cbEvent) {\n\t externalCallbacks.all.push(callback);\n\t } else if (CONSTANTS.CB.TYPE.AD_UNIT_BIDS_BACK === cbEvent) {\n\t externalCallbacks.byAdUnit.push(callback);\n\t }\n\t};\n\n\t// register event for bid adjustment\n\tevents.on(CONSTANTS.EVENTS.BID_ADJUSTMENT, function (bid) {\n\t adjustBids(bid);\n\t});\n\n\tfunction adjustBids(bid) {\n\t var code = bid.bidderCode;\n\t var bidPriceAdjusted = bid.cpm;\n\t if (code && pbjs.bidderSettings && pbjs.bidderSettings[code]) {\n\t if (_typeof(pbjs.bidderSettings[code].bidCpmAdjustment) === objectType_function) {\n\t try {\n\t bidPriceAdjusted = pbjs.bidderSettings[code].bidCpmAdjustment.call(null, bid.cpm, _extends({}, bid));\n\t } catch (e) {\n\t utils.logError('Error during bid adjustment', 'bidmanager.js', e);\n\t }\n\t }\n\t }\n\n\t if (bidPriceAdjusted >= 0) {\n\t bid.cpm = bidPriceAdjusted;\n\t }\n\t}\n\n\texports.adjustBids = function () {\n\t return adjustBids.apply(undefined, arguments);\n\t};\n\n\tfunction getStandardBidderSettings() {\n\t var bidder_settings = pbjs.bidderSettings;\n\t if (!bidder_settings[CONSTANTS.JSON_MAPPING.BD_SETTING_STANDARD]) {\n\t bidder_settings[CONSTANTS.JSON_MAPPING.BD_SETTING_STANDARD] = {\n\t adserverTargeting: [{\n\t key: 'hb_bidder',\n\t val: function val(bidResponse) {\n\t return bidResponse.bidderCode;\n\t }\n\t }, {\n\t key: 'hb_adid',\n\t val: function val(bidResponse) {\n\t return bidResponse.adId;\n\t }\n\t }, {\n\t key: 'hb_pb',\n\t val: function val(bidResponse) {\n\t if (_granularity === CONSTANTS.GRANULARITY_OPTIONS.AUTO) {\n\t return bidResponse.pbAg;\n\t } else if (_granularity === CONSTANTS.GRANULARITY_OPTIONS.DENSE) {\n\t return bidResponse.pbDg;\n\t } else if (_granularity === CONSTANTS.GRANULARITY_OPTIONS.LOW) {\n\t return bidResponse.pbLg;\n\t } else if (_granularity === CONSTANTS.GRANULARITY_OPTIONS.MEDIUM) {\n\t return bidResponse.pbMg;\n\t } else if (_granularity === CONSTANTS.GRANULARITY_OPTIONS.HIGH) {\n\t return bidResponse.pbHg;\n\t } else if (_granularity === CONSTANTS.GRANULARITY_OPTIONS.CUSTOM) {\n\t return bidResponse.pbCg;\n\t }\n\t }\n\t }, {\n\t key: 'hb_size',\n\t val: function val(bidResponse) {\n\t return bidResponse.size;\n\t }\n\t }, {\n\t key: 'hb_deal',\n\t val: function val(bidResponse) {\n\t return bidResponse.dealId;\n\t }\n\t }]\n\t };\n\t }\n\t return bidder_settings[CONSTANTS.JSON_MAPPING.BD_SETTING_STANDARD];\n\t}\n\n\tfunction getStandardBidderAdServerTargeting() {\n\t return getStandardBidderSettings()[CONSTANTS.JSON_MAPPING.ADSERVER_TARGETING];\n\t}\n\n\texports.getStandardBidderAdServerTargeting = getStandardBidderAdServerTargeting;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports) {\n\n\t'use strict';\n\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar _defaultPrecision = 2;\n\tvar _lgPriceConfig = {\n\t 'buckets': [{\n\t 'min': 0,\n\t 'max': 5,\n\t 'increment': 0.5\n\t }]\n\t};\n\tvar _mgPriceConfig = {\n\t 'buckets': [{\n\t 'min': 0,\n\t 'max': 20,\n\t 'increment': 0.1\n\t }]\n\t};\n\tvar _hgPriceConfig = {\n\t 'buckets': [{\n\t 'min': 0,\n\t 'max': 20,\n\t 'increment': 0.01\n\t }]\n\t};\n\tvar _densePriceConfig = {\n\t 'buckets': [{\n\t 'min': 0,\n\t 'max': 3,\n\t 'increment': 0.01\n\t }, {\n\t 'min': 3,\n\t 'max': 8,\n\t 'increment': 0.05\n\t }, {\n\t 'min': 8,\n\t 'max': 20,\n\t 'increment': 0.5\n\t }]\n\t};\n\tvar _autoPriceConfig = {\n\t 'buckets': [{\n\t 'min': 0,\n\t 'max': 5,\n\t 'increment': 0.05\n\t }, {\n\t 'min': 5,\n\t 'max': 10,\n\t 'increment': 0.1\n\t }, {\n\t 'min': 10,\n\t 'max': 20,\n\t 'increment': 0.5\n\t }]\n\t};\n\n\tfunction getPriceBucketString(cpm, customConfig) {\n\t var cpmFloat = 0;\n\t cpmFloat = parseFloat(cpm);\n\t if (isNaN(cpmFloat)) {\n\t cpmFloat = '';\n\t }\n\n\t return {\n\t low: cpmFloat === '' ? '' : getCpmStringValue(cpm, _lgPriceConfig),\n\t med: cpmFloat === '' ? '' : getCpmStringValue(cpm, _mgPriceConfig),\n\t high: cpmFloat === '' ? '' : getCpmStringValue(cpm, _hgPriceConfig),\n\t auto: cpmFloat === '' ? '' : getCpmStringValue(cpm, _autoPriceConfig),\n\t dense: cpmFloat === '' ? '' : getCpmStringValue(cpm, _densePriceConfig),\n\t custom: cpmFloat === '' ? '' : getCpmStringValue(cpm, customConfig)\n\t };\n\t}\n\n\tfunction getCpmStringValue(cpm, config) {\n\t var cpmStr = '';\n\t if (!isValidePriceConfig(config)) {\n\t return cpmStr;\n\t }\n\t var cap = config.buckets.reduce(function (prev, curr) {\n\t if (prev.max > curr.max) {\n\t return prev;\n\t }\n\t return curr;\n\t }, {\n\t 'max': 0\n\t });\n\t var bucket = config.buckets.find(function (bucket) {\n\t if (cpm > cap.max) {\n\t var precision = bucket.precision || _defaultPrecision;\n\t cpmStr = bucket.max.toFixed(precision);\n\t } else if (cpm <= bucket.max && cpm >= bucket.min) {\n\t return bucket;\n\t }\n\t });\n\t if (bucket) {\n\t cpmStr = getCpmTarget(cpm, bucket.increment, bucket.precision);\n\t }\n\t return cpmStr;\n\t}\n\n\tfunction isValidePriceConfig(config) {\n\t if (!config || !config.buckets || !Array.isArray(config.buckets)) {\n\t return false;\n\t }\n\t var isValid = true;\n\t config.buckets.forEach(function (bucket) {\n\t if (typeof bucket.min === 'undefined' || !bucket.max || !bucket.increment) {\n\t isValid = false;\n\t }\n\t });\n\t return isValid;\n\t}\n\n\tfunction getCpmTarget(cpm, increment, precision) {\n\t if (!precision) {\n\t precision = _defaultPrecision;\n\t }\n\t var bucketSize = 1 / increment;\n\t return (Math.floor(cpm * bucketSize) / bucketSize).toFixed(precision);\n\t}\n\n\texports.getPriceBucketString = getPriceBucketString;\n\texports.isValidePriceConfig = isValidePriceConfig;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar bidfactory = __webpack_require__(13);\n\tvar bidmanager = __webpack_require__(14);\n\tvar adloader = __webpack_require__(17);\n\n\tvar CriteoAdapter = function CriteoAdapter() {\n\t var sProt = window.location.protocol === 'http:' ? 'http:' : 'https:';\n\t var _publisherTagUrl = sProt + '//static.criteo.net/js/ld/publishertag.js';\n\t var _bidderCode = 'criteo';\n\t var _profileId = 125;\n\n\t function _callBids(params) {\n\t if (!window.criteo_pubtag || window.criteo_pubtag instanceof Array) {\n\t // publisherTag not loaded yet\n\n\t _pushBidRequestEvent(params);\n\t adloader.loadScript(_publisherTagUrl, function () {}, true);\n\t } else {\n\t // publisherTag already loaded\n\t _pushBidRequestEvent(params);\n\t }\n\t }\n\n\t // send bid request to criteo direct bidder handler\n\t function _pushBidRequestEvent(params) {\n\t // if we want to be fully asynchronous, we must first check window.criteo_pubtag in case publishertag.js is not loaded yet.\n\t window.Criteo = window.Criteo || {};\n\t window.Criteo.events = window.Criteo.events || [];\n\n\t // generate the bidding event\n\t var biddingEventFunc = function biddingEventFunc() {\n\t var bids = params.bids || [];\n\n\t var slots = [];\n\n\t var isAudit = false;\n\n\t // build slots before sending one multi-slots bid request\n\t for (var i = 0; i < bids.length; i++) {\n\t var bid = bids[i];\n\t slots.push(new Criteo.PubTag.DirectBidding.DirectBiddingSlot(bid.placementCode, bid.params.zoneId, undefined, bid.transactionId));\n\n\t isAudit |= bid.params.audit !== undefined;\n\t }\n\n\t var biddingEvent = new Criteo.PubTag.DirectBidding.DirectBiddingEvent(_profileId, new Criteo.PubTag.DirectBidding.DirectBiddingUrlBuilder(isAudit), slots, _callbackSuccess(slots), _callbackError(slots), _callbackError(slots) // timeout handled as error\n\t );\n\n\t // process the event as soon as possible\n\t window.criteo_pubtag.push(biddingEvent);\n\t };\n\n\t window.Criteo.events.push(biddingEventFunc);\n\t }\n\n\t function parseBidResponse(bidsResponse) {\n\t try {\n\t return JSON.parse(bidsResponse);\n\t } catch (error) {\n\t return {};\n\t }\n\t }\n\n\t function isNoBidResponse(jsonbidsResponse) {\n\t return jsonbidsResponse.slots === undefined;\n\t }\n\n\t function _callbackSuccess(slots) {\n\t return function (bidsResponse) {\n\t var jsonbidsResponse = parseBidResponse(bidsResponse);\n\n\t if (isNoBidResponse(jsonbidsResponse)) {\n\t return _callbackError(slots)();\n\t }\n\n\t for (var i = 0; i < slots.length; i++) {\n\t var bidResponse = null;\n\n\t // look for the matching bid response\n\t for (var j = 0; j < jsonbidsResponse.slots.length; j++) {\n\t if (jsonbidsResponse.slots[j] && jsonbidsResponse.slots[j].impid === slots[i].impId) {\n\t bidResponse = jsonbidsResponse.slots.splice(j, 1)[0];\n\t break;\n\t }\n\t }\n\n\t // register the bid response\n\t var bidObject;\n\t if (bidResponse) {\n\t bidObject = bidfactory.createBid(1);\n\t bidObject.bidderCode = _bidderCode;\n\t bidObject.cpm = bidResponse.cpm;\n\t bidObject.ad = bidResponse.creative;\n\t bidObject.width = bidResponse.width;\n\t bidObject.height = bidResponse.height;\n\t } else {\n\t bidObject = _invalidBidResponse();\n\t }\n\t bidmanager.addBidResponse(slots[i].impId, bidObject);\n\t }\n\t };\n\t }\n\n\t function _callbackError(slots) {\n\t return function () {\n\t for (var i = 0; i < slots.length; i++) {\n\t bidmanager.addBidResponse(slots[i].impId, _invalidBidResponse());\n\t }\n\t };\n\t }\n\n\t function _invalidBidResponse() {\n\t var bidObject = bidfactory.createBid(2);\n\t bidObject.bidderCode = _bidderCode;\n\t return bidObject;\n\t }\n\n\t return {\n\t callBids: _callBids\n\t };\n\t};\n\n\tmodule.exports = CriteoAdapter;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar utils = __webpack_require__(2);\n\tvar _requestCache = {};\n\n\t// add a script tag to the page, used to add /jpt call to page\n\texports.loadScript = function (tagSrc, callback, cacheRequest) {\n\t // var noop = () => {};\n\t //\n\t // callback = callback || noop;\n\t if (!tagSrc) {\n\t utils.logError('Error attempting to request empty URL', 'adloader.js:loadScript');\n\t return;\n\t }\n\n\t if (cacheRequest) {\n\t if (_requestCache[tagSrc]) {\n\t if (callback && typeof callback === 'function') {\n\t if (_requestCache[tagSrc].loaded) {\n\t // invokeCallbacks immediately\n\t callback();\n\t } else {\n\t // queue the callback\n\t _requestCache[tagSrc].callbacks.push(callback);\n\t }\n\t }\n\t } else {\n\t _requestCache[tagSrc] = {\n\t loaded: false,\n\t callbacks: []\n\t };\n\t if (callback && typeof callback === 'function') {\n\t _requestCache[tagSrc].callbacks.push(callback);\n\t }\n\n\t requestResource(tagSrc, function () {\n\t _requestCache[tagSrc].loaded = true;\n\t try {\n\t for (var i = 0; i < _requestCache[tagSrc].callbacks.length; i++) {\n\t _requestCache[tagSrc].callbacks[i]();\n\t }\n\t } catch (e) {\n\t utils.logError('Error executing callback', 'adloader.js:loadScript', e);\n\t }\n\t });\n\t }\n\t }\n\n\t // trigger one time request\n\t else {\n\t requestResource(tagSrc, callback);\n\t }\n\t};\n\n\tfunction requestResource(tagSrc, callback) {\n\t var jptScript = document.createElement('script');\n\t jptScript.type = 'text/javascript';\n\t jptScript.async = true;\n\n\t // Execute a callback if necessary\n\t if (callback && typeof callback === 'function') {\n\t if (jptScript.readyState) {\n\t jptScript.onreadystatechange = function () {\n\t if (jptScript.readyState === 'loaded' || jptScript.readyState === 'complete') {\n\t jptScript.onreadystatechange = null;\n\t callback();\n\t }\n\t };\n\t } else {\n\t jptScript.onload = function () {\n\t callback();\n\t };\n\t }\n\t }\n\n\t jptScript.src = tagSrc;\n\n\t // add the new script tag to the page\n\t var elToAppend = document.getElementsByTagName('head');\n\t elToAppend = elToAppend.length ? elToAppend : document.getElementsByTagName('body');\n\t if (elToAppend.length) {\n\t elToAppend = elToAppend[0];\n\t elToAppend.insertBefore(jptScript, elToAppend.firstChild);\n\t }\n\t}\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar utils = __webpack_require__(2);\n\tvar bidfactory = __webpack_require__(13);\n\tvar bidmanager = __webpack_require__(14);\n\tvar adloader = __webpack_require__(17);\n\tvar STATUS = __webpack_require__(3).STATUS;\n\t// Adapter version: 0.81\n\n\tvar KomoonaAdapter = function KomoonaAdapter() {\n\t var KOMOONA_BIDDER_NAME = 'komoona';\n\n\t function _callBids(params) {\n\t var kbConf = {\n\t ts_as: new Date().getTime(),\n\t hb_placements: [],\n\t hb_placement_bidids: {},\n\t kb_callback: _bid_arrived,\n\t hb_floors: {}\n\t };\n\n\t var bids = params.bids || [];\n\t if (!bids || !bids.length) {\n\t return;\n\t }\n\n\t bids.forEach(function (currentBid) {\n\t kbConf.hdbdid = kbConf.hdbdid || currentBid.params.hbid;\n\t kbConf.encode_bid = kbConf.encode_bid || currentBid.params.encode_bid;\n\t kbConf.hb_placement_bidids[currentBid.params.placementId] = currentBid.bidId;\n\t if (currentBid.params.floorPrice) {\n\t kbConf.hb_floors[currentBid.params.placementId] = currentBid.params.floorPrice;\n\t }\n\t kbConf.hb_placements.push(currentBid.params.placementId);\n\t });\n\n\t var scriptUrl = '//s.komoona.com/kb/0.1/kmn_sa_kb_c.' + kbConf.hdbdid + '.js';\n\n\t adloader.loadScript(scriptUrl, function () {\n\t /* global KmnKB */\n\t if (typeof KmnKB === 'function') {\n\t KmnKB.start(kbConf);\n\t }\n\t }, true);\n\t }\n\n\t function _bid_arrived(bid) {\n\t var bidObj = utils.getBidRequest(bid.bidid);\n\t var bidStatus = bid.creative ? STATUS.GOOD : STATUS.NO_BID;\n\t var bidResponse = bidfactory.createBid(bidStatus, bidObj);\n\t bidResponse.bidderCode = KOMOONA_BIDDER_NAME;\n\n\t if (bidStatus === STATUS.GOOD) {\n\t bidResponse.ad = bid.creative;\n\t bidResponse.cpm = bid.cpm;\n\t bidResponse.width = parseInt(bid.width);\n\t bidResponse.height = parseInt(bid.height);\n\t }\n\n\t var placementCode = bidObj && bidObj.placementCode;\n\t bidmanager.addBidResponse(placementCode, bidResponse);\n\t }\n\n\t // Export the callBids function, so that prebid.js can execute this function\n\t // when the page asks to send out bid requests.\n\t return {\n\t callBids: _callBids\n\t };\n\t};\n\n\tmodule.exports = KomoonaAdapter;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar CONSTANTS = __webpack_require__(3);\n\tvar utils = __webpack_require__(2);\n\tvar adloader = __webpack_require__(17);\n\tvar bidmanager = __webpack_require__(14);\n\tvar bidfactory = __webpack_require__(13);\n\tvar Adapter = __webpack_require__(20);\n\n\tvar AppNexusAdapter;\n\tAppNexusAdapter = function AppNexusAdapter() {\n\t var baseAdapter = Adapter.createNew('appnexus');\n\t var usersync = false;\n\n\t baseAdapter.callBids = function (params) {\n\t // var bidCode = baseAdapter.getBidderCode();\n\n\t var anArr = params.bids;\n\n\t // var bidsCount = anArr.length;\n\n\t // set expected bids count for callback execution\n\t // bidmanager.setExpectedBidsCount(bidCode, bidsCount);\n\n\t for (var i = 0; i < anArr.length; i++) {\n\t var bidRequest = anArr[i];\n\t var callbackId = bidRequest.bidId;\n\t adloader.loadScript(buildJPTCall(bidRequest, callbackId));\n\n\t // store a reference to the bidRequest from the callback id\n\t // bidmanager.pbCallbackMap[callbackId] = bidRequest;\n\t }\n\t };\n\n\t function buildJPTCall(bid, callbackId) {\n\t // determine tag params\n\t var placementId = utils.getBidIdParameter('placementId', bid.params);\n\n\t // memberId will be deprecated, use member instead\n\t var memberId = utils.getBidIdParameter('memberId', bid.params);\n\t var member = utils.getBidIdParameter('member', bid.params);\n\t var inventoryCode = utils.getBidIdParameter('invCode', bid.params);\n\t var query = utils.getBidIdParameter('query', bid.params);\n\t var referrer = utils.getBidIdParameter('referrer', bid.params);\n\t var altReferrer = utils.getBidIdParameter('alt_referrer', bid.params);\n\t var jptCall = '//ib.adnxs.com/jpt?';\n\n\t jptCall = utils.tryAppendQueryString(jptCall, 'callback', 'pbjs.handleAnCB');\n\t jptCall = utils.tryAppendQueryString(jptCall, 'callback_uid', callbackId);\n\t jptCall = utils.tryAppendQueryString(jptCall, 'psa', '0');\n\t jptCall = utils.tryAppendQueryString(jptCall, 'id', placementId);\n\t if (member) {\n\t jptCall = utils.tryAppendQueryString(jptCall, 'member', member);\n\t } else if (memberId) {\n\t jptCall = utils.tryAppendQueryString(jptCall, 'member', memberId);\n\t utils.logMessage('appnexus.callBids: \"memberId\" will be deprecated soon. Please use \"member\" instead');\n\t }\n\n\t jptCall = utils.tryAppendQueryString(jptCall, 'code', inventoryCode);\n\t jptCall = utils.tryAppendQueryString(jptCall, 'traffic_source_code', utils.getBidIdParameter('trafficSourceCode', bid.params));\n\n\t // sizes takes a bit more logic\n\t var sizeQueryString = '';\n\t var parsedSizes = utils.parseSizesInput(bid.sizes);\n\n\t // combine string into proper querystring for impbus\n\t var parsedSizesLength = parsedSizes.length;\n\t if (parsedSizesLength > 0) {\n\t // first value should be \"size\"\n\t sizeQueryString = 'size=' + parsedSizes[0];\n\t if (parsedSizesLength > 1) {\n\t // any subsequent values should be \"promo_sizes\"\n\t sizeQueryString += '&promo_sizes=';\n\t for (var j = 1; j < parsedSizesLength; j++) {\n\t sizeQueryString += parsedSizes[j] += ',';\n\t }\n\n\t // remove trailing comma\n\t if (sizeQueryString && sizeQueryString.charAt(sizeQueryString.length - 1) === ',') {\n\t sizeQueryString = sizeQueryString.slice(0, sizeQueryString.length - 1);\n\t }\n\t }\n\t }\n\n\t if (sizeQueryString) {\n\t jptCall += sizeQueryString + '&';\n\t }\n\n\t // this will be deprecated soon\n\t var targetingParams = utils.parseQueryStringParameters(query);\n\n\t if (targetingParams) {\n\t // don't append a & here, we have already done it in parseQueryStringParameters\n\t jptCall += targetingParams;\n\t }\n\n\t // append custom attributes:\n\t var paramsCopy = _extends({}, bid.params);\n\n\t // delete attributes already used\n\t delete paramsCopy.placementId;\n\t delete paramsCopy.memberId;\n\t delete paramsCopy.invCode;\n\t delete paramsCopy.query;\n\t delete paramsCopy.referrer;\n\t delete paramsCopy.alt_referrer;\n\t delete paramsCopy.member;\n\n\t // get the reminder\n\t var queryParams = utils.parseQueryStringParameters(paramsCopy);\n\n\t // append\n\t if (queryParams) {\n\t jptCall += queryParams;\n\t }\n\n\t // append referrer\n\t if (referrer === '') {\n\t referrer = utils.getTopWindowUrl();\n\t }\n\n\t jptCall = utils.tryAppendQueryString(jptCall, 'referrer', referrer);\n\t jptCall = utils.tryAppendQueryString(jptCall, 'alt_referrer', altReferrer);\n\n\t // remove the trailing \"&\"\n\t if (jptCall.lastIndexOf('&') === jptCall.length - 1) {\n\t jptCall = jptCall.substring(0, jptCall.length - 1);\n\t }\n\n\t // @if NODE_ENV='debug'\n\t utils.logMessage('jpt request built: ' + jptCall);\n\n\t // @endif\n\n\t // append a timer here to track latency\n\t bid.startTime = new Date().getTime();\n\n\t return jptCall;\n\t }\n\n\t // expose the callback to the global object:\n\t pbjs.handleAnCB = function (jptResponseObj) {\n\t var bidCode;\n\n\t if (jptResponseObj && jptResponseObj.callback_uid) {\n\t var responseCPM;\n\t var id = jptResponseObj.callback_uid;\n\t var placementCode = '';\n\t var bidObj = (0, _utils.getBidRequest)(id);\n\t if (bidObj) {\n\t bidCode = bidObj.bidder;\n\n\t placementCode = bidObj.placementCode;\n\n\t // set the status\n\t bidObj.status = CONSTANTS.STATUS.GOOD;\n\t }\n\n\t // @if NODE_ENV='debug'\n\t utils.logMessage('JSONP callback function called for ad ID: ' + id);\n\n\t // @endif\n\t var bid = [];\n\t if (jptResponseObj.result && jptResponseObj.result.cpm && jptResponseObj.result.cpm !== 0) {\n\t responseCPM = parseInt(jptResponseObj.result.cpm, 10);\n\n\t // CPM response from /jpt is dollar/cent multiplied by 10000\n\t // in order to avoid using floats\n\t // switch CPM to \"dollar/cent\"\n\t responseCPM = responseCPM / 10000;\n\n\t // store bid response\n\t // bid status is good (indicating 1)\n\t var adId = jptResponseObj.result.creative_id;\n\t bid = bidfactory.createBid(1, bidObj);\n\t bid.creative_id = adId;\n\t bid.bidderCode = bidCode;\n\t bid.cpm = responseCPM;\n\t bid.adUrl = jptResponseObj.result.ad;\n\t bid.width = jptResponseObj.result.width;\n\t bid.height = jptResponseObj.result.height;\n\t bid.dealId = jptResponseObj.result.deal_id;\n\n\t bidmanager.addBidResponse(placementCode, bid);\n\t } else {\n\t // no response data\n\t // @if NODE_ENV='debug'\n\t utils.logMessage('No prebid response from AppNexus for placement code ' + placementCode);\n\n\t // @endif\n\t // indicate that there is no bid for this placement\n\t bid = bidfactory.createBid(2, bidObj);\n\t bid.bidderCode = bidCode;\n\t bidmanager.addBidResponse(placementCode, bid);\n\t }\n\n\t if (!usersync) {\n\t var iframe = utils.createInvisibleIframe();\n\t iframe.src = '//acdn.adnxs.com/ib/static/usersync/v3/async_usersync.html';\n\t try {\n\t document.body.appendChild(iframe);\n\t } catch (error) {\n\t utils.logError(error);\n\t }\n\t usersync = true;\n\t }\n\t } else {\n\t // no response data\n\t // @if NODE_ENV='debug'\n\t utils.logMessage('No prebid response for placement %%PLACEMENT%%');\n\n\t // @endif\n\t }\n\t };\n\n\t return {\n\t callBids: baseAdapter.callBids,\n\t setBidderCode: baseAdapter.setBidderCode,\n\t createNew: AppNexusAdapter.createNew,\n\t buildJPTCall: buildJPTCall\n\t };\n\t};\n\n\tAppNexusAdapter.createNew = function () {\n\t return new AppNexusAdapter();\n\t};\n\n\tmodule.exports = AppNexusAdapter;\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports) {\n\n\t\"use strict\";\n\n\tfunction Adapter(code) {\n\t var bidderCode = code;\n\n\t function setBidderCode(code) {\n\t bidderCode = code;\n\t }\n\n\t function getBidderCode() {\n\t return bidderCode;\n\t }\n\n\t function callBids() {}\n\n\t return {\n\t callBids: callBids,\n\t setBidderCode: setBidderCode,\n\t getBidderCode: getBidderCode\n\t };\n\t}\n\n\texports.createNew = function (bidderCode) {\n\t return new Adapter(bidderCode);\n\t};\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\n\tvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n\tvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n\tvar _adapter = __webpack_require__(20);\n\n\tvar _adapter2 = _interopRequireDefault(_adapter);\n\n\tvar _Renderer = __webpack_require__(22);\n\n\tvar _bidfactory = __webpack_require__(13);\n\n\tvar _bidfactory2 = _interopRequireDefault(_bidfactory);\n\n\tvar _bidmanager = __webpack_require__(14);\n\n\tvar _bidmanager2 = _interopRequireDefault(_bidmanager);\n\n\tvar _utils = __webpack_require__(2);\n\n\tvar utils = _interopRequireWildcard(_utils);\n\n\tvar _ajax = __webpack_require__(11);\n\n\tvar _constants = __webpack_require__(3);\n\n\tfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n\tfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n\tvar ENDPOINT = '//ib.adnxs.com/ut/v3/prebid';\n\tvar SUPPORTED_AD_TYPES = ['banner', 'video', 'video-outstream', 'native'];\n\tvar VIDEO_TARGETING = ['id', 'mimes', 'minduration', 'maxduration', 'startdelay', 'skippable', 'playback_method', 'frameworks'];\n\tvar USER_PARAMS = ['age', 'external_uid', 'segments', 'gender', 'dnt', 'language'];\n\tvar NATIVE_MAPPING = {\n\t body: 'description',\n\t image: {\n\t serverName: 'main_image',\n\t serverParams: {\n\t required: true,\n\t sizes: [{}]\n\t }\n\t },\n\t sponsoredBy: 'sponsored_by'\n\t};\n\n\t/**\n\t * Bidder adapter for /ut endpoint. Given the list of all ad unit tag IDs,\n\t * sends out a bid request. When a bid response is back, registers the bid\n\t * to Prebid.js. This adapter supports alias bidding.\n\t */\n\tfunction AppnexusAstAdapter() {\n\t var baseAdapter = _adapter2['default'].createNew('appnexusAst');\n\t var bidRequests = {};\n\t var usersync = false;\n\n\t /* Prebid executes this function when the page asks to send out bid requests */\n\t baseAdapter.callBids = function (bidRequest) {\n\t var bids = bidRequest.bids || [];\n\t var member = 0;\n\t var userObj = void 0;\n\t var tags = bids.filter(function (bid) {\n\t return valid(bid);\n\t }).map(function (bid) {\n\t // map request id to bid object to retrieve adUnit code in callback\n\t bidRequests[bid.bidId] = bid;\n\n\t var tag = {};\n\t tag.sizes = getSizes(bid.sizes);\n\t tag.primary_size = tag.sizes[0];\n\t tag.uuid = bid.bidId;\n\t if (bid.params.placementId) {\n\t tag.id = parseInt(bid.params.placementId, 10);\n\t } else {\n\t tag.code = bid.params.invCode;\n\t }\n\t tag.allow_smaller_sizes = bid.params.allowSmallerSizes || false;\n\t tag.prebid = true;\n\t tag.disable_psa = true;\n\t member = parseInt(bid.params.member, 10);\n\t if (bid.params.reserve) {\n\t tag.reserve = bid.params.reserve;\n\t }\n\t if (bid.params.position) {\n\t tag.position = { 'above': 1, 'below': 2 }[bid.params.position] || 0;\n\t }\n\t if (bid.params.trafficSourceCode) {\n\t tag.traffic_source_code = bid.params.trafficSourceCode;\n\t }\n\t if (bid.params.privateSizes) {\n\t tag.private_sizes = getSizes(bid.params.privateSizes);\n\t }\n\t if (bid.params.supplyType) {\n\t tag.supply_type = bid.params.supplyType;\n\t }\n\t if (bid.params.pubClick) {\n\t tag.pubclick = bid.params.pubClick;\n\t }\n\t if (bid.params.extInvCode) {\n\t tag.ext_inv_code = bid.params.extInvCode;\n\t }\n\t if (bid.params.externalImpId) {\n\t tag.external_imp_id = bid.params.externalImpId;\n\t }\n\t if (!utils.isEmpty(bid.params.keywords)) {\n\t tag.keywords = getKeywords(bid.params.keywords);\n\t }\n\n\t if (bid.mediaType === 'native') {\n\t tag.ad_types = ['native'];\n\n\t if (bid.nativeParams) {\n\t var nativeRequest = {};\n\n\t // map standard prebid native asset identifier to /ut parameters\n\t // e.g., tag specifies `body` but /ut only knows `description`\n\t // mapping may be in form {tag: '