PageSourceSearch

https://springercoop.com/sites/default/files/js/js_7QlyCem0-lJpPGBYNX5gQsrpJCYqM84OYHcu7aDafuw.js

js springercoop.com collected 2026-10-08 04:37:58 UTC 41,902 bytes, 831 lines download raw bytes

1(function (Drupal) {
2
3  /**
4   * Command to attach data using jQuery's data API.
5   *
6   * @param {Drupal.Ajax} [ajax]
7   *   {@link Drupal.Ajax} object created by {@link Drupal.ajax}.
8   * @param {object} response
9   *   The response from the Ajax request.
10   * @param {string} response.event_name
11   *   The event name
12   * @param {object} response.data
13   *   The value of the event.
14   */
15  Drupal.AjaxCommands.prototype.gtagEvent = function (ajax, response) {
16    gtag('event', response.event_name, response.data)
17  }
18})(Drupal);
19;
20function ctSetCookie(cookies)
21{
22
23  let useCookies, useAltCookies
24
25  if ('undefined' !== typeof ct_use_cookies) {
26    useCookies = ct_use_cookies;
27  } else {
28    useCookies = false;
29  }
30
31  if ('undefined' !== typeof ct_use_alt_cookies) {
32    useAltCookies = ct_use_alt_cookies;
33  } else {
34    useAltCookies = false
35  }
36
37  if (useCookies) {
38    if (useAltCookies && useAltCookies === 1) {
39      let xhr = new XMLHttpRequest();
40
41      let json = JSON.stringify(cookies);
42
43      xhr.open("POST", '/admin/config/cleantalk/set_alt_cookies')
44      xhr.setRequestHeader('Content-type', 'application/json; charset=utf-8');
45
46      xhr.send(json);
47    } else {
48      cookies.forEach(
49        function (e) {
50          let ctSecure = location.protocol === "https:" ? "; secure" : "";
51          document.cookie = e.name + "=" + encodeURIComponent(e.value) + "; path=/; expires=0; samesite=lax" + ctSecure;
52        }
53      )
54    }
55  }
56}
57;
58var d = new Date(),
59    ctTimeMs = new Date().getTime(),
60    ctMouseEventTimerFlag = true, //Reading interval flag
61    ctMouseData = "[",
62    ctMouseDataCounter = 0,
63    ctScrollCollected = false,
64    ctEventTokenInterval = null;
65
66ctSetCookie(
67    [
68    {
69        'name' : 'ct_check_js',
70        'value' : ct_check_js_val
71    },
72    {
73        'name' : 'ct_ps_timestamp',
74        'value' : Math.floor(new Date().getTime()/1000)
75    },
76    {
77        'name' : 'ct_fkp_timestamp',
78        'value' : '0'
79    },
80    {
81        'name' : 'ct_pointer_data',
82        'value' : '0'
83    },
84    {
85        'name' : 'ct_timezone',
86        'value' : d.getTimezoneOffset()/60*(-1)
87    },
88    {
89        'name' : 'apbct_antibot',
90        'value' : drupal_ac_antibot_cookie_value
91    },
92    {
93        'name' : 'ct_has_scrolled',
94        'value' : false
95    }
96    ]
97);
98
99//Reading interval
100
101var ctMouseReadInterval = setInterval(
102    function () {
103        ctMouseEventTimerFlag = true;
104    }, 150
105);
106
107//Writting interval
108
109var ctMouseWriteDataInterval = setInterval(
110    function () {
111        /**
112         * Do not write mouse data if alternative sessions or bot detector is used.
113         */
114        const altSessionsUsed = typeof ct_use_alt_cookies !== "undefined" && ct_use_alt_cookies === 1;
115        const botDetectorUsed = typeof ct_use_bot_detector !== "undefined" && ct_use_bot_detector === 1;
116        if( altSessionsUsed || botDetectorUsed ) {
117            return;
118        }
119
120        var ctMouseDataToSend = ctMouseData.slice(0,-1).concat("]");
121        ctSetCookie(
122            [
123            {
124                'name' : 'ct_pointer_data',
125                'value' : ctMouseDataToSend
126            }
127            ]
128        );
129    }, 1200
130);
131
132//Stop observing function
133
134function ctMouseStopData()
135{
136    if(typeof window.addEventListener == "function") {
137        window.removeEventListener("mousemove", ctFunctionMouseMove);
138    } else {
139        window.detachEvent("onmousemove", ctFunctionMouseMove);
140    }
141    clearInterval(ctMouseReadInterval);
142    clearInterval(ctMouseWriteDataInterval);
143}
144
145//Logging mouse position each 300 ms
146
147var ctFunctionMouseMove = function output(event)
148{
149    if (ctMouseEventTimerFlag == true) {
150        var mouseDate = new Date();
151        ctMouseData += "[" + Math.round(event.pageY) + "," + Math.round(event.pageX) + "," + Math.round(mouseDate.getTime() - ctTimeMs) + "],";
152        ctMouseDataCounter++;
153        ctMouseEventTimerFlag = false;
154        if(ctMouseDataCounter >= 100) {
155            ctMouseStopData();
156        }
157    }
158};
159
160/**
161 * Set scrolling cookie
162 */
163function ctSetHasScrolled()
164{
165    if(! ctScrollCollected ) {
166        ctSetCookie(
167            [
168            {
169                'name' : 'ct_has_scrolled',
170                'value' : true
171            }
172            ]
173        );
174        ctScrollCollected = true;
175    }
176}
177
178//Stop key listening function
179
180function ctKeyStopStopListening()
181{
182    if (typeof window.addEventListener == "function") {
183        window.removeEventListener("mousedown", ctFunctionFirstKey);
184        window.removeEventListener("keydown", ctFunctionFirstKey);
185    }
186    else {
187        window.detachEvent("mousedown", ctFunctionFirstKey);
188        window.detachEvent("keydown", ctFunctionFirstKey);
189    }
190}
191
192//Writing first key press timestamp
193
194var ctFunctionFirstKey = function output(event)
195{
196    var KeyTimestamp = Math.floor(new Date().getTime()/1000);
197    ctSetCookie(
198        [
199        {
200            'name' : 'ct_fkp_timestamp',
201            'value' : KeyTimestamp
202        }
203        ]
204    );
205    ctKeyStopStopListening();
206};
207
208if (typeof window.addEventListener == "function") {
209    window.addEventListener("mousemove", ctFunctionMouseMove);
210    window.addEventListener("mousedown", ctFunctionFirstKey);
211    window.addEventListener("keydown", ctFunctionFirstKey);
212    window.addEventListener("scroll", ctSetHasScrolled);
213}
214else {
215    window.attachEvent("onmousemove", ctFunctionMouseMove);
216    window.attachEvent("mousedown", ctFunctionFirstKey);
217    window.attachEvent("keydown", ctFunctionFirstKey);
218    window.attachEvent("scroll", ctSetHasScrolled);
219}
220
221function apbct_collect_visible_fields( form )
222{
223
224    // Get only fields
225    var inputs = [],
226        inputs_visible = '',
227        inputs_visible_count = 0,
228        inputs_invisible = '',
229        inputs_invisible_count = 0,
230        inputs_with_duplicate_names = [];
231
232    for(var key in form.elements){
233        if(!isNaN(+key)) {
234            inputs[key] = form.elements[key];
235        }
236    }
237
238    // Filter fields
239    inputs = inputs.filter(
240        function (elem) {
241
242            // Filter already added fields
243            if(inputs_with_duplicate_names.indexOf(elem.getAttribute('name')) !== -1 ) {
244                return false;
245            }
246            // Filter inputs with same names for type == radio
247            if(-1 !== ['radio', 'checkbox'].indexOf(elem.getAttribute("type"))) {
248                inputs_with_duplicate_names.push(elem.getAttribute('name'));
249                return false;
250            }
251            return true;
252        }
253    );
254
255    // Visible fields
256    inputs.forEach(
257        function (elem, i, elements) {
258            // Unnecessary fields
259            if(elem.getAttribute("type")         === "submit"  // type == submit
260                || elem.getAttribute('name')         === null
261                || elem.getAttribute('name')         === 'ct_checkjs'
262            ) {
263                return;
264            }
265            // Invisible fields
266            if(getComputedStyle(elem).display    === "none"    // hidden
267                || getComputedStyle(elem).visibility === "hidden"  // hidden
268                || getComputedStyle(elem).opacity    === "0"       // hidden
269                || elem.getAttribute("type")         === "hidden" // type == hidden
270            ) {
271                if(elem.classList.contains("wp-editor-area") ) {
272                    inputs_visible += " " + elem.getAttribute("name");
273                    inputs_visible_count++;
274                } else {
275                    inputs_invisible += " " + elem.getAttribute("name");
276                    inputs_invisible_count++;
277                }
278            }
279            // Visible fields
280            else {
281                inputs_visible += " " + elem.getAttribute("name");
282                inputs_visible_count++;
283            }
284
285        }
286    );
287
288    inputs_invisible = inputs_invisible.trim();
289    inputs_visible = inputs_visible.trim();
290
291    return {
292        visible_fields : inputs_visible,
293        visible_fields_count : inputs_visible_count,
294        invisible_fields : inputs_invisible,
295        invisible_fields_count : inputs_invisible_count,
296    }
297
298}
299
300function apbct_visible_fields_set_cookie( visible_fields_collection )
301{
302    var collection = typeof visible_fields_collection === 'object' && visible_fields_collection !== null ?  visible_fields_collection : {};
303
304    ctSetCookie(
305        [
306        {
307            'name' : 'apbct_visible_fields',
308            'value' : JSON.stringify(collection)
309        }
310        ]
311    )
312}
313
314// Event token handler class. Get token and save it to the alternative sessions.
315
316class EventTokenHandler {
317
318  constructor(use_alt_cookies_option) {
319    this.token = null;
320    this.lsSavedFlagName = 'event_token_saved_to_alt_sessions';
321    this.lsEVentTokenName = 'bot_detector_event_token';
322    this.intervalValue = 1500;
323    this.init(use_alt_cookies_option);
324  }
325
326  init(use_alt_cookies_option){
327    if ('undefined' !== typeof use_alt_cookies_option && use_alt_cookies_option) {
328      this.setNotSavedFlag();
329      this.startListenTokenLS();
330    }
331  }
332
333
334  setSavedFlag()
335  {
336    localStorage.setItem(this.lsSavedFlagName, '1');
337  }
338
339  setNotSavedFlag()
340  {
341    localStorage.setItem(this.lsSavedFlagName, '0');
342  }
343
344  isSaved()
345  {
346    let event_token_saved = localStorage.getItem(this.lsSavedFlagName);
347    return event_token_saved !== null && event_token_saved !== undefined && event_token_saved === '1';
348  }
349
350  getEventToken()
351  {
352    let event_token = localStorage.getItem(this.lsEVentTokenName);
353    try {
354      event_token = event_token !== null ? JSON.parse(event_token) : false;
355    } catch (e) {
356      return false;
357    }
358    event_token = event_token.hasOwnProperty('value') ? event_token.value : false;
359    if (typeof event_token === 'string' && event_token.length === 64) {
360      return event_token;
361    }
362    return false;
363  }
364
365  setEventTokenCookie()
366  {
367    if (typeof this.token === 'string' && this.token.length === 64) {
368      ctSetCookie(
369        [
370          {
371            'name': 'apbct_event_token',
372            'value': this.token
373          }
374        ]
375      )
376    }
377  }
378
379  stopListenTokenLS()
380  {
381    clearInterval(this.intervalID);
382  }
383
384  startListenTokenLS()
385  {
386    this.intervalID = setInterval( this.intervalRun, this.intervalValue, this)
387  }
388
389  intervalRun(handler)
390  {
391    if ( !handler.isSaved() ) {
392      handler.token = handler.getEventToken();
393      if ( handler.token  ) {
394        handler.setEventTokenCookie();
395        handler.setSavedFlag();
396        handler.stopListenTokenLS();
397      }
398    }
399  }
400}
401
402//Collect event token
403new EventTokenHandler(ct_use_alt_cookies);
404;
405/**
406 * @file
407 * Bootstrap Popovers.
408 */
409
410var Drupal = Drupal || {};
411
412(function ($, Drupal, Bootstrap) {
413  "use strict";
414
415  var $document = $(document);
416
417  /**
418   * Extend the Bootstrap Popover plugin constructor class.
419   */
420  Bootstrap.extendPlugin('popover', function (settings) {
421    return {
422      DEFAULTS: {
423        animation: !!settings.popover_animation,
424        autoClose: !!settings.popover_auto_close,
425        enabled: settings.popover_enabled,
426        html: !!settings.popover_html,
427        placement: settings.popover_placement,
428        selector: settings.popover_selector,
429        trigger: settings.popover_trigger,
430        title: settings.popover_title,
431        content: settings.popover_content,
432        delay: parseInt(settings.popover_delay, 10),
433        container: settings.popover_container
434      }
435    };
436  });
437
438  /**
439   * Bootstrap Popovers.
440   *
441   * @todo This should really be properly delegated if selector option is set.
442   */
443  Drupal.behaviors.bootstrapPopovers = {
444    $activePopover: null,
445    attach: function (context) {
446      // Immediately return if popovers are not available.
447      if (!$.fn.popover || !$.fn.popover.Constructor.DEFAULTS.enabled) {
448        return;
449      }
450
451      var _this = this;
452
453      $document
454        .on('show.bs.popover', '[data-toggle=popover]', function () {
455          var $trigger = $(this);
456          var popover = $trigger.data('bs.popover');
457
458          // Only keep track of clicked triggers that we're manually handling.
459          if (popover.options.originalTrigger === 'click') {
460            if (_this.$activePopover && _this.getOption('autoClose') && !_this.$activePopover.is($trigger)) {
461              _this.$activePopover.popover('hide');
462            }
463            _this.$activePopover = $trigger;
464          }
465        })
466        // Unfortunately, :focusable is only made available when using jQuery
467        // UI. While this would be the most semantic pseudo selector to use
468        // here, jQuery UI may not always be loaded. Instead, just use :visible
469        // here as this just needs some sort of selector here. This activates
470        // delegate binding to elements in jQuery so it can work it's bubbling
471        // focus magic since elements don't really propagate their focus events.
472        // @see https://www.drupal.org/project/bootstrap/issues/3013236
473        .on('focus.bs.popover', ':visible', function (e) {
474          var $target = $(e.target);
475          if (_this.$activePopover && _this.getOption('autoClose') && !_this.$activePopover.is($target) && !$target.closest('.popover.in')[0]) {
476            _this.$activePopover.popover('hide');
477            _this.$activePopover = null;
478          }
479        })
480        .on('click.bs.popover', function (e) {
481          var $target = $(e.target);
482          if (_this.$activePopover && _this.getOption('autoClose') && !$target.is('[data-toggle=popover]') && !$target.closest('.popover.in')[0]) {
483            _this.$activePopover.popover('hide');
484            _this.$activePopover = null;
485          }
486        })
487        .on('keyup.bs.popover', function (e) {
488          if (_this.$activePopover && _this.getOption('autoClose') && e.which === 27) {
489            _this.$activePopover.popover('hide');
490            _this.$activePopover = null;
491          }
492        })
493      ;
494
495      var elements = $(context).find('[data-toggle=popover]').toArray();
496      for (var i = 0; i < elements.length; i++) {
497        var $element = $(elements[i]);
498        var options = $.extend({}, $.fn.popover.Constructor.DEFAULTS, $element.data());
499
500        // Store the original trigger.
501        options.originalTrigger = options.trigger;
502
503        // If the trigger is "click", then we'll handle it manually here.
504        if (options.trigger === 'click') {
505          options.trigger = 'manual';
506        }
507
508        // Retrieve content from a target element.
509        var target = options.target || $element.is('a[href^="#"]') && $element.attr('href');
510        var $target = $document.find(target).clone();
511        if (!options.content && $target[0]) {
512          $target.removeClass('visually-hidden hidden').removeAttr('aria-hidden');
513          options.content = $target.wrap('<div/>').parent()[options.html ? 'html' : 'text']() || '';
514        }
515
516        // Initialize the popover.
517        $element.popover(options);
518
519        // Handle clicks manually.
520        if (options.originalTrigger === 'click') {
521          // To ensure the element is bound multiple times, remove any
522          // previously set event handler before adding another one.
523          $element
524            .off('click.drupal.bootstrap.popover')
525            .on('click.drupal.bootstrap.popover', function (e) {
526              $(this).popover('toggle');
527              e.preventDefault();
528              e.stopPropagation();
529            })
530          ;
531        }
532      }
533    },
534    detach: function (context) {
535      // Immediately return if popovers are not available.
536      if (!$.fn.popover || !$.fn.popover.Constructor.DEFAULTS.enabled) {
537        return;
538      }
539
540      // Destroy all popovers.
541      $(context).find('[data-toggle="popover"]')
542        .off('click.drupal.bootstrap.popover')
543        .popover('destroy')
544      ;
545    },
546    getOption: function(name, defaultValue, element) {
547      var $element = element ? $(element) : this.$activePopover;
548      var options = $.extend(true, {}, $.fn.popover.Constructor.DEFAULTS, ($element && $element.data('bs.popover') || {}).options);
549      if (options[name] !== void 0) {
550        return options[name];
551      }
552      return defaultValue !== void 0 ? defaultValue : void 0;
553    }
554  };
555
556})(window.jQuery, window.Drupal, window.Drupal.bootstrap);
557;
558/**
559 * @file
560 * Bootstrap Tooltips.
561 */
562
563var Drupal = Drupal || {};
564
565(function ($, Drupal, Bootstrap) {
566  "use strict";
567
568  /**
569   * Extend the Bootstrap Tooltip plugin constructor class.
570   */
571  Bootstrap.extendPlugin('tooltip', function (settings) {
572    return {
573      DEFAULTS: {
574        animation: !!settings.tooltip_animation,
575        enabled: settings.tooltip_enabled,
576        html: !!settings.tooltip_html,
577        placement: settings.tooltip_placement,
578        selector: settings.tooltip_selector,
579        trigger: settings.tooltip_trigger,
580        delay: parseInt(settings.tooltip_delay, 10),
581        container: settings.tooltip_container
582      }
583    };
584  });
585
586  /**
587   * Bootstrap Tooltips.
588   *
589   * @todo This should really be properly delegated if selector option is set.
590   */
591  Drupal.behaviors.bootstrapTooltips = {
592    attach: function (context) {
593      // Immediately return if tooltips are not available.
594      if (!$.fn.tooltip || !$.fn.tooltip.Constructor.DEFAULTS.enabled) {
595        return;
596      }
597
598      var elements = $(context).find('[data-toggle="tooltip"]').toArray();
599      for (var i = 0; i < elements.length; i++) {
600        var $element = $(elements[i]);
601        var options = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, $element.data());
602        $element.tooltip(options);
603      }
604    },
605    detach: function (context) {
606      // Immediately return if tooltips are not available.
607      if (!$.fn.tooltip || !$.fn.tooltip.Constructor.DEFAULTS.enabled) {
608        return;
609      }
610
611      // Destroy all tooltips.
612      $(context).find('[data-toggle="tooltip"]').tooltip('destroy');
613    }
614  };
615
616})(window.jQuery, window.Drupal, window.Drupal.bootstrap);
617;
618/*!
619 * jQuery Form Plugin
620 * version: 4.3.0
621 * Requires jQuery v1.7.2 or later
622 * Project repository: https://github.com/jquery-form/form
623
624 * Copyright 2017 Kevin Morris
625 * Copyright 2006 M. Alsup
626
627 * Dual licensed under the LGPL-2.1+ or MIT licenses
628 * https://github.com/jquery-form/form#license
629
630 * This library is free software; you can redistribute it and/or
631 * modify it under the terms of the GNU Lesser General Public
vendor: 16,397 bytes, lines 632-639
632 * License as published by the Free Software Foundation; either
633 * version 2.1 of the License, or (at your option) any later version.
634 * This library is distributed in the hope that it will be useful,
635 * but WITHOUT ANY WARRANTY; without even the implied warranty of
636 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
637 * Lesser General Public License for more details.
638 */
639!function(r){"function"==typeof define&&define.amd?define(["jquery"],r):"object"==typeof module&&module.exports?module.exports=function(e,t){return void 0===t&&(t="undefined"!=typeof window?require("jquery"):require("jquery")(e)),r(t),t}:r(jQuery)}(function(q){"use strict";var m=/\r?\n/g,S={};S.fileapi=void 0!==q('<input type="file">').get(0).files,S.formdata=void 0!==window.FormData;var _=!!q.fn.prop;function o(e){var t=e.data;e.isDefaultPrevented()||(e.preventDefault(),q(e.target).closest("form").ajaxSubmit(t))}function i(e){var t=e.target,r=q(t);if(!r.is("[type=submit],[type=image]")){var a=r.closest("[type=submit]");if(0===a.length)return;t=a[0]}var n,o=t.form;"image"===(o.clk=t).type&&(void 0!==e.offsetX?(o.clk_x=e.offsetX,o.clk_y=e.offsetY):"function"==typeof q.fn.offset?(n=r.offset(),o.clk_x=e.pageX-n.left,o.clk_y=e.pageY-n.top):(o.clk_x=e.pageX-t.offsetLeft,o.clk_y=e.pageY-t.offsetTop)),setTimeout(function(){o.clk=o.clk_x=o.clk_y=null},100)}function N(){var e;q.fn.ajaxSubmit.debug&&(e="[jquery.form] "+Array.prototype.join.call(arguments,""),window.console&&window.console.log?window.console.log(e):window.opera&&window.opera.postError&&window.opera.postError(e))}q.fn.attr2=function(){if(!_)return this.attr.apply(this,arguments);var e=this.prop.apply(this,arguments);return e&&e.jquery||"string"==typeof e?e:this.attr.apply(this,arguments)},q.fn.ajaxSubmit=function(M,e,t,r){if(!this.length)return N("ajaxSubmit: skipping submit process - no element selected"),this;var O,a,n,o,X=this;"function"==typeof M?M={success:M}:"string"==typeof M||!1===M&&0<arguments.length?(M={url:M,data:e,dataType:t},"function"==typeof r&&(M.success=r)):void 0===M&&(M={}),O=M.method||M.type||this.attr2("method"),n=(n=(n="string"==typeof(a=M.url||this.attr2("action"))?q.trim(a):"")||window.location.href||"")&&(n.match(/^([^#]+)/)||[])[1],o=/(MSIE|Trident)/.test(navigator.userAgent||"")&&/^https/i.test(window.location.href||"")?"javascript:false":"about:blank",M=q.extend(!0,{url:n,success:q.ajaxSettings.success,type:O||q.ajaxSettings.type,iframeSrc:o},M);var i={};if(this.trigger("form-pre-serialize",[this,M,i]),i.veto)return N("ajaxSubmit: submit vetoed via form-pre-serialize trigger"),this;if(M.beforeSerialize&&!1===M.beforeSerialize(this,M))return N("ajaxSubmit: submit aborted via beforeSerialize callback"),this;var s=M.traditional;void 0===s&&(s=q.ajaxSettings.traditional);var u,c,C=[],l=this.formToArray(M.semantic,C,M.filtering);if(M.data&&(c=q.isFunction(M.data)?M.data(l):M.data,M.extraData=c,u=q.param(c,s)),M.beforeSubmit&&!1===M.beforeSubmit(l,this,M))return N("ajaxSubmit: submit aborted via beforeSubmit callback"),this;if(this.trigger("form-submit-validate",[l,this,M,i]),i.veto)return N("ajaxSubmit: submit vetoed via form-submit-validate trigger"),this;var f=q.param(l,s);u&&(f=f?f+"&"+u:u),"GET"===M.type.toUpperCase()?(M.url+=(0<=M.url.indexOf("?")?"&":"?")+f,M.data=null):M.data=f;var d,m,p,h=[];M.resetForm&&h.push(function(){X.resetForm()}),M.clearForm&&h.push(function(){X.clearForm(M.includeHidden)}),!M.dataType&&M.target?(d=M.success||function(){},h.push(function(e,t,r){var a=arguments,n=M.replaceTarget?"replaceWith":"html";q(M.target)[n](e).each(function(){d.apply(this,a)})})):M.success&&(q.isArray(M.success)?q.merge(h,M.success):h.push(M.success)),M.success=function(e,t,r){for(var a=M.context||this,n=0,o=h.length;n<o;n++)h[n].apply(a,[e,t,r||X,X])},M.error&&(m=M.error,M.error=function(e,t,r){var a=M.context||this;m.apply(a,[e,t,r,X])}),M.complete&&(p=M.complete,M.complete=function(e,t){var r=M.context||this;p.apply(r,[e,t,X])});var v=0<q("input[type=file]:enabled",this).filter(function(){return""!==q(this).val()}).length,g="multipart/form-data",x=X.attr("enctype")===g||X.attr("encoding")===g,y=S.fileapi&&S.formdata;N("fileAPI :"+y);var b,T=(v||x)&&!y;!1!==M.iframe&&(M.iframe||T)?M.closeKeepAlive?q.get(M.closeKeepAlive,function(){b=w(l)}):b=w(l):b=(v||x)&&y?function(e){for(var r=new FormData,t=0;t<e.length;t++)r.append(e[t].name,e[t].value);if(M.extraData){var a=function(e){var t,r,a=q.param(e,M.traditional).split("&"),n=a.length,o=[];for(t=0;t<n;t++)a[t]=a[t].replace(/\+/g," "),r=a[t].split("="),o.push([decodeURIComponent(r[0]),decodeURIComponent(r[1])]);return o}(M.extraData);for(t=0;t<a.length;t++)a[t]&&r.append(a[t][0],a[t][1])}M.data=null;var n=q.extend(!0,{},q.ajaxSettings,M,{contentType:!1,processData:!1,cache:!1,type:O||"POST"});M.uploadProgress&&(n.xhr=function(){var e=q.ajaxSettings.xhr();return e.upload&&e.upload.addEventListener("progress",function(e){var t=0,r=e.loaded||e.position,a=e.total;e.lengthComputable&&(t=Math.ceil(r/a*100)),M.uploadProgress(e,r,a,t)},!1),e});n.data=null;var o=n.beforeSend;return n.beforeSend=function(e,t){M.formData?t.data=M.formData:t.data=r,o&&o.call(this,e,t)},q.ajax(n)}(l):q.ajax(M),X.removeData("jqxhr").data("jqxhr",b);for(var j=0;j<C.length;j++)C[j]=null;return this.trigger("form-submit-notify",[this,M]),this;function w(e){var t,r,l,f,o,d,m,p,a,n,h,v,i=X[0],g=q.Deferred();if(g.abort=function(e){p.abort(e)},e)for(r=0;r<C.length;r++)t=q(C[r]),_?t.prop("disabled",!1):t.removeAttr("disabled");(l=q.extend(!0,{},q.ajaxSettings,M)).context=l.context||l,o="jqFormIO"+(new Date).getTime();var s=i.ownerDocument,u=X.closest("body");if(l.iframeTarget?(n=(d=q(l.iframeTarget,s)).attr2("name"))?o=n:d.attr2("name",o):(d=q('<iframe name="'+o+'" src="'+l.iframeSrc+'" />',s)).css({position:"absolute",top:"-1000px",left:"-1000px"}),m=d[0],p={aborted:0,responseText:null,responseXML:null,status:0,statusText:"n/a",getAllResponseHeaders:function(){},getResponseHeader:function(){},setRequestHeader:function(){},abort:function(e){var t="timeout"===e?"timeout":"aborted";N("aborting upload... "+t),this.aborted=1;try{m.contentWindow.document.execCommand&&m.contentWindow.document.execCommand("Stop")}catch(e){}d.attr("src",l.iframeSrc),p.error=t,l.error&&l.error.call(l.context,p,t,e),f&&q.event.trigger("ajaxError",[p,l,t]),l.complete&&l.complete.call(l.context,p,t)}},(f=l.global)&&0==q.active++&&q.event.trigger("ajaxStart"),f&&q.event.trigger("ajaxSend",[p,l]),l.beforeSend&&!1===l.beforeSend.call(l.context,p,l))return l.global&&q.active--,g.reject(),g;if(p.aborted)return g.reject(),g;(a=i.clk)&&(n=a.name)&&!a.disabled&&(l.extraData=l.extraData||{},l.extraData[n]=a.value,"image"===a.type&&(l.extraData[n+".x"]=i.clk_x,l.extraData[n+".y"]=i.clk_y));var x=1,y=2;function b(t){var r=null;try{t.contentWindow&&(r=t.contentWindow.document)}catch(e){N("cannot get iframe.contentWindow document: "+e)}if(r)return r;try{r=t.contentDocument?t.contentDocument:t.document}catch(e){N("cannot get iframe.contentDocument: "+e),r=t.document}return r}var c=q("meta[name=csrf-token]").attr("content"),T=q("meta[name=csrf-param]").attr("content");function j(){var e=X.attr2("target"),t=X.attr2("action"),r=X.attr("enctype")||X.attr("encoding")||"multipart/form-data";i.setAttribute("target",o),O&&!/post/i.test(O)||i.setAttribute("method","POST"),t!==l.url&&i.setAttribute("action",l.url),l.skipEncodingOverride||O&&!/post/i.test(O)||X.attr({encoding:"multipart/form-data",enctype:"multipart/form-data"}),l.timeout&&(v=setTimeout(function(){h=!0,A(x)},l.timeout));var a=[];try{if(l.extraData)for(var n in l.extraData)l.extraData.hasOwnProperty(n)&&(q.isPlainObject(l.extraData[n])&&l.extraData[n].hasOwnProperty("name")&&l.extraData[n].hasOwnProperty("value")?a.push(q('<input type="hidden" name="'+l.extraData[n].name+'">',s).val(l.extraData[n].value).appendTo(i)[0]):a.push(q('<input type="hidden" name="'+n+'">',s).val(l.extraData[n]).appendTo(i)[0]));l.iframeTarget||d.appendTo(u),m.attachEvent?m.attachEvent("onload",A):m.addEventListener("load",A,!1),setTimeout(function e(){try{var t=b(m).readyState;N("state = "+t),t&&"uninitialized"===t.toLowerCase()&&setTimeout(e,50)}catch(e){N("Server abort: ",e," (",e.name,")"),A(y),v&&clearTimeout(v),v=void 0}},15);try{i.submit()}catch(e){document.createElement("form").submit.apply(i)}}finally{i.setAttribute("action",t),i.setAttribute("enctype",r),e?i.setAttribute("target",e):X.removeAttr("target"),q(a).remove()}}T&&c&&(l.extraData=l.extraData||{},l.extraData[T]=c),l.forceSync?j():setTimeout(j,10);var w,S,k,D=50;function A(e){if(!p.aborted&&!k){if((S=b(m))||(N("cannot access response document"),e=y),e===x&&p)return p.abort("timeout"),void g.reject(p,"timeout");if(e===y&&p)return p.abort("server abort"),void g.reject(p,"error","server abort");if(S&&S.location.href!==l.iframeSrc||h){m.detachEvent?m.detachEvent("onload",A):m.removeEventListener("load",A,!1);var t,r="success";try{if(h)throw"timeout";var a="xml"===l.dataType||S.XMLDocument||q.isXMLDoc(S);if(N("isXml="+a),!a&&window.opera&&(null===S.body||!S.body.innerHTML)&&--D)return N("requeing onLoad callback, DOM not available"),void setTimeout(A,250);var n=S.body?S.body:S.documentElement;p.responseText=n?n.innerHTML:null,p.responseXML=S.XMLDocument?S.XMLDocument:S,a&&(l.dataType="xml"),p.getResponseHeader=function(e){return{"content-type":l.dataType}[e.toLowerCase()]},n&&(p.status=Number(n.getAttribute("status"))||p.status,p.statusText=n.getAttribute("statusText")||p.statusText);var o,i,s,u=(l.dataType||"").toLowerCase(),c=/(json|script|text)/.test(u);c||l.textarea?(o=S.getElementsByTagName("textarea")[0])?(p.responseText=o.value,p.status=Number(o.getAttribute("status"))||p.status,p.statusText=o.getAttribute("statusText")||p.statusText):c&&(i=S.getElementsByTagName("pre")[0],s=S.getElementsByTagName("body")[0],i?p.responseText=i.textContent?i.textContent:i.innerText:s&&(p.responseText=s.textContent?s.textContent:s.innerText)):"xml"===u&&!p.responseXML&&p.responseText&&(p.responseXML=F(p.responseText));try{w=E(p,u,l)}catch(e){r="parsererror",p.error=t=e||r}}catch(e){N("error caught: ",e),r="error",p.error=t=e||r}p.aborted&&(N("upload aborted"),r=null),p.status&&(r=200<=p.status&&p.status<300||304===p.status?"success":"error"),"success"===r?(l.success&&l.success.call(l.context,w,"success",p),g.resolve(p.responseText,"success",p),f&&q.event.trigger("ajaxSuccess",[p,l])):r&&(void 0===t&&(t=p.statusText),l.error&&l.error.call(l.context,p,r,t),g.reject(p,"error",t),f&&q.event.trigger("ajaxError",[p,l,t])),f&&q.event.trigger("ajaxComplete",[p,l]),f&&!--q.active&&q.event.trigger("ajaxStop"),l.complete&&l.complete.call(l.context,p,r),k=!0,l.timeout&&clearTimeout(v),setTimeout(function(){l.iframeTarget?d.attr("src",l.iframeSrc):d.remove(),p.responseXML=null},100)}}}var F=q.parseXML||function(e,t){return window.ActiveXObject?((t=new ActiveXObject("Microsoft.XMLDOM")).async="false",t.loadXML(e)):t=(new DOMParser).parseFromString(e,"text/xml"),t&&t.documentElement&&"parsererror"!==t.documentElement.nodeName?t:null},L=q.parseJSON||function(e){return window.eval("("+e+")")},E=function(e,t,r){var a=e.getResponseHeader("content-type")||"",n=("xml"===t||!t)&&0<=a.indexOf("xml"),o=n?e.responseXML:e.responseText;return n&&"parsererror"===o.documentElement.nodeName&&q.error&&q.error("parsererror"),r&&r.dataFilter&&(o=r.dataFilter(o,t)),"string"==typeof o&&(("json"===t||!t)&&0<=a.indexOf("json")?o=L(o):("script"===t||!t)&&0<=a.indexOf("javascript")&&q.globalEval(o)),o};return g}},q.fn.ajaxForm=function(e,t,r,a){if(("string"==typeof e||!1===e&&0<arguments.length)&&(e={url:e,data:t,dataType:r},"function"==typeof a&&(e.success=a)),(e=e||{}).delegation=e.delegation&&q.isFunction(q.fn.on),e.delegation||0!==this.length)return e.delegation?(q(document).off("submit.form-plugin",this.selector,o).off("click.form-plugin",this.selector,i).on("submit.form-plugin",this.selector,e,o).on("click.form-plugin",this.selector,e,i),this):(e.beforeFormUnbind&&e.beforeFormUnbind(this,e),this.ajaxFormUnbind().on("submit.form-plugin",e,o).on("click.form-plugin",e,i));var n={s:this.selector,c:this.context};return!q.isReady&&n.s?(N("DOM not ready, queuing ajaxForm"),q(function(){q(n.s,n.c).ajaxForm(e)})):N("terminating; zero elements found by selector"+(q.isReady?"":" (DOM not ready)")),this},q.fn.ajaxFormUnbind=function(){return this.off("submit.form-plugin click.form-plugin")},q.fn.formToArray=function(e,t,r){var a=[];if(0===this.length)return a;var n,o,i,s,u,c,l,f,d,m,p=this[0],h=this.attr("id"),v=(v=e||void 0===p.elements?p.getElementsByTagName("*"):p.elements)&&q.makeArray(v);if(h&&(e||/(Edge|Trident)\//.test(navigator.userAgent))&&(n=q(':input[form="'+h+'"]').get()).length&&(v=(v||[]).concat(n)),!v||!v.length)return a;for(q.isFunction(r)&&(v=q.map(v,r)),o=0,c=v.length;o<c;o++)if((m=(u=v[o]).name)&&!u.disabled)if(e&&p.clk&&"image"===u.type)p.clk===u&&(a.push({name:m,value:q(u).val(),type:u.type}),a.push({name:m+".x",value:p.clk_x},{name:m+".y",value:p.clk_y}));else if((s=q.fieldValue(u,!0))&&s.constructor===Array)for(t&&t.push(u),i=0,l=s.length;i<l;i++)a.push({name:m,value:s[i]});else if(S.fileapi&&"file"===u.type){t&&t.push(u);var g=u.files;if(g.length)for(i=0;i<g.length;i++)a.push({name:m,value:g[i],type:u.type});else a.push({name:m,value:"",type:u.type})}else null!=s&&(t&&t.push(u),a.push({name:m,value:s,type:u.type,required:u.required}));return e||!p.clk||(m=(d=(f=q(p.clk))[0]).name)&&!d.disabled&&"image"===d.type&&(a.push({name:m,value:f.val()}),a.push({name:m+".x",value:p.clk_x},{name:m+".y",value:p.clk_y})),a},q.fn.formSerialize=function(e){return q.param(this.formToArray(e))},q.fn.fieldSerialize=function(n){var o=[];return this.each(function(){var e=this.name;if(e){var t=q.fieldValue(this,n);if(t&&t.constructor===Array)for(var r=0,a=t.length;r<a;r++)o.push({name:e,value:t[r]});else null!=t&&o.push({name:this.name,value:t})}}),q.param(o)},q.fn.fieldValue=function(e){for(var t=[],r=0,a=this.length;r<a;r++){var n=this[r],o=q.fieldValue(n,e);null==o||o.constructor===Array&&!o.length||(o.constructor===Array?q.merge(t,o):t.push(o))}return t},q.fieldValue=function(e,t){var r=e.name,a=e.type,n=e.tagName.toLowerCase();if(void 0===t&&(t=!0),t&&(!r||e.disabled||"reset"===a||"button"===a||("checkbox"===a||"radio"===a)&&!e.checked||("submit"===a||"image"===a)&&e.form&&e.form.clk!==e||"select"===n&&-1===e.selectedIndex))return null;if("select"!==n)return q(e).val().replace(m,"\r\n");var o=e.selectedIndex;if(o<0)return null;for(var i=[],s=e.options,u="select-one"===a,c=u?o+1:s.length,l=u?o:0;l<c;l++){var f=s[l];if(f.selected&&!f.disabled){var d=(d=f.value)||(f.attributes&&f.attributes.value&&!f.attributes.value.specified?f.text:f.value);if(u)return d;i.push(d)}}return i},q.fn.clearForm=function(e){return this.each(function(){q("input,select,textarea",this).clearFields(e)})},q.fn.clearFields=q.fn.clearInputs=function(r){var a=/^(?:color|date|datetime|email|month|number|password|range|search|tel|text|time|url|week)$/i;return this.each(function(){var e=this.type,t=this.tagName.toLowerCase();a.test(e)||"textarea"===t?this.value="":"checkbox"===e||"radio"===e?this.checked=!1:"select"===t?this.selectedIndex=-1:"file"===e?/MSIE/.test(navigator.userAgent)?q(this).replaceWith(q(this).clone(!0)):q(this).val(""):r&&(!0===r&&/hidden/.test(e)||"string"==typeof r&&q(this).is(r))&&(this.value="")})},q.fn.resetForm=function(){return this.each(function(){var t=q(this),e=this.tagName.toLowerCase();switch(e){case"input":this.checked=this.defaultChecked;case"textarea":return this.value=this.defaultValue,!0;case"option":case"optgroup":var r=t.parents("select");return r.length&&r[0].multiple?"option"===e?this.selected=this.defaultSelected:t.find("option").resetForm():r.resetForm(),!0;case"select":return t.find("option").each(function(e){if(this.selected=this.defaultSelected,this.defaultSelected&&!t[0].multiple)return t[0].selectedIndex=e,!1}),!0;case"label":var a=q(t.attr("for")),n=t.find("input,select,textarea");return a[0]&&n.unshift(a[0]),n.resetForm(),!0;case"form":return"function"!=typeof this.reset&&("object"!=typeof this.reset||this.reset.nodeType)||this.reset(),!0;default:return t.find("form,input,label,select,textarea").resetForm(),!0}})},q.fn.enable=function(e){return void 0===e&&(e=!0),this.each(function(){this.disabled=!e})},q.fn.selected=function(r){return void 0===r&&(r=!0),this.each(function(){var e,t=this.t
639ype;"checkbox"===t||"radio"===t?this.checked=r:"option"===this.tagName.toLowerCase()&&(e=q(this).parent("select"),r&&e[0]&&"select-one"===e[0].type&&e.find("option").selected(!1),this.selected=r)})},q.fn.ajaxSubmit.debug=!1});
640
641;
642/**
643* DO NOT EDIT THIS FILE.
644* See the following change record for more information,
645* https://www.drupal.org/node/2815083
646* @preserve
647**/
648(function ($, Drupal, drupalSettings) {
649  Drupal.Views = {};
650  Drupal.Views.parseQueryString = function (query) {
651    var args = {};
652    var pos = query.indexOf('?');
653    if (pos !== -1) {
654      query = query.substring(pos + 1);
655    }
656    var pair;
657    var pairs = query.split('&');
658    for (var i = 0; i < pairs.length; i++) {
659      pair = pairs[i].split('=');
660      if (pair[0] !== 'q' && pair[1]) {
661        args[decodeURIComponent(pair[0].replace(/\+/g, ' '))] = decodeURIComponent(pair[1].replace(/\+/g, ' '));
662      }
663    }
664    return args;
665  };
666  Drupal.Views.parseViewArgs = function (href, viewPath) {
667    var returnObj = {};
668    var path = Drupal.Views.getPath(href);
669    var viewHref = Drupal.url(viewPath).substring(drupalSettings.path.baseUrl.length);
670    if (viewHref && path.substring(0, viewHref.length + 1) === "".concat(viewHref, "/")) {
671      returnObj.view_args = decodeURIComponent(path.substring(viewHref.length + 1, path.length));
672      returnObj.view_path = path;
673    }
674    return returnObj;
675  };
676  Drupal.Views.pathPortion = function (href) {
677    var protocol = window.location.protocol;
678    if (href.substring(0, protocol.length) === protocol) {
679      href = href.substring(href.indexOf('/', protocol.length + 2));
680    }
681    return href;
682  };
683  Drupal.Views.getPath = function (href) {
684    href = Drupal.Views.pathPortion(href);
685    href = href.substring(drupalSettings.path.baseUrl.length, href.length);
686    if (href.substring(0, 3) === '?q=') {
687      href = href.substring(3, href.length);
688    }
689    var chars = ['#', '?', '&'];
690    for (var i = 0; i < chars.length; i++) {
691      if (href.indexOf(chars[i]) > -1) {
692        href = href.substr(0, href.indexOf(chars[i]));
693      }
694    }
695    return href;
696  };
697})(jQuery, Drupal, drupalSettings);;
698/**
699* DO NOT EDIT THIS FILE.
700* See the following change record for more information,
701* https://www.drupal.org/node/2815083
702* @preserve
703**/
704(function ($, Drupal, drupalSettings) {
705  Drupal.behaviors.ViewsAjaxView = {};
706  Drupal.behaviors.ViewsAjaxView.attach = function (context, settings) {
707    if (settings && settings.views && settings.views.ajaxViews) {
708      var ajaxViews = settings.views.ajaxViews;
709      Object.keys(ajaxViews || {}).forEach(function (i) {
710        Drupal.views.instances[i] = new Drupal.views.ajaxView(ajaxViews[i]);
711      });
712    }
713  };
714  Drupal.behaviors.ViewsAjaxView.detach = function (context, settings, trigger) {
715    if (trigger === 'unload') {
716      if (settings && settings.views && settings.views.ajaxViews) {
717        var ajaxViews = settings.views.ajaxViews;
718        Object.keys(ajaxViews || {}).forEach(function (i) {
719          var selector = ".js-view-dom-id-".concat(ajaxViews[i].view_dom_id);
720          if ($(selector, context).length) {
721            delete Drupal.views.instances[i];
722            delete settings.views.ajaxViews[i];
723          }
724        });
725      }
726    }
727  };
728  Drupal.views = {};
729  Drupal.views.instances = {};
730  Drupal.views.ajaxView = function (settings) {
731    var selector = ".js-view-dom-id-".concat(settings.view_dom_id);
732    this.$view = $(selector);
733    var ajaxPath = drupalSettings.views.ajax_path;
734    if (ajaxPath.constructor.toString().indexOf('Array') !== -1) {
735      ajaxPath = ajaxPath[0];
736    }
737    var queryString = window.location.search || '';
738    if (queryString !== '') {
739      queryString = queryString.slice(1).replace(/q=[^&]+&?|&?render=[^&]+/, '');
740      if (queryString !== '') {
741        queryString = (/\?/.test(ajaxPath) ? '&' : '?') + queryString;
742      }
743    }
744    this.element_settings = {
745      url: ajaxPath + queryString,
746      submit: settings,
747      setClick: true,
748      event: 'click',
749      selector: selector,
750      progress: {
751        type: 'fullscreen'
752      }
753    };
754    this.settings = settings;
755    this.$exposed_form = $("form#views-exposed-form-".concat(settings.view_name.replace(/_/g, '-'), "-").concat(settings.view_display_id.replace(/_/g, '-')));
756    once('exposed-form', this.$exposed_form).forEach($.proxy(this.attachExposedFormAjax, this));
757    once('ajax-pager', this.$view.filter($.proxy(this.filterNestedViews, this))).forEach($.proxy(this.attachPagerAjax, this));
758    var selfSettings = $.extend({}, this.element_settings, {
759      event: 'RefreshView',
760      base: this.selector,
761      element: this.$view.get(0)
762    });
763    this.refreshViewAjax = Drupal.ajax(selfSettings);
764  };
765  Drupal.views.ajaxView.prototype.attachExposedFormAjax = function () {
766    var that = this;
767    this.exposedFormAjax = [];
768    $('input[type=submit], button[type=submit], input[type=image]', this.$exposed_form).not('[data-drupal-selector=edit-reset]').each(function (index) {
769      var selfSettings = $.extend({}, that.element_settings, {
770        base: $(this).attr('id'),
771        element: this
772      });
773      that.exposedFormAjax[index] = Drupal.ajax(selfSettings);
774    });
775  };
776  Drupal.views.ajaxView.prototype.filterNestedViews = function () {
777    return !this.$view.parents('.view').length;
778  };
779  Drupal.views.ajaxView.prototype.attachPagerAjax = function () {
780    this.$view.find('ul.js-pager__items > li > a, th.views-field a, .attachment .views-summary a').each($.proxy(this.attachPagerLinkAjax, this));
781  };
782  Drupal.views.ajaxView.prototype.attachPagerLinkAjax = function (id, link) {
783    var $link = $(link);
784    var viewData = {};
785    var href = $link.attr('href');
786    $.extend(viewData, this.settings, Drupal.Views.parseQueryString(href), Drupal.Views.parseViewArgs(href, this.settings.view_base_path));
787    var selfSettings = $.extend({}, this.element_settings, {
788      submit: viewData,
789      base: false,
790      element: link
791    });
792    this.pagerAjax = Drupal.ajax(selfSettings);
793  };
794  Drupal.AjaxCommands.prototype.viewsScrollTop = function (ajax, response) {
795    var offset = $(response.selector).offset();
796    var scrollTarget = response.selector;
797    while ($(scrollTarget).scrollTop() === 0 && $(scrollTarget).parent()) {
798      scrollTarget = $(scrollTarget).parent();
799    }
800    if (offset.top - 10 < $(scrollTarget).scrollTop()) {
801      $(scrollTarget).animate({
802        scrollTop: offset.top - 10
803      }, 500);
804    }
805  };
806})(jQuery, Drupal, drupalSettings);;
807/**
808 * @file
809 * Extends core ajax_view.js.
810 */
811
812(function ($, Drupal) {
813  'use strict';
814
815  /**
816   * @method
817   */
818  Drupal.views.ajaxView.prototype.attachExposedFormAjax = function () {
819    var that = this;
820    this.exposedFormAjax = [];
821    $('button[type=submit], input[type=submit], input[type=image]', this.$exposed_form).not('[data-drupal-selector=edit-reset]').each(function (index) {
822      var self_settings = $.extend({}, that.element_settings, {
823        base: $(this).attr('id'),
824        element: this
825      });
826      that.exposedFormAjax[index] = Drupal.ajax(self_settings);
827    });
828  };
829
830})(jQuery, Drupal);
831;

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.