PageSourceSearch

https://redecilladelcampo.es/sites,_redecilladelcampo,_files,_lang…==6.2.0.pagespeed.jc.o9pt4NIFcG.js

js redecilladelcampo.es collected 2026-10-02 23:34:02 UTC 34,989 bytes, 5 lines download raw bytes

1var mod_pagespeed_ReSGDlAart = "window.drupalTranslations={\"strings\":{\"\":{\"Home\":\"Inicio\",\"Next\":\"Siguiente\",\"closed\":\"cerrado\",\"Cancel\":\"Cancelar\",\"Edit\":\"Editar\",\"Link\":\"Enlace\",\"Image\":\"Imagen\",\"Open\":\"Abierta\",\"Continue\":\"Continuar\",\"Close\":\"Cerrar\",\"Show\":\"Mostrar\",\"Select all rows in this table\":\"Seleccionar todas las filas de esta tabla\",\"Deselect all rows in this table\":\"Quitar la selecci\\u00f3n a todas las filas de esta tabla\",\"Extend\":\"Ampliar\",\"Changed\":\"Modificado\",\"Loading...\":\"Cargando...\",\"Please wait...\":\"Espere, por favor...\",\"Hide\":\"Ocultar\",\"Unlink\":\"Desvincular\",\"Not promoted\":\"No publicado en p\\u00e1gina principal\",\"Error message\":\"Mensaje de error\",\"Warning message\":\"Mensaje de advertencia\",\"Edit Link\":\"Editar enlace\",\"By @name on @date\":\"Por @name en @date\",\"By @name\":\"Por @name\",\"Alias: @alias\":\"Alias: @alias\",\"No alias\":\"Sin alias\",\"@label\":\"@label\",\"New revision\":\"Nueva revisi\\u00f3n\",\"Drag to re-order\":\"Arrastre para reordenar\",\"Status message\":\"Mensaje de estado\",\"An AJAX HTTP error occurred.\":\"Hubo un error HTTP AJAX.\",\"HTTP Result Code: !status\":\"C\\u00f3digo de Resultado HTTP: !status\",\"An AJAX HTTP request terminated abnormally.\":\"Una solicitud HTTP de AJAX termin\\u00f3 de manera anormal.\",\"Debugging information follows.\":\"A continuaci\\u00f3n se detalla la informaci\\u00f3n de depuraci\\u00f3n.\",\"Path: !uri\":\"Ruta: !uri\",\"StatusText: !statusText\":\"StatusText: !statusText\",\"ResponseText: !responseText\":\"ResponseText: !responseText\",\"ReadyState: !readyState\":\"ReadyState: !readyState\",\"Hide summary\":\"Ocultar resumen\",\"Edit summary\":\"Editar resumen\",\"Collapse\":\"Plegar\",\"The selected file %filename cannot be uploaded. Only files with the following extensions are allowed: %extensions.\":\"El archivo seleccionado %filename no se puede subir al servidor. Solo se permiten archivos con las siguientes extensiones: %extensions.\",\"Show row weights\":\"Mostrar pesos de la fila\",\"Hide row weights\":\"Ocultar pesos de la fila\",\"Close message\":\"Cerrar mensaje\",\"Needs to be updated\":\"Necesita ser actualizado\",\"Does not need to be updated\":\"No necesita ser actualizado\",\"Show all columns\":\"Mostrar todas las columnas\",\"Show table cells that were hidden to make the table fit within a small screen.\":\"Mostrar celdas de tablas que estaban ocultas para que la tabla se ajuste a una pantalla peque\\u00f1a.\",\"List additional actions\":\"Lista adicional de acciones\",\"Flag other translations as outdated\":\"Marcar las otras traducciones como obsoletas\",\"Do not flag other translations as outdated\":\"No marcar las otras traducciones como obsoletas\",\"opened\":\"abierto\",\"Horizontal orientation\":\"Orientaci\\u00f3n horizontal\",\"Vertical orientation\":\"Orientaci\\u00f3n vertical\",\"Tray orientation changed to @orientation.\":\"La orientaci\\u00f3n de la bandeja se ha cambiado a @orientation.\",\"You have unsaved changes.\":\"Hay cambios sin guardar.\",\"@action @title configuration options\":\"@action @title opciones de configuraci\\u00f3n\",\"Tabbing is no longer constrained by the Contextual module.\":\"Tabulando (Tabbing) ya no se ver\\u00e1 limitado por el m\\u00f3dulo Contextual (Contextual).\",\"Tabbing is constrained to a set of @contextualsCount and the edit mode toggle.\":\"La tabulaci\\u00f3n est\\u00e1 restringida a un conjunto de @contextualsCount y al cambio a modo de edici\\u00f3n.\",\"Press the esc key to exit.\":\"Presionar tecla esc para salir.\",\"@count contextual link\\u0003@count contextual links\":\"@count enlace contextual\\u0003@count enlaces contextuales\",\"!tour_item of !total\":\"!tour_item de !total\",\"End tour\":\"Final del recorrido\",\"The toolbar cannot be set to a horizontal orientation when it is locked.\":\"La barra de herramientas no puede ser puesta en orientaci\\u00f3n horizontal cuando esta bloqueada.\",\"Changing the text format to %text_format will permanently remove content that is not allowed in that text format.\\u003Cbr\\u003E\\u003Cbr\\u003ESave your changes before switching the text format to avoid losing data.\":\"Cambiar el formato de texto a %text_format eliminar\\u00e1 permanentemente el contenido que no est\\u00e1 permitido en ese formato de texto.\\u003Cbr\\u003E\\u003Cbr\\u003EGuarde sus datos antes de cambiar el formato de texto para evitar perder datos.\",\"Change text format?\":\"\\u00bfCambiar el formato de texto?\",\"Rich Text Editor, !label field\":\"Editor de texto con formato, campo !label\",\"Tray \\u0022@tray\\u0022 @action.\":\"Bandeja \\u0022@tray\\u0022 @action\",\"Tray @action.\":\"Bandeja @action.\",\"Hide lower priority columns\":\"Ocultar columnas de menor prioridad\",\"The response failed verification so will not be processed.\":\"La respuesta de verificaci\\u
100f3n fall\\u00f3, por lo que no se procesar\\u00e1.\",\"The callback URL is not local and not trusted: !url\":\"La URL de callback (llamada) no es local y no es confiable: !url\",\"CustomMessage: !customMessage\":\"CustomMessage: !customMessage\",\"Authored on @date\":\"Escrito el @date\",\"Insert this token into your form\":\"Inserte este comod\\u00edn en su formulario\",\"First click a text field to insert your tokens into.\":\"Primero haga clic en un campo de texto en el que quiera insertar sus patrones de reemplazo.\",\"Automatic alias\":\"Alias autom\\u00e1tico\",\"item\":\"elemento\",\"items\":\"elementos\",\"Expand all\":\"Expandir todo\",\"Collapse all\":\"Ocultar todo\",\"No revision\":\"Sin revisi\\u00f3n\"}},\"pluralFormula\":{\"1\":0,\"default\":1}};";
2var mod_pagespeed_dLUD3h0_e8 = "(function(){const settingsElement=document.querySelector('head > script[type=\"application/json\"][data-drupal-selector=\"drupal-settings-json\"], body > script[type=\"application/json\"][data-drupal-selector=\"drupal-settings-json\"]',);window.drupalSettings={};if(settingsElement!==null){window.drupalSettings=JSON.parse(settingsElement.textContent);}})();";
3var mod_pagespeed_Gz3E$c3ozg = "/**\n * @file\n * Defines the Drupal JavaScript API.\n */\n\n/**\n * A jQuery object, typically the return value from a `$(selector)` call.\n *\n * Holds an HTMLElement or a collection of HTMLElements.\n *\n * @typedef {object} jQuery\n *\n * @prop {number} length=0\n *   Number of elements contained in the jQuery object.\n */\n\n/**\n * Variable generated by Drupal that holds all translated strings from PHP.\n *\n * Content of this variable is automatically created by Drupal when using the\n * Interface Translation module. It holds the translation of strings used on\n * the page.\n *\n * This variable is used to pass data from the backend to the frontend. Data\n * contained in `drupalSettings` is used during behavior initialization.\n *\n * @global\n *\n * @var {object} drupalTranslations\n */\n\n/**\n * Global Drupal object.\n *\n * All Drupal JavaScript APIs are contained in this namespace.\n *\n * @global\n *\n * @namespace\n */\nwindow.Drupal = { behaviors: {}, locale: {} };\n\n// JavaScript should be made compatible with libraries other than jQuery by\n// wrapping it in an anonymous closure.\n(function (\n  Drupal,\n  drupalSettings,\n  drupalTranslations,\n  console,\n  Proxy,\n  Reflect,\n) {\n  /**\n   * Helper to rethrow errors asynchronously.\n   *\n   * This way Errors bubbles up outside of the original callstack, making it\n   * easier to debug errors in the browser.\n   *\n   * @param {Error|string} error\n   *   The error to be thrown.\n   */\n  Drupal.throwError = function (error) {\n    setTimeout(() => {\n      throw error;\n    }, 0);\n  };\n\n  /**\n   * Custom error thrown after attach/detach if one or more behaviors failed.\n   * Initializes the JavaScript behaviors for page loads and Ajax requests.\n   *\n   * @callback Drupal~behaviorAttach\n   *\n   * @param {Document|HTMLElement} context\n   *   An element to detach behaviors from.\n   * @param {?object} settings\n   *   An object containing settings for the current context. It is rarely used.\n   *\n   * @see Drupal.attachBehaviors\n   */\n\n  /**\n   * Reverts and cleans up JavaScript behavior initialization.\n   *\n   * @callback Drupal~behaviorDetach\n   *\n   * @param {Document|HTMLElement} context\n   *   An element to attach behaviors to.\n   * @param {object} settings\n   *   An object containing settings for the current context.\n   * @param {string} trigger\n   *   One of `'unload'`, `'move'`, or `'serialize'`.\n   *\n   * @see Drupal.detachBehaviors\n   */\n\n  /**\n   * @typedef {object} Drupal~behavior\n   *\n   * @prop {Drupal~behaviorAttach} attach\n   *   Function run on page load and after an Ajax call.\n   * @prop {Drupal~behaviorDetach} [detach]\n   *   Function run when content is serialized or removed from the page.\n   */\n\n  /**\n   * Holds all initialization methods.\n   *\n   * @namespace Drupal.behaviors\n   *\n   * @type {Object.<string, Drupal~behavior>}\n   */\n\n  /**\n   * Defines a behavior to be run during attach and detach phases.\n   *\n   * Attaches all registered behaviors to a page element.\n   *\n   * Behaviors are event-triggered actions that attach to page elements,\n   * enhancing default non-JavaScript UIs. Behaviors are registered in the\n   * {@link Drupal.behaviors} object using the method 'attach' and optionally\n   * also 'detach'.\n   *\n   * {@link Drupal.attachBehaviors} is added below to the `jQuery.ready` event\n   * and therefore runs on initial page load. Developers implementing Ajax in\n   * their solutions should also call this function after new page content has\n   * been loaded, feeding in an element to be processed, in order to attach all\n   * behaviors to the new content.\n   *\n   * Behaviors should use `var elements =\n   * once('behavior-name', selector, context);` to ensure the behavior is\n   * attached only once to a given element. (Doing so enables the reprocessing\n   * of given elements, which may be needed on occasion despite the ability to\n   * limit behavior attachment to a particular element.)\n   *\n   * @example\n   * Drupal.behaviors.behaviorName = {\n   *   attach: function (context, settings) {\n   *     // ...\n   *   },\n   *   detach: function (context, settings, trigger) {\n   *     // ...\n   *   }\n   * };\n   *\n   * @param {Document|HTMLElement} [context=document]\n   *   An element to attach behaviors to.\n   * @param {object}
3 [settings=drupalSettings]\n   *   An object containing settings for the current context. If none is given,\n   *   the global {@link drupalSettings} object is used.\n   *\n   * @see Drupal~behaviorAttach\n   * @see Drupal.detachBehaviors\n   *\n   * @throws {Drupal~DrupalBehaviorError}\n   */\n  Drupal.attachBehaviors = function (context, settings) {\n    context = context || document;\n    settings = settings || drupalSettings;\n    const behaviors = Drupal.behaviors;\n    // Execute all of them.\n    Object.keys(behaviors || {}).forEach((i) => {\n      if (typeof behaviors[i].attach === 'function') {\n        // Don't stop the execution of behaviors in case of an error.\n        try {\n          behaviors[i].attach(context, settings);\n        } catch (e) {\n          Drupal.throwError(e);\n        }\n      }\n    });\n  };\n\n  /**\n   * Detaches registered behaviors from a page element.\n   *\n   * Developers implementing Ajax in their solutions should call this function\n   * before page content is about to be removed, feeding in an element to be\n   * processed, in order to allow special behaviors to detach from the content.\n   *\n   * Such implementations should use `once.filter()` and `once.remove()` to find\n   * elements with their corresponding `Drupal.behaviors.behaviorName.attach`\n   * implementation, i.e. `once.remove('behaviorName', selector, context)`,\n   * to ensure the behavior is detached only from previously processed elements.\n   *\n   * @param {Document|HTMLElement} [context=document]\n   *   An element to detach behaviors from.\n   * @param {object} [settings=drupalSettings]\n   *   An object containing settings for the current context. If none given,\n   *   the global {@link drupalSettings} object is used.\n   * @param {string} [trigger='unload']\n   *   A string containing what's causing the behaviors to be detached. The\n   *   possible triggers are:\n   *   - `'unload'`: The context element is being removed from the DOM.\n   *   - `'move'`: The element is about to be moved within the DOM (for example,\n   *     during a tabledrag row swap). After the move is completed,\n   *     {@link Drupal.attachBehaviors} is called, so that the behavior can undo\n   *     whatever it did in response to the move. Many behaviors won't need to\n   *     do anything simply in response to the element being moved, but because\n   *     IFRAME elements reload their \"src\" when being moved within the DOM,\n   *     behaviors bound to IFRAME elements (like WYSIWYG editors) may need to\n   *     take some action.\n   *   - `'serialize'`: When an Ajax form is submitted, this is called with the\n   *     form as the context. This provides every behavior within the form an\n   *     opportunity to ensure that the field elements have correct content\n   *     in them before the form is serialized. The canonical use-case is so\n   *     that WYSIWYG editors can update the hidden textarea to which they are\n   *     bound.\n   *\n   * @throws {Drupal~DrupalBehaviorError}\n   *\n   * @see Drupal~behaviorDetach\n   * @see Drupal.attachBehaviors\n   */\n  Drupal.detachBehaviors = function (context, settings, trigger) {\n    context = context || document;\n    settings = settings || drupalSettings;\n    trigger = trigger || 'unload';\n    const behaviors = Drupal.behaviors;\n    // Execute all of them.\n    Object.keys(behaviors || {}).forEach((i) => {\n      if (typeof behaviors[i].detach === 'function') {\n        // Don't stop the execution of behaviors in case of an error.\n        try {\n          behaviors[i].detach(context, settings, trigger);\n        } catch (e) {\n          Drupal.throwError(e);\n        }\n      }\n    });\n  };\n\n  /**\n   * Encodes special characters in a plain-text string for display as HTML.\n   *\n   * @param {string} str\n   *   The string to be encoded.\n   *\n   * @return {string}\n   *   The encoded string.\n   *\n   * @ingroup sanitization\n   */\n  Drupal.checkPlain = function (str) {\n    str = str\n      .toString()\n      .replace(/&/g, '&amp;')\n      .replace(/</g, '&lt;')\n      .replace(/>/g, '&gt;')\n      .replace(/\"/g, '&quot;')\n      .replace(/'/g, '&#39;');\n    return str;\n  };\n\n  /**\n   * Replaces placeholders with sanitized values in a string.\n   *\n   * @param {string} str\n   *   A string with placeholders.\n   * @param {object} args\n   *   An object of replacements pairs to make. Incidences of any key in this\n   *   array are replaced with the corresponding value. Based on the first\n   *   character of the key, the value is escaped and/or themed:\n   *    - `'!variable'`: inserted as is.\n   *    - `'@variable'`: escape plain text to HTML ({@link Drupal.checkPlain}).\n   *    - `'%variable'`: escape text and theme as a placeholder for user-\n   *      submitted content ({@link Drupal.checkPlain} +\n   *      `{@link Drupal.theme}('placeholder')`).\n   *\n   * @return {string}\n   *   The formatted string.\n   *\n   * @see Drupal.t\n   */\n  Drupal.formatString = function (str, args) {\n    // Keep args intact.\n    const processedArgs = {};\n    // Transform arguments before inserting them.\n    Object.keys(args || {}
3).forEach((key) => {\n      switch (key.charAt(0)) {\n        // Escaped only.\n        case '@':\n          processedArgs[key] = Drupal.checkPlain(args[key]);\n          break;\n\n        // Pass-through.\n        case '!':\n          processedArgs[key] = args[key];\n          break;\n\n        // Escaped and placeholder.\n        default:\n          processedArgs[key] = Drupal.theme('placeholder', args[key]);\n          break;\n      }\n    });\n\n    return Drupal.stringReplace(str, processedArgs, null);\n  };\n\n  /**\n   * Replaces substring.\n   *\n   * The longest keys will be tried first. Once a substring has been replaced,\n   * its new value will not be searched again.\n   *\n   * @param {string} str\n   *   A string with placeholders.\n   * @param {object} args\n   *   Key-value pairs.\n   * @param {Array|null} keys\n   *   Array of keys from `args`. Internal use only.\n   *\n   * @return {string}\n   *   The replaced string.\n   */\n  Drupal.stringReplace = function (str, args, keys) {\n    if (str.length === 0) {\n      return str;\n    }\n\n    // If the array of keys is not passed then collect the keys from the args.\n    if (!Array.isArray(keys)) {\n      keys = Object.keys(args || {});\n\n      // Order the keys by the character length. The shortest one is the first.\n      keys.sort((a, b) => a.length - b.length);\n    }\n\n    if (keys.length === 0) {\n      return str;\n    }\n\n    // Take next longest one from the end.\n    const key = keys.pop();\n    const fragments = str.split(key);\n\n    if (keys.length) {\n      for (let i = 0; i < fragments.length; i++) {\n        // Process each fragment with a copy of remaining keys.\n        fragments[i] = Drupal.stringReplace(fragments[i], args, keys.slice(0));\n      }\n    }\n\n    return fragments.join(args[key]);\n  };\n\n  /**\n   * Translates strings to the page language, or a given language.\n   *\n   * See the documentation of the server-side t() function for further details.\n   *\n   * @param {string} str\n   *   A string containing the English text to translate.\n   * @param {Object.<string, string>} [args]\n   *   An object of replacements pairs to make after translation. Incidences\n   *   of any key in this array are replaced with the corresponding value.\n   *   See {@link Drupal.formatString}.\n   * @param {object} [options]\n   *   Additional options for translation.\n   * @param {string} [options.context='']\n   *   The context the source string belongs to.\n   *\n   * @return {string}\n   *   The formatted string.\n   *   The translated string.\n   */\n  Drupal.t = function (str, args, options) {\n    options = options || {};\n    options.context = options.context || '';\n\n    // Fetch the localized version of the string.\n    if (\n      typeof drupalTranslations !== 'undefined' &&\n      drupalTranslations.strings &&\n      drupalTranslations.strings[options.context] &&\n      drupalTranslations.strings[options.context][str]\n    ) {\n      str = drupalTranslations.strings[options.context][str];\n    }\n\n    if (args) {\n      str = Drupal.formatString(str, args);\n    }\n    return str;\n  };\n\n  /**\n   * Returns the URL to a Drupal page.\n   *\n   * @param {string} path\n   *   Drupal path to transform to URL.\n   *\n   * @return {string}\n   *   The full URL.\n   */\n  Drupal.url = function (path) {\n    return drupalSettings.path.baseUrl + drupalSettings.path.pathPrefix + path;\n  };\n\n  /**\n   * Returns the passed in URL as an absolute URL.\n   *\n   * @param {string} url\n   *   The URL string to be normalized to an absolute URL.\n   *\n   * @return {string}\n   *   The normalized, absolute URL.\n   *\n   * @see https://github.com/angular/angular.js/blob/v1.4.4/src/ng/urlUtils.js\n   * @see https://grack.com/blog/2009/11/17/absolutizing-url-in-javascript\n   * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L53\n   */\n  Drupal.url.toAbsolute = function (url) {\n    const urlParsingNode = document.createElement('a');\n\n    // Decode the URL first; this is required by IE <= 6. Decoding non-UTF-8\n    // strings may throw an exception.\n    try {\n      url = decodeURIComponent(url);\n    } catch (e) {\n      // Empty.\n    }\n\n    urlParsingNode.setAttribute('href', url);
3\n\n    // IE <= 7 normalizes the URL when assigned to the anchor node similar to\n    // the other browsers.\n    return urlParsingNode.cloneNode(false).href;\n  };\n\n  /**\n   * Returns true if the URL is within Drupal's base path.\n   *\n   * @param {string} url\n   *   The URL string to be tested.\n   *\n   * @return {boolean}\n   *   `true` if local.\n   *\n   * @see https://github.com/jquery/jquery-ui/blob/1.11.4/ui/tabs.js#L58\n   */\n  Drupal.url.isLocal = function (url) {\n    // Always use browser-derived absolute URLs in the comparison, to avoid\n    // attempts to break out of the base path using directory traversal.\n    let absoluteUrl = Drupal.url.toAbsolute(url);\n    let { protocol } = window.location;\n\n    // Consider URLs that match this site's base URL but use HTTPS instead of HTTP\n    // as local as well.\n    if (protocol === 'http:' && absoluteUrl.indexOf('https:') === 0) {\n      protocol = 'https:';\n    }\n    let baseUrl = `${protocol}//${\n      window.location.host\n    }${drupalSettings.path.baseUrl.slice(0, -1)}`;\n\n    // Decoding non-UTF-8 strings may throw an exception.\n    try {\n      absoluteUrl = decodeURIComponent(absoluteUrl);\n    } catch (e) {\n      // Empty.\n    }\n    try {\n      baseUrl = decodeURIComponent(baseUrl);\n    } catch (e) {\n      // Empty.\n    }\n\n    // The given URL matches the site's base URL, or has a path under the site's\n    // base URL.\n    return absoluteUrl === baseUrl || absoluteUrl.indexOf(`${baseUrl}/`) === 0;\n  };\n\n  /**\n   * Formats a string containing a count of items.\n   *\n   * This function ensures that the string is pluralized correctly. Since\n   * {@link Drupal.t} is called by this function, make sure not to pass\n   * already-localized strings to it.\n   *\n   * See the documentation of the server-side\n   * \\Drupal\\Core\\StringTranslation\\TranslationInterface::formatPlural()\n   * function for more details.\n   *\n   * @param {number} count\n   *   The item count to display.\n   * @param {string} singular\n   *   The string for the singular case. Make sure it is clear this is singular,\n   *   to ease translation (e.g. use \"1 new comment\" instead of \"1 new\"). Do not\n   *   use @count in the singular string.\n   * @param {string} plural\n   *   The string for the plural case. Make sure it is clear this is plural, to\n   *   ease translation. Use @count in place of the item count, as in \"@count\n   *   new comments\".\n   * @param {object} [args]\n   *   An object of replacements pairs to make after translation. Incidences\n   *   of any key in this array are replaced with the corresponding value.\n   *   See {@link Drupal.formatString}.\n   *   Note that you do not need to include @count in this array.\n   *   This replacement is done automatically for the plural case.\n   * @param {object} [options]\n   *   The options to pass to the {@link Drupal.t} function.\n   *\n   * @return {string}\n   *   A translated string.\n   */\n  Drupal.formatPlural = function (count, singular, plural, args, options) {\n    args = args || {};\n    args['@count'] = count;\n\n    const pluralDelimiter = drupalSettings.pluralDelimiter;\n    const translations = Drupal.t(\n      singular + pluralDelimiter + plural,\n      args,\n      options,\n    ).split(pluralDelimiter);\n    let index = 0;\n\n    // Determine the index of the plural form.\n    if (\n      typeof drupalTranslations !== 'undefined' &&\n      drupalTranslations.pluralFormula\n    ) {\n      index =\n        count in drupalTranslations.pluralFormula\n          ? drupalTranslations.pluralFormula[count]\n          : drupalTranslations.pluralFormula.default;\n    } else if (args['@count'] !== 1) {\n      index = 1;\n    }\n\n    return translations[index];\n  };\n\n  /**\n   * Encodes a Drupal path for use in a URL.\n   *\n   * For aesthetic reasons slashes are not escaped.\n   *\n   * @param {string} item\n   *   Unencoded path.\n   *\n   * @return {string}\n   *   The encoded path.\n   */\n  Drupal.encodePath = function (item) {\n    return window.encodeURIComponent(item).replace(/%2F/g, '/');\n  };\n\n  /**\n   * Triggers deprecation error.\n   *\n   * Deprecation errors are only triggered if deprecation errors haven't\n   * been suppressed.\n   *\n   * @param {Object} deprecation\n   *   The deprecation options.\n   * @param {string} deprecation.message\n   *   The deprecation message.\n   *\n   * @see https://www.drupal.org/core/deprecation#javascript\n   */\n  Drupal.deprecationError = ({ message }) =>
3 {\n    if (\n      drupalSettings.suppressDeprecationErrors === false &&\n      typeof console !== 'undefined' &&\n      console.warn\n    ) {\n      console.warn(`[Deprecation] ${message}`);\n    }\n  };\n\n  /**\n   * Triggers deprecation error when object property is being used.\n   *\n   * @param {Object} deprecation\n   *   The deprecation options.\n   * @param {Object} deprecation.target\n   *   The targeted object.\n   * @param {string} deprecation.deprecatedProperty\n   *   A key of the deprecated property.\n   * @param {string} deprecation.message\n   *   The deprecation message.\n   * @returns {Object}\n   *\n   * @see https://www.drupal.org/core/deprecation#javascript\n   */\n  Drupal.deprecatedProperty = ({ target, deprecatedProperty, message }) => {\n    // Proxy and Reflect are not supported by all browsers. Unsupported browsers\n    // are ignored since this is a development feature.\n    if (!Proxy || !Reflect) {\n      return target;\n    }\n\n    return new Proxy(target, {\n      get: (target, key, ...rest) => {\n        if (key === deprecatedProperty) {\n          Drupal.deprecationError({ message });\n        }\n        return Reflect.get(target, key, ...rest);\n      },\n    });\n  };\n\n  /**\n   * Generates the themed representation of a Drupal object.\n   *\n   * All requests for themed output must go through this function. It examines\n   * the request and routes it to the appropriate theme function. If the current\n   * theme does not provide an override function, the generic theme function is\n   * called.\n   *\n   * @example\n   * <caption>To retrieve the HTML for text that should be emphasized and\n   * displayed as a placeholder inside a sentence.</caption>\n   * Drupal.theme('placeholder', text);\n   *\n   * @namespace\n   *\n   * @param {function} func\n   *   The name of the theme function to call.\n   * @param {...args}\n   *   Additional arguments to pass along to the theme function.\n   *\n   * @return {string|object|HTMLElement|jQuery}\n   *   Any data the theme function returns. This could be a plain HTML string,\n   *   but also a complex object.\n   */\n  Drupal.theme = function (func, ...args) {\n    if (func in Drupal.theme) {\n      return Drupal.theme[func](...args);\n    }\n  };\n\n  /**\n   * Formats text for emphasized display in a placeholder inside a sentence.\n   *\n   * @param {string} str\n   *   The text to format (plain-text).\n   *\n   * @return {string}\n   *   The formatted text (html).\n   */\n  Drupal.theme.placeholder = function (str) {\n    return `<em class=\"placeholder\">${Drupal.checkPlain(str)}</em>`;\n  };\n\n  /**\n   * Determine if an element is visible.\n   *\n   * @param {HTMLElement} elem\n   *   The element to check.\n   *\n   * @return {boolean}\n   *  True if the element is visible.\n   */\n  Drupal.elementIsVisible = function (elem) {\n    return !!(\n      elem.offsetWidth ||\n      elem.offsetHeight ||\n      elem.getClientRects().length\n    );\n  };\n\n  /**\n   * Determine if an element is hidden.\n   *\n   * @param {HTMLElement} elem\n   *   The element to check.\n   *\n   * @return {boolean}\n   *  True if the element is hidden.\n   */\n  Drupal.elementIsHidden = function (elem) {\n    return !Drupal.elementIsVisible(elem);\n  };\n})(\n  Drupal,\n  window.drupalSettings,\n  window.drupalTranslations,\n  window.console,\n  window.Proxy,\n  window.Reflect,\n);\n";
4var mod_pagespeed_4FihWyL66o = "// Allow other JavaScript libraries to use $.\nif (window.jQuery) {\n  jQuery.noConflict();\n}\n\n// Class indicating that JS is enabled; used for styling purpose.\ndocument.documentElement.className += ' js';\n\n// JavaScript should be made compatible with libraries other than jQuery by\n// wrapping it in an anonymous closure.\n(function (Drupal, drupalSettings) {\n  /**\n   * Calls callback when document ready.\n   *\n   * @param {function} callback\n   *   The function to be called on document ready.\n   */\n  const domReady = (callback) => {\n    const listener = () => {\n      callback();\n      document.removeEventListener('DOMContentLoaded', listener);\n    };\n    if (document.readyState !== 'loading') {\n      setTimeout(callback, 0);\n    } else {\n      document.addEventListener('DOMContentLoaded', listener);\n    }\n  };
4\n\n  // Attach all behaviors.\n  domReady(() => {\n    Drupal.attachBehaviors(document, drupalSettings);\n  });\n})(Drupal, window.drupalSettings);\n";
5var mod_pagespeed_QRmCG2TRXV = "!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?e(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self,function(){var n=t.tabbable,o=t.tabbable={};e(o),o.noConflict=function(){return t.tabbable=n,o}}())}(this,(function(t){\"use strict\";var e=[\"input:not([inert])\",\"select:not([inert])\",\"textarea:not([inert])\",\"a[href]:not([inert])\",\"button:not([inert])\",\"[tabindex]:not(slot):not([inert])\",\"audio[controls]:not([inert])\",\"video[controls]:not([inert])\",'[contenteditable]:not([contenteditable=\"false\"]):not([inert])',\"details>summary:first-of-type:not([inert])\",\"details:not([inert])\"],n=e.join(\",\"),o=\"undefined\"==typeof Element,r=o?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,i=!o&&Element.prototype.getRootNode?function(t){var e;return null==t||null===(e=t.getRootNode)||void 0===e?void 0:e.call(t)}:function(t){return null==t?void 0:t.ownerDocument},a=function t(e,n){var o;void 0===n&&(n=!0);var r=null==e||null===(o=e.getAttribute)||void 0===o?void 0:o.call(e,\"inert\");return\"\"===r||\"true\"===r||n&&e&&t(e.parentNode)},l=function(t,e,o){if(a(t))return[];var i=Array.prototype.slice.apply(t.querySelectorAll(n));return e&&r.call(t,n)&&i.unshift(t),i=i.filter(o)},u=function t(e,o,i){for(var l=[],u=Array.from(e);u.length;){var d=u.shift();if(!a(d,!1))if(\"SLOT\"===d.tagName){var c=d.assignedElements(),f=t(c.length?c:d.children,!0,i);i.flatten?l.push.apply(l,f):l.push({scopeParent:d,candidates:f})}else{r.call(d,n)&&i.filter(d)&&(o||!e.includes(d))&&l.push(d);var s=d.shadowRoot||\"function\"==typeof i.getShadowRoot&&i.getShadowRoot(d),p=!a(s,!1)&&(!i.shadowRootFilter||i.shadowRootFilter(d));if(s&&p){var h=t(!0===s?d.children:s.children,!0,i);i.flatten?l.push.apply(l,h):l.push({scopeParent:d,candidates:h})}else u.unshift.apply(u,d.children)}}return l},d=function(t){return!isNaN(parseInt(t.getAttribute(\"tabindex\"),10))},c=function(t){if(!t)throw new Error(\"No node provided\");return t.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(t.tagName)||function(t){var e,n=null==t||null===(e=t.getAttribute)||void 0===e?void 0:e.call(t,\"contenteditable\");return\"\"===n||\"true\"===n}(t))&&!d(t)?0:t.tabIndex},f=function(t,e){return t.tabIndex===e.tabIndex?t.documentOrder-e.documentOrder:t.tabIndex-e.tabIndex},s=function(t){return\"INPUT\"===t.tagName},p=function(t){return function(t){return s(t)&&\"radio\"===t.type}(t)&&!function(t){if(!t.name)return!0;var e,n=t.form||i(t),o=function(t){return n.querySelectorAll('input[type=\"radio\"][name=\"'+t+'\"]')};if(\"undefined\"!=typeof window&&void 0!==window.CSS&&\"function\"==typeof window.CSS.escape)e=o(window.CSS.escape(t.name));else try{e=o(t.name)}catch(t){return console.error(\"Looks like you have a radio button with a name attribute containing invalid CSS selector characters and need the CSS.escape polyfill: %s\",t.message),!1}var r=function(t,e){for(var n=0;n<t.length;n++)if(t[n].checked&&t[n].form===e)return t[n]}(e,t.form);return!r||r===t}(t)},h=function(t){var e=t.getBoundingClientRect(),n=e.width,o=e.height;return 0===n&&0===o},v=function(t,e){var n=e.displayCheck,o=e.getShadowRoot;if(\"hidden\"===getComputedStyle(t).visibility)return!0;var a=r.call(t,\"details>summary:first-of-type\")?t.parentElement:t;if(r.call(a,\"details:not([open]) *\"))return!0;if(n&&\"full\"!==n&&\"legacy-full\"!==n){if(\"non-zero-area\"===n)return h(t)}else{if(\"function\"==typeof o){for(var l=t;t;){var u=t.parentElement,d=i(t);if(u&&!u.shadowRoot&&!0===o(u))return h(t);t=t.assignedSlot?t.assignedSlot:u||d===t.ownerDocument?u:d.host}t=l}if(function(t){var e,n,o,r,a=t&&i(t),l=null===(e=a)||void 0===e?void 0:e.host,u=!1;if(a&&a!==t)for(u=!!(null!==(n=l)&&void 0!==n&&null!==(o=n.ownerDocument)&&void 0!==o&&o.contains(l)||null!=t&&null!==(r=t.ownerDocument)&&void 0!==r&&r.contains(t));!u&&l;){var d,c,f;u=!(null===(c=l=null===(d=a=i(l))||void 0===d?void 0:d.host)||void 0===c||null===(f=c.ownerDocument)||void 0===f||!f.contains(l))}return u}(t))return!t.getClientRects().length;if(\"legacy-full\"!==n)return!0}return!1},b=function(t,e){return!(e.disabled||a(e)||function(t){return s(t)&&\"hidden\"===t.type}(e)||v(e,t)||function(t){return\"DETAILS\"===t.tagName&&Array.prototype.slice.apply(t.children).some((function(t){return\"SUMMARY\"===t.tagName}))}
5(e)||function(t){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(t.tagName))for(var e=t.parentElement;e;){if(\"FIELDSET\"===e.tagName&&e.disabled){for(var n=0;n<e.children.length;n++){var o=e.children.item(n);if(\"LEGEND\"===o.tagName)return!!r.call(e,\"fieldset[disabled] *\")||!o.contains(t)}return!0}e=e.parentElement}return!1}(e))},m=function(t,e){return!(p(e)||c(e)<0||!b(t,e))},g=function(t){var e=parseInt(t.getAttribute(\"tabindex\"),10);return!!(isNaN(e)||e>=0)},y=function t(e){var n=[],o=[];return e.forEach((function(e,r){var i=!!e.scopeParent,a=i?e.scopeParent:e,l=function(t,e){var n=c(t);return n<0&&e&&!d(t)?0:n}(a,i),u=i?t(e.candidates):a;0===l?i?n.push.apply(n,u):n.push(a):o.push({documentOrder:r,tabIndex:l,item:e,isScope:i,content:u})})),o.sort(f).reduce((function(t,e){return e.isScope?t.push.apply(t,e.content):t.push(e.content),t}),[]).concat(n)},w=e.concat(\"iframe\").join(\",\");t.focusable=function(t,e){return(e=e||{}).getShadowRoot?u([t],e.includeContainer,{filter:b.bind(null,e),flatten:!0,getShadowRoot:e.getShadowRoot}):l(t,e.includeContainer,b.bind(null,e))},t.getTabIndex=c,t.isFocusable=function(t,e){if(e=e||{},!t)throw new Error(\"No node provided\");return!1!==r.call(t,w)&&b(e,t)},t.isTabbable=function(t,e){if(e=e||{},!t)throw new Error(\"No node provided\");return!1!==r.call(t,n)&&m(e,t)},t.tabbable=function(t,e){var n;return n=(e=e||{}).getShadowRoot?u([t],e.includeContainer,{filter:m.bind(null,e),flatten:!1,getShadowRoot:e.getShadowRoot,shadowRootFilter:g}):l(t,e.includeContainer,m.bind(null,e)),y(n)},Object.defineProperty(t,\"__esModule\",{value:!0})}));";

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.