How to Create a Clickable Backup Affiliate Ad for AdSense


Sometimes an AdSense unit won’t display an ad to a user for whatever reason. When an AdSense unit doesn’t show an ad, it leaves an odd amount of space within the content, and reduces my ability to monetize those pages – and I find that unacceptable.

This used to be a much more significant problem, but in the age of remarketing, AdSense can usually find an ad to display for a user even if your particular page content doesn’t have a good content specific match for one. But, sometimes an ad still won’t show, so I still define a backup ad for my AdSense units.

AdSense offers up the ability to specify what you want to show in the place of an AdSense unit that doesn’t display an ad for whatever reason when you create an AdSense unit. The drop down offers you the option to decide whether you want to show a blank space, a solid color or a backup ad when AdSense fails to display. However, you’ll note that choosing the backup ad option only offers you the ability to enter the URL of the backup ad that you want to show.

Backup AdSense Unit OptionBackup AdSense Unit Option

Being presented with the option of entering only a single URL leads most people to believe that they can specify the URL of an image to show, but can’t make that ad image clickable. However, you can create a clickable ad to show in place of AdSense. AdSense simply does a really poor job of making it obvious that you can do so.

What you would typically expect to see in a scenario like this would be two fields – one to specify the URL of the image to show and another to specify the URL the image should link to. I don’t get why AdSense doesn’t make the process of defining a clickable backup ad more intuitive, but it is what it is.

Create the code to define a clickable backup ad

To create a clickable backup ad, AdSense requires you to create an HTML page on your website that contains the ad in HTML format. To create your backup ad, copy and paste the code below into your favorite text editor.

(Note for beginners – Microsoft Word is not a text editor. On Windows you can use the native Notepad application; on Mac you can use Textedit, providing you change the default formatting. Personally, I use Textmate for Mac.)


