Boostez la Visibilité de Votre Entreprise : Stratégies Efficaces pour Se Démarquer

Boostez la Visibilité de Votre Entreprise : Stratégies Efficaces pour Se Démarquer

De nos jours, la visibilité est cruciale pour le succès de toute entreprise. Avec une forte concurrence dans presque tous les secteurs, se démarquer devient un véritable défi. Cet article propose 10 stratégies efficaces pour augmenter la visibilité de votre entreprise et vous aider à vous démarquer.

Voici un bref aperçu des stratégies que nous explorerons :

  • Utiliser le SEO
  • Être présent sur les réseaux sociaux
  • Marketing de contenu
  • Publicité en ligne
  • Collaboration et partenariats
  • Référencement local
  • Utiliser le marketing par email
  • Relations publiques et médias
  • Optimisation mobile
  • Utiliser des influenceurs

L’objectif de cet article est de vous fournir des conseils pratiques et faciles à mettre en œuvre pour améliorer la visibilité de votre entreprise.

Stratégie 1: Utiliser le SEO

Comprendre les bases du SEO

Le SEO (Search Engine Optimization) est essentiel pour apparaître en haut des résultats des moteurs de recherche. Comprendre les bases, comme les balises </code> et <code></code>, est crucial pour optimiser votre site. </p> <h3>Optimiser le contenu pour les moteurs de recherche</h3> <p> Le contenu doit être pertinent, bien structuré et inclure des mots-clés. Les balises HTML comme <code></p> <h1></code>, <code></p> <h2></code>, et <code></p> <p></code> doivent être correctement utilisées pour maximiser l’efficacité. </p> <h3>Utiliser des mots-clés pertinents</h3> <p> La recherche de mots-clés est fondamentale. Utilisez des outils comme Google Keyword Planner pour identifier les mots-clés les plus recherchés dans votre domaine et intégrez-les naturellement dans votre contenu. </p> </section> <section id="social-media"> <h2>Stratégie 2: Être présent sur les réseaux sociaux</h2> <h3>Choisir les bonnes plateformes pour votre cible</h3> <p> Tous les réseaux sociaux ne sont pas égaux. Identifiez où se trouve votre audience—Facebook, Instagram, LinkedIn ou Twitter—and concentrez vos efforts sur ces plateformes. </p> <h3>Créer un contenu engageant</h3> <p> Le contenu doit être attrayant et pertinent. Utilisez des visuels, des vidéos, et des infographies pour captiver votre audience. </p> <h3>Interagir avec votre audience</h3> <p> Ne vous contentez pas de publier; interagissez avec vos abonnés. Répondez aux commentaires, participez aux discussions et soyez présent. </p> </section> <section id="content-marketing"> <h2>Stratégie 3: Marketing de contenu</h2> <h3>Importance du contenu de qualité</h3> <p> Un contenu de qualité est roi. Il établit votre expertise, attire du trafic et peut convertir des visiteurs en clients. </p> <h3>Types de contenus efficaces</h3> <p> Différents types de contenu fonctionnent différemment selon la cible : blogs pour SEO, vidéos pour engagement, infographies pour partager des informations rapidement. Utilisez une variété pour maximiser votre impact. </p> <h3>Planifier une stratégie de contenu</h3> <p> Une stratégie de contenu bien planifiée fait toute la différence. Définissez vos objectifs, créez un calendrier éditorial et mesurez régulièrement les résultats pour ajuster votre approche. </p> </section> <section id="online-advertising"> <h2>Stratégie 4: Publicité en ligne</h2> <h3>Utiliser Google Ads</h3> <p> Google Ads permet d’apparaître en tête des résultats de recherche, mais nécessite une gestion attentive des mots-clés et un suivi des performances. </p> <h3>Publicité sur les réseaux sociaux</h3> <p> Les publicités sur les réseaux sociaux, comme Facebook Ads, permettent de cibler précisément votre audience, augmentant ainsi la visibilité et les conversions. </p> <h3>Mesurer les résultats des campagnes publicitaires</h3> <p> Utilisez des outils d’analyse pour suivre les performances de vos campagnes, ajustez-les en fonction des résultats pour maximiser le retour sur investissement. </p> </section> <section id="collaboration-partnerships"> <h2>Stratégie 5: Collaboration et partenariats</h2> <h3>Identifier des partenaires potentiels</h3> <p> Recherchez des entreprises ou influenceurs partageant votre audience, mais pas en concurrence directe avec vous. </p> <h3>Bénéfices des collaborations</h3> <p> Les collaborations peuvent offrir une exposition mutuelle, partager des ressources et renforcer la crédibilité. </p> <h3>Exemples de partenariats réussis</h3> <p> Regardez des exemples de collaborations réussies dans votre secteur pour vous inspirer et comprendre ce qui fonctionne. </p> </section> <section id="local-seo"> <h2>Stratégie 6: Référencement local</h2> <h3>Inscrire l’entreprise sur Google My Business</h3> <p> Un profil Google My Business optimise votre présence locale, facilitant la découverte de votre entreprise par les clients locaux. </p> <h3>Obtenir des avis clients</h3> <p> Les avis clients boosts votre crédibilité et votre classement dans les résultats de recherche locale. </p> <h3>Participer à des événements locaux</h3> <p> Participez à des événements locaux pour accroître votre visibilité et nouer des relations avec les clients et les partenaires potentiels. </p> </section> <section id="email-marketing"> <h2>Stratégie 7: Utiliser le marketing par email</h2> <h3>Construire une liste de diffusion</h3> <p> Une liste de diffusion bien segmentée permet de cibler spécifiquement vos clients potentiels avec des messages pertinents. </p> <h3>Rédiger des emails accrocheurs</h3> <p> Les emails doivent être accrocheurs et apporter une réelle valeur ajoutée à vos abonnés pour inciter à l’action. </p> <h3>Analyser les performances des campagnes par email</h3> <p> Mesurez les taux d’ouverture, de clics et de conversion pour ajuster votre stratégie et améliorer les résultats. </p> </section> <section id="pr-media"> <h2>Stratégie 8: Relations publiques et médias</h2> <h3>Rédiger des communiqués de presse efficaces</h3> <p> Un bon communiqué de presse doit être clair, concis et contenir des informations percutantes pour attirer l’attention des journalistes. </p> <h3>Nouer des relations avec les journalistes</h3> <p> Établissez des relations durables avec les journalistes pour bénéficier de couvertures médiatiques régulières. </p> <h3>Utiliser les médias pour accroître la visibilité</h3> <p> Utilisez tous les canaux disponibles—journaux, magazines, blogs influents—pour publier des articles sur votre entreprise. </p> </section> <section id="mobile-optimization"> <h2>Stratégie 9: Optimisation mobile</h2> <h3>Importance d’un site web mobile-friendly</h3> <p> Plus de la moitié du trafic web provient désormais des appareils mobiles. Un site non optimisé pour mobile perd des clients potentiels. </p> <h3>Astuces pour optimiser le site pour les appareils mobiles</h3> <p> Utilisez un design responsive, des images compressées et un temps de chargement rapide pour améliorer l’expérience utilisateur. </p> <h3>Tester régulièrement la compatibilité mobile</h3> <p> Effectuez des tests réguliers pour vous assurer que votre site fonctionne bien sur toutes les tailles d’écran et résolutions. </p> </section> <section id="influencers"> <h2>Stratégie 10: Utiliser des influenceurs</h2> <h3>Identifier les influenceurs pertinents pour votre niche</h3> <p> Cherchez des influenceurs ayant une audience pertinente et engageante pour votre secteur pour garantir un impact maximal. </p> <h3>Collaborer avec des influenceurs pour des campagnes</h3> <p> Les collaborations avec des influenceurs peuvent booster votre visibilité en capitalisant sur leur crédibilité et leur audience. </p> <h3>Mesurer l’impact des collaborations avec les influenceurs</h3> <p> Analysez les métriques clés telles que l’engagement, les clics et les conversions pour évaluer le succès de vos collaborations. </p> </section> <section id="conclusion"> <p> Pour résumer, voici les 10 stratégies pour augmenter la visibilité de votre entreprise : </p> <ul> <li>SEO</li> <li>Réseaux sociaux</li> <li>Marketing de contenu</li> <li>Publicité en ligne</li> <li>Collaborations et partenariats</li> <li>Référencement local</li> <li>Marketing par email</li> <li>Relations publiques</li> <li>Optimisation mobile</li> <li>Utiliser des influenceurs</li> </ul> <p> En mettant en pratique ces conseils, vous pourrez considérablement améliorer la visibilité de votre entreprise. N’hésitez pas à expérimenter et adapter ces stratégies à vos besoins spécifiques. </p> <p> Prêt à commencer ? Mettez en œuvre ces stratégies dès aujourd’hui et observez votre entreprise se démarquer de la concurrence ! </p> </section> </article> <p></body></html></p> </div> <footer class="entry-meta" aria-label="Entry meta"> <span class="cat-links"><span class="gp-icon icon-categories"><svg viewBox="0 0 512 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em"><path d="M0 112c0-26.51 21.49-48 48-48h110.014a48 48 0 0143.592 27.907l12.349 26.791A16 16 0 00228.486 128H464c26.51 0 48 21.49 48 48v224c0 26.51-21.49 48-48 48H48c-26.51 0-48-21.49-48-48V112z" /></svg></span><span class="screen-reader-text">Categories </span><a href="https://www.entrepriseevaluation.com/publicite/" rel="category tag">Publicité</a></span> <nav id="nav-below" class="post-navigation" aria-label="Posts"> <div class="nav-previous"><span class="gp-icon icon-arrow-left"><svg viewBox="0 0 192 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M178.425 138.212c0 2.265-1.133 4.813-2.832 6.512L64.276 256.001l111.317 111.277c1.7 1.7 2.832 4.247 2.832 6.513 0 2.265-1.133 4.813-2.832 6.512L161.43 394.46c-1.7 1.7-4.249 2.832-6.514 2.832-2.266 0-4.816-1.133-6.515-2.832L16.407 262.514c-1.699-1.7-2.832-4.248-2.832-6.513 0-2.265 1.133-4.813 2.832-6.512l131.994-131.947c1.7-1.699 4.249-2.831 6.515-2.831 2.265 0 4.815 1.132 6.514 2.831l14.163 14.157c1.7 1.7 2.832 3.965 2.832 6.513z" fill-rule="nonzero" /></svg></span><span class="prev"><a href="https://www.entrepriseevaluation.com/10-techniques-pour-booster-la-visibilite-en-ligne-de-votre-entreprise/" rel="prev">10 Techniques Pour Booster La Visibilité En Ligne De Votre Entreprise</a></span></div><div class="nav-next"><span class="gp-icon icon-arrow-right"><svg viewBox="0 0 192 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M178.425 256.001c0 2.266-1.133 4.815-2.832 6.515L43.599 394.509c-1.7 1.7-4.248 2.833-6.514 2.833s-4.816-1.133-6.515-2.833l-14.163-14.162c-1.699-1.7-2.832-3.966-2.832-6.515 0-2.266 1.133-4.815 2.832-6.515l111.317-111.316L16.407 144.685c-1.699-1.7-2.832-4.249-2.832-6.515s1.133-4.815 2.832-6.515l14.163-14.162c1.7-1.7 4.249-2.833 6.515-2.833s4.815 1.133 6.514 2.833l131.994 131.993c1.7 1.7 2.832 4.249 2.832 6.515z" fill-rule="nonzero" /></svg></span><span class="next"><a href="https://www.entrepriseevaluation.com/gerer-le-stress-au-travail-strategies-efficaces-pour-une-meilleure-productivite-en-entreprise/" rel="next">Gérer le Stress au Travail: Stratégies Efficaces pour une Meilleure Productivité en Entreprise</a></span></div> </nav> </footer> </div> </article> </main> </div> <div class="widget-area sidebar is-right-sidebar" id="right-sidebar"> <div class="inside-right-sidebar"> <aside id="block-7" class="widget inner-padding widget_block widget_search"><form role="search" method="get" action="https://www.entrepriseevaluation.com/" class="wp-block-search__button-outside wp-block-search__text-button wp-block-search" ><label class="wp-block-search__label" for="wp-block-search__input-1" >Rechercher</label><div class="wp-block-search__inside-wrapper " ><input class="wp-block-search__input" id="wp-block-search__input-1" placeholder="" value="" type="search" name="s" required /><button aria-label="Rechercher" class="wp-block-search__button wp-element-button" type="submit" >Rechercher</button></div></form></aside><aside id="block-6" class="widget inner-padding widget_block widget_recent_entries"><ul class="wp-block-latest-posts__list wp-block-latest-posts"><li><a class="wp-block-latest-posts__post-title" href="https://www.entrepriseevaluation.com/faire-un-cv-en-ligne-et-booster-vos-opportunites-avec-hellowork/">Faire un CV en ligne et booster vos opportunités avec HelloWork</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://www.entrepriseevaluation.com/recyclage-entreprise/">Quelles sont les règles de recyclage et de gestion des déchets en entreprise​ ?</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://www.entrepriseevaluation.com/chaussure-de-securite-parade/">Chaussures de sécurité : la protection indispensable en chantier</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://www.entrepriseevaluation.com/tpe-mobile-choisir-une-solution-dencaissement-par-smartphone/">TPE mobile : choisir une solution d’encaissement par smartphone</a></li> <li><a class="wp-block-latest-posts__post-title" href="https://www.entrepriseevaluation.com/tous-les-types-de-liasses-fiscales-comprendre-vos-obligations-et-declarer-en-ligne-avec-teledec/">Tous les types de liasses fiscales : comprendre vos obligations et déclarer en ligne avec Teledec</a></li> </ul></aside> </div> </div> </div> </div> <div class="site-footer grid-container"> <div id="footer-widgets" class="site footer-widgets"> <div class="footer-widgets-container grid-container"> <div class="inside-footer-widgets"> <div class="footer-widget-1"> <aside id="block-3" class="widget inner-padding widget_block widget_text"> <p>© 2025 - Entreprise Evaluation. Tous droits réservés </p> </aside> </div> <div class="footer-widget-2"> <aside id="block-4" class="widget inner-padding widget_block widget_text"> <p><a href="https://www.entrepriseevaluation.com/contact/">Contact</a> - <a href="https://www.entrepriseevaluation.com/mentions-legales/">Mentions légales</a> - <a href="https://www.entrepriseevaluation.com/sitemap_index.xml">Plan du site</a> - <a href="https://www.entrepriseevaluation.com/lequipe-de-redaction/">L'équipe de rédaction</a></p> </aside> </div> </div> </div> </div> <footer class="site-info" aria-label="Site" itemtype="https://schema.org/WPFooter" itemscope> <div class="inside-site-info grid-container"> <div class="copyright-bar"> <span class="copyright">© 2025 Entreprise évaluation</span> • Built with <a href="https://generatepress.com" itemprop="url">GeneratePress</a> </div> </div> </footer> </div> <a title="Scroll back to top" aria-label="Scroll back to top" rel="nofollow" href="#" class="generate-back-to-top" data-scroll-speed="400" data-start-scroll="300" role="button"> <span class="gp-icon icon-arrow-up"><svg viewBox="0 0 330 512" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" fill-rule="evenodd" clip-rule="evenodd" stroke-linejoin="round" stroke-miterlimit="1.414"><path d="M305.863 314.916c0 2.266-1.133 4.815-2.832 6.514l-14.157 14.163c-1.699 1.7-3.964 2.832-6.513 2.832-2.265 0-4.813-1.133-6.512-2.832L164.572 224.276 53.295 335.593c-1.699 1.7-4.247 2.832-6.512 2.832-2.265 0-4.814-1.133-6.513-2.832L26.113 321.43c-1.699-1.7-2.831-4.248-2.831-6.514s1.132-4.816 2.831-6.515L158.06 176.408c1.699-1.7 4.247-2.833 6.512-2.833 2.265 0 4.814 1.133 6.513 2.833L303.03 308.4c1.7 1.7 2.832 4.249 2.832 6.515z" fill-rule="nonzero" /></svg></span> </a><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/generatepress/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}</script> <script type="text/phast" id="generate-a11y">!function(){"use strict";if("querySelector"in document&&"addEventListener"in window){var e=document.body;e.addEventListener("pointerdown",(function(){e.classList.add("using-mouse")}),{passive:!0}),e.addEventListener("keydown",(function(){e.classList.remove("using-mouse")}),{passive:!0})}}();</script> <script type="text/phast" id="eio-lazy-load-js-before">var eio_lazy_vars = {"exactdn_domain":"","skip_autoscale":0,"threshold":0,"use_dpr":1};</script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-content/plugins/ewww-image-optimizer/includes/lazysizes.min.js?ver=821" data-phast-params='{"ref":"Zbi64x-wDZI"}' type="text/phast" data-phast-async id="eio-lazy-load-js" data-wp-strategy="async"></script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-includes/js/dist/hooks.min.js?ver=4d63a3d491d11ffd8ac6" data-phast-params='{"ref":"5kwolxQ5BnI"}' type="text/phast" id="wp-hooks-js"></script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-includes/js/dist/i18n.min.js?ver=5e580eb46a90c2b997e6" data-phast-params='{"ref":"entdAZEtRWw"}' type="text/phast" id="wp-i18n-js"></script> <script type="text/phast" id="wp-i18n-js-after">wp.i18n.setLocaleData({'text direction\u0004ltr':['ltr']});</script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-content/plugins/contact-form-7/includes/swv/js/index.js?ver=6.1.2" data-phast-params='{"ref":"eKs_8OvR_2k"}' type="text/phast" id="swv-js"></script> <script type="text/phast" id="contact-form-7-js-before">var wpcf7={"api":{"root":"https:\/\/www.entrepriseevaluation.com\/wp-json\/","namespace":"contact-form-7\/v1"},"cached":1};</script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-content/plugins/contact-form-7/includes/js/index.js?ver=6.1.2" data-phast-params='{"ref":"vbLlwCNpw3U"}' type="text/phast" id="contact-form-7-js"></script> <!--[if lte IE 11]> <script src="https://www.entrepriseevaluation.com/wp-content/themes/generatepress/assets/js/classList.min.js?ver=3.6.0" id="generate-classlist-js"></script> <![endif]--> <script type="text/phast" id="generate-menu-js-before">var generatepressMenu = {"toggleOpenedSubMenus":true,"openSubMenuLabel":"Open Sub-Menu","closeSubMenuLabel":"Close Sub-Menu"};</script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-content/themes/generatepress/assets/js/menu.min.js?ver=3.6.0" data-phast-params='{"ref":"AyD6Voxytqs"}' type="text/phast" id="generate-menu-js"></script> <script type="text/phast" id="generate-back-to-top-js-before">var generatepressBackToTop = {"smooth":true};</script> <script data-phast-original-src="https://www.entrepriseevaluation.com/wp-content/themes/generatepress/assets/js/back-to-top.min.js?ver=3.6.0" data-phast-params='{"ref":"GwQRmtWlSn8"}' type="text/phast" id="generate-back-to-top-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":"eyJyZXNvdXJjZXNMb2FkZXIiOnsic2VydmljZVVybCI6Imh0dHBzOi8vd3d3LmVudHJlcHJpc2VldmFsdWF0aW9uLmNvbS93cC1jb250ZW50L3BsdWdpbnMvcGhhc3RwcmVzcy9waGFzdC5waHAvX19wX18uanM/Iiwic2hvcnRQYXJhbXNNYXBwaW5ncyI6eyJzcmMiOiJzIiwic3RyaXAtaW1wb3J0cyI6ImkiLCJjYWNoZU1hcmtlciI6ImMiLCJ0b2tlbiI6InQiLCJpc1NjcmlwdCI6ImoiLCJyZWYiOiJyIn0sInBhdGhJbmZvIjp0cnVlfSwic2NyaXB0LXByb3h5LXNlcnZpY2UiOnsic2VydmljZVVybCI6Imh0dHBzOi8vd3d3LmVudHJlcHJpc2VldmFsdWF0aW9uLmNvbS93cC1jb250ZW50L3BsdWdpbnMvcGhhc3RwcmVzcy9waGFzdC5waHAiLCJwYXRoSW5mbyI6dHJ1ZSwidXJsUmVmcmVzaFRpbWUiOjcyMDAsIndoaXRlbGlzdCI6WyJ+Xmh0dHBzPzovL3d3d1xcLmVudHJlcHJpc2VldmFsdWF0aW9uXFwuY29tL34iXX0sInNjcmlwdHNMb2FkZXIiOnsiY3NwIjp7Im5vbmNlIjpudWxsLCJyZXBvcnRPbmx5IjpmYWxzZSwicmVwb3J0VXJpIjpudWxsfX19"});</script></body> </html> <!-- [Phast] Document optimized in 8ms -->