<br /><a href="https://sugarrae.com/adsense/affiliate-ad-backup-adsense/YOUR AFFILIATE LINK" target="_top"><img loading="lazy" decoding="async" src="YOUR AD IMAGE" /></a><br /></code></p> <p>Replace <em>YOUR AFFILIATE LINK</em> with the URL the ad should link to. Then replace <em>YOUR AD IMAGE</em> with the URL to the ad creative you want displayed. For example, below is the code I use to generate a <a href="https://sugarrae.com/getit/semrush" title="SEMRush" class="pretty-link-keyword" rel="">SEMrush</a> ad as my backup AdSense ad for the Sugarrae site.</p> <p><code><br /><title/><br /><a href="https://sugarrae.com/getit/semrush-adsense" target="_top"><img loading="lazy" decoding="async" src="https://sugarrae.com/wp-content/uploads/2016/03/semrush-banner-3.jpeg" /></a><br /></code></p> <p>Google <a href="https://support.google.com/adsense/answer/9274025">recommends</a> that you use absolute URLs like I did in the example above. Also, note that the target=”top” element in the link code <em>needs</em> to be there, or your ad will not display correctly. You should also be sure that the creative you plan to use for your ad is the same size as the AdSense unit you’re making it the backup for. </p> <p>Once you’ve copied the code into your text editor and edited it to include your affiliate link and affiliate banner, you need to save the file with a .html extension. Click Save, name the file whatever you’d like – I called my file <a href="https://sugarrae.com/getit/semrush" title="SEMRush" class="pretty-link-keyword" rel="">semrush</a>-backup-ad.html – and save it in HTML format. On Notepad, you’ll need to manually enter the .html after the file name when saving. With TextEdit, you can choose to save it as an HTML file in the File Format drop down.</p> <h2>Upload your HTML file to a server</h2> <p>Now that you have the HTML file for your backup ad created, you’ll need to upload it to a server. AdSense doesn’t care where you host the file, as long as the file is accessible on the Internet. I uploaded it to the Sugarrae site via FTP (you can see my ad <a href="https://sugarrae.com/semrush-backup-ad.html">here</a>). If you’re unsure of how to upload an HTML file to your website, you’ll need to contact your host for help. </p> <h2>Adding the backup ad to your AdSense unit</h2> <p>To add the backup ad to your AdSense unit, log into AdSense and click on My Ads. Click on <em>the name</em> of the AdSense unit you want to specify the backup ad for – <em>not</em> the Edit Ad Type option. On the next screen, locate the Backup Ads field and choose the <em>Show other ads from another URL</em> option on the drop down.</p> <p><img loading="lazy" decoding="async" alt="Choose backup ad option for the AdSense unit" width="1716" height="1254" class="aligncenter size-full wp-image-26705" srcset="https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit.png.webp 1716w,https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit-300x219.png 300w,https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit-768x561.png 768w,https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit-840x614.png 840w" data-lazy-sizes="(max-width: 1716px) 100vw, 1716px" src="https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit.png.webp"/><img loading="lazy" decoding="async" src="https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit.png.webp" alt="Choose backup ad option for the AdSense unit" width="1716" height="1254" class="aligncenter size-full wp-image-26705" srcset="https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit.png.webp 1716w,https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit-300x219.png 300w,https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit-768x561.png 768w,https://sugarrae.com/wp-content/uploads/2016/03/Choose-backup-ad-option-for-the-AdSense-unit-840x614.png 840w" sizes="auto, (max-width: 1716px) 100vw, 1716px"/></p> <p>The enter the URL of the HTML file you created and uploaded to your host using the steps above and click Save.</p> <p><img loading="lazy" decoding="async" alt="Enter the URL of the backup AdSense ad" width="1716" height="1319" class="aligncenter size-full wp-image-26709" srcset="https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad.png.webp 1716w,https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad-300x231.png 300w,https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad-768x590.png 768w,https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad-840x646.png 840w" data-lazy-sizes="(max-width: 1716px) 100vw, 1716px" src="https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad.png.webp"/><img loading="lazy" decoding="async" src="https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad.png.webp" alt="Enter the URL of the backup AdSense ad" width="1716" height="1319" class="aligncenter size-full wp-image-26709" srcset="https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad.png.webp 1716w,https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad-300x231.png 300w,https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad-768x590.png 768w,https://sugarrae.com/wp-content/uploads/2016/03/Enter-the-URL-of-the-backup-AdSense-ad-840x646.png 840w" sizes="auto, (max-width: 1716px) 100vw, 1716px"/></p> <p>The affiliate advertisement you’ve created is now the default backup ad that will display in that AdSense unit should an official AdSense ad fail to show for whatever reason. </p> <p><em>Advanced tip:</em> Whenever possible, you should use an affiliate link that has <a href="https://sugarrae.com/affiliate-marketing/how-to-add-sid-tracking-to-the-big-network-affiliate-links/">SID tracking</a> within your backup ad so that you can ascertain both the number of clicks that ad generates, as well as if the ad makes any sales. If you’re cloaking your affiliate links like I do, you’ll want to ensure you create a new cloaked link for the backup AdSense ad so that you can track clicks for it – especially helpful if the affiliate program doesn’t support SID tracking. </p> <p>Unfortunately, the SEMrush affiliate program does not offer the ability to add SID tracking to their links, so I had to use my general affiliate link in the example above. But I’ll at least be able to see how many clicks the link generates via my link cloaking plugin, <a href="https://sugarrae.com/getit/plp">Pretty Link Pro</a> (affiliate).</p> <h2>Testing your backup AdSense ad</h2> <p>Since AdSense has made defining a backup ad a bit complicated, here’s where I should be giving you a link to test that you’ve created your backup ad correctly. Unfortunately, Google doesn’t provide a way to test backup AdSense ads – which makes no sense, but once again, it is what it is. All you can really do is follow the instructions to the letter and hope for the best.</p> <p>You can also view your server logs to see if the backup ad you created is being accessed and monitor the number of clicks on the specific affiliate link you used within the ad – providing you used an SID code for the link or are using a unique link via a cloaking plugin that tracks clicks. </p> <p><em>Note:</em> It can take some time after adding the backup ad for it to start working within the ad unit. </p> </p></div> <script data-phast-original-type="text/javascript" type="text/phast">atOptions={'key':'3468c6a1b6db794def9f03e5c524d45a','format':'iframe','height':90,'width':728,'params':{}};</script> <script data-phast-original-type="text/javascript" type="text/phast" src="//www.highperformanceformat.com/3468c6a1b6db794def9f03e5c524d45a/invoke.js"></script> </article> <div class="clearfix"></div> <div class="single_custom_bottom mt10 mb10 margincenter text-center clearbox"> <script data-phast-original-type="text/javascript" type="text/phast">atOptions={'key':'3468c6a1b6db794def9f03e5c524d45a','format':'iframe','height':90,'width':728,'params':{}};</script> <script data-phast-original-type="text/javascript" type="text/phast" src="//www.highperformanceformat.com/3468c6a1b6db794def9f03e5c524d45a/invoke.js"></script> </div> <div class="clearfix"></div> <div class="post_share"> <div class="social_icon row_social_inpost"><div class="favour_in_row favour_btn_red"><div class="heart_thumb_wrap text-center"><span class="flowhidden cell_wishlist"><span class="heartplus" data-post_id="59490" data-informer="0"><span class="ml5 rtlmr5 wishaddwrap" id="wishadd59490">Save</span><span class="ml5 rtlmr5 wishaddedwrap" id="wishadded59490">Saved</span><span class="ml5 rtlmr5 wishremovedwrap" id="wishremoved59490">Removed</span> </span></span><span id="wishcount59490" class="thumbscount">0</span> </div></div><span data-href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fsom2nynetwork.com%2Faffiliate-marketing%2Fhow-to-create-a-clickable-backup-affiliate-ad-for-adsense%2F" class="fb share-link-image" data-service="facebook"><i class="rhicon rhi-facebook"></i></span><span data-href="https://twitter.com/share?url=https%3A%2F%2Fsom2nynetwork.com%2Faffiliate-marketing%2Fhow-to-create-a-clickable-backup-affiliate-ad-for-adsense%2F&text=How+to+Create+a+Clickable+Backup+Affiliate+Ad+for+AdSense" class="tw share-link-image" data-service="twitter"><i class="rhicon rhi-twitter"></i></span><span data-href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fsom2nynetwork.com%2Faffiliate-marketing%2Fhow-to-create-a-clickable-backup-affiliate-ad-for-adsense%2F&media=https://som2nynetwork.com/wp-content/uploads/2025/01/Backup-AdSense-Unit-Option.png&description=How+to+Create+a+Clickable+Backup+Affiliate+Ad+for+AdSense" class="pn share-link-image" data-service="pinterest"><i class="rhicon rhi-pinterest-p"></i></span><span data-href="mailto:?subject=How+to+Create+a+Clickable+Backup+Affiliate+Ad+for+AdSense&body=Check out: https%3A%2F%2Fsom2nynetwork.com%2Faffiliate-marketing%2Fhow-to-create-a-clickable-backup-affiliate-ad-for-adsense%2F - Som2ny+Network" class="in share-link-image" data-service="email"><i class="rhicon rhi-envelope"></i></span></div> </div> <div class="float-posts-nav" id="float-posts-nav"> <div class="postNavigation prevPostBox"> <div class="postnavprev"> <div class="inner-prevnext"> <div class="thumbnail"> <img data-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABGAQMAAABL4HDHAAAAA1BMVEX39/dv1UhKAAAADklEQVQYGWMYBaNgiAIAArwAAa44Of4AAAAASUVORK5CYII=" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABGAQMAAABL4HDHAAAAA1BMVEX39/dv1UhKAAAADklEQVQYGWMYBaNgiAIAArwAAa44Of4AAAAASUVORK5CYII=" loading="lazy" class="lazyload" data-skip-lazy width="70" height="70" alt="How to Create a Clickable Backup Affiliate Ad for AdSense" /> </div> <div class="headline"><span>Previous</span><h4><a href="https://som2nynetwork.com/advertising/barb-launches-two-prototypes-for-big-data-integration/">Barb Launches Two Prototypes for Big Data Integration</a></h4></div> </div> </div> </div> <div class="postNavigation nextPostBox"> <div class="postnavprev"> <div class="inner-prevnext"> <div class="thumbnail"> <img data-src="https://som2nynetwork.com/wp-content/plugins/phastpress/phast.php/c2VydmljZT1pbWFnZXMmc/3JjPWh0dHBzJTNBJTJGJTJGc29tMm55bmV0d29yay5jb20lMkZ3cC1jb250ZW50JTJGdXBsb2FkcyUyRnRodW1ic19kaXIlMkYxNzM4MzA5MDQ0XzAwLTEtcmFlbzFpeTBhZW1sdTZvamF1ZG1vN2pvNjZpcHE0aDQ0Z3h0OXg0ejdnLmpwZyZjYWNoZU1hcmtlcj0xNzU1NDc5MjU5LTIwMTgmdG9rZW49OGYwODM1ZDk1NjU3ZTA3Nw.q.jpg" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEYAAABGAQMAAABL4HDHAAAAA1BMVEX39/dv1UhKAAAADklEQVQYGWMYBaNgiAIAArwAAa44Of4AAAAASUVORK5CYII=" loading="lazy" class="lazyload" data-skip-lazy width="70" height="70" alt="How to Create a Clickable Backup Affiliate Ad for AdSense" /> </div> <div class="headline"><span>Next</span><h4><a href="https://som2nynetwork.com/african-music/%d0%ba%d0%b0%d0%b7%d0%b8%d0%bd%d0%be-%d0%b3%d0%b4%d0%b5-%d0%bc%d0%be%d0%b6%d0%bd%d0%be-%d0%bc%d0%b0%d1%82%d0%b5%d1%80%d0%b8%d0%b0%d0%bb%d1%8c%d0%bd%d0%be-%d0%b2%d1%8b%d0%b8%d0%b3%d1%80%d0%b0%d1%82/">Казино, где можно материально выиграть диалоговый беспроигрышные сайтики, кои дают выгнать деньги в 2025 возрасте Mp3 Download</a></h4></div> </div> </div> </div> </div> <div class="tags mb25"> <p><span class="tags-title-post">Tags: </span><a href="https://som2nynetwork.com/tag/adsense/" rel="tag">AdSense</a><a href="https://som2nynetwork.com/tag/affiliate/" rel="tag">Affiliate</a><a href="https://som2nynetwork.com/tag/backup/" rel="tag">backup</a><a href="https://som2nynetwork.com/tag/clickable/" rel="tag">Clickable</a><a href="https://som2nynetwork.com/tag/create/" rel="tag">create</a></p> </div> <div class="related_articles pt25 border-top mb0 clearfix"> <div class="related_title rehub-main-font font120 fontbold mb35"> Related Articles </div> <div class="columned_grid_module rh-flex-eq-height col_wrap_fourth mb0" > <article class="col_item column_grid rh-heading-hover-color rh-bg-hover-color no-padding two_column_mobile"> <div class="button_action abdposright pr5 pt5"> <div class="floatleft mr5"> <div class="heart_thumb_wrap text-center"><span class="flowhidden cell_wishlist"><span class="heartplus" data-post_id="372260" data-informer="0"><span class="ml5 rtlmr5 wishaddedwrap" id="wishadded372260">Added to wishlist</span><span class="ml5 rtlmr5 wishremovedwrap" id="wishremoved372260">Removed from wishlist</span> </span></span><span id="wishcount372260" class="thumbscount">0</span> </div> </div> </div> <figure class="mb20 position-relative text-center"> <a href="https://som2nynetwork.com/affiliate-marketing/write-storytelling-emails-so-good-they-make-stephen-king-blush/" class=""> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVAAAADcAQMAAAAcI2uNAAAAA1BMVEX39/dv1UhKAAAAIElEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAH4MJPQAAa3jgs8AAAAASUVORK5CYII=" data-src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVAAAADcAQMAAAAcI2uNAAAAA1BMVEX39/dv1UhKAAAAIElEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAH4MJPQAAa3jgs8AAAAASUVORK5CYII=" loading="lazy" alt="write Storytelling Emails so Good they Make Stephen King Blush!" data-skip-lazy class="lazyload " width height> </a> </figure> <div class="content_constructor"> <h3 class="mb15 mt0 font110 mobfont100 fontnormal lineheight20"><a href="https://som2nynetwork.com/affiliate-marketing/write-storytelling-emails-so-good-they-make-stephen-king-blush/">write Storytelling Emails so Good they Make Stephen King Blush!</a></h3> <div class="rh-flex-center-align mb15 mobileblockdisplay"> <div > </div> </div> </div> </article> <article class="col_item column_grid rh-heading-hover-color rh-bg-hover-color no-padding two_column_mobile"> <div class="button_action abdposright pr5 pt5"> <div class="floatleft mr5"> <div class="heart_thumb_wrap text-center"><span class="flowhidden cell_wishlist"><span class="heartplus" data-post_id="372102" data-informer="0"><span class="ml5 rtlmr5 wishaddedwrap" id="wishadded372102">Added to wishlist</span><span class="ml5 rtlmr5 wishremovedwrap" id="wishremoved372102">Removed from wishlist</span> </span></span><span id="wishcount372102" class="thumbscount">0</span> </div> </div> </div> <figure class="mb20 position-relative text-center"> <a href="https://som2nynetwork.com/affiliate-marketing/break-free-from-these-10-money-blocks-that-sabotage-your-finances/" class=""> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVAAAADcAQMAAAAcI2uNAAAAA1BMVEX39/dv1UhKAAAAIElEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAH4MJPQAAa3jgs8AAAAASUVORK5CYII=" data-src="https://som2nynetwork.com/wp-content/plugins/phastpress/phast.php/c2VydmljZT1pbWFnZXMmc3JjPWh0dHBzJTNBJTJGJTJGc29tMm55bmV0d29yay5jb20lMkZ3cC1jb250ZW50JTJGdXBsb2FkcyUyRjIwMjUlMkYwNyUyRjE3NTM0MTAyMjVfbWVkaXVtLTMzNngyMjAuanBlZyZjYWNoZU1hcmtlcj0xNzUzOTcyMDM3LTEyMjkwJnRva2VuPWNlYjNjMzJkYzg3M2E0ZmM.q.jpeg" loading="lazy" alt="Break Free From These 10 Money Blocks That Sabotage Your Finances" data-skip-lazy class="lazyload " width="336" height="220"> </a> </figure> <div class="content_constructor"> <h3 class="mb15 mt0 font110 mobfont100 fontnormal lineheight20"><a href="https://som2nynetwork.com/affiliate-marketing/break-free-from-these-10-money-blocks-that-sabotage-your-finances/">Break Free From These 10 Money Blocks That Sabotage Your Finances</a></h3> <div class="rh-flex-center-align mb15 mobileblockdisplay"> <div > </div> </div> </div> </article> <article class="col_item column_grid rh-heading-hover-color rh-bg-hover-color no-padding two_column_mobile"> <div class="button_action abdposright pr5 pt5"> <div class="floatleft mr5"> <div class="heart_thumb_wrap text-center"><span class="flowhidden cell_wishlist"><span class="heartplus" data-post_id="370925" data-informer="0"><span class="ml5 rtlmr5 wishaddedwrap" id="wishadded370925">Added to wishlist</span><span class="ml5 rtlmr5 wishremovedwrap" id="wishremoved370925">Removed from wishlist</span> </span></span><span id="wishcount370925" class="thumbscount">0</span> </div> </div> </div> <figure class="mb20 position-relative text-center"> <a href="https://som2nynetwork.com/affiliate-marketing/free-ai-newsletters-that-will-make-sure-you-capitalize-on-artificial-intelligence/" class=""> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVAAAADcAQMAAAAcI2uNAAAAA1BMVEX39/dv1UhKAAAAIElEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAH4MJPQAAa3jgs8AAAAASUVORK5CYII=" data-src="https://som2nynetwork.com/wp-content/plugins/phastpress/phast.php/c2VydmljZT1pbWFnZXMmc3JjPWh0dHBzJTNBJTJGJTJGc29tMm55bmV0d29yay5jb20lMkZ3cC1jb250ZW50JTJGdXBsb2FkcyUyRjIwMjUlMkYwNyUyRlRlbXBsYXRlcy1Eb24tdC1FZGl0LTEtMi0zMzZ4MjIwLnBuZyZjYWNoZU1hcmtlcj0xNzUzOTcyMTg1LTc4MjAzJnRva2VuPTc1NmNjZTlmZjdhYjM0ZGI.q.png" loading="lazy" alt="FREE AI Newsletters That Will Make Sure You Capitalize on Artificial Intelligence" data-skip-lazy class="lazyload " width="336" height="220"> </a> </figure> <div class="content_constructor"> <h3 class="mb15 mt0 font110 mobfont100 fontnormal lineheight20"><a href="https://som2nynetwork.com/affiliate-marketing/free-ai-newsletters-that-will-make-sure-you-capitalize-on-artificial-intelligence/">FREE AI Newsletters That Will Make Sure You Capitalize on Artificial Intelligence</a></h3> <div class="rh-flex-center-align mb15 mobileblockdisplay"> <div > </div> </div> </div> </article> <article class="col_item column_grid rh-heading-hover-color rh-bg-hover-color no-padding two_column_mobile"> <div class="button_action abdposright pr5 pt5"> <div class="floatleft mr5"> <div class="heart_thumb_wrap text-center"><span class="flowhidden cell_wishlist"><span class="heartplus" data-post_id="369890" data-informer="0"><span class="ml5 rtlmr5 wishaddedwrap" id="wishadded369890">Added to wishlist</span><span class="ml5 rtlmr5 wishremovedwrap" id="wishremoved369890">Removed from wishlist</span> </span></span><span id="wishcount369890" class="thumbscount">0</span> </div> </div> </div> <figure class="mb20 position-relative text-center"> <a href="https://som2nynetwork.com/affiliate-marketing/meet-our-latest-partner-profitlobby-by-viktoriia-adsempire-jul-2025/" class=""> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAVAAAADcAQMAAAAcI2uNAAAAA1BMVEX39/dv1UhKAAAAIElEQVRo3u3BAQ0AAADCoPdPbQ43oAAAAAAAAAAAAH4MJPQAAa3jgs8AAAAASUVORK5CYII=" data-src="https://som2nynetwork.com/wp-content/plugins/phastpress/phast.php/c2VydmljZT1pbWFnZXMmc3JjPWh0dHBzJTNBJTJGJTJGc29tMm55bmV0d29yay5jb20lMkZ3cC1jb250ZW50JTJGdXBsb2FkcyUyRjIwMjUlMkYwNyUyRjFrMEd1YmNPMkFCb3RscngzSlB4S3p3LTMzNngyMjAuanBlZyZjYWNoZU1hcmtlcj0xNzUzOTcyMDQwLTE4NDM1JnRva2VuPTY0NDA4MWVmYjgzY2I4ODI.q.jpeg" loading="lazy" alt="Meet our latest partner: ProfitLobby! | by Viktoriia | AdsEmpire | Jul, 2025" data-skip-lazy class="lazyload " width="336" height="220"> </a> </figure> <div class="content_constructor"> <h3 class="mb15 mt0 font110 mobfont100 fontnormal lineheight20"><a href="https://som2nynetwork.com/affiliate-marketing/meet-our-latest-partner-profitlobby-by-viktoriia-adsempire-jul-2025/">Meet our latest partner: ProfitLobby! | by Viktoriia | AdsEmpire | Jul, 2025</a></h3> <div class="rh-flex-center-align mb15 mobileblockdisplay"> <div > </div> </div> </div> </article> </div></div> <div id="comments" class="clearfix"> <div class="post-comments"> <div class='title_comments'>We will be happy to hear your thoughts</div> <div id="tab-1"> <ol class="commentlist"> </ol> <div id='comments_pagination'> </div> </div> <ol id="loadcomment-list" class="commentlist"> </ol> <div id="respond" class="comment-respond"> <h3 id="reply-title" class="comment-reply-title">Leave a reply <small><a rel="nofollow" id="cancel-comment-reply-link" href="/affiliate-marketing/how-to-create-a-clickable-backup-affiliate-ad-for-adsense/#respond" style="display:none;">Cancel reply</a></small></h3><form action="https://som2nynetwork.com/wp-comments-post.php" method="post" id="commentform" class="comment-form"><textarea id="comment" name="comment" cols="30" rows="10" aria-required="true" aria-label="comment"></textarea><div class="usr_re"><input id="author" type="text" value="" name="author" placeholder="Name"></div> <div class="email_re"><input id="email" type="text" value="" name="email" placeholder="E-mail"></div> <div class="site_re end"><input id="url" type="text" value="" name="url" placeholder="Website"></div><div class="clearfix"></div> <p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Save my name, email, and website in this browser for the next time I comment.</label></p> <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Submit" /> <input type='hidden' name='comment_post_ID' value='59490' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p></form> </div> </div> </div> </div> </div> <aside class="sidebar"> <div id="custom_html-2" class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><script data-phast-original-type="text/javascript" type="text/phast">atOptions={'key':'dfde50e60c4c7d112b0c59e1b5f7575f','format':'iframe','height':250,'width':300,'params':{}};</script> <script data-phast-original-type="text/javascript" type="text/phast" src="//www.highperformanceformat.com/dfde50e60c4c7d112b0c59e1b5f7575f/invoke.js"></script></div></div> </aside> </div> </div> <div class="rh-container mediad_footer mt20 mb20"><div class="clearfix"></div><div class="mediad megatop_mediad floatnone text-center flowhidden"><script data-phast-original-type="text/javascript" type="text/phast">atOptions={'key':'3468c6a1b6db794def9f03e5c524d45a','format':'iframe','height':90,'width':728,'params':{}};</script> <script data-phast-original-type="text/javascript" type="text/phast" src="//www.highperformanceformat.com/3468c6a1b6db794def9f03e5c524d45a/invoke.js"></script></div><div class="clearfix"></div></div> <div class="footer-bottom dark_style"> <style>.footer-bottom.dark_style{background-color:#000000;}.footer-bottom.dark_style .footer_widget{color:#f5f5f5}.footer-bottom.dark_style .footer_widget .title,.footer-bottom.dark_style .footer_widget h2,.footer-bottom.dark_style .footer_widget a,.footer-bottom .footer_widget.dark_style ul li a{color:#f1f1f1;}.footer-bottom.dark_style .footer_widget .widget_categories ul li:before,.footer-bottom.dark_style .footer_widget .widget_archive ul li:before,.footer-bottom.dark_style .footer_widget .widget_nav_menu ul li:before{color:#fff;}</style> <div class="rh-container clearfix"> <div class="rh-flex-eq-height col_wrap_three mb0"> <div class="footer_widget mobileblockdisplay pt25 col_item mb0"> <p>No widgets added. You can disable footer widget area in theme options - footer options</p> </div> <div class="footer_widget mobileblockdisplay disablemobilepadding pt25 col_item mb0"> </div> <div class="footer_widget mobileblockdisplay pt25 col_item last mb0"> </div> </div> </div> </div> </div> <span class="rehub_scroll" id="topcontrol" data-scrollto="#top_ankor"><i class="rhicon rhi-chevron-up"></i></span> <script type="speculationrules">{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/rehub-theme/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <div id="logo_mobile_wrapper"><a href="https://som2nynetwork.com" class="logo_image_mobile"><img src="https://som2nynetwork.com/wp-content/plugins/phastpress/phast.php/c2VydmljZT1pbWFnZXMmc3JjPWh0dHBzJTNBJTJGJTJGc29tMm55bmV0d29yay5jb20lMkZ3cC1jb250ZW50JTJGdXBsb2FkcyUyRjIwMjUlMkYwMyUyRmZhdmljb24ucG5nJmNhY2hlTWFya2VyPTE3NTM5NzA3NDEtMjU5MSZ0b2tlbj1lNTViZTk2ODAwMWMzNzk2.q.png" loading="lazy" alt="Som2ny Network" width="160" height="50" /></a></div> <div id="rhmobpnlcustom" class="rhhidden"><div id="rhmobtoppnl" style="" class="pr15 pl15 pb15 pt15"><div class="text-center"><a href="https://som2nynetwork.com"><img src="https://som2nynetwork.com/wp-content/plugins/phastpress/phast.php/c2VydmljZT1pbWFnZXMmc3JjPWh0dHBzJTNBJTJGJTJGc29tMm55bmV0d29yay5jb20lMkZ3cC1jb250ZW50JTJGdXBsb2FkcyUyRjIwMjUlMkYwMyUyRjRhMDk1M2M0LWxvZ28tMzAweDg2LTEucG5nJmNhY2hlTWFya2VyPTE3NTM5NzA2MjYtMjMyMjkmdG9rZW49OGQ0Y2RlYTNmOGM3ZWFhZQ.q.png" loading="lazy" id="mobpanelimg" alt="Logo" width="150" height="45" /></a></div></div></div> <div id="rhslidingMenu"> <div id="slide-menu-mobile"></div> </div> <div id="rhSplashSearch"> <div class="search-header-contents"> <div id="close-src-splash" class="rh-close-btn rh-hovered-scale position-relative text-center cursorpointer rh-circular-hover abdposright rtlposleft mt15 mr20 ml30" style="z-index:999"><span><i class="rhicon rhi-times whitebg roundborder50p rh-shadow4" aria-hidden="true"></i></span></div> <form role="search" method="get" class="search-form" action="https://som2nynetwork.com/"> <input type="text" name="s" placeholder="Search" data-posttype="post"> <input type="hidden" name="post_type" value="post" /> <button type="submit" class="btnsearch hideonmobile" aria-label="Search"><i class="rhicon rhi-search"></i></button> </form> </div> </div> <div id="re-compare-bar" class="from-right rh-sslide-panel"> <div id="re-compare-bar-wrap" class="rh-sslide-panel-wrap"> <div id="re-compare-bar-heading" class="rh-sslide-panel-heading"> <h5 class="rehub-main-color pt15 pb15 pr15 pl20 mt0 mb0 font120">Compare items<i class="blackcolor closecomparepanel rh-sslide-close-btn cursorpointer floatright font130 rhi-times-circle rhicon" aria-hidden="true"></i></h5> </div> <div id="re-compare-bar-tabs" class="rh-sslide-panel-tabs abdfullwidth mt30 pb30 pt30 width-100p"> <ul class="rhhidden"><li class="re-compare-tab-116319 no-multicats" data-page="116319" data-url="https://som2nynetwork.com/comparison/">Total (<span>0</span>)</li></ul> <div><div class="rh-sslide-panel-inner mt10 re-compare-wrap pr20 pl20 re-compare-wrap-116319"></div></div> <span class="re-compare-destin wpsm-button rehub_main_btn" data-compareurl="">Compare<i class="rhi-arrow-circle-right rhicon" aria-hidden="true"></i></span> </div> </div> </div> <div id="re-compare-icon-fixed" class="rhhidden"> <span class="re-compare-icon-toggle position-relative"><i class="rhicon rhi-shuffle"></i><span class="re-compare-notice rehub-main-color-bg">0</span></span> </div> <style data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/css/comments.css?ver=1.1" data-phast-params='{"ref":"RbnhCuvNBi8"}'>#comments{position:relative;margin-top:30px;clear:both;}#comments .title_comments{font-size:18px;line-height:20px;color:#111111;padding-bottom:25px;font-weight:bold;}.commentlist{margin:0 0 30px 0;list-style:none;clear:both;}.commentlist li{margin:0 0 25px 0;}.comment-respond{padding:30px 35px;margin-bottom:30px;box-shadow:0 1px 1px 0 rgba(0,0,0,.12);background:#f6f6f6}.comment-respond h3{font-weight:bold;font-size:19px;line-height:21px;text-transform:uppercase;margin:0 0 25px 0;}#cancel-comment-reply-link{border-bottom:1px dotted #111;margin:0 10px;text-decoration:none;font-size:12px}.comment-respond .usr_re input,.comment-respond .email_re input,.comment-respond .site_re input{padding:0 0 0 50px;width:100%;font-size:14px;margin-bottom:20px;border-radius:0px;height:38px;border:1px solid #cbd0d2;float:left;position:relative;}.comment-respond textarea{width:100%;margin-bottom:20px;clear:both}.comment-respond .usr_re,.comment-respond .email_re,.comment-respond .site_re{display:block;vertical-align:middle;position:relative;float:left;width:32%;margin-right:2%}.comment-respond .end{margin-right:0px !important;}.comment-respond .usr_re:after,.comment-respond .email_re:after,.comment-respond .site_re:after{background:none #2f2f2f;position:absolute;left:0;top:0;color:#fff;width:38px;height:38px;text-align:center;line-height:38px}.comment-respond .usr_re:after{content:"\f007";}.comment-respond .email_re:after{content:"\f0e0"}.comment-respond .site_re:after{content:"\f0c3"}.comment-respond p.form-submit{clear:both;margin-top:15px}#commentform #submit{font-size:16px;padding:8px 14px;display:block}#disqus_thread{margin-top:20px;}#comments_pagination{font-size:18px;}#comments_pagination a{color:#111}.commentlist #user_reviews_in_comment{display:none;}@media screen and (max-width:767px){.comment-respond .usr_re,.comment-respond .email_re,.comment-respond .site_re{width:100%;margin:0}}</style> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/tablechart.js?ver=1.7" data-phast-params='{"ref":"V1gpUYVdSME"}' data-phast-original-type="text/javascript" type="text/phast" id="rehubtablechart-js"></script> <script data-phast-original-type="text/javascript" type="text/phast" id="rehubcompare-js-extra">var comparechart={"item_error_add":"Please, add items to this compare group or choose not empty group","item_error_comp":"Please, add more items to compare","comparenonce":"45a8012755"};</script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/comparechart.js?ver=1.8" data-phast-params='{"ref":"vrpYqg-tRX0"}' data-phast-original-type="text/javascript" type="text/phast" id="rehubcompare-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-includes/js/hoverintent-js.min.js?ver=2.2.1" data-phast-params='{"ref":"RnIHo0jRF1c"}' data-phast-original-type="text/javascript" type="text/phast" id="hoverintent-js-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-includes/js/admin-bar.min.js?ver=6.8.2" data-phast-params='{"ref":"UZmwZbkBTqM"}' data-phast-original-type="text/javascript" type="text/phast" id="admin-bar-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/inview.js?ver=1.1" data-phast-params='{"ref":"uR0x6vnWyyE"}' data-phast-original-type="text/javascript" type="text/phast" id="rhinview-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/pgwmodal.js?ver=2.0" data-phast-params='{"ref":"SN5BbzDtNxk"}' data-phast-original-type="text/javascript" type="text/phast" id="rhpgwmodal-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/unveil.js?ver=5.2.1" data-phast-params='{"ref":"Q6Chd9y04Fk"}' data-phast-original-type="text/javascript" type="text/phast" id="rhunveil-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/hoverintent.js?ver=1.9" data-phast-params='{"ref":"kPnA8Oc1tiw"}' data-phast-original-type="text/javascript" type="text/phast" id="rhhoverintent-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/countdown.js?ver=1.1" data-phast-params='{"ref":"W3WyttvQ--k"}' data-phast-original-type="text/javascript" type="text/phast" id="rhcountdown-js"></script> <script data-phast-original-type="text/javascript" type="text/phast" id="rehub-js-extra">var rhscriptvars={"back":"back","ajax_url":"\/wp-admin\/admin-ajax.php","fin":"That's all","noresults":"No results found","your_rating":"Your Rating:","addedcart":"Added to Cart","nonce":"81a3503ee9","hotnonce":"9f56ffd615","wishnonce":"1c65542c57","searchnonce":"6807efc775","filternonce":"6de85988d7","rating_tabs_id":"d435159755","max_temp":"10","min_temp":"-10","helpnotnonce":"d5d9788d1a"};</script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/custom.js?ver=18.9.7" data-phast-params='{"ref":"lfxRBWsDAjQ"}' data-phast-original-type="text/javascript" type="text/phast" id="rehub-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-includes/js/comment-reply.min.js?ver=6.8.2" data-phast-params='{"ref":"e_tTAlCjiCQ"}' data-phast-original-type="text/javascript" type="text/phast" data-phast-async id="comment-reply-js" data-wp-strategy="async"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-includes/js/hoverIntent.min.js?ver=1.10.2" data-phast-params='{"ref":"0OLqJxHBaAA"}' data-phast-original-type="text/javascript" type="text/phast" id="hoverIntent-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/plugins/megamenu/js/maxmegamenu.js?ver=3.4.1" data-phast-params='{"ref":"26fq91H4VCQ"}' data-phast-original-type="text/javascript" type="text/phast" id="megamenu-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/plugins/megamenu-pro/assets/public.js?ver=2.4.2" data-phast-params='{"ref":"rk21iHjRGng"}' data-phast-original-type="text/javascript" type="text/phast" id="megamenu-pro-js"></script> <script data-phast-original-src="https://som2nynetwork.com/wp-content/themes/rehub-theme/js/wishcount.js?ver=1.1" data-phast-params='{"ref":"Q-ypNyYsBrE"}' data-phast-original-type="text/javascript" type="text/phast" id="rhwishcount-js"></script> <script data-phast-compiled-js-names="ScriptsProxyService/rewrite-function.js,CSSInlining/ie-fallback.js,CSSInlining/inlined-css-retriever.js,ScriptsDeferring/scripts-loader.js,ScriptsDeferring/rewrite.js">(function phastScripts(phast){phast.scripts=[(function(){phast.config=JSON.parse(atob(phast.config));while(phast.scripts.length){phast.scripts.shift()()} }),(function(){(function(a,b){typeof exports==="object"&&typeof module!=="undefined"?module.exports=b():typeof define==="function"&&define.amd?define(b):a.ES6Promise=b()})(phast,function(){"use strict";function c(ia){var ja=typeof ia;return ia!==null&&(ja==="object"||ja==="function")}function d(ka){return typeof ka==="function"}var e=void 0;if(Array.isArray){e=Array.isArray}else{e=function(la){return Object.prototype.toString.call(la)==="[object Array]"}}var f=e;var g=0;var h=void 0;var i=void 0;var j=function ma(na,oa){w[g]=na;w[g+1]=oa;g+=2;if(g===2){if(i){i(x)}else{z()}}};function k(pa){i=pa}function l(qa){j=qa}var m=typeof window!=="undefined"?window:undefined;var n=m||{};var o=n.MutationObserver||n.WebKitMutationObserver;var p=typeof self==="undefined"&&typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var q=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function r(){return function(){return process.nextTick(x)}}function s(){if(typeof h!=="undefined"){return function(){h(x)}}return v()}function t(){var ra=0;var sa=new o(x);var ta=document.createTextNode("");sa.observe(ta,{characterData:true});return function(){ta.data=ra=++ra%2}}function u(){var ua=new MessageChannel;ua.port1.onmessage=x;return function(){return ua.port2.postMessage(0)}}function v(){var va=setTimeout;return function(){return va(x,1)}}var w=new Array(1e3);function x(){for(var wa=0;wa<g;wa+=2){var xa=w[wa];var ya=w[wa+1];xa(ya);w[wa]=undefined;w[wa+1]=undefined}g=0}function y(){try{var za=Function("return this")().require("vertx");h=za.runOnLoop||za.runOnContext;return s()}catch(Aa){return v()}}var z=void 0;if(p){z=r()}else if(o){z=t()}else if(q){z=u()}else if(m===undefined&&typeof require==="function"){z=y()}else{z=v()}function A(Ba,Ca){var Da=this;var Ea=new this.constructor(D);if(Ea[C]===undefined){$(Ea)}var Fa=Da._state;if(Fa){var Ga=arguments[Fa-1];j(function(){return W(Fa,Ea,Ga,Da._result)})}else{T(Da,Ea,Ba,Ca)}return Ea}function B(Ha){var Ia=this;if(Ha&&typeof Ha==="object"&&Ha.constructor===Ia){return Ha}var Ja=new Ia(D);P(Ja,Ha);return Ja}var C=Math.random().toString(36).substring(2);function D(){}var E=void 0;var F=1;var G=2;var H={error:null};function I(){return new TypeError("You cannot resolve a promise with itself")}function J(){return new TypeError("A promises callback cannot return that same promise.")}function K(Ka){try{return Ka.then}catch(La){H.error=La;return H}}function L(Ma,Na,Oa,Pa){try{Ma.call(Na,Oa,Pa)}catch(Qa){return Qa}}function M(Ra,Sa,Ta){j(function(Ua){var Va=false;var Wa=L(Ta,Sa,function(Xa){if(Va){return}Va=true;if(Sa!==Xa){P(Ua,Xa)}else{R(Ua,Xa)}},function(Ya){if(Va){return}Va=true;S(Ua,Ya)},"Settle: "+(Ua._label||" unknown promise"));if(!Va&&Wa){Va=true;S(Ua,Wa)}},Ra)}function N(Za,$a){if($a._state===F){R(Za,$a._result)}else if($a._state===G){S(Za,$a._result)}else{T($a,undefined,function(_a){return P(Za,_a)},function(a0){return S(Za,a0)})}}function O(b0,c0,d0){if(c0.constructor===b0.constructor&&d0===A&&c0.constructor.resolve===B){N(b0,c0)}else{if(d0===H){S(b0,H.error);H.error=null}else if(d0===undefined){R(b0,c0)}else if(d(d0)){M(b0,c0,d0)}else{R(b0,c0)}}}function P(e0,f0){if(e0===f0){S(e0,I())}else if(c(f0)){O(e0,f0,K(f0))}else{R(e0,f0)}}function Q(g0){if(g0._onerror){g0._onerror(g0._result)}U(g0)}function R(h0,i0){if(h0._state!==E){return}h0._result=i0;h0._state=F;if(h0._subscribers.length!==0){j(U,h0)}}function S(j0,k0){if(j0._state!==E){return}j0._state=G;j0._result=k0;j(Q,j0)}function T(l0,m0,n0,o0){var p0=l0._subscribers;var q0=p0.length;l0._onerror=null;p0[q0]=m0;p0[q0+F]=n0;p0[q0+G]=o0;if(q0===0&&l0._state){j(U,l0)}}function U(r0){var s0=r0._subscribers;var t0=r0._state;if(s0.length===0){return}var u0=void 0,v0=void 0,w0=r0._result;for(var x0=0;x0<s0.length;x0+=3){u0=s0[x0];v0=s0[x0+t0];if(u0){W(t0,u0,v0,w0)}else{v0(w0)}}r0._subscribers.length=0}function V(y0,z0){try{return y0(z0)}catch(A0){H.error=A0;return H}}function W(B0,C0,D0,E0){var F0=d(D0),G0=void 0,H0=void 0,I0=void 0,J0=void 0;if(F0){G0=V(D0,E0);if(G0===H){J0=true;H0=G0.error;G0.error=null}else{I0=true}if(C0===G0){S(C0,J());return}}else{G0=E0;I0=true}if(C0._state!==E){}else if(F0&&I0){P(C0,G0)}else if(J0){S(C0,H0)}else if(B0===F){R(C0,G0)}else if(B0===G){S(C0,G0)}}function X(K0,L0){try{L0(function M0(N0){P(K0,N0)},function O0(P0){S(K0,P0)})}catch(Q0){S(K0,Q0)}}var Y=0;function Z(){return Y++}function $(R0){R0[C]=Y++;R0._state=undefined;R0._result=undefined;R0._subscribers=[]}function _(){return new Error("Array Methods must be provided an Array")}var aa=function(){function S0(T0,U0){this._instanceConstructor=T0;this.promise=new T0(D);if(!this.promise[C]){$(this.promise)}if(f(U0)){this.length=U0.length;this._remaining=U0.length;this._result=new Array(this.length);if(this.length===0){R(this.promise,this._result)}else{this.length=this.length||0;this._enumerate(U0);if(this._remaining===0){R(this.promise,this._result)}}}else{S(this.promise,_())}}S0.prototype._enumerate=function V0(W0){for(var X0=0;this._state===E&&X0<W0.length;X0++){this._eachEntry(W0[X0],X0)}};S0.prototype._eachEntry=function Y0(Z0,$0){var _0=this._instanceConstructor;var ab=_0.resolve;if(ab===B){var bb=K(Z0);if(bb===A&&Z0._state!==E){this._settledAt(Z0._state,$0,Z0._result)}else if(typeof bb!=="function"){this._remaining--;this._result[$0]=Z0}else if(_0===ga){var cb=new _0(D);O(cb,Z0,bb);this._willSettleAt(cb,$0)}else{this._willSettleAt(new _0(function(db){return db(Z0)}),$0)}}else{this._willSettleAt(ab(Z0),$0)}};S0.prototype._settledAt=function eb(fb,gb,hb){var ib=this.promise;if(ib._state===E){this._remaining--;if(fb===G){S(ib,hb)}else{this._result[gb]=hb}}if(this._remaining===0){R(ib,this._result)}};S0.prototype._willSettleAt=function jb(kb,lb){var mb=this;T(kb,undefined,function(nb){return mb._settledAt(F,lb,nb)},function(ob){return mb._settledAt(G,lb,ob)})};return S0}();function ba(pb){return new aa(this,pb).promise}function ca(qb){var rb=this;if(!f(qb)){return new rb(function(sb,tb){return tb(new TypeError("You must pass an array to race."))})}else{return new rb(function(ub,vb){var wb=qb.length;for(var xb=0;xb<wb;xb++){rb.resolve(qb[xb]).then(ub,vb)}})}}function da(yb){var zb=this;var Ab=new zb(D);S(Ab,yb);return Ab}function ea(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function fa(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var ga=function(){function Bb(Cb){this[C]=Z();this._result=this._state=undefined;this._subscribers=[];if(D!==Cb){typeof Cb!=="function"&&ea();this instanceof Bb?X(this,Cb):fa()}}Bb.prototype.catch=function Db(Eb){return this.then(null,Eb)};Bb.prototype.finally=function Fb(Gb){var Hb=this;var Ib=Hb.constructor;return Hb.then(function(Jb){return Ib.resolve(Gb()).then(function(){return Jb})},function(Kb){return Ib.resolve(Gb()).then(function(){throw Kb})})};return Bb}();ga.prototype.then=A;ga.all=ba;ga.race=ca;ga.resolve=B;ga.reject=da;ga._setScheduler=k;ga._setAsap=l;ga._asap=j;function ha(){var Lb=void 0;if(typeof global!=="undefined"){Lb=global}else if(typeof self!=="undefined"){Lb=self}else{try{Lb=Function("return this")()}catch(Ob){throw new Error("polyfill failed because global object is unavailable in this environment")}}var Mb=Lb.Promise;if(Mb){var Nb=null;try{Nb=Object.prototype.toString.call(Mb.resolve())}catch(Pb){}if(Nb==="[object Promise]"&&!Mb.cast){return}}Lb.Promise=ga}ga.polyfill=ha;ga.Promise=ga;return ga}); }),(function(){function murmurhash3_32_gc(a,b){var c,d,e,f,g,h,i,j,k,l;c=a.length&3;d=a.length-c;e=b;g=3432918353;i=461845907;l=0;while(l<d){k=a.charCodeAt(l)&255|(a.charCodeAt(++l)&255)<<8|(a.charCodeAt(++l)&255)<<16|(a.charCodeAt(++l)&255)<<24;++l;k=(k&65535)*g+(((k>>>16)*g&65535)<<16)&4294967295;k=k<<15|k>>>17;k=(k&65535)*i+(((k>>>16)*i&65535)<<16)&4294967295;e^=k;e=e<<13|e>>>19;f=(e&65535)*5+(((e>>>16)*5&65535)<<16)&4294967295;e=(f&65535)+27492+(((f>>>16)+58964&65535)<<16)}k=0;switch(c){case 3:k^=(a.charCodeAt(l+2)&255)<<16;case 2:k^=(a.charCodeAt(l+1)&255)<<8;case 1:k^=a.charCodeAt(l)&255;k=(k&65535)*g+(((k>>>16)*g&65535)<<16)&4294967295;k=k<<15|k>>>17;k=(k&65535)*i+(((k>>>16)*i&65535)<<16)&4294967295;e^=k}e^=a.length;e^=e>>>16;e=(e&65535)*2246822507+(((e>>>16)*2246822507&65535)<<16)&4294967295;e^=e>>>13;e=(e&65535)*3266489909+(((e>>>16)*3266489909&65535)<<16)&4294967295;e^=e>>>16;return e>>>0}phast.hash=murmurhash3_32_gc; }),(function(){phast.buildServiceUrl=function(a,b){if(a.pathInfo){return appendPathInfo(a.serviceUrl,buildQuery(b))}else{return appendQueryString(a.serviceUrl,buildQuery(b))}};function buildQuery(c){if(typeof c==="string"){return c}var d=[];for(var e in c){if(c.hasOwnProperty(e)){d.push(encodeURIComponent(e)+"="+encodeURIComponent(c[e]))}}return d.join("&")}function appendPathInfo(f,g){var h=btoa(g).replace(/=/g,"").replace(/\//g,"_").replace(/\+/g,"-");var i=j(h+".q.js");return f.replace(/\?.*$/,"").replace(/\/__p__\.js$/,"")+"/"+i;function j(l){return k(k(l).match(/[\s\S]{1,255}/g).join("/"))}function k(m){return m.split("").reverse().join("")}}function appendQueryString(n,o){var p=n.indexOf("?")>-1?"&":"?";return n+p+o} }),(function(){var Promise=phast.ES6Promise.Promise;phast.ResourceLoader=function(a,b){this.get=function(c){return b.get(c).then(function(d){if(typeof d!=="string"){throw new Error("response should be string")}return d}).catch(function(){var e=a.get(c);e.then(function(f){b.set(c,f)});return e})}};phast.ResourceLoader.RequestParams={};phast.ResourceLoader.RequestParams.FaultyParams={};phast.ResourceLoader.RequestParams.fromString=function(g){try{return JSON.parse(g)}catch(h){return phast.ResourceLoader.RequestParams.FaultyParams}};phast.ResourceLoader.BundlerServiceClient=function(i,j,k){var l=phast.ResourceLoader.BundlerServiceClient.RequestsPack;var m=l.PackItem;var n;this.get=function(q){if(q===phast.ResourceLoader.RequestParams.FaultyParams){return Promise.reject(new Error("Parameters did not parse as JSON"))}return new Promise(function(r,s){if(n===undefined){n=new l(j)}n.add(new m({success:r,error:s},q));setTimeout(o);if(n.toQuery().length>4500){console.log("[Phast] Resource loader: Pack got too big; flushing early...");o()}})};function o(){if(n===undefined){return}var t=n;n=undefined;p(t)}function p(u){var v=phast.buildServiceUrl({serviceUrl:i,pathInfo:k},"service=bundler&"+u.toQuery());var w=function(){console.error("[Phast] Request to bundler failed with status",y.status);console.log("URL:",v);u.handleError()};var x=function(){if(y.status>=200&&y.status<300){u.handleResponse(y.responseText)}else{u.handleError()}};var y=new XMLHttpRequest;y.open("GET",v);y.addEventListener("error",w);y.addEventListener("abort",w);y.addEventListener("load",x);y.send()}};phast.ResourceLoader.BundlerServiceClient.RequestsPack=function(z){var A={};this.getLength=function(){var F=0;for(var G in A){F++}return F};this.add=function(H){var I;if(H.params.token){I="token="+H.params.token}else if(H.params.ref){I="ref="+H.params.ref}else{I=""}if(!A[I]){A[I]={params:H.params,requests:[H.request]}}else{A[I].requests.push(H.request)}};this.toQuery=function(){var J=[],K=[],L="";B().forEach(function(M){var N,O;for(var P in A[M].params){if(P==="cacheMarker"){K.push(A[M].params.cacheMarker);continue}N=z[P]?z[P]:P;if(P==="strip-imports"){O=encodeURIComponent(N)}else if(P==="src"){O=encodeURIComponent(N)+"="+encodeURIComponent(C(A[M].params.src,L));L=A[M].params.src}else{O=encodeURIComponent(N)+"="+encodeURIComponent(A[M].params[P])}J.push(O)}});if(K.length>0){J.unshift("c="+phast.hash(K.join("|"),23045))}return E(J.join("&"))};function B(){return Object.keys(A).sort(function(R,S){return Q(R,S)?1:Q(S,R)?-1:0});function Q(T,U){if(typeof A[T].params.src!=="undefined"&&typeof A[U].params.src!=="undefined"){return A[T].params.src>A[U].params.src}return T>U}}function C(V,W){var X=0,Y=Math.pow(36,2)-1;while(X<W.length&&V[X]===W[X]){X++}X=Math.min(X,Y);return D(X)+""+V.substr(X)}function D(Z){var $=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];var _=Z%36;var aa=Math.floor((Z-_)/36);return $[aa]+$[_]}function E(ba){if(!/(^|&)s=/.test(ba)){return ba}return ba.replace(/(%..)|([A-M])|([N-Z])/gi,function(ca,da,ea,fa){if(da){return ca}return String.fromCharCode(ca.charCodeAt(0)+(ea?13:-13))})}this.handleResponse=function(ga){try{var ha=JSON.parse(ga)}catch(ja){this.handleError();return}var ia=B();if(ha.length!==ia.length){console.error("[Phast] Requested",ia.length,"items from bundler, but got",ha.length,"response(s)");this.handleError();return}ha.forEach(function(ka,la){if(ka.status===200){A[ia[la]].requests.forEach(function(ma){ma.success(ka.content)})}else{A[ia[la]].requests.forEach(function(na){na.error(new Error("Got from bundler: "+JSON.stringify(ka)))})}})}.bind(this);this.handleError=function(){for(var oa in A){A[oa].requests.forEach(function(pa){pa.error()})}}};phast.ResourceLoader.BundlerServiceClient.RequestsPack.PackItem=function(qa,ra){this.request=qa;this.params=ra};phast.ResourceLoader.IndexedDBStorage=function(sa){var ta=phast.ResourceLoader.IndexedDBStorage;var ua=ta.logPrefix;var va=ta.requestToPromise;var wa;Ba();this.get=function(Ca){return xa("readonly").then(function(Da){return va(Da.get(Ca)).catch(ya("reading from store"))})};this.store=function(Ea){return xa("readwrite").then(function(Fa){return va(Fa.put(Ea)).catch(ya("writing to store"))})};this.clear=function(){return xa("readwrite").then(function(Ga){return va(Ga.clear())})};this.iterateOnAll=function(Ha){return xa("readonly").then(function(Ia){return za(Ha,Ia.openCursor()).catch(ya("iterating on all"))})};function xa(Ja){return wa.get().then(function(Ka){try{return Ka.transaction(sa.storeName,Ja).objectStore(sa.storeName)}catch(La){console.error(ua,"Could not open store; recreating database:",La);Aa();throw La}})}function ya(Ma){return function(Na){console.error(ua,"Error "+Ma+":",Na);Aa();throw Na}}function za(Oa,Pa){return new Promise(function(Qa,Ra){Pa.onsuccess=function(Sa){var Ta=Sa.target.result;if(Ta){Oa(Ta.value);Ta.continue()}else{Qa()}};Pa.onerror=Ra})}function Aa(){var Ua=wa.dropDB().then(Ba);wa={get:function(){return Promise.reject(new Error("Database is being dropped and recreated"))},dropDB:function(){return Ua}}}function Ba(){wa=new phast.ResourceLoader.IndexedDBStorage.Connection(sa)}};phast.ResourceLoader.IndexedDBStorage.logPrefix="[Phast] Resource loader:";phast.ResourceLoader.IndexedDBStorage.requestToPromise=function(Va){return new Promise(function(Wa,Xa){Va.onsuccess=function(){Wa(Va.result)};Va.onerror=function(){Xa(Va.error)}})};phast.ResourceLoader.IndexedDBStorage.ConnectionParams=function(){this.dbName="phastResourcesCache";this.dbVersion=1;this.storeName="resources"};phast.ResourceLoader.IndexedDBStorage.StoredResource=function(Ya,Za){this.token=Ya;this.content=Za};phast.ResourceLoader.IndexedDBStorage.Connection=function($a){var _a=phast.ResourceLoader.IndexedDBStorage.logPrefix;var a0=phast.ResourceLoader.IndexedDBStorage.requestToPromise;var b0;this.get=c0;this.dropDB=d0;function c0(){if(!b0){b0=e0($a)}return b0}function d0(){return c0().then(function(g0){console.error(_a,"Dropping DB");g0.close();b0=null;return a0(window.indexedDB.deleteDatabase($a.dbName))})}function e0(h0){if(typeof window.indexedDB==="undefined"){return Promise.reject(new Error("IndexedDB is not available"))}var i0=window.indexedDB.open(h0.dbName,h0.dbVersion);i0.onupgradeneeded=function(){f0(i0.result,h0)};return a0(i0).then(function(j0){j0.onversionchange=function(){console.debug(_a,"Closing DB");j0.close();if(b0){b0=null}};return j0}).catch(function(k0){console.log(_a,"IndexedDB cache is not available. This is usually due to using private browsing mode.");throw k0})}function f0(l0,m0){l0.createObjectStore(m0.storeName,{keyPath:"token"})}};phast.ResourceLoader.StorageCache=function(n0,o0){var p0=phast.ResourceLoader.IndexedDBStorage.StoredResource;this.get=function(x0){return s0(r0(x0))};this.set=function(y0,z0){return t0(r0(y0),z0,false)};var q0=null;function r0(A0){return JSON.stringify(A0)}function s0(B0){return o0.get(B0).then(function(C0){if(C0){return Promise.resolve(C0.content)}return Promise.resolve()})}function t0(D0,E0,F0){return w0().then(function(G0){var H0=E0.length+G0;if(H0>n0.maxStorageSize){return F0||E0.length>n0.maxStorageSize?Promise.reject(new Error("Storage quota will be exceeded")):u0(D0,E0)}q0=H0;var I0=new p0(D0,E0);return o0.store(I0)})}function u0(J0,K0){return v0().then(function(){return t0(J0,K0,true)})}function v0(){return o0.clear().then(function(){q0=0})}function w0(){if(q0!==null){return Promise.resolve(q0)}var L0=0;return o0.iterateOnAll(function(M0){L0+=M0.content.length}).then(function(){q0=L0;return Promise.resolve(q0)})}};phast.ResourceLoader.StorageCache.StorageCacheParams=function(){this.maxStorageSize=4.5*1024*1024};phast.ResourceLoader.BlackholeCache=function(){this.get=function(){return Promise.reject()};this.set=function(){return Promise.reject()}};phast.ResourceLoader.make=function(N0,O0,P0){var Q0=S0();var R0=new phast.ResourceLoader.BundlerServiceClient(N0,O0,P0);return new phast.ResourceLoader(R0,Q0);function S0(){var T0=window.navigator.userAgent;if(/safari/i.test(T0)&&!/chrome|android/i.test(T0)){console.log("[Phast] Not using IndexedDB cache on Safari");return new phast.ResourceLoader.BlackholeCache}else{var U0=new phast.ResourceLoader.IndexedDBStorage.ConnectionParams;var V0=new phast.ResourceLoader.IndexedDBStorage(U0);var W0=new phast.ResourceLoader.StorageCache.StorageCacheParams;return new phast.ResourceLoader.StorageCache(W0,V0)}}}; }),(function(){var Promise=phast.ES6Promise;phast.ResourceLoader.instance=phast.ResourceLoader.make(phast.config.resourcesLoader.serviceUrl,phast.config.resourcesLoader.shortParamsMappings,phast.config.resourcesLoader.pathInfo);phast.forEachSelectedElement=function(a,b){Array.prototype.forEach.call(window.document.querySelectorAll(a),b)};phast.once=function(c){var d=false;return function(){if(!d){d=true;c.apply(this,Array.prototype.slice(arguments))}}};phast.on=function(e,f){return new Promise(function(g){e.addEventListener(f,g)})};phast.wait=function(h){return new Promise(function(i){setTimeout(i,h)})};phast.on(document,"DOMContentLoaded").then(function(){var j,k;function l(n){return n&&n.nodeType===8&&/^\s*\[Phast\]/.test(n.textContent)}function m(o){while(o){if(l(o)){return o}o=o.nextSibling}return false}k=m(document.documentElement.nextSibling);if(k===false){k=m(document.body.firstChild)}if(k){j=k.textContent.replace(/^\s+|\s+$/g,"").split("\n");console.groupCollapsed(j.shift());console.log(j.join("\n"));console.groupEnd()}});phast.on(document,"DOMContentLoaded").then(function(){var p=performance.timing;var q=[];q.push(["Downloading phases:"]);q.push([" Look up hostname in DNS + %s ms",t(p.domainLookupEnd-p.fetchStart)]);q.push([" Establish connection + %s ms",t(p.connectEnd-p.domainLookupEnd)]);q.push([" Send request + %s ms",t(p.requestStart-p.connectEnd)]);q.push([" Receive first byte + %s ms",t(p.responseStart-p.requestStart)]);q.push([" Download page + %s ms",t(p.responseEnd-p.responseStart)]);q.push([""]);q.push(["Totals:"]);q.push([" Time to first byte %s ms",t(p.responseStart-p.fetchStart)]);q.push([" (since request start) %s ms",t(p.responseStart-p.requestStart)]);q.push([" Total request time %s ms",t(p.responseEnd-p.fetchStart)]);q.push([" (since request start) %s ms",t(p.responseEnd-p.requestStart)]);q.push([" "]);var r=[];var s=[];q.forEach(function(u){r.push(u.shift());s=s.concat(u)});console.groupCollapsed("[Phast] Client-side performance metrics");console.log.apply(console,[r.join("\n")].concat(s));console.groupEnd();function t(v){v=""+v;while(v.length<4){v=" "+v}return v}}); }),(function(){var config=phast.config["script-proxy-service"];var urlPattern=/^(https?:)?\/\//;var typePattern=/^\s*(application|text)\/(x-)?(java|ecma|j|live)script/i;var cacheMarker=Math.floor((new Date).getTime()/1e3/config.urlRefreshTime);var whitelist=compileWhitelistPatterns(config.whitelist);phast.scripts.push(function(){overrideDOMMethod("appendChild");overrideDOMMethod("insertBefore")});function compileWhitelistPatterns(a){var b=/^(.)(.*)\1([a-z]*)$/i;var c=[];a.forEach(function(d){var e=b.exec(d);if(!e){window.console&&window.console.log("Phast: Not a pattern:",d);return}try{c.push(new RegExp(e[2],e[3]))}catch(f){window.console&&window.console.log("Phast: Failed to compile pattern:",d)}});return c}function checkWhitelist(g){for(var h=0;h<whitelist.length;h++){if(whitelist[h].exec(g)){return true}}return false}function overrideDOMMethod(i){var j=Element.prototype[i];var k=function(){var l=processNode(arguments[0]);var m=j.apply(this,arguments);l();return m};Element.prototype[i]=k;window.addEventListener("load",function(){if(Element.prototype[i]===k){delete Element.prototype[i]}})}function processNode(n){if(!n||n.nodeType!==Node.ELEMENT_NODE||n.tagName!=="SCRIPT"||!urlPattern.test(n.src)||n.type&&!typePattern.test(n.type)||n.src.substr(0,config.serviceUrl.length)===config.serviceUrl||!checkWhitelist(n.src)){return function(){}}var o=n.src;n.src=phast.buildServiceUrl(config,{service:"scripts",src:o,cacheMarker:cacheMarker});n.setAttribute("data-phast-rewritten","");return function(){n.src=o}} }),(function(){(function(){var a=function(){if(!("FontFace"in window)){return false}var b=new FontFace("t",'url( "data:font/woff2;base64,d09GMgABAAAAAADwAAoAAAAAAiQAAACoAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAABmAALAogOAE2AiQDBgsGAAQgBSAHIBuDAciO1EZ3I/mL5/+5/rfPnTt9/9Qa8H4cUUZxaRbh36LiKJoVh61XGzw6ufkpoeZBW4KphwFYIJGHB4LAY4hby++gW+6N1EN94I49v86yCpUdYgqeZrOWN34CMQg2tAmthdli0eePIwAKNIIRS4AGZFzdX9lbBUAQlm//f262/61o8PlYO/D1/X4FrWFFgdCQD9DpGJSxmFyjOAGUU4P0qigcNb82GAAA" ) format( "woff2" )',{});b.load()["catch"](function(){});return b.status=="loading"||b.status=="loaded"}();if(a){return}console.log("[Phast] Browser does not support WOFF2, falling back to original stylesheets");Array.prototype.forEach.call(document.querySelectorAll("style[data-phast-ie-fallback-url]"),function(c){var d=document.createElement("link");if(c.hasAttribute("media")){d.setAttribute("media",c.getAttribute("media"))}d.setAttribute("rel","stylesheet");d.setAttribute("href",c.getAttribute("data-phast-ie-fallback-url"));c.parentNode.insertBefore(d,c);c.parentNode.removeChild(c)});Array.prototype.forEach.call(document.querySelectorAll("style[data-phast-nested-inlined]"),function(e){e.parentNode.removeChild(e)})})(); }),(function(){phast.stylesLoading=0;var resourceLoader=phast.ResourceLoader.instance;phast.forEachSelectedElement("style[data-phast-params]",function(a){var b=a.getAttribute("data-phast-params");var c=phast.ResourceLoader.RequestParams.fromString(b);phast.stylesLoading++;resourceLoader.get(c).then(function(d){a.textContent=d;a.removeAttribute("data-phast-params")}).catch(function(e){console.warn("[Phast] Failed to load CSS",c,e);var f=a.getAttribute("data-phast-original-src");if(!f){console.error("[Phast] No data-phast-original-src on <style>!",a);return}console.info("[Phast] Falling back to <link> element for",f);var g=document.createElement("link");g.href=f;g.media=a.media;g.rel="stylesheet";g.addEventListener("load",function(){if(a.parentNode){a.parentNode.removeChild(a)}});a.parentNode.insertBefore(g,a.nextSibling)}).finally(function(){phast.stylesLoading--;if(phast.stylesLoading===0&&phast.onStylesLoaded){phast.onStylesLoaded()}})});(function(){var h=[];phast.forEachSelectedElement("style[data-phast-original-id]",function(i){var j=i.getAttribute("data-phast-original-id");if(h[j]){return}h[j]=true;console.warn("[Phast] The style element with id",j,"has been split into multiple style tags due to @import statements and the id attribute has been removed. Normally, this does not cause any issues.")})})(); }),(function(){var Promise=phast.ES6Promise;var hasCurrentScript=!!document.currentScript;phast.ScriptsLoader={};phast.ScriptsLoader.getScriptsInExecutionOrder=function(a,b){var c=Array.prototype.slice.call(a.querySelectorAll('script[type="text/phast"]')).filter(g);var d=[],e=[];for(var f=0;f<c.length;f++){if(getSrc(c[f])!==undefined&&isDefer(c[f])){e.push(c[f])}else{d.push(c[f])}}return d.concat(e).map(function(j){return b.makeScriptFromElement(j)});function g(k){try{var l=phast.config.scriptsLoader.csp}catch(m){return true}if(l.nonce==null){return true}if(k.nonce===l.nonce){return true}try{h(l,k)}catch(n){console.error("Could not send CSP report due to error:",n)}if(l.reportOnly){console.warn("Script with missing or invalid nonce would not be executed (but report-only mode is enabled):",k);return true}console.warn("Script with missing or invalid nonce will not be executed:",k);return false}function h(o,p){var q={"blocked-uri":getSrc(p),disposition:o.reportOnly?"report":"enforce","document-uri":location.href,referrer:a.referrer,"script-sample":i(p),implementation:"phast"};try{p.dispatchEvent(new SecurityPolicyViolationEvent("securitypolicyviolation",{blockedURI:q["blocked-uri"],disposition:q["disposition"],documentURI:q["document-uri"],effectiveDirective:"script-src-elem",originalPolicy:"phast",referrer:q["referrer"],sample:q["script-sample"],statusCode:200,violatedDirective:"script-src-elem"}))}catch(s){console.error("[Phast] Could not dispatch securitypolicyviolation event",s)}if(!o.reportUri){return}var r={"csp-report":q};fetch(o.reportUri,{method:"POST",headers:{"Content-Type":"application/csp-report"},credentials:"same-origin",redirect:"error",keepalive:true,body:JSON.stringify(r)})}function i(t){if(!t.hasAttribute("src")){return t.textContent.substr(0,40)}}};phast.ScriptsLoader.executeScripts=function(u){var v=u.map(function(x){return x.init()});var w=Promise.resolve();u.forEach(function(y){w=phast.ScriptsLoader.chainScript(w,y)});return w.then(function(){return Promise.all(v).catch(function(){})})};phast.ScriptsLoader.chainScript=function(z,A){var B;try{if(A.describe){B=A.describe()}else{B="unknown script"}}catch(C){B="script.describe() failed"}return z.then(function(){var D=A.execute();D.then(function(){console.debug("✓",B)});return D}).catch(function(E){console.error("✘",B);if(E){console.log(E)}})};var insertBefore=window.Element.prototype.insertBefore;phast.ScriptsLoader.Utilities=function(F){this._document=F;var G=0;function H(R){return new Promise(function(S){var T="PhastCompleteScript"+ ++G;var U=I(R);var V=I(T+"()");window[T]=W;F.body.appendChild(U);F.body.appendChild(V);function W(){S();F.body.removeChild(U);F.body.removeChild(V);delete window[T]}})}function I(X){var Y=F.createElement("script");Y.textContent=X;Y.nonce=phast.config.scriptsLoader.csp.nonce;return Y}function J(Z){var $=F.createElement(Z.nodeName);Array.prototype.forEach.call(Z.attributes,function(_){$.setAttribute(_.nodeName,_.nodeValue)});return $}function K(aa){aa.removeAttribute("data-phast-params");var ba={};Array.prototype.map.call(aa.attributes,function(ca){return ca.nodeName}).map(function(da){var ea=da.match(/^data-phast-original-(.*)/i);if(ea){ba[ea[1].toLowerCase()]=aa.getAttribute(da);aa.removeAttribute(da)}});Object.keys(ba).sort().map(function(fa){aa.setAttribute(fa,ba[fa])});if(!("type"in ba)){aa.removeAttribute("type")}}function L(ga,ha){return new Promise(function(ia,ja){var ka=ha.getAttribute("src");ha.addEventListener("load",ia);ha.addEventListener("error",ja);ha.removeAttribute("src");insertBefore.call(ga.parentNode,ha,ga);ga.parentNode.removeChild(ga);if(ka){ha.setAttribute("src",ka)}})}function M(la,ma){return O(la,function(){return P(la,function(){return H(ma)})})}function N(na,oa){return O(oa,function(){return L(na,oa)})}function O(pa,qa){var ra=pa.nextElementSibling;var sa=Promise.resolve();var ta;if(isAsync(pa)){ta="async"}else if(isDefer(pa)){ta="defer"}F.write=function(xa){if(ta){console.warn("document.write call from "+ta+" script ignored");return}ua(xa)};F.writeln=function(ya){if(ta){console.warn("document.writeln call from "+ta+" script ignored");return}ua(ya+"\n")};function ua(za){var Aa=F.createElement("div");Aa.innerHTML=za;var Ba=va(Aa);if(ra&&ra.parentNode!==pa.parentNode){ra=pa.nextElementSibling}while(Aa.firstChild){pa.parentNode.insertBefore(Aa.firstChild,ra)}Ba.map(wa)}function va(Ca){return Array.prototype.slice.call(Ca.getElementsByTagName("script")).filter(function(Da){var Ea=Da.getAttribute("type");return!Ea||/^(text|application)\/javascript(;|$)/i.test(Ea)})}function wa(Fa){var Ga=new phast.ScriptsLoader.Scripts.Factory(F);var Ha=Ga.makeScriptFromElement(Fa);sa=phast.ScriptsLoader.chainScript(sa,Ha)}return qa().then(function(){return sa}).finally(function(){delete F.write;delete F.writeln})}function P(Ia,Ja){if(hasCurrentScript){try{Object.defineProperty(F,"currentScript",{configurable:true,get:function(){return Ia}})}catch(Ka){console.error("[Phast] Unable to override document.currentScript on this browser: ",Ka)}}return Ja().finally(function(){if(hasCurrentScript){delete F.currentScript}})}function Q(La){var Ma=F.createElement("link");Ma.setAttribute("rel","preload");Ma.setAttribute("as","script");Ma.setAttribute("href",La);F.head.appendChild(Ma)}this.executeString=H;this.copyElement=J;this.restoreOriginals=K;this.replaceElement=L;this.writeProtectAndExecuteString=M;this.writeProtectAndReplaceElement=N;this.addPreload=Q};phast.ScriptsLoader.Scripts={};phast.ScriptsLoader.Scripts.InlineScript=function(Na,Oa){this._utils=Na;this._element=Oa;this.init=function(){return Promise.resolve()};this.execute=function(){var Pa=Oa.textContent.replace(/^\s*<!--.*\n/i,"");Na.restoreOriginals(Oa);return Na.writeProtectAndExecuteString(Oa,Pa)};this.describe=function(){return"inline script"}};phast.ScriptsLoader.Scripts.AsyncBrowserScript=function(Qa,Ra){var Sa;this._utils=Qa;this._element=Ra;this.init=function(){Qa.addPreload(getSrc(Ra));return new Promise(function(Ta){Sa=Ta})};this.execute=function(){var Ua=Qa.copyElement(Ra);Qa.restoreOriginals(Ua);Qa.replaceElement(Ra,Ua).then(Sa).catch(Sa);return Promise.resolve()};this.describe=function(){return"async script at "+getSrc(Ra)}};phast.ScriptsLoader.Scripts.SyncBrowserScript=function(Va,Wa){this._utils=Va;this._element=Wa;this.init=function(){Va.addPreload(getSrc(Wa));return Promise.resolve()};this.execute=function(){var Xa=Va.copyElement(Wa);Va.restoreOriginals(Xa);return Va.writeProtectAndReplaceElement(Wa,Xa)};this.describe=function(){return"sync script at "+getSrc(Wa)}};phast.ScriptsLoader.Scripts.AsyncAJAXScript=function(Ya,Za,$a,_a){this._utils=Ya;this._element=Za;this._fetch=$a;this._fallback=_a;var a0;var b0;this.init=function(){a0=$a(Za);return new Promise(function(c0){b0=c0})};this.execute=function(){a0.then(function(d0){Ya.restoreOriginals(Za);return Ya.writeProtectAndExecuteString(Za,d0).then(b0)}).catch(function(){_a.init();return _a.execute().then(b0)});return Promise.resolve()};this.describe=function(){return"bundled async script at "+Za.getAttribute("data-phast-original-src")}};phast.ScriptsLoader.Scripts.SyncAJAXScript=function(e0,f0,g0,h0){this._utils=e0;this._element=f0;this._fetch=g0;this._fallback=h0;var i0;this.init=function(){i0=g0(f0);return i0};this.execute=function(){return i0.then(function(j0){e0.restoreOriginals(f0);return e0.writeProtectAndExecuteString(f0,j0)}).catch(function(){h0.init();return h0.execute()})};this.describe=function(){return"bundled sync script at "+f0.getAttribute("data-phast-original-src")}};phast.ScriptsLoader.Scripts.Factory=function(k0,l0){var m0=phast.ScriptsLoader.Scripts;var n0=new phast.ScriptsLoader.Utilities(k0);this.makeScriptFromElement=function(q0){var r0;if(q0.getAttribute("data-phast-debug-force-method")&&window.location.host.match(/\.test$/)){return new m0[q0.getAttribute("data-phast-debug-force-method")](n0,q0)}if(o0(q0)){if(isAsync(q0)){r0=new m0.AsyncBrowserScript(n0,q0);return l0?new m0.AsyncAJAXScript(n0,q0,l0,r0):r0}r0=new m0.SyncBrowserScript(n0,q0);return l0?new m0.SyncAJAXScript(n0,q0,l0,r0):r0}if(p0(q0)){return new m0.InlineScript(n0,q0)}if(isAsync(q0)){return new m0.AsyncBrowserScript(n0,q0)}return new m0.SyncBrowserScript(n0,q0)};function o0(s0){return s0.hasAttribute("data-phast-params")}function p0(t0){return!t0.hasAttribute("src")}};function getSrc(u0){if(u0.hasAttribute("data-phast-original-src")){return u0.getAttribute("data-phast-original-src")}else if(u0.hasAttribute("src")){return u0.getAttribute("src")}}function isAsync(v0){return v0.hasAttribute("async")||v0.hasAttribute("data-phast-async")}function isDefer(w0){return w0.hasAttribute("defer")||w0.hasAttribute("data-phast-defer")} }),(function(){var Promise=phast.ES6Promise;var go=phast.once(loadScripts);phast.on(document,"DOMContentLoaded").then(function(){if(phast.stylesLoading){phast.onStylesLoaded=go;setTimeout(go,4e3)}else{Promise.resolve().then(go)}});var loadFiltered=false;window.addEventListener("load",function(a){if(!loadFiltered){a.stopImmediatePropagation()}loadFiltered=true});document.addEventListener("readystatechange",function(b){if(document.readyState==="loading"){b.stopImmediatePropagation()}});var didSetTimeout=false;var originalSetTimeout=window.setTimeout;window.setTimeout=function(c,d){if(!d||d<0){didSetTimeout=true}return originalSetTimeout.apply(window,arguments)};function loadScripts(){var e=new phast.ScriptsLoader.Scripts.Factory(document,fetchScript);var f=phast.ScriptsLoader.getScriptsInExecutionOrder(document,e);if(f.length===0){return}setReadyState("loading");phast.ScriptsLoader.executeScripts(f).then(restoreReadyState)}function setReadyState(g){try{Object.defineProperty(document,"readyState",{configurable:true,get:function(){return g}})}catch(h){console.warn("[Phast] Unable to override document.readyState on this browser: ",h)}}function restoreReadyState(){i().then(function(){setReadyState("interactive");triggerEvent(document,"readystatechange");return i()}).then(function(){triggerEvent(document,"DOMContentLoaded");return i()}).then(function(){delete document["readyState"];triggerEvent(document,"readystatechange");if(loadFiltered){triggerEvent(window,"load")}loadFiltered=true});function i(){return new Promise(function(j){(function k(l){if(didSetTimeout&&l<10){didSetTimeout=false;originalSetTimeout.call(window,function(){k(l+1)})}else{requestAnimationFrame(j)}})(0)})}}function triggerEvent(m,n){var o=document.createEvent("Event");o.initEvent(n,true,true);m.dispatchEvent(o)}function fetchScript(p){return phast.ResourceLoader.instance.get(phast.ResourceLoader.RequestParams.fromString(p.getAttribute("data-phast-params")))} })];(phast.scripts.shift())();})({"config":"eyJyZXNvdXJjZXNMb2FkZXIiOnsic2VydmljZVVybCI6Imh0dHBzOi8vc29tMm55bmV0d29yay5jb20vd3AtY29udGVudC9wbHVnaW5zL3BoYXN0cHJlc3MvcGhhc3QucGhwL19fcF9fLmpzPyIsInNob3J0UGFyYW1zTWFwcGluZ3MiOnsic3JjIjoicyIsInN0cmlwLWltcG9ydHMiOiJpIiwiY2FjaGVNYXJrZXIiOiJjIiwidG9rZW4iOiJ0IiwiaXNTY3JpcHQiOiJqIiwicmVmIjoiciJ9LCJwYXRoSW5mbyI6dHJ1ZX0sInNjcmlwdC1wcm94eS1zZXJ2aWNlIjp7InNlcnZpY2VVcmwiOiJodHRwczovL3NvbTJueW5ldHdvcmsuY29tL3dwLWNvbnRlbnQvcGx1Z2lucy9waGFzdHByZXNzL3BoYXN0LnBocCIsInBhdGhJbmZvIjp0cnVlLCJ1cmxSZWZyZXNoVGltZSI6NzIwMCwid2hpdGVsaXN0IjpbIn5eaHR0cHM/Oi8vc29tMm55bmV0d29ya1xcLmNvbS9+Il19LCJzY3JpcHRzTG9hZGVyIjp7ImNzcCI6eyJub25jZSI6bnVsbCwicmVwb3J0T25seSI6ZmFsc2UsInJlcG9ydFVyaSI6bnVsbH19fQ=="});</script></body> </html> <!-- [Phast] Document optimized in 71ms -->