Conditional Fields for Contact Form 7 - Version 1.8.5

Version Description

(2020-04-17) = * Tested with WP 5.4 * fix multiselect * fix required file field inside mutistep * allow group names to contain . and : (https://github.com/pwkip/contact-form-7-conditional-fields/issues/46) * fix possible conflicts with require_once 'init.php' (https://wordpress.org/support/topic/conflict-with-theme-because-of-require_once/) * Created some unit tests and integration tests, so hopefully no more regression bugs from now on! (next step: automated CI before publish) * Got rid of warnings and notices when creating a new form. * Fix small clear_on_hide bug with select field (https://github.com/pwkip/contact-form-7-conditional-fields/issues/51) * PRO: fix "not empty" when using first_as_label in select field. (closes guthub issue #48) * PRO: fix error with nested repeater buttons text * PRO: new version of plugin_update_checker, compatible with PHP 7.3+

Download this release

Release Info

Developer Jules Colle
Plugin Icon 128x128 Conditional Fields for Contact Form 7
Version 1.8.5
Comparing to
See all releases

Code changes from version 1.8.3 to 1.8.5

Files changed (5) hide show
  1. admin.php +11 -1
  2. contact-form-7-conditional-fields.php +2 -2
  3. init.php +1 -1
  4. js/scripts.js +9709 -125
  5. js/scripts.js.map +1 -1
admin.php CHANGED
@@ -70,7 +70,17 @@ if (!function_exists('all_operator_options')) {
70
 
71
  function wpcf7cf_editor_panel_conditional($form) {
72
 
73
- $form_id = $_GET['post'];
 
 
 
 
 
 
 
 
 
 
74
 
75
  $wpcf7cf_entries = CF7CF::getConditions($form_id);
76
 
70
 
71
  function wpcf7cf_editor_panel_conditional($form) {
72
 
73
+ $form_id = isset($_GET['post']) ? $_GET['post'] : false;
74
+
75
+ if ($form_id === false) {
76
+ ?>
77
+ <div class="wpcf7cf-inner-container">
78
+ <h2><?php echo esc_html( __( 'Conditional fields', 'wpcf7cf' ) ); ?></h2>
79
+ <p>You need to save your form, before you can start adding conditions.</p>
80
+ </div>
81
+ <?php
82
+ return;
83
+ }
84
 
85
  $wpcf7cf_entries = CF7CF::getConditions($form_id);
86
 
contact-form-7-conditional-fields.php CHANGED
@@ -4,7 +4,7 @@ Plugin Name: Contact Form 7 Conditional Fields
4
  Plugin URI: http://bdwm.be/
5
  Description: Adds support for conditional fields to Contact Form 7. This plugin depends on Contact Form 7.
6
  Author: Jules Colle
7
- Version: 1.8.3
8
  Author URI: http://bdwm.be/
9
  */
10
 
@@ -37,6 +37,6 @@ if ( function_exists( 'wpcf7cf_pro_deactivate_free_version_notice' ) ) {
37
  <?php
38
  }
39
 
40
- require_once 'init.php';
41
 
42
  }
4
  Plugin URI: http://bdwm.be/
5
  Description: Adds support for conditional fields to Contact Form 7. This plugin depends on Contact Form 7.
6
  Author: Jules Colle
7
+ Version: 1.8.5
8
  Author URI: http://bdwm.be/
9
  */
10
 
37
  <?php
38
  }
39
 
40
+ require_once __DIR__.'/init.php';
41
 
42
  }
init.php CHANGED
@@ -1,6 +1,6 @@
1
  <?php
2
 
3
- if (!defined('WPCF7CF_VERSION')) define( 'WPCF7CF_VERSION', '1.8.3' );
4
  if (!defined('WPCF7CF_REQUIRED_WP_VERSION')) define( 'WPCF7CF_REQUIRED_WP_VERSION', '4.1' );
5
  if (!defined('WPCF7CF_PLUGIN')) define( 'WPCF7CF_PLUGIN', __FILE__ );
6
  if (!defined('WPCF7CF_PLUGIN_BASENAME')) define( 'WPCF7CF_PLUGIN_BASENAME', plugin_basename( WPCF7CF_PLUGIN ) );
1
  <?php
2
 
3
+ if (!defined('WPCF7CF_VERSION')) define( 'WPCF7CF_VERSION', '1.8.5' );
4
  if (!defined('WPCF7CF_REQUIRED_WP_VERSION')) define( 'WPCF7CF_REQUIRED_WP_VERSION', '4.1' );
5
  if (!defined('WPCF7CF_PLUGIN')) define( 'WPCF7CF_PLUGIN', __FILE__ );
6
  if (!defined('WPCF7CF_PLUGIN_BASENAME')) define( 'WPCF7CF_PLUGIN_BASENAME', plugin_basename( WPCF7CF_PLUGIN ) );
js/scripts.js CHANGED
@@ -97,12 +97,20 @@
97
  __webpack_require__.r(__webpack_exports__);
98
  /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
99
  /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);
 
 
 
 
 
 
100
 
101
 
102
 
103
  var cf7signature_resized = 0; // for compatibility with contact-form-7-signature-addon
104
 
105
  var wpcf7cf_timeout;
 
 
106
  var wpcf7cf_show_animation = {
107
  "height": "show",
108
  "marginTop": "show",
@@ -169,7 +177,7 @@ var Wpcf7cfForm = function Wpcf7cfForm($form) {
169
 
170
  form.initial_conditions = form.conditions;
171
  form.settings = form_options['settings'];
172
- form.$groups = jQuery(); // empty jQuery set
173
 
174
  form.repeaters = [];
175
  form.multistep = null;
@@ -198,13 +206,13 @@ var Wpcf7cfForm = function Wpcf7cfForm($form) {
198
  }, 200);
199
  }); // PRO ONLY
200
 
201
- jQuery('.wpcf7cf_repeater:not(.wpcf7cf_repeater .wpcf7cf_repeater)', $form).each(function () {
202
- form.repeaters.push(new Wpcf7cfRepeater(jQuery(this), form));
203
  });
204
  form.$input_repeaters.val(JSON.stringify(form.repeaters.map(function (item) {
205
  return item.params.$repeater.id;
206
  })));
207
- var $multistep = jQuery('.wpcf7cf_multistep', $form);
208
 
209
  if ($multistep.length) {
210
  form.multistep = new Wpcf7cfMultistep($multistep, form); // window.wpcf7cf.updateMultistepState(form.multistep);
@@ -234,8 +242,8 @@ Wpcf7cfForm.prototype.displayFields = function () {
234
  if (cf7signature_resized === 0 && typeof signatures !== 'undefined' && signatures.constructor === Array && signatures.length > 0) {
235
  for (var i = 0; i < signatures.length; i++) {
236
  if (signatures[i].canvas.width === 0) {
237
- var $sig_canvas = jQuery(".wpcf7-form-control-signature-body>canvas");
238
- var $sig_wrap = jQuery(".wpcf7-form-control-signature-wrap");
239
  $sig_canvas.eq(i).attr('width', $sig_wrap.width());
240
  $sig_canvas.eq(i).attr('height', $sig_wrap.height());
241
  cf7signature_resized = 1;
@@ -250,14 +258,14 @@ Wpcf7cfForm.prototype.displayFields = function () {
250
  var show_group = window.wpcf7cf.should_group_be_shown(condition, form.$form);
251
 
252
  if (show_group) {
253
- jQuery('[data-id=' + condition.then_field + ']', form.$form).eq(0).removeClass('wpcf7cf-hidden');
254
  }
255
  }
256
 
257
  var animation_intime = wpcf7cf_settings.animation_intime;
258
  var animation_outtime = wpcf7cf_settings.animation_outtime;
259
  form.$groups.each(function (index) {
260
- var $group = jQuery(this);
261
  if ($group.is(':animated')) $group.finish(); // stop any current animations on the group
262
 
263
  if ($group.css('display') === 'none' && !$group.hasClass('wpcf7cf-hidden')) {
@@ -268,12 +276,22 @@ Wpcf7cfForm.prototype.displayFields = function () {
268
  }
269
  } else if ($group.css('display') !== 'none' && $group.hasClass('wpcf7cf-hidden')) {
270
  if ($group.attr('data-clear_on_hide') !== undefined) {
271
- var $inputs = jQuery(':input', $group).not(':button, :submit, :reset, :hidden');
272
  $inputs.each(function () {
273
- var $this = jQuery(this);
274
  $this.val(this.defaultValue);
275
  $this.prop('checked', this.defaultChecked);
276
  });
 
 
 
 
 
 
 
 
 
 
277
  $inputs.change(); //display_fields();
278
  }
279
 
@@ -289,14 +307,14 @@ Wpcf7cfForm.prototype.displayFields = function () {
289
  };
290
 
291
  Wpcf7cfForm.prototype.updateSummaryFields = function () {
292
- var $summary = jQuery('.wpcf7cf-summary', this.$form);
293
  if ($summary.length == 0 || !$summary.is(':visible')) return;
294
  var fd = new FormData();
295
  var formdata = this.$form.serializeArray();
296
- jQuery.each(formdata, function (key, input) {
297
  fd.append(input.name, input.value);
298
  });
299
- jQuery.ajax({
300
  url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_get_summary',
301
  type: 'POST',
302
  data: fd,
@@ -315,12 +333,12 @@ Wpcf7cfForm.prototype.updateHiddenFields = function () {
315
  var hidden_groups = [];
316
  var visible_groups = [];
317
  form.$groups.each(function () {
318
- var $this = jQuery(this);
319
 
320
  if ($this.hasClass('wpcf7cf-hidden')) {
321
  hidden_groups.push($this.data('id'));
322
  $this.find('input,select,textarea').each(function () {
323
- hidden_fields.push(jQuery(this).attr('name'));
324
  });
325
  } else {
326
  visible_groups.push($this.data('id'));
@@ -344,16 +362,16 @@ Wpcf7cfForm.prototype.updateGroups = function () {
344
  Wpcf7cfForm.prototype.updateEventListeners = function () {
345
  var form = this; // monitor input changes, and call display_fields() if something has changed
346
 
347
- jQuery('input, select, textarea, button', form.$form).not('.wpcf7cf_add, .wpcf7cf_remove').off(wpcf7cf_change_events).on(wpcf7cf_change_events, form, function (e) {
348
  var form = e.data;
349
  clearTimeout(wpcf7cf_timeout);
350
  wpcf7cf_timeout = setTimeout(function () {
351
  form.displayFields();
352
- }, 100);
353
  }); // PRO ONLY
354
 
355
- jQuery('.wpcf7cf-togglebutton', form.$form).off('click.toggle_wpcf7cf').on('click.toggle_wpcf7cf', function () {
356
- var $this = jQuery(this);
357
 
358
  if ($this.text() === $this.data('val-1')) {
359
  $this.text($this.data('val-2'));
@@ -367,7 +385,7 @@ Wpcf7cfForm.prototype.updateEventListeners = function () {
367
 
368
 
369
  function Wpcf7cfRepeater($repeater, form) {
370
- var $ = jQuery;
371
  var repeater = this;
372
  var wpcf7cf_settings = form.settings;
373
  repeater.form = form;
@@ -382,13 +400,13 @@ function Wpcf7cfRepeater($repeater, form) {
382
  var $repeater_controls = $repeater.children('.wpcf7cf_repeater_controls').eq(0);
383
  var $repeater_sub_clone = $repeater_sub.clone();
384
  $repeater_sub_clone.find('.wpcf7cf_repeater_sub').addBack('.wpcf7cf_repeater_sub').each(function () {
385
- var $this = jQuery(this);
386
  var prev_suffix = $this.attr('data-repeater_sub_suffix');
387
  var new_suffix = prev_suffix + '__{{repeater_sub_suffix}}';
388
  $this.attr('data-repeater_sub_suffix', new_suffix);
389
  });
390
  $repeater_sub_clone.find('[name]').each(function () {
391
- var $this = jQuery(this);
392
  var prev_name = $this.attr('name');
393
  var orig_name = $this.attr('data-orig_name') != null ? $this.attr('data-orig_name') : prev_name;
394
  var new_name = prev_name + '__{{repeater_sub_suffix}}';
@@ -402,7 +420,7 @@ function Wpcf7cfRepeater($repeater, form) {
402
  $this.closest('.wpcf7-form-control-wrap').addClass(new_name);
403
  });
404
  $repeater_sub_clone.find('.wpcf7cf_repeater,[data-class="wpcf7cf_group"]').each(function () {
405
- var $this = jQuery(this);
406
  var prev_data_id = $this.attr('data-id');
407
  var orig_data_id = $this.attr('data-orig_data_id') != null ? $this.attr('data-orig_data_id') : prev_data_id;
408
  var new_data_id = prev_data_id + '__{{repeater_sub_suffix}}';
@@ -416,7 +434,7 @@ function Wpcf7cfRepeater($repeater, form) {
416
  $this.closest('.wpcf7-form-control-wrap').addClass(new_data_id);
417
  });
418
  $repeater_sub_clone.find('[id]').each(function () {
419
- var $this = jQuery(this);
420
  var prev_id = $this.attr('id');
421
  var orig_id = $this.attr('data-orig_id') != null ? $this.attr('data-orig_id') : prev_id;
422
  var new_id = prev_id + '__{{repeater_sub_suffix}}';
@@ -425,7 +443,7 @@ function Wpcf7cfRepeater($repeater, form) {
425
  $this.closest('.wpcf7-form-control-wrap').addClass(new_id);
426
  });
427
  $repeater_sub_clone.find('[for]').each(function () {
428
- var $this = jQuery(this);
429
  var prev_for = $this.attr('for');
430
  var orig_for = $this.attr('data-orig_for') != null ? $this.attr('data-orig_for') : prev_for;
431
  var new_for = prev_for + '__{{repeater_sub_suffix}}';
@@ -455,7 +473,7 @@ function Wpcf7cfRepeater($repeater, form) {
455
  var repeater = e.data;
456
  repeater.updateSubs(params.$repeater.num_subs - 1);
457
  });
458
- jQuery('> .wpcf7cf_repeater_sub', params.$repeater).eq(0).remove(); // remove the first sub, it's just a template.
459
 
460
  repeater.updateSubs($repeater.initial_subs);
461
  }
@@ -498,7 +516,7 @@ Wpcf7cfRepeater.prototype.updateSubs = function (subs_to_show) {
498
  };
499
 
500
  Wpcf7cfRepeater.prototype.addSubs = function (subs_to_add) {
501
- var $ = jQuery;
502
  var params = this.params;
503
  var repeater = this;
504
  var form = repeater.form;
@@ -512,11 +530,11 @@ Wpcf7cfRepeater.prototype.addSubs = function (subs_to_add) {
512
  html_str += params.repeater_sub_html.replace(/\{\{repeater_sub_suffix\}\}/g, sub_suffix).replace(new RegExp('\{\{' + $repeater.orig_id + '_index\}\}', 'g'), sub_suffix);
513
  }
514
 
515
- var $html = jQuery(html_str); // Add the newly created fields to the form
516
 
517
  $html.hide().insertBefore($repeater_controls).animate(wpcf7cf_show_animation, params.wpcf7cf_settings.animation_intime).trigger('wpcf7cf_repeater_added');
518
- jQuery('.wpcf7cf_repeater', $html).each(function () {
519
- form.repeaters.push(new Wpcf7cfRepeater(jQuery(this), form));
520
  });
521
  form.$input_repeaters.val(JSON.stringify(form.repeaters.map(function (item) {
522
  return item.params.$repeater.id;
@@ -540,14 +558,14 @@ Wpcf7cfRepeater.prototype.addSubs = function (subs_to_add) {
540
  };
541
 
542
  Wpcf7cfRepeater.prototype.removeSubs = function (num_subs) {
543
- var $ = jQuery;
544
  var params = this.params;
545
  var form = this.form;
546
  params.$repeater.num_subs -= num_subs;
547
- jQuery('> .wpcf7cf_repeater_sub', params.$repeater).slice(-num_subs).animate(wpcf7cf_hide_animation, {
548
  duration: params.wpcf7cf_settings.animation_intime,
549
  done: function done() {
550
- var $this = jQuery(this); //remove the actual fields from the form
551
 
552
  $this.remove();
553
  params.$repeater.trigger('wpcf7cf_repeater_removed');
@@ -576,14 +594,14 @@ function Wpcf7cfMultistep($multistep, form) {
576
  multistep.$dots.append("\n <div class=\"dot\" data-step=\"".concat(i, "\">\n <div class=\"step-index\">").concat(i, "</div>\n <div class=\"step-title\">").concat(multistep.$steps.eq(i - 1).data('title'), "</div>\n </div>\n "));
577
  }
578
 
579
- multistep.$btn_next.on('click.wpcf7cf_step', function _callee() {
580
  var result;
581
- return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.async(function _callee$(_context) {
582
  while (1) {
583
  switch (_context.prev = _context.next) {
584
  case 0:
585
  _context.next = 2;
586
- return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.awrap(multistep.validateStep(multistep.currentStep));
587
 
588
  case 2:
589
  result = _context.sent;
@@ -597,8 +615,8 @@ function Wpcf7cfMultistep($multistep, form) {
597
  return _context.stop();
598
  }
599
  }
600
- });
601
- }); // If form is submitted (by pressing retrun for example), and if we are not on the last step,
602
  // then trigger click event on the $next button instead.
603
 
604
  multistep.form.$form.on('submit.wpcf7cf_step', function (e) {
@@ -614,9 +632,9 @@ function Wpcf7cfMultistep($multistep, form) {
614
  multistep.moveToStep(1);
615
  }
616
 
617
- jQuery(document).ajaxComplete(function (e, xhr, settings) {
618
  if (xhr.hasOwnProperty('responseJSON') && xhr.responseJSON != null && xhr.responseJSON.hasOwnProperty('status') && xhr.responseJSON.hasOwnProperty('into') && xhr.responseJSON.status === "mail_success") {
619
- jQuery(xhr.responseJSON.into).trigger('reset.wpcf7cf');
620
  }
621
  });
622
 
@@ -626,16 +644,19 @@ Wpcf7cfMultistep.prototype.validateStep = function (step_index) {
626
  var $form = multistep.form.$form;
627
  $form.find('.wpcf7-response-output').addClass('wpcf7-display-none');
628
  return new Promise(function (resolve) {
629
- var fd = new FormData(); // TEST IF FILES UPLOADS WORK? THEN REMOVE THIS
630
- // jQuery.each($form.find('[data-id="step'+step_index+'"] input[type="file"]'), function(index, el) {
631
- // fd.append(jQuery(el).attr('name'), jQuery(el)[0].files[0]);
632
- // });
633
 
 
 
 
 
 
 
634
  var formdata = $form.serializeArray();
635
- jQuery.each(formdata, function (key, input) {
636
  fd.append(input.name, input.value);
637
  });
638
- jQuery.ajax({
639
  url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_validate_step',
640
  type: 'POST',
641
  data: fd,
@@ -646,25 +667,26 @@ Wpcf7cfMultistep.prototype.validateStep = function (step_index) {
646
  /*
647
  * Insert _form_data_id if 'json variable' has
648
  */
649
- if (typeof json._cf7mls_db_form_data_id != 'undefined') {
650
- if (!form.find('input[name="_cf7mls_db_form_data_id"]').length) {
651
- form.append('<input type="hidden" name="_cf7mls_db_form_data_id" value="' + json._cf7mls_db_form_data_id + '" />');
652
- }
653
- } //reset error messages
654
-
655
-
656
- $multistep.find('.wpcf7-form-control-wrap').removeClass('cf7mls-invalid');
657
  $multistep.find('.wpcf7-form-control-wrap .wpcf7-not-valid-tip').remove();
 
658
  $multistep.find('.wpcf7-response-output').remove();
659
  $multistep.find('.wpcf7-response-output.wpcf7-validation-errors').removeClass('wpcf7-validation-errors');
660
 
661
  if (!json.success) {
662
  var checkError = 0;
663
- jQuery.each(json.invalid_fields, function (index, el) {
664
  if ($multistep.find('input[name="' + index + '"]').length || $multistep.find('input[name="' + index + '[]"]').length || $multistep.find('select[name="' + index + '"]').length || $multistep.find('select[name="' + index + '[]"]').length || $multistep.find('textarea[name="' + index + '"]').length || $multistep.find('textarea[name="' + index + '[]"]').length) {
665
  checkError = checkError + 1;
666
- var controlWrap = jQuery('.wpcf7-form-control-wrap.' + index, $form);
667
- controlWrap.addClass('cf7mls-invalid');
 
668
  controlWrap.find('span.wpcf7-not-valid-tip').remove();
669
  controlWrap.append('<span role="alert" class="wpcf7-not-valid-tip">' + el.reason + '</span>'); //return false;
670
  }
@@ -694,7 +716,15 @@ Wpcf7cfMultistep.prototype.moveToStep = function (step_index) {
694
  multistep.$multistep.attr('data-current_step', multistep.currentStep);
695
  multistep.$steps.hide();
696
  multistep.$steps.eq(multistep.currentStep - 1).show().trigger('wpcf7cf_change_step', [previousStep, multistep.currentStep]);
697
- multistep.form.$form[0].scrollIntoView();
 
 
 
 
 
 
 
 
698
  multistep.form.updateSummaryFields();
699
  window.wpcf7cf.updateMultistepState(multistep);
700
  };
@@ -866,13 +896,13 @@ window.wpcf7cf = {
866
  }
867
  },
868
  should_group_be_shown: function should_group_be_shown(condition, $current_form) {
869
- var $ = jQuery;
870
  var show_group = true;
871
 
872
  for (var and_rule_i = 0; and_rule_i < condition.and_rules.length; and_rule_i++) {
873
  var condition_ok = false;
874
  var condition_and_rule = condition.and_rules[and_rule_i];
875
- var $field = jQuery('[name="' + condition_and_rule.if_field + '"], [name="' + condition_and_rule.if_field + '[]"], [data-original-name="' + condition_and_rule.if_field + '"], [data-original-name="' + condition_and_rule.if_field + '[]"]', $current_form);
876
  var if_val = condition_and_rule.if_value;
877
  var if_val_as_number = isFinite(parseFloat(if_val)) ? parseFloat(if_val) : 0;
878
  var operator = condition_and_rule.operator;
@@ -892,95 +922,167 @@ window.wpcf7cf = {
892
  operator = operator === '>' ? 'greater than' : operator;
893
  operator = operator === '<' ? 'less than' : operator;
894
 
895
- if ($field.length === 1) {
896
- // single field (tested with text field, single checkbox, select with single value (dropdown), select with multiple values)
897
- if ($field.is('select')) {
898
- if (operator === 'not equals') {
899
- condition_ok = true;
 
 
 
900
  }
 
 
 
 
 
901
 
902
- $field.find('option:selected').each(function () {
903
- var $option = jQuery(this);
904
- var option_val = $option.val();
905
 
906
- if (operator === 'equals' && option_val === if_val || operator === 'equals (regex)' && regex_patt.test($option.val())) {
907
- condition_ok = true;
908
- } else if (operator === 'not equals' && option_val === if_val || operator === 'not equals (regex)' && !regex_patt.test($option.val())) {
909
- condition_ok = false;
910
- return false; // break out of the loop
911
- }
912
- });
913
- show_group = show_group && condition_ok;
914
- }
915
 
916
- var field_val = $field.val();
917
- var field_val_as_number = isFinite(parseFloat(field_val)) ? parseFloat(field_val) : 0;
 
918
 
919
- if ($field.attr('type') === 'checkbox') {
920
- var field_is_checked = $field.is(':checked');
921
 
922
- if (operator === 'equals' && field_is_checked && field_val === if_val || operator === 'not equals' && !field_is_checked || operator === 'is empty' && !field_is_checked || operator === 'not empty' && field_is_checked || operator === 'greater than' && field_is_checked && field_val_as_number > if_val_as_number || operator === 'less than' && field_is_checked && field_val_as_number < if_val_as_number || operator === 'greater than or equals' && field_is_checked && field_val_as_number >= if_val_as_number || operator === 'less than or equals' && field_is_checked && field_val_as_number <= if_val_as_number || operator === 'equals (regex)' && field_is_checked && regex_patt.test(field_val) || operator === 'not equals (regex)' && !field_is_checked) {
923
- condition_ok = true;
924
- }
925
- } else if (operator === 'equals' && field_val === if_val || operator === 'not equals' && field_val !== if_val || operator === 'equals (regex)' && regex_patt.test(field_val) || operator === 'not equals (regex)' && !regex_patt.test(field_val) || operator === 'greater than' && field_val_as_number > if_val_as_number || operator === 'less than' && field_val_as_number < if_val_as_number || operator === 'greater than or equals' && field_val_as_number >= if_val_as_number || operator === 'less than or equals' && field_val_as_number <= if_val_as_number || operator === 'is empty' && field_val === '' || operator === 'not empty' && field_val !== '' || operator === 'function' && typeof window[if_val] == 'function' && window[if_val]($field)) {
926
- condition_ok = true;
927
- }
928
- } else if ($field.length > 1) {
929
- // multiple fields (tested with checkboxes, exclusive checkboxes, dropdown with multiple values)
930
- var all_values = [];
931
- var checked_values = [];
932
- $field.each(function () {
933
- all_values.push(jQuery(this).val());
934
 
935
- if (jQuery(this).is(':checked')) {
936
- checked_values.push(jQuery(this).val());
937
- }
938
- });
939
- var checked_value_index = jQuery.inArray(if_val, checked_values);
940
- var value_index = jQuery.inArray(if_val, all_values);
 
941
 
942
- if (operator === 'is empty' && checked_values.length === 0 || operator === 'not empty' && checked_values.length > 0) {
943
- condition_ok = true;
944
- }
 
945
 
946
- for (var ind = 0; ind < checked_values.length; ind++) {
947
- var checked_val = checked_values[ind];
948
- var checked_val_as_number = isFinite(parseFloat(checked_val)) ? parseFloat(checked_val) : 0;
949
 
950
- if (operator === 'equals' && checked_val === if_val || operator === 'not equals' && checked_val !== if_val || operator === 'equals (regex)' && regex_patt.test(checked_val) || operator === 'not equals (regex)' && !regex_patt.test(checked_val) || operator === 'greater than' && checked_val_as_number > if_val_as_number || operator === 'less than' && checked_val_as_number < if_val_as_number || operator === 'greater than or equals' && checked_val_as_number >= if_val_as_number || operator === 'less than or equals' && checked_val_as_number <= if_val_as_number) {
951
- condition_ok = true;
952
- }
953
- }
 
 
 
 
954
  }
955
 
956
- show_group = show_group && condition_ok;
 
 
 
 
 
 
 
 
 
957
  }
958
 
959
- return show_group;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
960
  }
961
  };
962
- jQuery('.wpcf7-form').each(function () {
963
- wpcf7cf_forms.push(new Wpcf7cfForm(jQuery(this)));
964
  }); // Call displayFields again on all forms
965
  // Necessary in case some theme or plugin changed a form value by the time the entire page is fully loaded.
966
 
967
- jQuery('document').ready(function () {
968
  wpcf7cf_forms.forEach(function (f) {
969
  f.displayFields();
970
  });
971
  }); // fix for exclusive checkboxes in IE (this will call the change-event again after all other checkboxes are unchecked, triggering the display_fields() function)
972
 
973
- var old_wpcf7ExclusiveCheckbox = jQuery.fn.wpcf7ExclusiveCheckbox;
974
 
975
- jQuery.fn.wpcf7ExclusiveCheckbox = function () {
976
  return this.find('input:checkbox').click(function () {
977
- var name = jQuery(this).attr('name');
978
- jQuery(this).closest('form').find('input:checkbox[name="' + name + '"]').not(this).prop('checked', false).eq(0).change();
979
  });
980
  };
981
 
982
  /***/ }),
983
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
984
  /***/ "./node_modules/@babel/runtime/regenerator/index.js":
985
  /*!**********************************************************!*\
986
  !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
@@ -992,6 +1094,9487 @@ module.exports = __webpack_require__(/*! regenerator-runtime */ "./node_modules/
992
 
993
  /***/ }),
994
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
995
  /***/ "./node_modules/regenerator-runtime/runtime.js":
996
  /*!*****************************************************!*\
997
  !*** ./node_modules/regenerator-runtime/runtime.js ***!
@@ -999,7 +10582,7 @@ module.exports = __webpack_require__(/*! regenerator-runtime */ "./node_modules/
999
  /*! no static exports found */
1000
  /***/ (function(module, exports, __webpack_require__) {
1001
 
1002
- /* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1003
 
1004
  /**
1005
  * Copyright (c) 2014-present, Facebook, Inc.
@@ -1135,7 +10718,7 @@ var runtime = function (exports) {
1135
  };
1136
  };
1137
 
1138
- function AsyncIterator(generator) {
1139
  function invoke(method, arg, resolve, reject) {
1140
  var record = tryCatch(generator[method], generator, arg);
1141
 
@@ -1146,14 +10729,14 @@ var runtime = function (exports) {
1146
  var value = result.value;
1147
 
1148
  if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
1149
- return Promise.resolve(value.__await).then(function (value) {
1150
  invoke("next", value, resolve, reject);
1151
  }, function (err) {
1152
  invoke("throw", err, resolve, reject);
1153
  });
1154
  }
1155
 
1156
- return Promise.resolve(value).then(function (unwrapped) {
1157
  // When a yielded Promise is resolved, its final value becomes
1158
  // the .value of the Promise<{value,done}> result for the
1159
  // current iteration.
@@ -1171,7 +10754,7 @@ var runtime = function (exports) {
1171
 
1172
  function enqueue(method, arg) {
1173
  function callInvokeWithMethodAndArg() {
1174
- return new Promise(function (resolve, reject) {
1175
  invoke(method, arg, resolve, reject);
1176
  });
1177
  }
@@ -1208,8 +10791,9 @@ var runtime = function (exports) {
1208
  // AsyncIterator objects; they just return a Promise for the value of
1209
  // the final result produced by the iterator.
1210
 
1211
- exports.async = function (innerFn, outerFn, self, tryLocsList) {
1212
- var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList));
 
1213
  return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
1214
  : iter.next().then(function (result) {
1215
  return result.done ? result.value : iter.next();
97
  __webpack_require__.r(__webpack_exports__);
98
  /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ "./node_modules/@babel/runtime/regenerator/index.js");
99
  /* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);
100
+ /* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js");
101
+ /* harmony import */ var _babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__);
102
+ /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js");
103
+ /* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_2__);
104
+
105
+
106
 
107
 
108
 
109
  var cf7signature_resized = 0; // for compatibility with contact-form-7-signature-addon
110
 
111
  var wpcf7cf_timeout;
112
+ var wpcf7cf_change_time_ms = window.wpcf7cf_running_tests ? 0 : 100;
113
+ console.log(wpcf7cf_change_time_ms);
114
  var wpcf7cf_show_animation = {
115
  "height": "show",
116
  "marginTop": "show",
177
 
178
  form.initial_conditions = form.conditions;
179
  form.settings = form_options['settings'];
180
+ form.$groups = jquery__WEBPACK_IMPORTED_MODULE_2___default()(); // empty jQuery set
181
 
182
  form.repeaters = [];
183
  form.multistep = null;
206
  }, 200);
207
  }); // PRO ONLY
208
 
209
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7cf_repeater:not(.wpcf7cf_repeater .wpcf7cf_repeater)', $form).each(function () {
210
+ form.repeaters.push(new Wpcf7cfRepeater(jquery__WEBPACK_IMPORTED_MODULE_2___default()(this), form));
211
  });
212
  form.$input_repeaters.val(JSON.stringify(form.repeaters.map(function (item) {
213
  return item.params.$repeater.id;
214
  })));
215
+ var $multistep = jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7cf_multistep', $form);
216
 
217
  if ($multistep.length) {
218
  form.multistep = new Wpcf7cfMultistep($multistep, form); // window.wpcf7cf.updateMultistepState(form.multistep);
242
  if (cf7signature_resized === 0 && typeof signatures !== 'undefined' && signatures.constructor === Array && signatures.length > 0) {
243
  for (var i = 0; i < signatures.length; i++) {
244
  if (signatures[i].canvas.width === 0) {
245
+ var $sig_canvas = jquery__WEBPACK_IMPORTED_MODULE_2___default()(".wpcf7-form-control-signature-body>canvas");
246
+ var $sig_wrap = jquery__WEBPACK_IMPORTED_MODULE_2___default()(".wpcf7-form-control-signature-wrap");
247
  $sig_canvas.eq(i).attr('width', $sig_wrap.width());
248
  $sig_canvas.eq(i).attr('height', $sig_wrap.height());
249
  cf7signature_resized = 1;
258
  var show_group = window.wpcf7cf.should_group_be_shown(condition, form.$form);
259
 
260
  if (show_group) {
261
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('[data-id="' + condition.then_field + '"]', form.$form).eq(0).removeClass('wpcf7cf-hidden');
262
  }
263
  }
264
 
265
  var animation_intime = wpcf7cf_settings.animation_intime;
266
  var animation_outtime = wpcf7cf_settings.animation_outtime;
267
  form.$groups.each(function (index) {
268
+ var $group = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
269
  if ($group.is(':animated')) $group.finish(); // stop any current animations on the group
270
 
271
  if ($group.css('display') === 'none' && !$group.hasClass('wpcf7cf-hidden')) {
276
  }
277
  } else if ($group.css('display') !== 'none' && $group.hasClass('wpcf7cf-hidden')) {
278
  if ($group.attr('data-clear_on_hide') !== undefined) {
279
+ var $inputs = jquery__WEBPACK_IMPORTED_MODULE_2___default()(':input', $group).not(':button, :submit, :reset, :hidden');
280
  $inputs.each(function () {
281
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
282
  $this.val(this.defaultValue);
283
  $this.prop('checked', this.defaultChecked);
284
  });
285
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('option', $group).each(function () {
286
+ this.selected = this.defaultSelected;
287
+ });
288
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('select', $group).each(function () {
289
+ var $select = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
290
+
291
+ if ($select.val() === null) {
292
+ $select.val(jquery__WEBPACK_IMPORTED_MODULE_2___default()("option:first", $select).val());
293
+ }
294
+ });
295
  $inputs.change(); //display_fields();
296
  }
297
 
307
  };
308
 
309
  Wpcf7cfForm.prototype.updateSummaryFields = function () {
310
+ var $summary = jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7cf-summary', this.$form);
311
  if ($summary.length == 0 || !$summary.is(':visible')) return;
312
  var fd = new FormData();
313
  var formdata = this.$form.serializeArray();
314
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.each(formdata, function (key, input) {
315
  fd.append(input.name, input.value);
316
  });
317
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.ajax({
318
  url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_get_summary',
319
  type: 'POST',
320
  data: fd,
333
  var hidden_groups = [];
334
  var visible_groups = [];
335
  form.$groups.each(function () {
336
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
337
 
338
  if ($this.hasClass('wpcf7cf-hidden')) {
339
  hidden_groups.push($this.data('id'));
340
  $this.find('input,select,textarea').each(function () {
341
+ hidden_fields.push(jquery__WEBPACK_IMPORTED_MODULE_2___default()(this).attr('name'));
342
  });
343
  } else {
344
  visible_groups.push($this.data('id'));
362
  Wpcf7cfForm.prototype.updateEventListeners = function () {
363
  var form = this; // monitor input changes, and call display_fields() if something has changed
364
 
365
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('input, select, textarea, button', form.$form).not('.wpcf7cf_add, .wpcf7cf_remove').off(wpcf7cf_change_events).on(wpcf7cf_change_events, form, function (e) {
366
  var form = e.data;
367
  clearTimeout(wpcf7cf_timeout);
368
  wpcf7cf_timeout = setTimeout(function () {
369
  form.displayFields();
370
+ }, wpcf7cf_change_time_ms);
371
  }); // PRO ONLY
372
 
373
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7cf-togglebutton', form.$form).off('click.toggle_wpcf7cf').on('click.toggle_wpcf7cf', function () {
374
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
375
 
376
  if ($this.text() === $this.data('val-1')) {
377
  $this.text($this.data('val-2'));
385
 
386
 
387
  function Wpcf7cfRepeater($repeater, form) {
388
+ var $ = jquery__WEBPACK_IMPORTED_MODULE_2___default.a;
389
  var repeater = this;
390
  var wpcf7cf_settings = form.settings;
391
  repeater.form = form;
400
  var $repeater_controls = $repeater.children('.wpcf7cf_repeater_controls').eq(0);
401
  var $repeater_sub_clone = $repeater_sub.clone();
402
  $repeater_sub_clone.find('.wpcf7cf_repeater_sub').addBack('.wpcf7cf_repeater_sub').each(function () {
403
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
404
  var prev_suffix = $this.attr('data-repeater_sub_suffix');
405
  var new_suffix = prev_suffix + '__{{repeater_sub_suffix}}';
406
  $this.attr('data-repeater_sub_suffix', new_suffix);
407
  });
408
  $repeater_sub_clone.find('[name]').each(function () {
409
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
410
  var prev_name = $this.attr('name');
411
  var orig_name = $this.attr('data-orig_name') != null ? $this.attr('data-orig_name') : prev_name;
412
  var new_name = prev_name + '__{{repeater_sub_suffix}}';
420
  $this.closest('.wpcf7-form-control-wrap').addClass(new_name);
421
  });
422
  $repeater_sub_clone.find('.wpcf7cf_repeater,[data-class="wpcf7cf_group"]').each(function () {
423
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
424
  var prev_data_id = $this.attr('data-id');
425
  var orig_data_id = $this.attr('data-orig_data_id') != null ? $this.attr('data-orig_data_id') : prev_data_id;
426
  var new_data_id = prev_data_id + '__{{repeater_sub_suffix}}';
434
  $this.closest('.wpcf7-form-control-wrap').addClass(new_data_id);
435
  });
436
  $repeater_sub_clone.find('[id]').each(function () {
437
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
438
  var prev_id = $this.attr('id');
439
  var orig_id = $this.attr('data-orig_id') != null ? $this.attr('data-orig_id') : prev_id;
440
  var new_id = prev_id + '__{{repeater_sub_suffix}}';
443
  $this.closest('.wpcf7-form-control-wrap').addClass(new_id);
444
  });
445
  $repeater_sub_clone.find('[for]').each(function () {
446
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this);
447
  var prev_for = $this.attr('for');
448
  var orig_for = $this.attr('data-orig_for') != null ? $this.attr('data-orig_for') : prev_for;
449
  var new_for = prev_for + '__{{repeater_sub_suffix}}';
473
  var repeater = e.data;
474
  repeater.updateSubs(params.$repeater.num_subs - 1);
475
  });
476
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('> .wpcf7cf_repeater_sub', params.$repeater).eq(0).remove(); // remove the first sub, it's just a template.
477
 
478
  repeater.updateSubs($repeater.initial_subs);
479
  }
516
  };
517
 
518
  Wpcf7cfRepeater.prototype.addSubs = function (subs_to_add) {
519
+ var $ = jquery__WEBPACK_IMPORTED_MODULE_2___default.a;
520
  var params = this.params;
521
  var repeater = this;
522
  var form = repeater.form;
530
  html_str += params.repeater_sub_html.replace(/\{\{repeater_sub_suffix\}\}/g, sub_suffix).replace(new RegExp('\{\{' + $repeater.orig_id + '_index\}\}', 'g'), sub_suffix);
531
  }
532
 
533
+ var $html = jquery__WEBPACK_IMPORTED_MODULE_2___default()(html_str); // Add the newly created fields to the form
534
 
535
  $html.hide().insertBefore($repeater_controls).animate(wpcf7cf_show_animation, params.wpcf7cf_settings.animation_intime).trigger('wpcf7cf_repeater_added');
536
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7cf_repeater', $html).each(function () {
537
+ form.repeaters.push(new Wpcf7cfRepeater(jquery__WEBPACK_IMPORTED_MODULE_2___default()(this), form));
538
  });
539
  form.$input_repeaters.val(JSON.stringify(form.repeaters.map(function (item) {
540
  return item.params.$repeater.id;
558
  };
559
 
560
  Wpcf7cfRepeater.prototype.removeSubs = function (num_subs) {
561
+ var $ = jquery__WEBPACK_IMPORTED_MODULE_2___default.a;
562
  var params = this.params;
563
  var form = this.form;
564
  params.$repeater.num_subs -= num_subs;
565
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('> .wpcf7cf_repeater_sub', params.$repeater).slice(-num_subs).animate(wpcf7cf_hide_animation, {
566
  duration: params.wpcf7cf_settings.animation_intime,
567
  done: function done() {
568
+ var $this = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this); //remove the actual fields from the form
569
 
570
  $this.remove();
571
  params.$repeater.trigger('wpcf7cf_repeater_removed');
594
  multistep.$dots.append("\n <div class=\"dot\" data-step=\"".concat(i, "\">\n <div class=\"step-index\">").concat(i, "</div>\n <div class=\"step-title\">").concat(multistep.$steps.eq(i - 1).data('title'), "</div>\n </div>\n "));
595
  }
596
 
597
+ multistep.$btn_next.on('click.wpcf7cf_step', /*#__PURE__*/_babel_runtime_helpers_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1___default()( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {
598
  var result;
599
+ return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {
600
  while (1) {
601
  switch (_context.prev = _context.next) {
602
  case 0:
603
  _context.next = 2;
604
+ return multistep.validateStep(multistep.currentStep);
605
 
606
  case 2:
607
  result = _context.sent;
615
  return _context.stop();
616
  }
617
  }
618
+ }, _callee);
619
+ }))); // If form is submitted (by pressing retrun for example), and if we are not on the last step,
620
  // then trigger click event on the $next button instead.
621
 
622
  multistep.form.$form.on('submit.wpcf7cf_step', function (e) {
632
  multistep.moveToStep(1);
633
  }
634
 
635
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()(document).ajaxComplete(function (e, xhr, settings) {
636
  if (xhr.hasOwnProperty('responseJSON') && xhr.responseJSON != null && xhr.responseJSON.hasOwnProperty('status') && xhr.responseJSON.hasOwnProperty('into') && xhr.responseJSON.status === "mail_success") {
637
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()(xhr.responseJSON.into).trigger('reset.wpcf7cf');
638
  }
639
  });
640
 
644
  var $form = multistep.form.$form;
645
  $form.find('.wpcf7-response-output').addClass('wpcf7-display-none');
646
  return new Promise(function (resolve) {
647
+ var fd = new FormData(); // Make sure to add file fields to FormData
 
 
 
648
 
649
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.each($form.find('[data-id="step-' + step_index + '"] input[type="file"]'), function (index, el) {
650
+ if (!el.files.length) return false;
651
+ var file = el.files[0];
652
+ var fieldName = el.name;
653
+ fd.append(fieldName, file);
654
+ });
655
  var formdata = $form.serializeArray();
656
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.each(formdata, function (key, input) {
657
  fd.append(input.name, input.value);
658
  });
659
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.ajax({
660
  url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_validate_step',
661
  type: 'POST',
662
  data: fd,
667
  /*
668
  * Insert _form_data_id if 'json variable' has
669
  */
670
+ // if (typeof json._cf7mls_db_form_data_id != 'undefined') {
671
+ // if (!form.find('input[name="_cf7mls_db_form_data_id"]').length) {
672
+ // form.append('<input type="hidden" name="_cf7mls_db_form_data_id" value="'+json._cf7mls_db_form_data_id+'" />');
673
+ // }
674
+ // }
675
+ //reset error messages
676
+ //$multistep.find('.wpcf7-form-control-wrap').removeClass('cf7mls-invalid');
 
677
  $multistep.find('.wpcf7-form-control-wrap .wpcf7-not-valid-tip').remove();
678
+ $multistep.find('.wpcf7-not-valid').removeClass('wpcf7-not-valid');
679
  $multistep.find('.wpcf7-response-output').remove();
680
  $multistep.find('.wpcf7-response-output.wpcf7-validation-errors').removeClass('wpcf7-validation-errors');
681
 
682
  if (!json.success) {
683
  var checkError = 0;
684
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.each(json.invalid_fields, function (index, el) {
685
  if ($multistep.find('input[name="' + index + '"]').length || $multistep.find('input[name="' + index + '[]"]').length || $multistep.find('select[name="' + index + '"]').length || $multistep.find('select[name="' + index + '[]"]').length || $multistep.find('textarea[name="' + index + '"]').length || $multistep.find('textarea[name="' + index + '[]"]').length) {
686
  checkError = checkError + 1;
687
+ var controlWrap = jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7-form-control-wrap.' + index, $form); //controlWrap.addClass('cf7mls-invalid');
688
+
689
+ controlWrap.find('input').addClass('wpcf7-not-valid');
690
  controlWrap.find('span.wpcf7-not-valid-tip').remove();
691
  controlWrap.append('<span role="alert" class="wpcf7-not-valid-tip">' + el.reason + '</span>'); //return false;
692
  }
716
  multistep.$multistep.attr('data-current_step', multistep.currentStep);
717
  multistep.$steps.hide();
718
  multistep.$steps.eq(multistep.currentStep - 1).show().trigger('wpcf7cf_change_step', [previousStep, multistep.currentStep]);
719
+ var formEl = multistep.form.$form[0];
720
+ var topOffset = formEl.getBoundingClientRect().top;
721
+
722
+ if (topOffset < 0 && previousStep > 0) {
723
+ formEl.scrollIntoView({
724
+ behavior: "smooth"
725
+ });
726
+ }
727
+
728
  multistep.form.updateSummaryFields();
729
  window.wpcf7cf.updateMultistepState(multistep);
730
  };
896
  }
897
  },
898
  should_group_be_shown: function should_group_be_shown(condition, $current_form) {
899
+ var $ = jquery__WEBPACK_IMPORTED_MODULE_2___default.a;
900
  var show_group = true;
901
 
902
  for (var and_rule_i = 0; and_rule_i < condition.and_rules.length; and_rule_i++) {
903
  var condition_ok = false;
904
  var condition_and_rule = condition.and_rules[and_rule_i];
905
+ var $field = jquery__WEBPACK_IMPORTED_MODULE_2___default()('[name="' + condition_and_rule.if_field + '"], [name="' + condition_and_rule.if_field + '[]"], [data-original-name="' + condition_and_rule.if_field + '"], [data-original-name="' + condition_and_rule.if_field + '[]"]', $current_form);
906
  var if_val = condition_and_rule.if_value;
907
  var if_val_as_number = isFinite(parseFloat(if_val)) ? parseFloat(if_val) : 0;
908
  var operator = condition_and_rule.operator;
922
  operator = operator === '>' ? 'greater than' : operator;
923
  operator = operator === '<' ? 'less than' : operator;
924
 
925
+ if ($field.is(':checkbox') || $field.is(':radio')) {
926
+ var all_values = [];
927
+ var checked_values = [];
928
+ $field.each(function () {
929
+ all_values.push(jquery__WEBPACK_IMPORTED_MODULE_2___default()(this).val());
930
+
931
+ if (jquery__WEBPACK_IMPORTED_MODULE_2___default()(this).is(':checked')) {
932
+ checked_values.push(jquery__WEBPACK_IMPORTED_MODULE_2___default()(this).val());
933
  }
934
+ });
935
+ condition_ok = this.isConditionTrue(checked_values, operator, if_val, $field);
936
+ } else {
937
+ condition_ok = this.isConditionTrue($field.val(), operator, if_val, $field);
938
+ }
939
 
940
+ show_group = show_group && condition_ok;
941
+ }
 
942
 
943
+ return show_group;
944
+ },
945
+ isConditionTrue: function isConditionTrue(values, operator) {
946
+ var testValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
947
+ var $field = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : jquery__WEBPACK_IMPORTED_MODULE_2___default()();
 
 
 
 
948
 
949
+ if (!Array.isArray(values)) {
950
+ values = [values];
951
+ }
952
 
953
+ var condition_ok = false; // start by assuming that the condition is not met
 
954
 
955
+ if (!values || values.length == 0 || values.every(function (v) {
956
+ return !v || 0;
957
+ })) {
958
+ // no values or only empty values passed (0 is not considered empty)
959
+ if (operator === 'is empty') {
960
+ condition_ok = true;
961
+ }
 
 
 
 
 
962
 
963
+ if (operator === 'not empty') {
964
+ condition_ok = false;
965
+ }
966
+ } else {
967
+ if (operator === 'is empty') {
968
+ condition_ok = false;
969
+ }
970
 
971
+ if (operator === 'not empty') {
972
+ condition_ok = true;
973
+ }
974
+ }
975
 
976
+ var testValueNumber = isFinite(parseFloat(testValue)) ? parseFloat(testValue) : NaN;
 
 
977
 
978
+ if (operator === 'not equals' || operator === 'not equals (regex)') {
979
+ // start by assuming that the condition is met
980
+ condition_ok = true;
981
+ }
982
+
983
+ if (operator === 'function' && typeof window[testValue] == 'function' && window[testValue]($field) // here we call the actual user defined function
984
+ ) {
985
+ condition_ok = true;
986
  }
987
 
988
+ var regex_patt = /.*/i; // fallback regex pattern
989
+
990
+ var isValidRegex = true;
991
+
992
+ if (operator === 'equals (regex)' || operator === 'not equals (regex)') {
993
+ try {
994
+ regex_patt = new RegExp(testValue, 'i');
995
+ } catch (e) {
996
+ isValidRegex = false;
997
+ }
998
  }
999
 
1000
+ for (var i = 0; i < values.length; i++) {
1001
+ var value = values[i];
1002
+ var valueNumber = isFinite(parseFloat(value)) ? parseFloat(value) : NaN;
1003
+ var valsAreNumbers = !isNaN(valueNumber) && !isNaN(testValueNumber);
1004
+
1005
+ if (operator === 'equals' && value === testValue || operator === 'equals (regex)' && regex_patt.test(value) || operator === 'greater than' && valsAreNumbers && valueNumber > testValueNumber || operator === 'less than' && valsAreNumbers && valueNumber < testValueNumber || operator === 'greater than or equals' && valsAreNumbers && valueNumber >= testValueNumber || operator === 'less than or equals' && valsAreNumbers && valueNumber <= testValueNumber) {
1006
+ condition_ok = true;
1007
+ break;
1008
+ } else if (operator === 'not equals' && value === testValue || operator === 'not equals (regex)' && regex_patt.test(value)) {
1009
+ condition_ok = false;
1010
+ break;
1011
+ }
1012
+ }
1013
+
1014
+ return condition_ok;
1015
  }
1016
  };
1017
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('.wpcf7-form').each(function () {
1018
+ wpcf7cf_forms.push(new Wpcf7cfForm(jquery__WEBPACK_IMPORTED_MODULE_2___default()(this)));
1019
  }); // Call displayFields again on all forms
1020
  // Necessary in case some theme or plugin changed a form value by the time the entire page is fully loaded.
1021
 
1022
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()('document').ready(function () {
1023
  wpcf7cf_forms.forEach(function (f) {
1024
  f.displayFields();
1025
  });
1026
  }); // fix for exclusive checkboxes in IE (this will call the change-event again after all other checkboxes are unchecked, triggering the display_fields() function)
1027
 
1028
+ var old_wpcf7ExclusiveCheckbox = jquery__WEBPACK_IMPORTED_MODULE_2___default.a.fn.wpcf7ExclusiveCheckbox;
1029
 
1030
+ jquery__WEBPACK_IMPORTED_MODULE_2___default.a.fn.wpcf7ExclusiveCheckbox = function () {
1031
  return this.find('input:checkbox').click(function () {
1032
+ var name = jquery__WEBPACK_IMPORTED_MODULE_2___default()(this).attr('name');
1033
+ jquery__WEBPACK_IMPORTED_MODULE_2___default()(this).closest('form').find('input:checkbox[name="' + name + '"]').not(this).prop('checked', false).eq(0).change();
1034
  });
1035
  };
1036
 
1037
  /***/ }),
1038
 
1039
+ /***/ "./node_modules/@babel/runtime/helpers/asyncToGenerator.js":
1040
+ /*!*****************************************************************!*\
1041
+ !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
1042
+ \*****************************************************************/
1043
+ /*! no static exports found */
1044
+ /***/ (function(module, exports) {
1045
+
1046
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
1047
+ try {
1048
+ var info = gen[key](arg);
1049
+ var value = info.value;
1050
+ } catch (error) {
1051
+ reject(error);
1052
+ return;
1053
+ }
1054
+
1055
+ if (info.done) {
1056
+ resolve(value);
1057
+ } else {
1058
+ Promise.resolve(value).then(_next, _throw);
1059
+ }
1060
+ }
1061
+
1062
+ function _asyncToGenerator(fn) {
1063
+ return function () {
1064
+ var self = this,
1065
+ args = arguments;
1066
+ return new Promise(function (resolve, reject) {
1067
+ var gen = fn.apply(self, args);
1068
+
1069
+ function _next(value) {
1070
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
1071
+ }
1072
+
1073
+ function _throw(err) {
1074
+ asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
1075
+ }
1076
+
1077
+ _next(undefined);
1078
+ });
1079
+ };
1080
+ }
1081
+
1082
+ module.exports = _asyncToGenerator;
1083
+
1084
+ /***/ }),
1085
+
1086
  /***/ "./node_modules/@babel/runtime/regenerator/index.js":
1087
  /*!**********************************************************!*\
1088
  !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
1094
 
1095
  /***/ }),
1096
 
1097
+ /***/ "./node_modules/jquery/dist/jquery.js":
1098
+ /*!********************************************!*\
1099
+ !*** ./node_modules/jquery/dist/jquery.js ***!
1100
+ \********************************************/
1101
+ /*! no static exports found */
1102
+ /***/ (function(module, exports, __webpack_require__) {
1103
+
1104
+ /* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
1105
+
1106
+ /*!
1107
+ * jQuery JavaScript Library v3.5.0
1108
+ * https://jquery.com/
1109
+ *
1110
+ * Includes Sizzle.js
1111
+ * https://sizzlejs.com/
1112
+ *
1113
+ * Copyright JS Foundation and other contributors
1114
+ * Released under the MIT license
1115
+ * https://jquery.org/license
1116
+ *
1117
+ * Date: 2020-04-10T15:07Z
1118
+ */
1119
+ (function (global, factory) {
1120
+ "use strict";
1121
+
1122
+ if (( false ? undefined : _typeof(module)) === "object" && _typeof(module.exports) === "object") {
1123
+ // For CommonJS and CommonJS-like environments where a proper `window`
1124
+ // is present, execute the factory and get jQuery.
1125
+ // For environments that do not have a `window` with a `document`
1126
+ // (such as Node.js), expose a factory as module.exports.
1127
+ // This accentuates the need for the creation of a real `window`.
1128
+ // e.g. var jQuery = require("jquery")(window);
1129
+ // See ticket #14549 for more info.
1130
+ module.exports = global.document ? factory(global, true) : function (w) {
1131
+ if (!w.document) {
1132
+ throw new Error("jQuery requires a window with a document");
1133
+ }
1134
+
1135
+ return factory(w);
1136
+ };
1137
+ } else {
1138
+ factory(global);
1139
+ } // Pass this if window is not defined yet
1140
+
1141
+ })(typeof window !== "undefined" ? window : this, function (window, noGlobal) {
1142
+ // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
1143
+ // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
1144
+ // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
1145
+ // enough that all such attempts are guarded in a try block.
1146
+ "use strict";
1147
+
1148
+ var arr = [];
1149
+ var getProto = Object.getPrototypeOf;
1150
+ var _slice = arr.slice;
1151
+ var flat = arr.flat ? function (array) {
1152
+ return arr.flat.call(array);
1153
+ } : function (array) {
1154
+ return arr.concat.apply([], array);
1155
+ };
1156
+ var push = arr.push;
1157
+ var indexOf = arr.indexOf;
1158
+ var class2type = {};
1159
+ var toString = class2type.toString;
1160
+ var hasOwn = class2type.hasOwnProperty;
1161
+ var fnToString = hasOwn.toString;
1162
+ var ObjectFunctionString = fnToString.call(Object);
1163
+ var support = {};
1164
+
1165
+ var isFunction = function isFunction(obj) {
1166
+ // Support: Chrome <=57, Firefox <=52
1167
+ // In some browsers, typeof returns "function" for HTML <object> elements
1168
+ // (i.e., `typeof document.createElement( "object" ) === "function"`).
1169
+ // We don't want to classify *any* DOM node as a function.
1170
+ return typeof obj === "function" && typeof obj.nodeType !== "number";
1171
+ };
1172
+
1173
+ var isWindow = function isWindow(obj) {
1174
+ return obj != null && obj === obj.window;
1175
+ };
1176
+
1177
+ var document = window.document;
1178
+ var preservedScriptAttributes = {
1179
+ type: true,
1180
+ src: true,
1181
+ nonce: true,
1182
+ noModule: true
1183
+ };
1184
+
1185
+ function DOMEval(code, node, doc) {
1186
+ doc = doc || document;
1187
+ var i,
1188
+ val,
1189
+ script = doc.createElement("script");
1190
+ script.text = code;
1191
+
1192
+ if (node) {
1193
+ for (i in preservedScriptAttributes) {
1194
+ // Support: Firefox 64+, Edge 18+
1195
+ // Some browsers don't support the "nonce" property on scripts.
1196
+ // On the other hand, just using `getAttribute` is not enough as
1197
+ // the `nonce` attribute is reset to an empty string whenever it
1198
+ // becomes browsing-context connected.
1199
+ // See https://github.com/whatwg/html/issues/2369
1200
+ // See https://html.spec.whatwg.org/#nonce-attributes
1201
+ // The `node.getAttribute` check was added for the sake of
1202
+ // `jQuery.globalEval` so that it can fake a nonce-containing node
1203
+ // via an object.
1204
+ val = node[i] || node.getAttribute && node.getAttribute(i);
1205
+
1206
+ if (val) {
1207
+ script.setAttribute(i, val);
1208
+ }
1209
+ }
1210
+ }
1211
+
1212
+ doc.head.appendChild(script).parentNode.removeChild(script);
1213
+ }
1214
+
1215
+ function toType(obj) {
1216
+ if (obj == null) {
1217
+ return obj + "";
1218
+ } // Support: Android <=2.3 only (functionish RegExp)
1219
+
1220
+
1221
+ return _typeof(obj) === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : _typeof(obj);
1222
+ }
1223
+ /* global Symbol */
1224
+ // Defining this global in .eslintrc.json would create a danger of using the global
1225
+ // unguarded in another place, it seems safer to define global only for this module
1226
+
1227
+
1228
+ var version = "3.5.0",
1229
+ // Define a local copy of jQuery
1230
+ jQuery = function jQuery(selector, context) {
1231
+ // The jQuery object is actually just the init constructor 'enhanced'
1232
+ // Need init if jQuery is called (just allow error to be thrown if not included)
1233
+ return new jQuery.fn.init(selector, context);
1234
+ };
1235
+
1236
+ jQuery.fn = jQuery.prototype = {
1237
+ // The current version of jQuery being used
1238
+ jquery: version,
1239
+ constructor: jQuery,
1240
+ // The default length of a jQuery object is 0
1241
+ length: 0,
1242
+ toArray: function toArray() {
1243
+ return _slice.call(this);
1244
+ },
1245
+ // Get the Nth element in the matched element set OR
1246
+ // Get the whole matched element set as a clean array
1247
+ get: function get(num) {
1248
+ // Return all the elements in a clean array
1249
+ if (num == null) {
1250
+ return _slice.call(this);
1251
+ } // Return just the one element from the set
1252
+
1253
+
1254
+ return num < 0 ? this[num + this.length] : this[num];
1255
+ },
1256
+ // Take an array of elements and push it onto the stack
1257
+ // (returning the new matched element set)
1258
+ pushStack: function pushStack(elems) {
1259
+ // Build a new jQuery matched element set
1260
+ var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference)
1261
+
1262
+ ret.prevObject = this; // Return the newly-formed element set
1263
+
1264
+ return ret;
1265
+ },
1266
+ // Execute a callback for every element in the matched set.
1267
+ each: function each(callback) {
1268
+ return jQuery.each(this, callback);
1269
+ },
1270
+ map: function map(callback) {
1271
+ return this.pushStack(jQuery.map(this, function (elem, i) {
1272
+ return callback.call(elem, i, elem);
1273
+ }));
1274
+ },
1275
+ slice: function slice() {
1276
+ return this.pushStack(_slice.apply(this, arguments));
1277
+ },
1278
+ first: function first() {
1279
+ return this.eq(0);
1280
+ },
1281
+ last: function last() {
1282
+ return this.eq(-1);
1283
+ },
1284
+ even: function even() {
1285
+ return this.pushStack(jQuery.grep(this, function (_elem, i) {
1286
+ return (i + 1) % 2;
1287
+ }));
1288
+ },
1289
+ odd: function odd() {
1290
+ return this.pushStack(jQuery.grep(this, function (_elem, i) {
1291
+ return i % 2;
1292
+ }));
1293
+ },
1294
+ eq: function eq(i) {
1295
+ var len = this.length,
1296
+ j = +i + (i < 0 ? len : 0);
1297
+ return this.pushStack(j >= 0 && j < len ? [this[j]] : []);
1298
+ },
1299
+ end: function end() {
1300
+ return this.prevObject || this.constructor();
1301
+ },
1302
+ // For internal use only.
1303
+ // Behaves like an Array's method, not like a jQuery method.
1304
+ push: push,
1305
+ sort: arr.sort,
1306
+ splice: arr.splice
1307
+ };
1308
+
1309
+ jQuery.extend = jQuery.fn.extend = function () {
1310
+ var options,
1311
+ name,
1312
+ src,
1313
+ copy,
1314
+ copyIsArray,
1315
+ clone,
1316
+ target = arguments[0] || {},
1317
+ i = 1,
1318
+ length = arguments.length,
1319
+ deep = false; // Handle a deep copy situation
1320
+
1321
+ if (typeof target === "boolean") {
1322
+ deep = target; // Skip the boolean and the target
1323
+
1324
+ target = arguments[i] || {};
1325
+ i++;
1326
+ } // Handle case when target is a string or something (possible in deep copy)
1327
+
1328
+
1329
+ if (_typeof(target) !== "object" && !isFunction(target)) {
1330
+ target = {};
1331
+ } // Extend jQuery itself if only one argument is passed
1332
+
1333
+
1334
+ if (i === length) {
1335
+ target = this;
1336
+ i--;
1337
+ }
1338
+
1339
+ for (; i < length; i++) {
1340
+ // Only deal with non-null/undefined values
1341
+ if ((options = arguments[i]) != null) {
1342
+ // Extend the base object
1343
+ for (name in options) {
1344
+ copy = options[name]; // Prevent Object.prototype pollution
1345
+ // Prevent never-ending loop
1346
+
1347
+ if (name === "__proto__" || target === copy) {
1348
+ continue;
1349
+ } // Recurse if we're merging plain objects or arrays
1350
+
1351
+
1352
+ if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) {
1353
+ src = target[name]; // Ensure proper type for the source value
1354
+
1355
+ if (copyIsArray && !Array.isArray(src)) {
1356
+ clone = [];
1357
+ } else if (!copyIsArray && !jQuery.isPlainObject(src)) {
1358
+ clone = {};
1359
+ } else {
1360
+ clone = src;
1361
+ }
1362
+
1363
+ copyIsArray = false; // Never move original objects, clone them
1364
+
1365
+ target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values
1366
+ } else if (copy !== undefined) {
1367
+ target[name] = copy;
1368
+ }
1369
+ }
1370
+ }
1371
+ } // Return the modified object
1372
+
1373
+
1374
+ return target;
1375
+ };
1376
+
1377
+ jQuery.extend({
1378
+ // Unique for each copy of jQuery on the page
1379
+ expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""),
1380
+ // Assume jQuery is ready without the ready module
1381
+ isReady: true,
1382
+ error: function error(msg) {
1383
+ throw new Error(msg);
1384
+ },
1385
+ noop: function noop() {},
1386
+ isPlainObject: function isPlainObject(obj) {
1387
+ var proto, Ctor; // Detect obvious negatives
1388
+ // Use toString instead of jQuery.type to catch host objects
1389
+
1390
+ if (!obj || toString.call(obj) !== "[object Object]") {
1391
+ return false;
1392
+ }
1393
+
1394
+ proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain
1395
+
1396
+ if (!proto) {
1397
+ return true;
1398
+ } // Objects with prototype are plain iff they were constructed by a global Object function
1399
+
1400
+
1401
+ Ctor = hasOwn.call(proto, "constructor") && proto.constructor;
1402
+ return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString;
1403
+ },
1404
+ isEmptyObject: function isEmptyObject(obj) {
1405
+ var name;
1406
+
1407
+ for (name in obj) {
1408
+ return false;
1409
+ }
1410
+
1411
+ return true;
1412
+ },
1413
+ // Evaluates a script in a provided context; falls back to the global one
1414
+ // if not specified.
1415
+ globalEval: function globalEval(code, options, doc) {
1416
+ DOMEval(code, {
1417
+ nonce: options && options.nonce
1418
+ }, doc);
1419
+ },
1420
+ each: function each(obj, callback) {
1421
+ var length,
1422
+ i = 0;
1423
+
1424
+ if (isArrayLike(obj)) {
1425
+ length = obj.length;
1426
+
1427
+ for (; i < length; i++) {
1428
+ if (callback.call(obj[i], i, obj[i]) === false) {
1429
+ break;
1430
+ }
1431
+ }
1432
+ } else {
1433
+ for (i in obj) {
1434
+ if (callback.call(obj[i], i, obj[i]) === false) {
1435
+ break;
1436
+ }
1437
+ }
1438
+ }
1439
+
1440
+ return obj;
1441
+ },
1442
+ // results is for internal usage only
1443
+ makeArray: function makeArray(arr, results) {
1444
+ var ret = results || [];
1445
+
1446
+ if (arr != null) {
1447
+ if (isArrayLike(Object(arr))) {
1448
+ jQuery.merge(ret, typeof arr === "string" ? [arr] : arr);
1449
+ } else {
1450
+ push.call(ret, arr);
1451
+ }
1452
+ }
1453
+
1454
+ return ret;
1455
+ },
1456
+ inArray: function inArray(elem, arr, i) {
1457
+ return arr == null ? -1 : indexOf.call(arr, elem, i);
1458
+ },
1459
+ // Support: Android <=4.0 only, PhantomJS 1 only
1460
+ // push.apply(_, arraylike) throws on ancient WebKit
1461
+ merge: function merge(first, second) {
1462
+ var len = +second.length,
1463
+ j = 0,
1464
+ i = first.length;
1465
+
1466
+ for (; j < len; j++) {
1467
+ first[i++] = second[j];
1468
+ }
1469
+
1470
+ first.length = i;
1471
+ return first;
1472
+ },
1473
+ grep: function grep(elems, callback, invert) {
1474
+ var callbackInverse,
1475
+ matches = [],
1476
+ i = 0,
1477
+ length = elems.length,
1478
+ callbackExpect = !invert; // Go through the array, only saving the items
1479
+ // that pass the validator function
1480
+
1481
+ for (; i < length; i++) {
1482
+ callbackInverse = !callback(elems[i], i);
1483
+
1484
+ if (callbackInverse !== callbackExpect) {
1485
+ matches.push(elems[i]);
1486
+ }
1487
+ }
1488
+
1489
+ return matches;
1490
+ },
1491
+ // arg is for internal usage only
1492
+ map: function map(elems, callback, arg) {
1493
+ var length,
1494
+ value,
1495
+ i = 0,
1496
+ ret = []; // Go through the array, translating each of the items to their new values
1497
+
1498
+ if (isArrayLike(elems)) {
1499
+ length = elems.length;
1500
+
1501
+ for (; i < length; i++) {
1502
+ value = callback(elems[i], i, arg);
1503
+
1504
+ if (value != null) {
1505
+ ret.push(value);
1506
+ }
1507
+ } // Go through every key on the object,
1508
+
1509
+ } else {
1510
+ for (i in elems) {
1511
+ value = callback(elems[i], i, arg);
1512
+
1513
+ if (value != null) {
1514
+ ret.push(value);
1515
+ }
1516
+ }
1517
+ } // Flatten any nested arrays
1518
+
1519
+
1520
+ return flat(ret);
1521
+ },
1522
+ // A global GUID counter for objects
1523
+ guid: 1,
1524
+ // jQuery.support is not used in Core but other projects attach their
1525
+ // properties to it so it needs to exist.
1526
+ support: support
1527
+ });
1528
+
1529
+ if (typeof Symbol === "function") {
1530
+ jQuery.fn[Symbol.iterator] = arr[Symbol.iterator];
1531
+ } // Populate the class2type map
1532
+
1533
+
1534
+ jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (_i, name) {
1535
+ class2type["[object " + name + "]"] = name.toLowerCase();
1536
+ });
1537
+
1538
+ function isArrayLike(obj) {
1539
+ // Support: real iOS 8.2 only (not reproducible in simulator)
1540
+ // `in` check used to prevent JIT error (gh-2145)
1541
+ // hasOwn isn't used here due to false negatives
1542
+ // regarding Nodelist length in IE
1543
+ var length = !!obj && "length" in obj && obj.length,
1544
+ type = toType(obj);
1545
+
1546
+ if (isFunction(obj) || isWindow(obj)) {
1547
+ return false;
1548
+ }
1549
+
1550
+ return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj;
1551
+ }
1552
+
1553
+ var Sizzle =
1554
+ /*!
1555
+ * Sizzle CSS Selector Engine v2.3.5
1556
+ * https://sizzlejs.com/
1557
+ *
1558
+ * Copyright JS Foundation and other contributors
1559
+ * Released under the MIT license
1560
+ * https://js.foundation/
1561
+ *
1562
+ * Date: 2020-03-14
1563
+ */
1564
+ function (window) {
1565
+ var i,
1566
+ support,
1567
+ Expr,
1568
+ getText,
1569
+ isXML,
1570
+ tokenize,
1571
+ compile,
1572
+ select,
1573
+ outermostContext,
1574
+ sortInput,
1575
+ hasDuplicate,
1576
+ // Local document vars
1577
+ setDocument,
1578
+ document,
1579
+ docElem,
1580
+ documentIsHTML,
1581
+ rbuggyQSA,
1582
+ rbuggyMatches,
1583
+ matches,
1584
+ contains,
1585
+ // Instance-specific data
1586
+ expando = "sizzle" + 1 * new Date(),
1587
+ preferredDoc = window.document,
1588
+ dirruns = 0,
1589
+ done = 0,
1590
+ classCache = createCache(),
1591
+ tokenCache = createCache(),
1592
+ compilerCache = createCache(),
1593
+ nonnativeSelectorCache = createCache(),
1594
+ sortOrder = function sortOrder(a, b) {
1595
+ if (a === b) {
1596
+ hasDuplicate = true;
1597
+ }
1598
+
1599
+ return 0;
1600
+ },
1601
+ // Instance methods
1602
+ hasOwn = {}.hasOwnProperty,
1603
+ arr = [],
1604
+ pop = arr.pop,
1605
+ pushNative = arr.push,
1606
+ push = arr.push,
1607
+ slice = arr.slice,
1608
+ // Use a stripped-down indexOf as it's faster than native
1609
+ // https://jsperf.com/thor-indexof-vs-for/5
1610
+ indexOf = function indexOf(list, elem) {
1611
+ var i = 0,
1612
+ len = list.length;
1613
+
1614
+ for (; i < len; i++) {
1615
+ if (list[i] === elem) {
1616
+ return i;
1617
+ }
1618
+ }
1619
+
1620
+ return -1;
1621
+ },
1622
+ booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + "ismap|loop|multiple|open|readonly|required|scoped",
1623
+ // Regular expressions
1624
+ // http://www.w3.org/TR/css3-selectors/#whitespace
1625
+ whitespace = "[\\x20\\t\\r\\n\\f]",
1626
+ // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram
1627
+ identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+",
1628
+ // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
1629
+ attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2)
1630
+ "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5]
1631
+ // or strings [capture 3 or capture 4]"
1632
+ "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]",
1633
+ pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
1634
+ // 1. quoted (capture 3; capture 4 or capture 5)
1635
+ "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6)
1636
+ "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2)
1637
+ ".*" + ")\\)|)",
1638
+ // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
1639
+ rwhitespace = new RegExp(whitespace + "+", "g"),
1640
+ rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"),
1641
+ rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"),
1642
+ rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"),
1643
+ rdescend = new RegExp(whitespace + "|>"),
1644
+ rpseudo = new RegExp(pseudos),
1645
+ ridentifier = new RegExp("^" + identifier + "$"),
1646
+ matchExpr = {
1647
+ "ID": new RegExp("^#(" + identifier + ")"),
1648
+ "CLASS": new RegExp("^\\.(" + identifier + ")"),
1649
+ "TAG": new RegExp("^(" + identifier + "|[*])"),
1650
+ "ATTR": new RegExp("^" + attributes),
1651
+ "PSEUDO": new RegExp("^" + pseudos),
1652
+ "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"),
1653
+ "bool": new RegExp("^(?:" + booleans + ")$", "i"),
1654
+ // For use in libraries implementing .is()
1655
+ // We use this for POS matching in `select`
1656
+ "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i")
1657
+ },
1658
+ rhtml = /HTML$/i,
1659
+ rinputs = /^(?:input|select|textarea|button)$/i,
1660
+ rheader = /^h\d$/i,
1661
+ rnative = /^[^{]+\{\s*\[native \w/,
1662
+ // Easily-parseable/retrievable ID or TAG or CLASS selectors
1663
+ rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
1664
+ rsibling = /[+~]/,
1665
+ // CSS escapes
1666
+ // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
1667
+ runescape = new RegExp("\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g"),
1668
+ funescape = function funescape(escape, nonHex) {
1669
+ var high = "0x" + escape.slice(1) - 0x10000;
1670
+ return nonHex ? // Strip the backslash prefix from a non-hex escape sequence
1671
+ nonHex : // Replace a hexadecimal escape sequence with the encoded Unicode code point
1672
+ // Support: IE <=11+
1673
+ // For values outside the Basic Multilingual Plane (BMP), manually construct a
1674
+ // surrogate pair
1675
+ high < 0 ? String.fromCharCode(high + 0x10000) : String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00);
1676
+ },
1677
+ // CSS string/identifier serialization
1678
+ // https://drafts.csswg.org/cssom/#common-serializing-idioms
1679
+ rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
1680
+ fcssescape = function fcssescape(ch, asCodePoint) {
1681
+ if (asCodePoint) {
1682
+ // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
1683
+ if (ch === "\0") {
1684
+ return "\uFFFD";
1685
+ } // Control characters and (dependent upon position) numbers get escaped as code points
1686
+
1687
+
1688
+ return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
1689
+ } // Other potentially-special ASCII characters get backslash-escaped
1690
+
1691
+
1692
+ return "\\" + ch;
1693
+ },
1694
+ // Used for iframes
1695
+ // See setDocument()
1696
+ // Removing the function wrapper causes a "Permission Denied"
1697
+ // error in IE
1698
+ unloadHandler = function unloadHandler() {
1699
+ setDocument();
1700
+ },
1701
+ inDisabledFieldset = addCombinator(function (elem) {
1702
+ return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset";
1703
+ }, {
1704
+ dir: "parentNode",
1705
+ next: "legend"
1706
+ }); // Optimize for push.apply( _, NodeList )
1707
+
1708
+
1709
+ try {
1710
+ push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0
1711
+ // Detect silently failing push.apply
1712
+ // eslint-disable-next-line no-unused-expressions
1713
+
1714
+ arr[preferredDoc.childNodes.length].nodeType;
1715
+ } catch (e) {
1716
+ push = {
1717
+ apply: arr.length ? // Leverage slice if possible
1718
+ function (target, els) {
1719
+ pushNative.apply(target, slice.call(els));
1720
+ } : // Support: IE<9
1721
+ // Otherwise append directly
1722
+ function (target, els) {
1723
+ var j = target.length,
1724
+ i = 0; // Can't trust NodeList.length
1725
+
1726
+ while (target[j++] = els[i++]) {}
1727
+
1728
+ target.length = j - 1;
1729
+ }
1730
+ };
1731
+ }
1732
+
1733
+ function Sizzle(selector, context, results, seed) {
1734
+ var m,
1735
+ i,
1736
+ elem,
1737
+ nid,
1738
+ match,
1739
+ groups,
1740
+ newSelector,
1741
+ newContext = context && context.ownerDocument,
1742
+ // nodeType defaults to 9, since context defaults to document
1743
+ nodeType = context ? context.nodeType : 9;
1744
+ results = results || []; // Return early from calls with invalid selector or context
1745
+
1746
+ if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) {
1747
+ return results;
1748
+ } // Try to shortcut find operations (as opposed to filters) in HTML documents
1749
+
1750
+
1751
+ if (!seed) {
1752
+ setDocument(context);
1753
+ context = context || document;
1754
+
1755
+ if (documentIsHTML) {
1756
+ // If the selector is sufficiently simple, try using a "get*By*" DOM method
1757
+ // (excepting DocumentFragment context, where the methods don't exist)
1758
+ if (nodeType !== 11 && (match = rquickExpr.exec(selector))) {
1759
+ // ID selector
1760
+ if (m = match[1]) {
1761
+ // Document context
1762
+ if (nodeType === 9) {
1763
+ if (elem = context.getElementById(m)) {
1764
+ // Support: IE, Opera, Webkit
1765
+ // TODO: identify versions
1766
+ // getElementById can match elements by name instead of ID
1767
+ if (elem.id === m) {
1768
+ results.push(elem);
1769
+ return results;
1770
+ }
1771
+ } else {
1772
+ return results;
1773
+ } // Element context
1774
+
1775
+ } else {
1776
+ // Support: IE, Opera, Webkit
1777
+ // TODO: identify versions
1778
+ // getElementById can match elements by name instead of ID
1779
+ if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) {
1780
+ results.push(elem);
1781
+ return results;
1782
+ }
1783
+ } // Type selector
1784
+
1785
+ } else if (match[2]) {
1786
+ push.apply(results, context.getElementsByTagName(selector));
1787
+ return results; // Class selector
1788
+ } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) {
1789
+ push.apply(results, context.getElementsByClassName(m));
1790
+ return results;
1791
+ }
1792
+ } // Take advantage of querySelectorAll
1793
+
1794
+
1795
+ if (support.qsa && !nonnativeSelectorCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector)) && ( // Support: IE 8 only
1796
+ // Exclude object elements
1797
+ nodeType !== 1 || context.nodeName.toLowerCase() !== "object")) {
1798
+ newSelector = selector;
1799
+ newContext = context; // qSA considers elements outside a scoping root when evaluating child or
1800
+ // descendant combinators, which is not what we want.
1801
+ // In such cases, we work around the behavior by prefixing every selector in the
1802
+ // list with an ID selector referencing the scope context.
1803
+ // The technique has to be used as well when a leading combinator is used
1804
+ // as such selectors are not recognized by querySelectorAll.
1805
+ // Thanks to Andrew Dupont for this technique.
1806
+
1807
+ if (nodeType === 1 && (rdescend.test(selector) || rcombinators.test(selector))) {
1808
+ // Expand context for sibling selectors
1809
+ newContext = rsibling.test(selector) && testContext(context.parentNode) || context; // We can use :scope instead of the ID hack if the browser
1810
+ // supports it & if we're not changing the context.
1811
+
1812
+ if (newContext !== context || !support.scope) {
1813
+ // Capture the context ID, setting it first if necessary
1814
+ if (nid = context.getAttribute("id")) {
1815
+ nid = nid.replace(rcssescape, fcssescape);
1816
+ } else {
1817
+ context.setAttribute("id", nid = expando);
1818
+ }
1819
+ } // Prefix every selector in the list
1820
+
1821
+
1822
+ groups = tokenize(selector);
1823
+ i = groups.length;
1824
+
1825
+ while (i--) {
1826
+ groups[i] = (nid ? "#" + nid : ":scope") + " " + toSelector(groups[i]);
1827
+ }
1828
+
1829
+ newSelector = groups.join(",");
1830
+ }
1831
+
1832
+ try {
1833
+ push.apply(results, newContext.querySelectorAll(newSelector));
1834
+ return results;
1835
+ } catch (qsaError) {
1836
+ nonnativeSelectorCache(selector, true);
1837
+ } finally {
1838
+ if (nid === expando) {
1839
+ context.removeAttribute("id");
1840
+ }
1841
+ }
1842
+ }
1843
+ }
1844
+ } // All others
1845
+
1846
+
1847
+ return select(selector.replace(rtrim, "$1"), context, results, seed);
1848
+ }
1849
+ /**
1850
+ * Create key-value caches of limited size
1851
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
1852
+ * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
1853
+ * deleting the oldest entry
1854
+ */
1855
+
1856
+
1857
+ function createCache() {
1858
+ var keys = [];
1859
+
1860
+ function cache(key, value) {
1861
+ // Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
1862
+ if (keys.push(key + " ") > Expr.cacheLength) {
1863
+ // Only keep the most recent entries
1864
+ delete cache[keys.shift()];
1865
+ }
1866
+
1867
+ return cache[key + " "] = value;
1868
+ }
1869
+
1870
+ return cache;
1871
+ }
1872
+ /**
1873
+ * Mark a function for special use by Sizzle
1874
+ * @param {Function} fn The function to mark
1875
+ */
1876
+
1877
+
1878
+ function markFunction(fn) {
1879
+ fn[expando] = true;
1880
+ return fn;
1881
+ }
1882
+ /**
1883
+ * Support testing using an element
1884
+ * @param {Function} fn Passed the created element and returns a boolean result
1885
+ */
1886
+
1887
+
1888
+ function assert(fn) {
1889
+ var el = document.createElement("fieldset");
1890
+
1891
+ try {
1892
+ return !!fn(el);
1893
+ } catch (e) {
1894
+ return false;
1895
+ } finally {
1896
+ // Remove from its parent by default
1897
+ if (el.parentNode) {
1898
+ el.parentNode.removeChild(el);
1899
+ } // release memory in IE
1900
+
1901
+
1902
+ el = null;
1903
+ }
1904
+ }
1905
+ /**
1906
+ * Adds the same handler for all of the specified attrs
1907
+ * @param {String} attrs Pipe-separated list of attributes
1908
+ * @param {Function} handler The method that will be applied
1909
+ */
1910
+
1911
+
1912
+ function addHandle(attrs, handler) {
1913
+ var arr = attrs.split("|"),
1914
+ i = arr.length;
1915
+
1916
+ while (i--) {
1917
+ Expr.attrHandle[arr[i]] = handler;
1918
+ }
1919
+ }
1920
+ /**
1921
+ * Checks document order of two siblings
1922
+ * @param {Element} a
1923
+ * @param {Element} b
1924
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
1925
+ */
1926
+
1927
+
1928
+ function siblingCheck(a, b) {
1929
+ var cur = b && a,
1930
+ diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes
1931
+
1932
+ if (diff) {
1933
+ return diff;
1934
+ } // Check if b follows a
1935
+
1936
+
1937
+ if (cur) {
1938
+ while (cur = cur.nextSibling) {
1939
+ if (cur === b) {
1940
+ return -1;
1941
+ }
1942
+ }
1943
+ }
1944
+
1945
+ return a ? 1 : -1;
1946
+ }
1947
+ /**
1948
+ * Returns a function to use in pseudos for input types
1949
+ * @param {String} type
1950
+ */
1951
+
1952
+
1953
+ function createInputPseudo(type) {
1954
+ return function (elem) {
1955
+ var name = elem.nodeName.toLowerCase();
1956
+ return name === "input" && elem.type === type;
1957
+ };
1958
+ }
1959
+ /**
1960
+ * Returns a function to use in pseudos for buttons
1961
+ * @param {String} type
1962
+ */
1963
+
1964
+
1965
+ function createButtonPseudo(type) {
1966
+ return function (elem) {
1967
+ var name = elem.nodeName.toLowerCase();
1968
+ return (name === "input" || name === "button") && elem.type === type;
1969
+ };
1970
+ }
1971
+ /**
1972
+ * Returns a function to use in pseudos for :enabled/:disabled
1973
+ * @param {Boolean} disabled true for :disabled; false for :enabled
1974
+ */
1975
+
1976
+
1977
+ function createDisabledPseudo(disabled) {
1978
+ // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
1979
+ return function (elem) {
1980
+ // Only certain elements can match :enabled or :disabled
1981
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
1982
+ // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
1983
+ if ("form" in elem) {
1984
+ // Check for inherited disabledness on relevant non-disabled elements:
1985
+ // * listed form-associated elements in a disabled fieldset
1986
+ // https://html.spec.whatwg.org/multipage/forms.html#category-listed
1987
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
1988
+ // * option elements in a disabled optgroup
1989
+ // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
1990
+ // All such elements have a "form" property.
1991
+ if (elem.parentNode && elem.disabled === false) {
1992
+ // Option elements defer to a parent optgroup if present
1993
+ if ("label" in elem) {
1994
+ if ("label" in elem.parentNode) {
1995
+ return elem.parentNode.disabled === disabled;
1996
+ } else {
1997
+ return elem.disabled === disabled;
1998
+ }
1999
+ } // Support: IE 6 - 11
2000
+ // Use the isDisabled shortcut property to check for disabled fieldset ancestors
2001
+
2002
+
2003
+ return elem.isDisabled === disabled || // Where there is no isDisabled, check manually
2004
+
2005
+ /* jshint -W018 */
2006
+ elem.isDisabled !== !disabled && inDisabledFieldset(elem) === disabled;
2007
+ }
2008
+
2009
+ return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property.
2010
+ // Some victims get caught in our net (label, legend, menu, track), but it shouldn't
2011
+ // even exist on them, let alone have a boolean value.
2012
+ } else if ("label" in elem) {
2013
+ return elem.disabled === disabled;
2014
+ } // Remaining elements are neither :enabled nor :disabled
2015
+
2016
+
2017
+ return false;
2018
+ };
2019
+ }
2020
+ /**
2021
+ * Returns a function to use in pseudos for positionals
2022
+ * @param {Function} fn
2023
+ */
2024
+
2025
+
2026
+ function createPositionalPseudo(fn) {
2027
+ return markFunction(function (argument) {
2028
+ argument = +argument;
2029
+ return markFunction(function (seed, matches) {
2030
+ var j,
2031
+ matchIndexes = fn([], seed.length, argument),
2032
+ i = matchIndexes.length; // Match elements found at the specified indexes
2033
+
2034
+ while (i--) {
2035
+ if (seed[j = matchIndexes[i]]) {
2036
+ seed[j] = !(matches[j] = seed[j]);
2037
+ }
2038
+ }
2039
+ });
2040
+ });
2041
+ }
2042
+ /**
2043
+ * Checks a node for validity as a Sizzle context
2044
+ * @param {Element|Object=} context
2045
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
2046
+ */
2047
+
2048
+
2049
+ function testContext(context) {
2050
+ return context && typeof context.getElementsByTagName !== "undefined" && context;
2051
+ } // Expose support vars for convenience
2052
+
2053
+
2054
+ support = Sizzle.support = {};
2055
+ /**
2056
+ * Detects XML nodes
2057
+ * @param {Element|Object} elem An element or a document
2058
+ * @returns {Boolean} True iff elem is a non-HTML XML node
2059
+ */
2060
+
2061
+ isXML = Sizzle.isXML = function (elem) {
2062
+ var namespace = elem.namespaceURI,
2063
+ docElem = (elem.ownerDocument || elem).documentElement; // Support: IE <=8
2064
+ // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes
2065
+ // https://bugs.jquery.com/ticket/4833
2066
+
2067
+ return !rhtml.test(namespace || docElem && docElem.nodeName || "HTML");
2068
+ };
2069
+ /**
2070
+ * Sets document-related variables once based on the current document
2071
+ * @param {Element|Object} [doc] An element or document object to use to set the document
2072
+ * @returns {Object} Returns the current document
2073
+ */
2074
+
2075
+
2076
+ setDocument = Sizzle.setDocument = function (node) {
2077
+ var hasCompare,
2078
+ subWindow,
2079
+ doc = node ? node.ownerDocument || node : preferredDoc; // Return early if doc is invalid or already selected
2080
+ // Support: IE 11+, Edge 17 - 18+
2081
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2082
+ // two documents; shallow comparisons work.
2083
+ // eslint-disable-next-line eqeqeq
2084
+
2085
+ if (doc == document || doc.nodeType !== 9 || !doc.documentElement) {
2086
+ return document;
2087
+ } // Update global variables
2088
+
2089
+
2090
+ document = doc;
2091
+ docElem = document.documentElement;
2092
+ documentIsHTML = !isXML(document); // Support: IE 9 - 11+, Edge 12 - 18+
2093
+ // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
2094
+ // Support: IE 11+, Edge 17 - 18+
2095
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2096
+ // two documents; shallow comparisons work.
2097
+ // eslint-disable-next-line eqeqeq
2098
+
2099
+ if (preferredDoc != document && (subWindow = document.defaultView) && subWindow.top !== subWindow) {
2100
+ // Support: IE 11, Edge
2101
+ if (subWindow.addEventListener) {
2102
+ subWindow.addEventListener("unload", unloadHandler, false); // Support: IE 9 - 10 only
2103
+ } else if (subWindow.attachEvent) {
2104
+ subWindow.attachEvent("onunload", unloadHandler);
2105
+ }
2106
+ } // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,
2107
+ // Safari 4 - 5 only, Opera <=11.6 - 12.x only
2108
+ // IE/Edge & older browsers don't support the :scope pseudo-class.
2109
+ // Support: Safari 6.0 only
2110
+ // Safari 6.0 supports :scope but it's an alias of :root there.
2111
+
2112
+
2113
+ support.scope = assert(function (el) {
2114
+ docElem.appendChild(el).appendChild(document.createElement("div"));
2115
+ return typeof el.querySelectorAll !== "undefined" && !el.querySelectorAll(":scope fieldset div").length;
2116
+ });
2117
+ /* Attributes
2118
+ ---------------------------------------------------------------------- */
2119
+ // Support: IE<8
2120
+ // Verify that getAttribute really returns attributes and not properties
2121
+ // (excepting IE8 booleans)
2122
+
2123
+ support.attributes = assert(function (el) {
2124
+ el.className = "i";
2125
+ return !el.getAttribute("className");
2126
+ });
2127
+ /* getElement(s)By*
2128
+ ---------------------------------------------------------------------- */
2129
+ // Check if getElementsByTagName("*") returns only elements
2130
+
2131
+ support.getElementsByTagName = assert(function (el) {
2132
+ el.appendChild(document.createComment(""));
2133
+ return !el.getElementsByTagName("*").length;
2134
+ }); // Support: IE<9
2135
+
2136
+ support.getElementsByClassName = rnative.test(document.getElementsByClassName); // Support: IE<10
2137
+ // Check if getElementById returns elements by name
2138
+ // The broken getElementById methods don't pick up programmatically-set names,
2139
+ // so use a roundabout getElementsByName test
2140
+
2141
+ support.getById = assert(function (el) {
2142
+ docElem.appendChild(el).id = expando;
2143
+ return !document.getElementsByName || !document.getElementsByName(expando).length;
2144
+ }); // ID filter and find
2145
+
2146
+ if (support.getById) {
2147
+ Expr.filter["ID"] = function (id) {
2148
+ var attrId = id.replace(runescape, funescape);
2149
+ return function (elem) {
2150
+ return elem.getAttribute("id") === attrId;
2151
+ };
2152
+ };
2153
+
2154
+ Expr.find["ID"] = function (id, context) {
2155
+ if (typeof context.getElementById !== "undefined" && documentIsHTML) {
2156
+ var elem = context.getElementById(id);
2157
+ return elem ? [elem] : [];
2158
+ }
2159
+ };
2160
+ } else {
2161
+ Expr.filter["ID"] = function (id) {
2162
+ var attrId = id.replace(runescape, funescape);
2163
+ return function (elem) {
2164
+ var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
2165
+ return node && node.value === attrId;
2166
+ };
2167
+ }; // Support: IE 6 - 7 only
2168
+ // getElementById is not reliable as a find shortcut
2169
+
2170
+
2171
+ Expr.find["ID"] = function (id, context) {
2172
+ if (typeof context.getElementById !== "undefined" && documentIsHTML) {
2173
+ var node,
2174
+ i,
2175
+ elems,
2176
+ elem = context.getElementById(id);
2177
+
2178
+ if (elem) {
2179
+ // Verify the id attribute
2180
+ node = elem.getAttributeNode("id");
2181
+
2182
+ if (node && node.value === id) {
2183
+ return [elem];
2184
+ } // Fall back on getElementsByName
2185
+
2186
+
2187
+ elems = context.getElementsByName(id);
2188
+ i = 0;
2189
+
2190
+ while (elem = elems[i++]) {
2191
+ node = elem.getAttributeNode("id");
2192
+
2193
+ if (node && node.value === id) {
2194
+ return [elem];
2195
+ }
2196
+ }
2197
+ }
2198
+
2199
+ return [];
2200
+ }
2201
+ };
2202
+ } // Tag
2203
+
2204
+
2205
+ Expr.find["TAG"] = support.getElementsByTagName ? function (tag, context) {
2206
+ if (typeof context.getElementsByTagName !== "undefined") {
2207
+ return context.getElementsByTagName(tag); // DocumentFragment nodes don't have gEBTN
2208
+ } else if (support.qsa) {
2209
+ return context.querySelectorAll(tag);
2210
+ }
2211
+ } : function (tag, context) {
2212
+ var elem,
2213
+ tmp = [],
2214
+ i = 0,
2215
+ // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
2216
+ results = context.getElementsByTagName(tag); // Filter out possible comments
2217
+
2218
+ if (tag === "*") {
2219
+ while (elem = results[i++]) {
2220
+ if (elem.nodeType === 1) {
2221
+ tmp.push(elem);
2222
+ }
2223
+ }
2224
+
2225
+ return tmp;
2226
+ }
2227
+
2228
+ return results;
2229
+ }; // Class
2230
+
2231
+ Expr.find["CLASS"] = support.getElementsByClassName && function (className, context) {
2232
+ if (typeof context.getElementsByClassName !== "undefined" && documentIsHTML) {
2233
+ return context.getElementsByClassName(className);
2234
+ }
2235
+ };
2236
+ /* QSA/matchesSelector
2237
+ ---------------------------------------------------------------------- */
2238
+ // QSA and matchesSelector support
2239
+ // matchesSelector(:active) reports false when true (IE9/Opera 11.5)
2240
+
2241
+
2242
+ rbuggyMatches = []; // qSa(:focus) reports false when true (Chrome 21)
2243
+ // We allow this because of a bug in IE8/9 that throws an error
2244
+ // whenever `document.activeElement` is accessed on an iframe
2245
+ // So, we allow :focus to pass through QSA all the time to avoid the IE error
2246
+ // See https://bugs.jquery.com/ticket/13378
2247
+
2248
+ rbuggyQSA = [];
2249
+
2250
+ if (support.qsa = rnative.test(document.querySelectorAll)) {
2251
+ // Build QSA regex
2252
+ // Regex strategy adopted from Diego Perini
2253
+ assert(function (el) {
2254
+ var input; // Select is set to empty string on purpose
2255
+ // This is to test IE's treatment of not explicitly
2256
+ // setting a boolean content attribute,
2257
+ // since its presence should be enough
2258
+ // https://bugs.jquery.com/ticket/12359
2259
+
2260
+ docElem.appendChild(el).innerHTML = "<a id='" + expando + "'></a>" + "<select id='" + expando + "-\r\\' msallowcapture=''>" + "<option selected=''></option></select>"; // Support: IE8, Opera 11-12.16
2261
+ // Nothing should be selected when empty strings follow ^= or $= or *=
2262
+ // The test attribute must be unknown in Opera but "safe" for WinRT
2263
+ // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
2264
+
2265
+ if (el.querySelectorAll("[msallowcapture^='']").length) {
2266
+ rbuggyQSA.push("[*^$]=" + whitespace + "*(?:''|\"\")");
2267
+ } // Support: IE8
2268
+ // Boolean attributes and "value" are not treated correctly
2269
+
2270
+
2271
+ if (!el.querySelectorAll("[selected]").length) {
2272
+ rbuggyQSA.push("\\[" + whitespace + "*(?:value|" + booleans + ")");
2273
+ } // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
2274
+
2275
+
2276
+ if (!el.querySelectorAll("[id~=" + expando + "-]").length) {
2277
+ rbuggyQSA.push("~=");
2278
+ } // Support: IE 11+, Edge 15 - 18+
2279
+ // IE 11/Edge don't find elements on a `[name='']` query in some cases.
2280
+ // Adding a temporary attribute to the document before the selection works
2281
+ // around the issue.
2282
+ // Interestingly, IE 10 & older don't seem to have the issue.
2283
+
2284
+
2285
+ input = document.createElement("input");
2286
+ input.setAttribute("name", "");
2287
+ el.appendChild(input);
2288
+
2289
+ if (!el.querySelectorAll("[name='']").length) {
2290
+ rbuggyQSA.push("\\[" + whitespace + "*name" + whitespace + "*=" + whitespace + "*(?:''|\"\")");
2291
+ } // Webkit/Opera - :checked should return selected option elements
2292
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2293
+ // IE8 throws error here and will not see later tests
2294
+
2295
+
2296
+ if (!el.querySelectorAll(":checked").length) {
2297
+ rbuggyQSA.push(":checked");
2298
+ } // Support: Safari 8+, iOS 8+
2299
+ // https://bugs.webkit.org/show_bug.cgi?id=136851
2300
+ // In-page `selector#id sibling-combinator selector` fails
2301
+
2302
+
2303
+ if (!el.querySelectorAll("a#" + expando + "+*").length) {
2304
+ rbuggyQSA.push(".#.+[+~]");
2305
+ } // Support: Firefox <=3.6 - 5 only
2306
+ // Old Firefox doesn't throw on a badly-escaped identifier.
2307
+
2308
+
2309
+ el.querySelectorAll("\\\f");
2310
+ rbuggyQSA.push("[\\r\\n\\f]");
2311
+ });
2312
+ assert(function (el) {
2313
+ el.innerHTML = "<a href='' disabled='disabled'></a>" + "<select disabled='disabled'><option/></select>"; // Support: Windows 8 Native Apps
2314
+ // The type and name attributes are restricted during .innerHTML assignment
2315
+
2316
+ var input = document.createElement("input");
2317
+ input.setAttribute("type", "hidden");
2318
+ el.appendChild(input).setAttribute("name", "D"); // Support: IE8
2319
+ // Enforce case-sensitivity of name attribute
2320
+
2321
+ if (el.querySelectorAll("[name=d]").length) {
2322
+ rbuggyQSA.push("name" + whitespace + "*[*^$|!~]?=");
2323
+ } // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
2324
+ // IE8 throws error here and will not see later tests
2325
+
2326
+
2327
+ if (el.querySelectorAll(":enabled").length !== 2) {
2328
+ rbuggyQSA.push(":enabled", ":disabled");
2329
+ } // Support: IE9-11+
2330
+ // IE's :disabled selector does not pick up the children of disabled fieldsets
2331
+
2332
+
2333
+ docElem.appendChild(el).disabled = true;
2334
+
2335
+ if (el.querySelectorAll(":disabled").length !== 2) {
2336
+ rbuggyQSA.push(":enabled", ":disabled");
2337
+ } // Support: Opera 10 - 11 only
2338
+ // Opera 10-11 does not throw on post-comma invalid pseudos
2339
+
2340
+
2341
+ el.querySelectorAll("*,:x");
2342
+ rbuggyQSA.push(",.*:");
2343
+ });
2344
+ }
2345
+
2346
+ if (support.matchesSelector = rnative.test(matches = docElem.matches || docElem.webkitMatchesSelector || docElem.mozMatchesSelector || docElem.oMatchesSelector || docElem.msMatchesSelector)) {
2347
+ assert(function (el) {
2348
+ // Check to see if it's possible to do matchesSelector
2349
+ // on a disconnected node (IE 9)
2350
+ support.disconnectedMatch = matches.call(el, "*"); // This should fail with an exception
2351
+ // Gecko does not error, returns false instead
2352
+
2353
+ matches.call(el, "[s!='']:x");
2354
+ rbuggyMatches.push("!=", pseudos);
2355
+ });
2356
+ }
2357
+
2358
+ rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join("|"));
2359
+ rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join("|"));
2360
+ /* Contains
2361
+ ---------------------------------------------------------------------- */
2362
+
2363
+ hasCompare = rnative.test(docElem.compareDocumentPosition); // Element contains another
2364
+ // Purposefully self-exclusive
2365
+ // As in, an element does not contain itself
2366
+
2367
+ contains = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
2368
+ var adown = a.nodeType === 9 ? a.documentElement : a,
2369
+ bup = b && b.parentNode;
2370
+ return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
2371
+ } : function (a, b) {
2372
+ if (b) {
2373
+ while (b = b.parentNode) {
2374
+ if (b === a) {
2375
+ return true;
2376
+ }
2377
+ }
2378
+ }
2379
+
2380
+ return false;
2381
+ };
2382
+ /* Sorting
2383
+ ---------------------------------------------------------------------- */
2384
+ // Document order sorting
2385
+
2386
+ sortOrder = hasCompare ? function (a, b) {
2387
+ // Flag for duplicate removal
2388
+ if (a === b) {
2389
+ hasDuplicate = true;
2390
+ return 0;
2391
+ } // Sort on method existence if only one input has compareDocumentPosition
2392
+
2393
+
2394
+ var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
2395
+
2396
+ if (compare) {
2397
+ return compare;
2398
+ } // Calculate position if both inputs belong to the same document
2399
+ // Support: IE 11+, Edge 17 - 18+
2400
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2401
+ // two documents; shallow comparisons work.
2402
+ // eslint-disable-next-line eqeqeq
2403
+
2404
+
2405
+ compare = (a.ownerDocument || a) == (b.ownerDocument || b) ? a.compareDocumentPosition(b) : // Otherwise we know they are disconnected
2406
+ 1; // Disconnected nodes
2407
+
2408
+ if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
2409
+ // Choose the first element that is related to our preferred document
2410
+ // Support: IE 11+, Edge 17 - 18+
2411
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2412
+ // two documents; shallow comparisons work.
2413
+ // eslint-disable-next-line eqeqeq
2414
+ if (a == document || a.ownerDocument == preferredDoc && contains(preferredDoc, a)) {
2415
+ return -1;
2416
+ } // Support: IE 11+, Edge 17 - 18+
2417
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2418
+ // two documents; shallow comparisons work.
2419
+ // eslint-disable-next-line eqeqeq
2420
+
2421
+
2422
+ if (b == document || b.ownerDocument == preferredDoc && contains(preferredDoc, b)) {
2423
+ return 1;
2424
+ } // Maintain original order
2425
+
2426
+
2427
+ return sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0;
2428
+ }
2429
+
2430
+ return compare & 4 ? -1 : 1;
2431
+ } : function (a, b) {
2432
+ // Exit early if the nodes are identical
2433
+ if (a === b) {
2434
+ hasDuplicate = true;
2435
+ return 0;
2436
+ }
2437
+
2438
+ var cur,
2439
+ i = 0,
2440
+ aup = a.parentNode,
2441
+ bup = b.parentNode,
2442
+ ap = [a],
2443
+ bp = [b]; // Parentless nodes are either documents or disconnected
2444
+
2445
+ if (!aup || !bup) {
2446
+ // Support: IE 11+, Edge 17 - 18+
2447
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2448
+ // two documents; shallow comparisons work.
2449
+
2450
+ /* eslint-disable eqeqeq */
2451
+ return a == document ? -1 : b == document ? 1 :
2452
+ /* eslint-enable eqeqeq */
2453
+ aup ? -1 : bup ? 1 : sortInput ? indexOf(sortInput, a) - indexOf(sortInput, b) : 0; // If the nodes are siblings, we can do a quick check
2454
+ } else if (aup === bup) {
2455
+ return siblingCheck(a, b);
2456
+ } // Otherwise we need full lists of their ancestors for comparison
2457
+
2458
+
2459
+ cur = a;
2460
+
2461
+ while (cur = cur.parentNode) {
2462
+ ap.unshift(cur);
2463
+ }
2464
+
2465
+ cur = b;
2466
+
2467
+ while (cur = cur.parentNode) {
2468
+ bp.unshift(cur);
2469
+ } // Walk down the tree looking for a discrepancy
2470
+
2471
+
2472
+ while (ap[i] === bp[i]) {
2473
+ i++;
2474
+ }
2475
+
2476
+ return i ? // Do a sibling check if the nodes have a common ancestor
2477
+ siblingCheck(ap[i], bp[i]) : // Otherwise nodes in our document sort first
2478
+ // Support: IE 11+, Edge 17 - 18+
2479
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2480
+ // two documents; shallow comparisons work.
2481
+
2482
+ /* eslint-disable eqeqeq */
2483
+ ap[i] == preferredDoc ? -1 : bp[i] == preferredDoc ? 1 :
2484
+ /* eslint-enable eqeqeq */
2485
+ 0;
2486
+ };
2487
+ return document;
2488
+ };
2489
+
2490
+ Sizzle.matches = function (expr, elements) {
2491
+ return Sizzle(expr, null, null, elements);
2492
+ };
2493
+
2494
+ Sizzle.matchesSelector = function (elem, expr) {
2495
+ setDocument(elem);
2496
+
2497
+ if (support.matchesSelector && documentIsHTML && !nonnativeSelectorCache[expr + " "] && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
2498
+ try {
2499
+ var ret = matches.call(elem, expr); // IE 9's matchesSelector returns false on disconnected nodes
2500
+
2501
+ if (ret || support.disconnectedMatch || // As well, disconnected nodes are said to be in a document
2502
+ // fragment in IE 9
2503
+ elem.document && elem.document.nodeType !== 11) {
2504
+ return ret;
2505
+ }
2506
+ } catch (e) {
2507
+ nonnativeSelectorCache(expr, true);
2508
+ }
2509
+ }
2510
+
2511
+ return Sizzle(expr, document, null, [elem]).length > 0;
2512
+ };
2513
+
2514
+ Sizzle.contains = function (context, elem) {
2515
+ // Set document vars if needed
2516
+ // Support: IE 11+, Edge 17 - 18+
2517
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2518
+ // two documents; shallow comparisons work.
2519
+ // eslint-disable-next-line eqeqeq
2520
+ if ((context.ownerDocument || context) != document) {
2521
+ setDocument(context);
2522
+ }
2523
+
2524
+ return contains(context, elem);
2525
+ };
2526
+
2527
+ Sizzle.attr = function (elem, name) {
2528
+ // Set document vars if needed
2529
+ // Support: IE 11+, Edge 17 - 18+
2530
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
2531
+ // two documents; shallow comparisons work.
2532
+ // eslint-disable-next-line eqeqeq
2533
+ if ((elem.ownerDocument || elem) != document) {
2534
+ setDocument(elem);
2535
+ }
2536
+
2537
+ var fn = Expr.attrHandle[name.toLowerCase()],
2538
+ // Don't get fooled by Object.prototype properties (jQuery #13807)
2539
+ val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
2540
+ return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
2541
+ };
2542
+
2543
+ Sizzle.escape = function (sel) {
2544
+ return (sel + "").replace(rcssescape, fcssescape);
2545
+ };
2546
+
2547
+ Sizzle.error = function (msg) {
2548
+ throw new Error("Syntax error, unrecognized expression: " + msg);
2549
+ };
2550
+ /**
2551
+ * Document sorting and removing duplicates
2552
+ * @param {ArrayLike} results
2553
+ */
2554
+
2555
+
2556
+ Sizzle.uniqueSort = function (results) {
2557
+ var elem,
2558
+ duplicates = [],
2559
+ j = 0,
2560
+ i = 0; // Unless we *know* we can detect duplicates, assume their presence
2561
+
2562
+ hasDuplicate = !support.detectDuplicates;
2563
+ sortInput = !support.sortStable && results.slice(0);
2564
+ results.sort(sortOrder);
2565
+
2566
+ if (hasDuplicate) {
2567
+ while (elem = results[i++]) {
2568
+ if (elem === results[i]) {
2569
+ j = duplicates.push(i);
2570
+ }
2571
+ }
2572
+
2573
+ while (j--) {
2574
+ results.splice(duplicates[j], 1);
2575
+ }
2576
+ } // Clear input after sorting to release objects
2577
+ // See https://github.com/jquery/sizzle/pull/225
2578
+
2579
+
2580
+ sortInput = null;
2581
+ return results;
2582
+ };
2583
+ /**
2584
+ * Utility function for retrieving the text value of an array of DOM nodes
2585
+ * @param {Array|Element} elem
2586
+ */
2587
+
2588
+
2589
+ getText = Sizzle.getText = function (elem) {
2590
+ var node,
2591
+ ret = "",
2592
+ i = 0,
2593
+ nodeType = elem.nodeType;
2594
+
2595
+ if (!nodeType) {
2596
+ // If no nodeType, this is expected to be an array
2597
+ while (node = elem[i++]) {
2598
+ // Do not traverse comment nodes
2599
+ ret += getText(node);
2600
+ }
2601
+ } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
2602
+ // Use textContent for elements
2603
+ // innerText usage removed for consistency of new lines (jQuery #11153)
2604
+ if (typeof elem.textContent === "string") {
2605
+ return elem.textContent;
2606
+ } else {
2607
+ // Traverse its children
2608
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
2609
+ ret += getText(elem);
2610
+ }
2611
+ }
2612
+ } else if (nodeType === 3 || nodeType === 4) {
2613
+ return elem.nodeValue;
2614
+ } // Do not include comment or processing instruction nodes
2615
+
2616
+
2617
+ return ret;
2618
+ };
2619
+
2620
+ Expr = Sizzle.selectors = {
2621
+ // Can be adjusted by the user
2622
+ cacheLength: 50,
2623
+ createPseudo: markFunction,
2624
+ match: matchExpr,
2625
+ attrHandle: {},
2626
+ find: {},
2627
+ relative: {
2628
+ ">": {
2629
+ dir: "parentNode",
2630
+ first: true
2631
+ },
2632
+ " ": {
2633
+ dir: "parentNode"
2634
+ },
2635
+ "+": {
2636
+ dir: "previousSibling",
2637
+ first: true
2638
+ },
2639
+ "~": {
2640
+ dir: "previousSibling"
2641
+ }
2642
+ },
2643
+ preFilter: {
2644
+ "ATTR": function ATTR(match) {
2645
+ match[1] = match[1].replace(runescape, funescape); // Move the given value to match[3] whether quoted or unquoted
2646
+
2647
+ match[3] = (match[3] || match[4] || match[5] || "").replace(runescape, funescape);
2648
+
2649
+ if (match[2] === "~=") {
2650
+ match[3] = " " + match[3] + " ";
2651
+ }
2652
+
2653
+ return match.slice(0, 4);
2654
+ },
2655
+ "CHILD": function CHILD(match) {
2656
+ /* matches from matchExpr["CHILD"]
2657
+ 1 type (only|nth|...)
2658
+ 2 what (child|of-type)
2659
+ 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
2660
+ 4 xn-component of xn+y argument ([+-]?\d*n|)
2661
+ 5 sign of xn-component
2662
+ 6 x of xn-component
2663
+ 7 sign of y-component
2664
+ 8 y of y-component
2665
+ */
2666
+ match[1] = match[1].toLowerCase();
2667
+
2668
+ if (match[1].slice(0, 3) === "nth") {
2669
+ // nth-* requires argument
2670
+ if (!match[3]) {
2671
+ Sizzle.error(match[0]);
2672
+ } // numeric x and y parameters for Expr.filter.CHILD
2673
+ // remember that false/true cast respectively to 0/1
2674
+
2675
+
2676
+ match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === "even" || match[3] === "odd"));
2677
+ match[5] = +(match[7] + match[8] || match[3] === "odd"); // other types prohibit arguments
2678
+ } else if (match[3]) {
2679
+ Sizzle.error(match[0]);
2680
+ }
2681
+
2682
+ return match;
2683
+ },
2684
+ "PSEUDO": function PSEUDO(match) {
2685
+ var excess,
2686
+ unquoted = !match[6] && match[2];
2687
+
2688
+ if (matchExpr["CHILD"].test(match[0])) {
2689
+ return null;
2690
+ } // Accept quoted arguments as-is
2691
+
2692
+
2693
+ if (match[3]) {
2694
+ match[2] = match[4] || match[5] || ""; // Strip excess characters from unquoted arguments
2695
+ } else if (unquoted && rpseudo.test(unquoted) && ( // Get excess from tokenize (recursively)
2696
+ excess = tokenize(unquoted, true)) && ( // advance to the next closing parenthesis
2697
+ excess = unquoted.indexOf(")", unquoted.length - excess) - unquoted.length)) {
2698
+ // excess is a negative index
2699
+ match[0] = match[0].slice(0, excess);
2700
+ match[2] = unquoted.slice(0, excess);
2701
+ } // Return only captures needed by the pseudo filter method (type and argument)
2702
+
2703
+
2704
+ return match.slice(0, 3);
2705
+ }
2706
+ },
2707
+ filter: {
2708
+ "TAG": function TAG(nodeNameSelector) {
2709
+ var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
2710
+ return nodeNameSelector === "*" ? function () {
2711
+ return true;
2712
+ } : function (elem) {
2713
+ return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
2714
+ };
2715
+ },
2716
+ "CLASS": function CLASS(className) {
2717
+ var pattern = classCache[className + " "];
2718
+ return pattern || (pattern = new RegExp("(^|" + whitespace + ")" + className + "(" + whitespace + "|$)")) && classCache(className, function (elem) {
2719
+ return pattern.test(typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "");
2720
+ });
2721
+ },
2722
+ "ATTR": function ATTR(name, operator, check) {
2723
+ return function (elem) {
2724
+ var result = Sizzle.attr(elem, name);
2725
+
2726
+ if (result == null) {
2727
+ return operator === "!=";
2728
+ }
2729
+
2730
+ if (!operator) {
2731
+ return true;
2732
+ }
2733
+
2734
+ result += "";
2735
+ /* eslint-disable max-len */
2736
+
2737
+ return operator === "=" ? result === check : operator === "!=" ? result !== check : operator === "^=" ? check && result.indexOf(check) === 0 : operator === "*=" ? check && result.indexOf(check) > -1 : operator === "$=" ? check && result.slice(-check.length) === check : operator === "~=" ? (" " + result.replace(rwhitespace, " ") + " ").indexOf(check) > -1 : operator === "|=" ? result === check || result.slice(0, check.length + 1) === check + "-" : false;
2738
+ /* eslint-enable max-len */
2739
+ };
2740
+ },
2741
+ "CHILD": function CHILD(type, what, _argument, first, last) {
2742
+ var simple = type.slice(0, 3) !== "nth",
2743
+ forward = type.slice(-4) !== "last",
2744
+ ofType = what === "of-type";
2745
+ return first === 1 && last === 0 ? // Shortcut for :nth-*(n)
2746
+ function (elem) {
2747
+ return !!elem.parentNode;
2748
+ } : function (elem, _context, xml) {
2749
+ var cache,
2750
+ uniqueCache,
2751
+ outerCache,
2752
+ node,
2753
+ nodeIndex,
2754
+ start,
2755
+ dir = simple !== forward ? "nextSibling" : "previousSibling",
2756
+ parent = elem.parentNode,
2757
+ name = ofType && elem.nodeName.toLowerCase(),
2758
+ useCache = !xml && !ofType,
2759
+ diff = false;
2760
+
2761
+ if (parent) {
2762
+ // :(first|last|only)-(child|of-type)
2763
+ if (simple) {
2764
+ while (dir) {
2765
+ node = elem;
2766
+
2767
+ while (node = node[dir]) {
2768
+ if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
2769
+ return false;
2770
+ }
2771
+ } // Reverse direction for :only-* (if we haven't yet done so)
2772
+
2773
+
2774
+ start = dir = type === "only" && !start && "nextSibling";
2775
+ }
2776
+
2777
+ return true;
2778
+ }
2779
+
2780
+ start = [forward ? parent.firstChild : parent.lastChild]; // non-xml :nth-child(...) stores cache data on `parent`
2781
+
2782
+ if (forward && useCache) {
2783
+ // Seek `elem` from a previously-cached index
2784
+ // ...in a gzip-friendly way
2785
+ node = parent;
2786
+ outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only
2787
+ // Defend against cloned attroperties (jQuery gh-1709)
2788
+
2789
+ uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
2790
+ cache = uniqueCache[type] || [];
2791
+ nodeIndex = cache[0] === dirruns && cache[1];
2792
+ diff = nodeIndex && cache[2];
2793
+ node = nodeIndex && parent.childNodes[nodeIndex];
2794
+
2795
+ while (node = ++nodeIndex && node && node[dir] || ( // Fallback to seeking `elem` from the start
2796
+ diff = nodeIndex = 0) || start.pop()) {
2797
+ // When found, cache indexes on `parent` and break
2798
+ if (node.nodeType === 1 && ++diff && node === elem) {
2799
+ uniqueCache[type] = [dirruns, nodeIndex, diff];
2800
+ break;
2801
+ }
2802
+ }
2803
+ } else {
2804
+ // Use previously-cached element index if available
2805
+ if (useCache) {
2806
+ // ...in a gzip-friendly way
2807
+ node = elem;
2808
+ outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only
2809
+ // Defend against cloned attroperties (jQuery gh-1709)
2810
+
2811
+ uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
2812
+ cache = uniqueCache[type] || [];
2813
+ nodeIndex = cache[0] === dirruns && cache[1];
2814
+ diff = nodeIndex;
2815
+ } // xml :nth-child(...)
2816
+ // or :nth-last-child(...) or :nth(-last)?-of-type(...)
2817
+
2818
+
2819
+ if (diff === false) {
2820
+ // Use the same loop as above to seek `elem` from the start
2821
+ while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
2822
+ if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
2823
+ // Cache the index of each encountered element
2824
+ if (useCache) {
2825
+ outerCache = node[expando] || (node[expando] = {}); // Support: IE <9 only
2826
+ // Defend against cloned attroperties (jQuery gh-1709)
2827
+
2828
+ uniqueCache = outerCache[node.uniqueID] || (outerCache[node.uniqueID] = {});
2829
+ uniqueCache[type] = [dirruns, diff];
2830
+ }
2831
+
2832
+ if (node === elem) {
2833
+ break;
2834
+ }
2835
+ }
2836
+ }
2837
+ }
2838
+ } // Incorporate the offset, then check against cycle size
2839
+
2840
+
2841
+ diff -= last;
2842
+ return diff === first || diff % first === 0 && diff / first >= 0;
2843
+ }
2844
+ };
2845
+ },
2846
+ "PSEUDO": function PSEUDO(pseudo, argument) {
2847
+ // pseudo-class names are case-insensitive
2848
+ // http://www.w3.org/TR/selectors/#pseudo-classes
2849
+ // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
2850
+ // Remember that setFilters inherits from pseudos
2851
+ var args,
2852
+ fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error("unsupported pseudo: " + pseudo); // The user may use createPseudo to indicate that
2853
+ // arguments are needed to create the filter function
2854
+ // just as Sizzle does
2855
+
2856
+ if (fn[expando]) {
2857
+ return fn(argument);
2858
+ } // But maintain support for old signatures
2859
+
2860
+
2861
+ if (fn.length > 1) {
2862
+ args = [pseudo, pseudo, "", argument];
2863
+ return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
2864
+ var idx,
2865
+ matched = fn(seed, argument),
2866
+ i = matched.length;
2867
+
2868
+ while (i--) {
2869
+ idx = indexOf(seed, matched[i]);
2870
+ seed[idx] = !(matches[idx] = matched[i]);
2871
+ }
2872
+ }) : function (elem) {
2873
+ return fn(elem, 0, args);
2874
+ };
2875
+ }
2876
+
2877
+ return fn;
2878
+ }
2879
+ },
2880
+ pseudos: {
2881
+ // Potentially complex pseudos
2882
+ "not": markFunction(function (selector) {
2883
+ // Trim the selector passed to compile
2884
+ // to avoid treating leading and trailing
2885
+ // spaces as combinators
2886
+ var input = [],
2887
+ results = [],
2888
+ matcher = compile(selector.replace(rtrim, "$1"));
2889
+ return matcher[expando] ? markFunction(function (seed, matches, _context, xml) {
2890
+ var elem,
2891
+ unmatched = matcher(seed, null, xml, []),
2892
+ i = seed.length; // Match elements unmatched by `matcher`
2893
+
2894
+ while (i--) {
2895
+ if (elem = unmatched[i]) {
2896
+ seed[i] = !(matches[i] = elem);
2897
+ }
2898
+ }
2899
+ }) : function (elem, _context, xml) {
2900
+ input[0] = elem;
2901
+ matcher(input, null, xml, results); // Don't keep the element (issue #299)
2902
+
2903
+ input[0] = null;
2904
+ return !results.pop();
2905
+ };
2906
+ }),
2907
+ "has": markFunction(function (selector) {
2908
+ return function (elem) {
2909
+ return Sizzle(selector, elem).length > 0;
2910
+ };
2911
+ }),
2912
+ "contains": markFunction(function (text) {
2913
+ text = text.replace(runescape, funescape);
2914
+ return function (elem) {
2915
+ return (elem.textContent || getText(elem)).indexOf(text) > -1;
2916
+ };
2917
+ }),
2918
+ // "Whether an element is represented by a :lang() selector
2919
+ // is based solely on the element's language value
2920
+ // being equal to the identifier C,
2921
+ // or beginning with the identifier C immediately followed by "-".
2922
+ // The matching of C against the element's language value is performed case-insensitively.
2923
+ // The identifier C does not have to be a valid language name."
2924
+ // http://www.w3.org/TR/selectors/#lang-pseudo
2925
+ "lang": markFunction(function (lang) {
2926
+ // lang value must be a valid identifier
2927
+ if (!ridentifier.test(lang || "")) {
2928
+ Sizzle.error("unsupported lang: " + lang);
2929
+ }
2930
+
2931
+ lang = lang.replace(runescape, funescape).toLowerCase();
2932
+ return function (elem) {
2933
+ var elemLang;
2934
+
2935
+ do {
2936
+ if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute("xml:lang") || elem.getAttribute("lang")) {
2937
+ elemLang = elemLang.toLowerCase();
2938
+ return elemLang === lang || elemLang.indexOf(lang + "-") === 0;
2939
+ }
2940
+ } while ((elem = elem.parentNode) && elem.nodeType === 1);
2941
+
2942
+ return false;
2943
+ };
2944
+ }),
2945
+ // Miscellaneous
2946
+ "target": function target(elem) {
2947
+ var hash = window.location && window.location.hash;
2948
+ return hash && hash.slice(1) === elem.id;
2949
+ },
2950
+ "root": function root(elem) {
2951
+ return elem === docElem;
2952
+ },
2953
+ "focus": function focus(elem) {
2954
+ return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
2955
+ },
2956
+ // Boolean properties
2957
+ "enabled": createDisabledPseudo(false),
2958
+ "disabled": createDisabledPseudo(true),
2959
+ "checked": function checked(elem) {
2960
+ // In CSS3, :checked should return both checked and selected elements
2961
+ // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
2962
+ var nodeName = elem.nodeName.toLowerCase();
2963
+ return nodeName === "input" && !!elem.checked || nodeName === "option" && !!elem.selected;
2964
+ },
2965
+ "selected": function selected(elem) {
2966
+ // Accessing this property makes selected-by-default
2967
+ // options in Safari work properly
2968
+ if (elem.parentNode) {
2969
+ // eslint-disable-next-line no-unused-expressions
2970
+ elem.parentNode.selectedIndex;
2971
+ }
2972
+
2973
+ return elem.selected === true;
2974
+ },
2975
+ // Contents
2976
+ "empty": function empty(elem) {
2977
+ // http://www.w3.org/TR/selectors/#empty-pseudo
2978
+ // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
2979
+ // but not by others (comment: 8; processing instruction: 7; etc.)
2980
+ // nodeType < 6 works because attributes (2) do not appear as children
2981
+ for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
2982
+ if (elem.nodeType < 6) {
2983
+ return false;
2984
+ }
2985
+ }
2986
+
2987
+ return true;
2988
+ },
2989
+ "parent": function parent(elem) {
2990
+ return !Expr.pseudos["empty"](elem);
2991
+ },
2992
+ // Element/input types
2993
+ "header": function header(elem) {
2994
+ return rheader.test(elem.nodeName);
2995
+ },
2996
+ "input": function input(elem) {
2997
+ return rinputs.test(elem.nodeName);
2998
+ },
2999
+ "button": function button(elem) {
3000
+ var name = elem.nodeName.toLowerCase();
3001
+ return name === "input" && elem.type === "button" || name === "button";
3002
+ },
3003
+ "text": function text(elem) {
3004
+ var attr;
3005
+ return elem.nodeName.toLowerCase() === "input" && elem.type === "text" && ( // Support: IE<8
3006
+ // New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
3007
+ (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text");
3008
+ },
3009
+ // Position-in-collection
3010
+ "first": createPositionalPseudo(function () {
3011
+ return [0];
3012
+ }),
3013
+ "last": createPositionalPseudo(function (_matchIndexes, length) {
3014
+ return [length - 1];
3015
+ }),
3016
+ "eq": createPositionalPseudo(function (_matchIndexes, length, argument) {
3017
+ return [argument < 0 ? argument + length : argument];
3018
+ }),
3019
+ "even": createPositionalPseudo(function (matchIndexes, length) {
3020
+ var i = 0;
3021
+
3022
+ for (; i < length; i += 2) {
3023
+ matchIndexes.push(i);
3024
+ }
3025
+
3026
+ return matchIndexes;
3027
+ }),
3028
+ "odd": createPositionalPseudo(function (matchIndexes, length) {
3029
+ var i = 1;
3030
+
3031
+ for (; i < length; i += 2) {
3032
+ matchIndexes.push(i);
3033
+ }
3034
+
3035
+ return matchIndexes;
3036
+ }),
3037
+ "lt": createPositionalPseudo(function (matchIndexes, length, argument) {
3038
+ var i = argument < 0 ? argument + length : argument > length ? length : argument;
3039
+
3040
+ for (; --i >= 0;) {
3041
+ matchIndexes.push(i);
3042
+ }
3043
+
3044
+ return matchIndexes;
3045
+ }),
3046
+ "gt": createPositionalPseudo(function (matchIndexes, length, argument) {
3047
+ var i = argument < 0 ? argument + length : argument;
3048
+
3049
+ for (; ++i < length;) {
3050
+ matchIndexes.push(i);
3051
+ }
3052
+
3053
+ return matchIndexes;
3054
+ })
3055
+ }
3056
+ };
3057
+ Expr.pseudos["nth"] = Expr.pseudos["eq"]; // Add button/input type pseudos
3058
+
3059
+ for (i in {
3060
+ radio: true,
3061
+ checkbox: true,
3062
+ file: true,
3063
+ password: true,
3064
+ image: true
3065
+ }) {
3066
+ Expr.pseudos[i] = createInputPseudo(i);
3067
+ }
3068
+
3069
+ for (i in {
3070
+ submit: true,
3071
+ reset: true
3072
+ }) {
3073
+ Expr.pseudos[i] = createButtonPseudo(i);
3074
+ } // Easy API for creating new setFilters
3075
+
3076
+
3077
+ function setFilters() {}
3078
+
3079
+ setFilters.prototype = Expr.filters = Expr.pseudos;
3080
+ Expr.setFilters = new setFilters();
3081
+
3082
+ tokenize = Sizzle.tokenize = function (selector, parseOnly) {
3083
+ var matched,
3084
+ match,
3085
+ tokens,
3086
+ type,
3087
+ soFar,
3088
+ groups,
3089
+ preFilters,
3090
+ cached = tokenCache[selector + " "];
3091
+
3092
+ if (cached) {
3093
+ return parseOnly ? 0 : cached.slice(0);
3094
+ }
3095
+
3096
+ soFar = selector;
3097
+ groups = [];
3098
+ preFilters = Expr.preFilter;
3099
+
3100
+ while (soFar) {
3101
+ // Comma and first run
3102
+ if (!matched || (match = rcomma.exec(soFar))) {
3103
+ if (match) {
3104
+ // Don't consume trailing commas as valid
3105
+ soFar = soFar.slice(match[0].length) || soFar;
3106
+ }
3107
+
3108
+ groups.push(tokens = []);
3109
+ }
3110
+
3111
+ matched = false; // Combinators
3112
+
3113
+ if (match = rcombinators.exec(soFar)) {
3114
+ matched = match.shift();
3115
+ tokens.push({
3116
+ value: matched,
3117
+ // Cast descendant combinators to space
3118
+ type: match[0].replace(rtrim, " ")
3119
+ });
3120
+ soFar = soFar.slice(matched.length);
3121
+ } // Filters
3122
+
3123
+
3124
+ for (type in Expr.filter) {
3125
+ if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
3126
+ matched = match.shift();
3127
+ tokens.push({
3128
+ value: matched,
3129
+ type: type,
3130
+ matches: match
3131
+ });
3132
+ soFar = soFar.slice(matched.length);
3133
+ }
3134
+ }
3135
+
3136
+ if (!matched) {
3137
+ break;
3138
+ }
3139
+ } // Return the length of the invalid excess
3140
+ // if we're just parsing
3141
+ // Otherwise, throw an error or return tokens
3142
+
3143
+
3144
+ return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : // Cache the tokens
3145
+ tokenCache(selector, groups).slice(0);
3146
+ };
3147
+
3148
+ function toSelector(tokens) {
3149
+ var i = 0,
3150
+ len = tokens.length,
3151
+ selector = "";
3152
+
3153
+ for (; i < len; i++) {
3154
+ selector += tokens[i].value;
3155
+ }
3156
+
3157
+ return selector;
3158
+ }
3159
+
3160
+ function addCombinator(matcher, combinator, base) {
3161
+ var dir = combinator.dir,
3162
+ skip = combinator.next,
3163
+ key = skip || dir,
3164
+ checkNonElements = base && key === "parentNode",
3165
+ doneName = done++;
3166
+ return combinator.first ? // Check against closest ancestor/preceding element
3167
+ function (elem, context, xml) {
3168
+ while (elem = elem[dir]) {
3169
+ if (elem.nodeType === 1 || checkNonElements) {
3170
+ return matcher(elem, context, xml);
3171
+ }
3172
+ }
3173
+
3174
+ return false;
3175
+ } : // Check against all ancestor/preceding elements
3176
+ function (elem, context, xml) {
3177
+ var oldCache,
3178
+ uniqueCache,
3179
+ outerCache,
3180
+ newCache = [dirruns, doneName]; // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
3181
+
3182
+ if (xml) {
3183
+ while (elem = elem[dir]) {
3184
+ if (elem.nodeType === 1 || checkNonElements) {
3185
+ if (matcher(elem, context, xml)) {
3186
+ return true;
3187
+ }
3188
+ }
3189
+ }
3190
+ } else {
3191
+ while (elem = elem[dir]) {
3192
+ if (elem.nodeType === 1 || checkNonElements) {
3193
+ outerCache = elem[expando] || (elem[expando] = {}); // Support: IE <9 only
3194
+ // Defend against cloned attroperties (jQuery gh-1709)
3195
+
3196
+ uniqueCache = outerCache[elem.uniqueID] || (outerCache[elem.uniqueID] = {});
3197
+
3198
+ if (skip && skip === elem.nodeName.toLowerCase()) {
3199
+ elem = elem[dir] || elem;
3200
+ } else if ((oldCache = uniqueCache[key]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
3201
+ // Assign to newCache so results back-propagate to previous elements
3202
+ return newCache[2] = oldCache[2];
3203
+ } else {
3204
+ // Reuse newcache so results back-propagate to previous elements
3205
+ uniqueCache[key] = newCache; // A match means we're done; a fail means we have to keep checking
3206
+
3207
+ if (newCache[2] = matcher(elem, context, xml)) {
3208
+ return true;
3209
+ }
3210
+ }
3211
+ }
3212
+ }
3213
+ }
3214
+
3215
+ return false;
3216
+ };
3217
+ }
3218
+
3219
+ function elementMatcher(matchers) {
3220
+ return matchers.length > 1 ? function (elem, context, xml) {
3221
+ var i = matchers.length;
3222
+
3223
+ while (i--) {
3224
+ if (!matchers[i](elem, context, xml)) {
3225
+ return false;
3226
+ }
3227
+ }
3228
+
3229
+ return true;
3230
+ } : matchers[0];
3231
+ }
3232
+
3233
+ function multipleContexts(selector, contexts, results) {
3234
+ var i = 0,
3235
+ len = contexts.length;
3236
+
3237
+ for (; i < len; i++) {
3238
+ Sizzle(selector, contexts[i], results);
3239
+ }
3240
+
3241
+ return results;
3242
+ }
3243
+
3244
+ function condense(unmatched, map, filter, context, xml) {
3245
+ var elem,
3246
+ newUnmatched = [],
3247
+ i = 0,
3248
+ len = unmatched.length,
3249
+ mapped = map != null;
3250
+
3251
+ for (; i < len; i++) {
3252
+ if (elem = unmatched[i]) {
3253
+ if (!filter || filter(elem, context, xml)) {
3254
+ newUnmatched.push(elem);
3255
+
3256
+ if (mapped) {
3257
+ map.push(i);
3258
+ }
3259
+ }
3260
+ }
3261
+ }
3262
+
3263
+ return newUnmatched;
3264
+ }
3265
+
3266
+ function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
3267
+ if (postFilter && !postFilter[expando]) {
3268
+ postFilter = setMatcher(postFilter);
3269
+ }
3270
+
3271
+ if (postFinder && !postFinder[expando]) {
3272
+ postFinder = setMatcher(postFinder, postSelector);
3273
+ }
3274
+
3275
+ return markFunction(function (seed, results, context, xml) {
3276
+ var temp,
3277
+ i,
3278
+ elem,
3279
+ preMap = [],
3280
+ postMap = [],
3281
+ preexisting = results.length,
3282
+ // Get initial elements from seed or context
3283
+ elems = seed || multipleContexts(selector || "*", context.nodeType ? [context] : context, []),
3284
+ // Prefilter to get matcher input, preserving a map for seed-results synchronization
3285
+ matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems,
3286
+ matcherOut = matcher ? // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
3287
+ postFinder || (seed ? preFilter : preexisting || postFilter) ? // ...intermediate processing is necessary
3288
+ [] : // ...otherwise use results directly
3289
+ results : matcherIn; // Find primary matches
3290
+
3291
+ if (matcher) {
3292
+ matcher(matcherIn, matcherOut, context, xml);
3293
+ } // Apply postFilter
3294
+
3295
+
3296
+ if (postFilter) {
3297
+ temp = condense(matcherOut, postMap);
3298
+ postFilter(temp, [], context, xml); // Un-match failing elements by moving them back to matcherIn
3299
+
3300
+ i = temp.length;
3301
+
3302
+ while (i--) {
3303
+ if (elem = temp[i]) {
3304
+ matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
3305
+ }
3306
+ }
3307
+ }
3308
+
3309
+ if (seed) {
3310
+ if (postFinder || preFilter) {
3311
+ if (postFinder) {
3312
+ // Get the final matcherOut by condensing this intermediate into postFinder contexts
3313
+ temp = [];
3314
+ i = matcherOut.length;
3315
+
3316
+ while (i--) {
3317
+ if (elem = matcherOut[i]) {
3318
+ // Restore matcherIn since elem is not yet a final match
3319
+ temp.push(matcherIn[i] = elem);
3320
+ }
3321
+ }
3322
+
3323
+ postFinder(null, matcherOut = [], temp, xml);
3324
+ } // Move matched elements from seed to results to keep them synchronized
3325
+
3326
+
3327
+ i = matcherOut.length;
3328
+
3329
+ while (i--) {
3330
+ if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf(seed, elem) : preMap[i]) > -1) {
3331
+ seed[temp] = !(results[temp] = elem);
3332
+ }
3333
+ }
3334
+ } // Add elements to results, through postFinder if defined
3335
+
3336
+ } else {
3337
+ matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
3338
+
3339
+ if (postFinder) {
3340
+ postFinder(null, results, matcherOut, xml);
3341
+ } else {
3342
+ push.apply(results, matcherOut);
3343
+ }
3344
+ }
3345
+ });
3346
+ }
3347
+
3348
+ function matcherFromTokens(tokens) {
3349
+ var checkContext,
3350
+ matcher,
3351
+ j,
3352
+ len = tokens.length,
3353
+ leadingRelative = Expr.relative[tokens[0].type],
3354
+ implicitRelative = leadingRelative || Expr.relative[" "],
3355
+ i = leadingRelative ? 1 : 0,
3356
+ // The foundational matcher ensures that elements are reachable from top-level context(s)
3357
+ matchContext = addCombinator(function (elem) {
3358
+ return elem === checkContext;
3359
+ }, implicitRelative, true),
3360
+ matchAnyContext = addCombinator(function (elem) {
3361
+ return indexOf(checkContext, elem) > -1;
3362
+ }, implicitRelative, true),
3363
+ matchers = [function (elem, context, xml) {
3364
+ var ret = !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml)); // Avoid hanging onto element (issue #299)
3365
+
3366
+ checkContext = null;
3367
+ return ret;
3368
+ }];
3369
+
3370
+ for (; i < len; i++) {
3371
+ if (matcher = Expr.relative[tokens[i].type]) {
3372
+ matchers = [addCombinator(elementMatcher(matchers), matcher)];
3373
+ } else {
3374
+ matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches); // Return special upon seeing a positional matcher
3375
+
3376
+ if (matcher[expando]) {
3377
+ // Find the next relative operator (if any) for proper handling
3378
+ j = ++i;
3379
+
3380
+ for (; j < len; j++) {
3381
+ if (Expr.relative[tokens[j].type]) {
3382
+ break;
3383
+ }
3384
+ }
3385
+
3386
+ return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector( // If the preceding token was a descendant combinator, insert an implicit any-element `*`
3387
+ tokens.slice(0, i - 1).concat({
3388
+ value: tokens[i - 2].type === " " ? "*" : ""
3389
+ })).replace(rtrim, "$1"), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
3390
+ }
3391
+
3392
+ matchers.push(matcher);
3393
+ }
3394
+ }
3395
+
3396
+ return elementMatcher(matchers);
3397
+ }
3398
+
3399
+ function matcherFromGroupMatchers(elementMatchers, setMatchers) {
3400
+ var bySet = setMatchers.length > 0,
3401
+ byElement = elementMatchers.length > 0,
3402
+ superMatcher = function superMatcher(seed, context, xml, results, outermost) {
3403
+ var elem,
3404
+ j,
3405
+ matcher,
3406
+ matchedCount = 0,
3407
+ i = "0",
3408
+ unmatched = seed && [],
3409
+ setMatched = [],
3410
+ contextBackup = outermostContext,
3411
+ // We must always have either seed elements or outermost context
3412
+ elems = seed || byElement && Expr.find["TAG"]("*", outermost),
3413
+ // Use integer dirruns iff this is the outermost matcher
3414
+ dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1,
3415
+ len = elems.length;
3416
+
3417
+ if (outermost) {
3418
+ // Support: IE 11+, Edge 17 - 18+
3419
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
3420
+ // two documents; shallow comparisons work.
3421
+ // eslint-disable-next-line eqeqeq
3422
+ outermostContext = context == document || context || outermost;
3423
+ } // Add elements passing elementMatchers directly to results
3424
+ // Support: IE<9, Safari
3425
+ // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
3426
+
3427
+
3428
+ for (; i !== len && (elem = elems[i]) != null; i++) {
3429
+ if (byElement && elem) {
3430
+ j = 0; // Support: IE 11+, Edge 17 - 18+
3431
+ // IE/Edge sometimes throw a "Permission denied" error when strict-comparing
3432
+ // two documents; shallow comparisons work.
3433
+ // eslint-disable-next-line eqeqeq
3434
+
3435
+ if (!context && elem.ownerDocument != document) {
3436
+ setDocument(elem);
3437
+ xml = !documentIsHTML;
3438
+ }
3439
+
3440
+ while (matcher = elementMatchers[j++]) {
3441
+ if (matcher(elem, context || document, xml)) {
3442
+ results.push(elem);
3443
+ break;
3444
+ }
3445
+ }
3446
+
3447
+ if (outermost) {
3448
+ dirruns = dirrunsUnique;
3449
+ }
3450
+ } // Track unmatched elements for set filters
3451
+
3452
+
3453
+ if (bySet) {
3454
+ // They will have gone through all possible matchers
3455
+ if (elem = !matcher && elem) {
3456
+ matchedCount--;
3457
+ } // Lengthen the array for every element, matched or not
3458
+
3459
+
3460
+ if (seed) {
3461
+ unmatched.push(elem);
3462
+ }
3463
+ }
3464
+ } // `i` is now the count of elements visited above, and adding it to `matchedCount`
3465
+ // makes the latter nonnegative.
3466
+
3467
+
3468
+ matchedCount += i; // Apply set filters to unmatched elements
3469
+ // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
3470
+ // equals `i`), unless we didn't visit _any_ elements in the above loop because we have
3471
+ // no element matchers and no seed.
3472
+ // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
3473
+ // case, which will result in a "00" `matchedCount` that differs from `i` but is also
3474
+ // numerically zero.
3475
+
3476
+ if (bySet && i !== matchedCount) {
3477
+ j = 0;
3478
+
3479
+ while (matcher = setMatchers[j++]) {
3480
+ matcher(unmatched, setMatched, context, xml);
3481
+ }
3482
+
3483
+ if (seed) {
3484
+ // Reintegrate element matches to eliminate the need for sorting
3485
+ if (matchedCount > 0) {
3486
+ while (i--) {
3487
+ if (!(unmatched[i] || setMatched[i])) {
3488
+ setMatched[i] = pop.call(results);
3489
+ }
3490
+ }
3491
+ } // Discard index placeholder values to get only actual matches
3492
+
3493
+
3494
+ setMatched = condense(setMatched);
3495
+ } // Add matches to results
3496
+
3497
+
3498
+ push.apply(results, setMatched); // Seedless set matches succeeding multiple successful matchers stipulate sorting
3499
+
3500
+ if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
3501
+ Sizzle.uniqueSort(results);
3502
+ }
3503
+ } // Override manipulation of globals by nested matchers
3504
+
3505
+
3506
+ if (outermost) {
3507
+ dirruns = dirrunsUnique;
3508
+ outermostContext = contextBackup;
3509
+ }
3510
+
3511
+ return unmatched;
3512
+ };
3513
+
3514
+ return bySet ? markFunction(superMatcher) : superMatcher;
3515
+ }
3516
+
3517
+ compile = Sizzle.compile = function (selector, match
3518
+ /* Internal Use Only */
3519
+ ) {
3520
+ var i,
3521
+ setMatchers = [],
3522
+ elementMatchers = [],
3523
+ cached = compilerCache[selector + " "];
3524
+
3525
+ if (!cached) {
3526
+ // Generate a function of recursive functions that can be used to check each element
3527
+ if (!match) {
3528
+ match = tokenize(selector);
3529
+ }
3530
+
3531
+ i = match.length;
3532
+
3533
+ while (i--) {
3534
+ cached = matcherFromTokens(match[i]);
3535
+
3536
+ if (cached[expando]) {
3537
+ setMatchers.push(cached);
3538
+ } else {
3539
+ elementMatchers.push(cached);
3540
+ }
3541
+ } // Cache the compiled function
3542
+
3543
+
3544
+ cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers)); // Save selector and tokenization
3545
+
3546
+ cached.selector = selector;
3547
+ }
3548
+
3549
+ return cached;
3550
+ };
3551
+ /**
3552
+ * A low-level selection function that works with Sizzle's compiled
3553
+ * selector functions
3554
+ * @param {String|Function} selector A selector or a pre-compiled
3555
+ * selector function built with Sizzle.compile
3556
+ * @param {Element} context
3557
+ * @param {Array} [results]
3558
+ * @param {Array} [seed] A set of elements to match against
3559
+ */
3560
+
3561
+
3562
+ select = Sizzle.select = function (selector, context, results, seed) {
3563
+ var i,
3564
+ tokens,
3565
+ token,
3566
+ type,
3567
+ find,
3568
+ compiled = typeof selector === "function" && selector,
3569
+ match = !seed && tokenize(selector = compiled.selector || selector);
3570
+ results = results || []; // Try to minimize operations if there is only one selector in the list and no seed
3571
+ // (the latter of which guarantees us context)
3572
+
3573
+ if (match.length === 1) {
3574
+ // Reduce context if the leading compound selector is an ID
3575
+ tokens = match[0] = match[0].slice(0);
3576
+
3577
+ if (tokens.length > 2 && (token = tokens[0]).type === "ID" && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
3578
+ context = (Expr.find["ID"](token.matches[0].replace(runescape, funescape), context) || [])[0];
3579
+
3580
+ if (!context) {
3581
+ return results; // Precompiled matchers will still verify ancestry, so step up a level
3582
+ } else if (compiled) {
3583
+ context = context.parentNode;
3584
+ }
3585
+
3586
+ selector = selector.slice(tokens.shift().value.length);
3587
+ } // Fetch a seed set for right-to-left matching
3588
+
3589
+
3590
+ i = matchExpr["needsContext"].test(selector) ? 0 : tokens.length;
3591
+
3592
+ while (i--) {
3593
+ token = tokens[i]; // Abort if we hit a combinator
3594
+
3595
+ if (Expr.relative[type = token.type]) {
3596
+ break;
3597
+ }
3598
+
3599
+ if (find = Expr.find[type]) {
3600
+ // Search, expanding context for leading sibling combinators
3601
+ if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
3602
+ // If seed is empty or no tokens remain, we can return early
3603
+ tokens.splice(i, 1);
3604
+ selector = seed.length && toSelector(tokens);
3605
+
3606
+ if (!selector) {
3607
+ push.apply(results, seed);
3608
+ return results;
3609
+ }
3610
+
3611
+ break;
3612
+ }
3613
+ }
3614
+ }
3615
+ } // Compile and execute a filtering function if one is not provided
3616
+ // Provide `match` to avoid retokenization if we modified the selector above
3617
+
3618
+
3619
+ (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, !context || rsibling.test(selector) && testContext(context.parentNode) || context);
3620
+ return results;
3621
+ }; // One-time assignments
3622
+ // Sort stability
3623
+
3624
+
3625
+ support.sortStable = expando.split("").sort(sortOrder).join("") === expando; // Support: Chrome 14-35+
3626
+ // Always assume duplicates if they aren't passed to the comparison function
3627
+
3628
+ support.detectDuplicates = !!hasDuplicate; // Initialize against the default document
3629
+
3630
+ setDocument(); // Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
3631
+ // Detached nodes confoundingly follow *each other*
3632
+
3633
+ support.sortDetached = assert(function (el) {
3634
+ // Should return 1, but returns 4 (following)
3635
+ return el.compareDocumentPosition(document.createElement("fieldset")) & 1;
3636
+ }); // Support: IE<8
3637
+ // Prevent attribute/property "interpolation"
3638
+ // https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
3639
+
3640
+ if (!assert(function (el) {
3641
+ el.innerHTML = "<a href='#'></a>";
3642
+ return el.firstChild.getAttribute("href") === "#";
3643
+ })) {
3644
+ addHandle("type|href|height|width", function (elem, name, isXML) {
3645
+ if (!isXML) {
3646
+ return elem.getAttribute(name, name.toLowerCase() === "type" ? 1 : 2);
3647
+ }
3648
+ });
3649
+ } // Support: IE<9
3650
+ // Use defaultValue in place of getAttribute("value")
3651
+
3652
+
3653
+ if (!support.attributes || !assert(function (el) {
3654
+ el.innerHTML = "<input/>";
3655
+ el.firstChild.setAttribute("value", "");
3656
+ return el.firstChild.getAttribute("value") === "";
3657
+ })) {
3658
+ addHandle("value", function (elem, _name, isXML) {
3659
+ if (!isXML && elem.nodeName.toLowerCase() === "input") {
3660
+ return elem.defaultValue;
3661
+ }
3662
+ });
3663
+ } // Support: IE<9
3664
+ // Use getAttributeNode to fetch booleans when getAttribute lies
3665
+
3666
+
3667
+ if (!assert(function (el) {
3668
+ return el.getAttribute("disabled") == null;
3669
+ })) {
3670
+ addHandle(booleans, function (elem, name, isXML) {
3671
+ var val;
3672
+
3673
+ if (!isXML) {
3674
+ return elem[name] === true ? name.toLowerCase() : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
3675
+ }
3676
+ });
3677
+ }
3678
+
3679
+ return Sizzle;
3680
+ }(window);
3681
+
3682
+ jQuery.find = Sizzle;
3683
+ jQuery.expr = Sizzle.selectors; // Deprecated
3684
+
3685
+ jQuery.expr[":"] = jQuery.expr.pseudos;
3686
+ jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
3687
+ jQuery.text = Sizzle.getText;
3688
+ jQuery.isXMLDoc = Sizzle.isXML;
3689
+ jQuery.contains = Sizzle.contains;
3690
+ jQuery.escapeSelector = Sizzle.escape;
3691
+
3692
+ var dir = function dir(elem, _dir, until) {
3693
+ var matched = [],
3694
+ truncate = until !== undefined;
3695
+
3696
+ while ((elem = elem[_dir]) && elem.nodeType !== 9) {
3697
+ if (elem.nodeType === 1) {
3698
+ if (truncate && jQuery(elem).is(until)) {
3699
+ break;
3700
+ }
3701
+
3702
+ matched.push(elem);
3703
+ }
3704
+ }
3705
+
3706
+ return matched;
3707
+ };
3708
+
3709
+ var _siblings = function siblings(n, elem) {
3710
+ var matched = [];
3711
+
3712
+ for (; n; n = n.nextSibling) {
3713
+ if (n.nodeType === 1 && n !== elem) {
3714
+ matched.push(n);
3715
+ }
3716
+ }
3717
+
3718
+ return matched;
3719
+ };
3720
+
3721
+ var rneedsContext = jQuery.expr.match.needsContext;
3722
+
3723
+ function nodeName(elem, name) {
3724
+ return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
3725
+ }
3726
+
3727
+ ;
3728
+ var rsingleTag = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; // Implement the identical functionality for filter and not
3729
+
3730
+ function winnow(elements, qualifier, not) {
3731
+ if (isFunction(qualifier)) {
3732
+ return jQuery.grep(elements, function (elem, i) {
3733
+ return !!qualifier.call(elem, i, elem) !== not;
3734
+ });
3735
+ } // Single element
3736
+
3737
+
3738
+ if (qualifier.nodeType) {
3739
+ return jQuery.grep(elements, function (elem) {
3740
+ return elem === qualifier !== not;
3741
+ });
3742
+ } // Arraylike of elements (jQuery, arguments, Array)
3743
+
3744
+
3745
+ if (typeof qualifier !== "string") {
3746
+ return jQuery.grep(elements, function (elem) {
3747
+ return indexOf.call(qualifier, elem) > -1 !== not;
3748
+ });
3749
+ } // Filtered directly for both simple and complex selectors
3750
+
3751
+
3752
+ return jQuery.filter(qualifier, elements, not);
3753
+ }
3754
+
3755
+ jQuery.filter = function (expr, elems, not) {
3756
+ var elem = elems[0];
3757
+
3758
+ if (not) {
3759
+ expr = ":not(" + expr + ")";
3760
+ }
3761
+
3762
+ if (elems.length === 1 && elem.nodeType === 1) {
3763
+ return jQuery.find.matchesSelector(elem, expr) ? [elem] : [];
3764
+ }
3765
+
3766
+ return jQuery.find.matches(expr, jQuery.grep(elems, function (elem) {
3767
+ return elem.nodeType === 1;
3768
+ }));
3769
+ };
3770
+
3771
+ jQuery.fn.extend({
3772
+ find: function find(selector) {
3773
+ var i,
3774
+ ret,
3775
+ len = this.length,
3776
+ self = this;
3777
+
3778
+ if (typeof selector !== "string") {
3779
+ return this.pushStack(jQuery(selector).filter(function () {
3780
+ for (i = 0; i < len; i++) {
3781
+ if (jQuery.contains(self[i], this)) {
3782
+ return true;
3783
+ }
3784
+ }
3785
+ }));
3786
+ }
3787
+
3788
+ ret = this.pushStack([]);
3789
+
3790
+ for (i = 0; i < len; i++) {
3791
+ jQuery.find(selector, self[i], ret);
3792
+ }
3793
+
3794
+ return len > 1 ? jQuery.uniqueSort(ret) : ret;
3795
+ },
3796
+ filter: function filter(selector) {
3797
+ return this.pushStack(winnow(this, selector || [], false));
3798
+ },
3799
+ not: function not(selector) {
3800
+ return this.pushStack(winnow(this, selector || [], true));
3801
+ },
3802
+ is: function is(selector) {
3803
+ return !!winnow(this, // If this is a positional/relative selector, check membership in the returned set
3804
+ // so $("p:first").is("p:last") won't return true for a doc with two "p".
3805
+ typeof selector === "string" && rneedsContext.test(selector) ? jQuery(selector) : selector || [], false).length;
3806
+ }
3807
+ }); // Initialize a jQuery object
3808
+ // A central reference to the root jQuery(document)
3809
+
3810
+ var rootjQuery,
3811
+ // A simple way to check for HTML strings
3812
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
3813
+ // Strict HTML recognition (#11290: must start with <)
3814
+ // Shortcut simple #id case for speed
3815
+ rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
3816
+ init = jQuery.fn.init = function (selector, context, root) {
3817
+ var match, elem; // HANDLE: $(""), $(null), $(undefined), $(false)
3818
+
3819
+ if (!selector) {
3820
+ return this;
3821
+ } // Method init() accepts an alternate rootjQuery
3822
+ // so migrate can support jQuery.sub (gh-2101)
3823
+
3824
+
3825
+ root = root || rootjQuery; // Handle HTML strings
3826
+
3827
+ if (typeof selector === "string") {
3828
+ if (selector[0] === "<" && selector[selector.length - 1] === ">" && selector.length >= 3) {
3829
+ // Assume that strings that start and end with <> are HTML and skip the regex check
3830
+ match = [null, selector, null];
3831
+ } else {
3832
+ match = rquickExpr.exec(selector);
3833
+ } // Match html or make sure no context is specified for #id
3834
+
3835
+
3836
+ if (match && (match[1] || !context)) {
3837
+ // HANDLE: $(html) -> $(array)
3838
+ if (match[1]) {
3839
+ context = context instanceof jQuery ? context[0] : context; // Option to run scripts is true for back-compat
3840
+ // Intentionally let the error be thrown if parseHTML is not present
3841
+
3842
+ jQuery.merge(this, jQuery.parseHTML(match[1], context && context.nodeType ? context.ownerDocument || context : document, true)); // HANDLE: $(html, props)
3843
+
3844
+ if (rsingleTag.test(match[1]) && jQuery.isPlainObject(context)) {
3845
+ for (match in context) {
3846
+ // Properties of context are called as methods if possible
3847
+ if (isFunction(this[match])) {
3848
+ this[match](context[match]); // ...and otherwise set as attributes
3849
+ } else {
3850
+ this.attr(match, context[match]);
3851
+ }
3852
+ }
3853
+ }
3854
+
3855
+ return this; // HANDLE: $(#id)
3856
+ } else {
3857
+ elem = document.getElementById(match[2]);
3858
+
3859
+ if (elem) {
3860
+ // Inject the element directly into the jQuery object
3861
+ this[0] = elem;
3862
+ this.length = 1;
3863
+ }
3864
+
3865
+ return this;
3866
+ } // HANDLE: $(expr, $(...))
3867
+
3868
+ } else if (!context || context.jquery) {
3869
+ return (context || root).find(selector); // HANDLE: $(expr, context)
3870
+ // (which is just equivalent to: $(context).find(expr)
3871
+ } else {
3872
+ return this.constructor(context).find(selector);
3873
+ } // HANDLE: $(DOMElement)
3874
+
3875
+ } else if (selector.nodeType) {
3876
+ this[0] = selector;
3877
+ this.length = 1;
3878
+ return this; // HANDLE: $(function)
3879
+ // Shortcut for document ready
3880
+ } else if (isFunction(selector)) {
3881
+ return root.ready !== undefined ? root.ready(selector) : // Execute immediately if ready is not present
3882
+ selector(jQuery);
3883
+ }
3884
+
3885
+ return jQuery.makeArray(selector, this);
3886
+ }; // Give the init function the jQuery prototype for later instantiation
3887
+
3888
+
3889
+ init.prototype = jQuery.fn; // Initialize central reference
3890
+
3891
+ rootjQuery = jQuery(document);
3892
+ var rparentsprev = /^(?:parents|prev(?:Until|All))/,
3893
+ // Methods guaranteed to produce a unique set when starting from a unique set
3894
+ guaranteedUnique = {
3895
+ children: true,
3896
+ contents: true,
3897
+ next: true,
3898
+ prev: true
3899
+ };
3900
+ jQuery.fn.extend({
3901
+ has: function has(target) {
3902
+ var targets = jQuery(target, this),
3903
+ l = targets.length;
3904
+ return this.filter(function () {
3905
+ var i = 0;
3906
+
3907
+ for (; i < l; i++) {
3908
+ if (jQuery.contains(this, targets[i])) {
3909
+ return true;
3910
+ }
3911
+ }
3912
+ });
3913
+ },
3914
+ closest: function closest(selectors, context) {
3915
+ var cur,
3916
+ i = 0,
3917
+ l = this.length,
3918
+ matched = [],
3919
+ targets = typeof selectors !== "string" && jQuery(selectors); // Positional selectors never match, since there's no _selection_ context
3920
+
3921
+ if (!rneedsContext.test(selectors)) {
3922
+ for (; i < l; i++) {
3923
+ for (cur = this[i]; cur && cur !== context; cur = cur.parentNode) {
3924
+ // Always skip document fragments
3925
+ if (cur.nodeType < 11 && (targets ? targets.index(cur) > -1 : // Don't pass non-elements to Sizzle
3926
+ cur.nodeType === 1 && jQuery.find.matchesSelector(cur, selectors))) {
3927
+ matched.push(cur);
3928
+ break;
3929
+ }
3930
+ }
3931
+ }
3932
+ }
3933
+
3934
+ return this.pushStack(matched.length > 1 ? jQuery.uniqueSort(matched) : matched);
3935
+ },
3936
+ // Determine the position of an element within the set
3937
+ index: function index(elem) {
3938
+ // No argument, return index in parent
3939
+ if (!elem) {
3940
+ return this[0] && this[0].parentNode ? this.first().prevAll().length : -1;
3941
+ } // Index in selector
3942
+
3943
+
3944
+ if (typeof elem === "string") {
3945
+ return indexOf.call(jQuery(elem), this[0]);
3946
+ } // Locate the position of the desired element
3947
+
3948
+
3949
+ return indexOf.call(this, // If it receives a jQuery object, the first element is used
3950
+ elem.jquery ? elem[0] : elem);
3951
+ },
3952
+ add: function add(selector, context) {
3953
+ return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(), jQuery(selector, context))));
3954
+ },
3955
+ addBack: function addBack(selector) {
3956
+ return this.add(selector == null ? this.prevObject : this.prevObject.filter(selector));
3957
+ }
3958
+ });
3959
+
3960
+ function sibling(cur, dir) {
3961
+ while ((cur = cur[dir]) && cur.nodeType !== 1) {}
3962
+
3963
+ return cur;
3964
+ }
3965
+
3966
+ jQuery.each({
3967
+ parent: function parent(elem) {
3968
+ var parent = elem.parentNode;
3969
+ return parent && parent.nodeType !== 11 ? parent : null;
3970
+ },
3971
+ parents: function parents(elem) {
3972
+ return dir(elem, "parentNode");
3973
+ },
3974
+ parentsUntil: function parentsUntil(elem, _i, until) {
3975
+ return dir(elem, "parentNode", until);
3976
+ },
3977
+ next: function next(elem) {
3978
+ return sibling(elem, "nextSibling");
3979
+ },
3980
+ prev: function prev(elem) {
3981
+ return sibling(elem, "previousSibling");
3982
+ },
3983
+ nextAll: function nextAll(elem) {
3984
+ return dir(elem, "nextSibling");
3985
+ },
3986
+ prevAll: function prevAll(elem) {
3987
+ return dir(elem, "previousSibling");
3988
+ },
3989
+ nextUntil: function nextUntil(elem, _i, until) {
3990
+ return dir(elem, "nextSibling", until);
3991
+ },
3992
+ prevUntil: function prevUntil(elem, _i, until) {
3993
+ return dir(elem, "previousSibling", until);
3994
+ },
3995
+ siblings: function siblings(elem) {
3996
+ return _siblings((elem.parentNode || {}).firstChild, elem);
3997
+ },
3998
+ children: function children(elem) {
3999
+ return _siblings(elem.firstChild);
4000
+ },
4001
+ contents: function contents(elem) {
4002
+ if (elem.contentDocument != null && // Support: IE 11+
4003
+ // <object> elements with no `data` attribute has an object
4004
+ // `contentDocument` with a `null` prototype.
4005
+ getProto(elem.contentDocument)) {
4006
+ return elem.contentDocument;
4007
+ } // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
4008
+ // Treat the template element as a regular one in browsers that
4009
+ // don't support it.
4010
+
4011
+
4012
+ if (nodeName(elem, "template")) {
4013
+ elem = elem.content || elem;
4014
+ }
4015
+
4016
+ return jQuery.merge([], elem.childNodes);
4017
+ }
4018
+ }, function (name, fn) {
4019
+ jQuery.fn[name] = function (until, selector) {
4020
+ var matched = jQuery.map(this, fn, until);
4021
+
4022
+ if (name.slice(-5) !== "Until") {
4023
+ selector = until;
4024
+ }
4025
+
4026
+ if (selector && typeof selector === "string") {
4027
+ matched = jQuery.filter(selector, matched);
4028
+ }
4029
+
4030
+ if (this.length > 1) {
4031
+ // Remove duplicates
4032
+ if (!guaranteedUnique[name]) {
4033
+ jQuery.uniqueSort(matched);
4034
+ } // Reverse order for parents* and prev-derivatives
4035
+
4036
+
4037
+ if (rparentsprev.test(name)) {
4038
+ matched.reverse();
4039
+ }
4040
+ }
4041
+
4042
+ return this.pushStack(matched);
4043
+ };
4044
+ });
4045
+ var rnothtmlwhite = /[^\x20\t\r\n\f]+/g; // Convert String-formatted options into Object-formatted ones
4046
+
4047
+ function createOptions(options) {
4048
+ var object = {};
4049
+ jQuery.each(options.match(rnothtmlwhite) || [], function (_, flag) {
4050
+ object[flag] = true;
4051
+ });
4052
+ return object;
4053
+ }
4054
+ /*
4055
+ * Create a callback list using the following parameters:
4056
+ *
4057
+ * options: an optional list of space-separated options that will change how
4058
+ * the callback list behaves or a more traditional option object
4059
+ *
4060
+ * By default a callback list will act like an event callback list and can be
4061
+ * "fired" multiple times.
4062
+ *
4063
+ * Possible options:
4064
+ *
4065
+ * once: will ensure the callback list can only be fired once (like a Deferred)
4066
+ *
4067
+ * memory: will keep track of previous values and will call any callback added
4068
+ * after the list has been fired right away with the latest "memorized"
4069
+ * values (like a Deferred)
4070
+ *
4071
+ * unique: will ensure a callback can only be added once (no duplicate in the list)
4072
+ *
4073
+ * stopOnFalse: interrupt callings when a callback returns false
4074
+ *
4075
+ */
4076
+
4077
+
4078
+ jQuery.Callbacks = function (options) {
4079
+ // Convert options from String-formatted to Object-formatted if needed
4080
+ // (we check in cache first)
4081
+ options = typeof options === "string" ? createOptions(options) : jQuery.extend({}, options);
4082
+
4083
+ var // Flag to know if list is currently firing
4084
+ firing,
4085
+ // Last fire value for non-forgettable lists
4086
+ memory,
4087
+ // Flag to know if list was already fired
4088
+ _fired,
4089
+ // Flag to prevent firing
4090
+ _locked,
4091
+ // Actual callback list
4092
+ list = [],
4093
+ // Queue of execution data for repeatable lists
4094
+ queue = [],
4095
+ // Index of currently firing callback (modified by add/remove as needed)
4096
+ firingIndex = -1,
4097
+ // Fire callbacks
4098
+ fire = function fire() {
4099
+ // Enforce single-firing
4100
+ _locked = _locked || options.once; // Execute callbacks for all pending executions,
4101
+ // respecting firingIndex overrides and runtime changes
4102
+
4103
+ _fired = firing = true;
4104
+
4105
+ for (; queue.length; firingIndex = -1) {
4106
+ memory = queue.shift();
4107
+
4108
+ while (++firingIndex < list.length) {
4109
+ // Run callback and check for early termination
4110
+ if (list[firingIndex].apply(memory[0], memory[1]) === false && options.stopOnFalse) {
4111
+ // Jump to end and forget the data so .add doesn't re-fire
4112
+ firingIndex = list.length;
4113
+ memory = false;
4114
+ }
4115
+ }
4116
+ } // Forget the data if we're done with it
4117
+
4118
+
4119
+ if (!options.memory) {
4120
+ memory = false;
4121
+ }
4122
+
4123
+ firing = false; // Clean up if we're done firing for good
4124
+
4125
+ if (_locked) {
4126
+ // Keep an empty list if we have data for future add calls
4127
+ if (memory) {
4128
+ list = []; // Otherwise, this object is spent
4129
+ } else {
4130
+ list = "";
4131
+ }
4132
+ }
4133
+ },
4134
+ // Actual Callbacks object
4135
+ self = {
4136
+ // Add a callback or a collection of callbacks to the list
4137
+ add: function add() {
4138
+ if (list) {
4139
+ // If we have memory from a past run, we should fire after adding
4140
+ if (memory && !firing) {
4141
+ firingIndex = list.length - 1;
4142
+ queue.push(memory);
4143
+ }
4144
+
4145
+ (function add(args) {
4146
+ jQuery.each(args, function (_, arg) {
4147
+ if (isFunction(arg)) {
4148
+ if (!options.unique || !self.has(arg)) {
4149
+ list.push(arg);
4150
+ }
4151
+ } else if (arg && arg.length && toType(arg) !== "string") {
4152
+ // Inspect recursively
4153
+ add(arg);
4154
+ }
4155
+ });
4156
+ })(arguments);
4157
+
4158
+ if (memory && !firing) {
4159
+ fire();
4160
+ }
4161
+ }
4162
+
4163
+ return this;
4164
+ },
4165
+ // Remove a callback from the list
4166
+ remove: function remove() {
4167
+ jQuery.each(arguments, function (_, arg) {
4168
+ var index;
4169
+
4170
+ while ((index = jQuery.inArray(arg, list, index)) > -1) {
4171
+ list.splice(index, 1); // Handle firing indexes
4172
+
4173
+ if (index <= firingIndex) {
4174
+ firingIndex--;
4175
+ }
4176
+ }
4177
+ });
4178
+ return this;
4179
+ },
4180
+ // Check if a given callback is in the list.
4181
+ // If no argument is given, return whether or not list has callbacks attached.
4182
+ has: function has(fn) {
4183
+ return fn ? jQuery.inArray(fn, list) > -1 : list.length > 0;
4184
+ },
4185
+ // Remove all callbacks from the list
4186
+ empty: function empty() {
4187
+ if (list) {
4188
+ list = [];
4189
+ }
4190
+
4191
+ return this;
4192
+ },
4193
+ // Disable .fire and .add
4194
+ // Abort any current/pending executions
4195
+ // Clear all callbacks and values
4196
+ disable: function disable() {
4197
+ _locked = queue = [];
4198
+ list = memory = "";
4199
+ return this;
4200
+ },
4201
+ disabled: function disabled() {
4202
+ return !list;
4203
+ },
4204
+ // Disable .fire
4205
+ // Also disable .add unless we have memory (since it would have no effect)
4206
+ // Abort any pending executions
4207
+ lock: function lock() {
4208
+ _locked = queue = [];
4209
+
4210
+ if (!memory && !firing) {
4211
+ list = memory = "";
4212
+ }
4213
+
4214
+ return this;
4215
+ },
4216
+ locked: function locked() {
4217
+ return !!_locked;
4218
+ },
4219
+ // Call all callbacks with the given context and arguments
4220
+ fireWith: function fireWith(context, args) {
4221
+ if (!_locked) {
4222
+ args = args || [];
4223
+ args = [context, args.slice ? args.slice() : args];
4224
+ queue.push(args);
4225
+
4226
+ if (!firing) {
4227
+ fire();
4228
+ }
4229
+ }
4230
+
4231
+ return this;
4232
+ },
4233
+ // Call all the callbacks with the given arguments
4234
+ fire: function fire() {
4235
+ self.fireWith(this, arguments);
4236
+ return this;
4237
+ },
4238
+ // To know if the callbacks have already been called at least once
4239
+ fired: function fired() {
4240
+ return !!_fired;
4241
+ }
4242
+ };
4243
+
4244
+ return self;
4245
+ };
4246
+
4247
+ function Identity(v) {
4248
+ return v;
4249
+ }
4250
+
4251
+ function Thrower(ex) {
4252
+ throw ex;
4253
+ }
4254
+
4255
+ function adoptValue(value, resolve, reject, noValue) {
4256
+ var method;
4257
+
4258
+ try {
4259
+ // Check for promise aspect first to privilege synchronous behavior
4260
+ if (value && isFunction(method = value.promise)) {
4261
+ method.call(value).done(resolve).fail(reject); // Other thenables
4262
+ } else if (value && isFunction(method = value.then)) {
4263
+ method.call(value, resolve, reject); // Other non-thenables
4264
+ } else {
4265
+ // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
4266
+ // * false: [ value ].slice( 0 ) => resolve( value )
4267
+ // * true: [ value ].slice( 1 ) => resolve()
4268
+ resolve.apply(undefined, [value].slice(noValue));
4269
+ } // For Promises/A+, convert exceptions into rejections
4270
+ // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
4271
+ // Deferred#then to conditionally suppress rejection.
4272
+
4273
+ } catch (value) {
4274
+ // Support: Android 4.0 only
4275
+ // Strict mode functions invoked without .call/.apply get global-object context
4276
+ reject.apply(undefined, [value]);
4277
+ }
4278
+ }
4279
+
4280
+ jQuery.extend({
4281
+ Deferred: function Deferred(func) {
4282
+ var tuples = [// action, add listener, callbacks,
4283
+ // ... .then handlers, argument index, [final state]
4284
+ ["notify", "progress", jQuery.Callbacks("memory"), jQuery.Callbacks("memory"), 2], ["resolve", "done", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", jQuery.Callbacks("once memory"), jQuery.Callbacks("once memory"), 1, "rejected"]],
4285
+ _state = "pending",
4286
+ _promise = {
4287
+ state: function state() {
4288
+ return _state;
4289
+ },
4290
+ always: function always() {
4291
+ deferred.done(arguments).fail(arguments);
4292
+ return this;
4293
+ },
4294
+ "catch": function _catch(fn) {
4295
+ return _promise.then(null, fn);
4296
+ },
4297
+ // Keep pipe for back-compat
4298
+ pipe: function pipe()
4299
+ /* fnDone, fnFail, fnProgress */
4300
+ {
4301
+ var fns = arguments;
4302
+ return jQuery.Deferred(function (newDefer) {
4303
+ jQuery.each(tuples, function (_i, tuple) {
4304
+ // Map tuples (progress, done, fail) to arguments (done, fail, progress)
4305
+ var fn = isFunction(fns[tuple[4]]) && fns[tuple[4]]; // deferred.progress(function() { bind to newDefer or newDefer.notify })
4306
+ // deferred.done(function() { bind to newDefer or newDefer.resolve })
4307
+ // deferred.fail(function() { bind to newDefer or newDefer.reject })
4308
+
4309
+ deferred[tuple[1]](function () {
4310
+ var returned = fn && fn.apply(this, arguments);
4311
+
4312
+ if (returned && isFunction(returned.promise)) {
4313
+ returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject);
4314
+ } else {
4315
+ newDefer[tuple[0] + "With"](this, fn ? [returned] : arguments);
4316
+ }
4317
+ });
4318
+ });
4319
+ fns = null;
4320
+ }).promise();
4321
+ },
4322
+ then: function then(onFulfilled, onRejected, onProgress) {
4323
+ var maxDepth = 0;
4324
+
4325
+ function resolve(depth, deferred, handler, special) {
4326
+ return function () {
4327
+ var that = this,
4328
+ args = arguments,
4329
+ mightThrow = function mightThrow() {
4330
+ var returned, then; // Support: Promises/A+ section 2.3.3.3.3
4331
+ // https://promisesaplus.com/#point-59
4332
+ // Ignore double-resolution attempts
4333
+
4334
+ if (depth < maxDepth) {
4335
+ return;
4336
+ }
4337
+
4338
+ returned = handler.apply(that, args); // Support: Promises/A+ section 2.3.1
4339
+ // https://promisesaplus.com/#point-48
4340
+
4341
+ if (returned === deferred.promise()) {
4342
+ throw new TypeError("Thenable self-resolution");
4343
+ } // Support: Promises/A+ sections 2.3.3.1, 3.5
4344
+ // https://promisesaplus.com/#point-54
4345
+ // https://promisesaplus.com/#point-75
4346
+ // Retrieve `then` only once
4347
+
4348
+
4349
+ then = returned && ( // Support: Promises/A+ section 2.3.4
4350
+ // https://promisesaplus.com/#point-64
4351
+ // Only check objects and functions for thenability
4352
+ _typeof(returned) === "object" || typeof returned === "function") && returned.then; // Handle a returned thenable
4353
+
4354
+ if (isFunction(then)) {
4355
+ // Special processors (notify) just wait for resolution
4356
+ if (special) {
4357
+ then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special)); // Normal processors (resolve) also hook into progress
4358
+ } else {
4359
+ // ...and disregard older resolution values
4360
+ maxDepth++;
4361
+ then.call(returned, resolve(maxDepth, deferred, Identity, special), resolve(maxDepth, deferred, Thrower, special), resolve(maxDepth, deferred, Identity, deferred.notifyWith));
4362
+ } // Handle all other returned values
4363
+
4364
+ } else {
4365
+ // Only substitute handlers pass on context
4366
+ // and multiple values (non-spec behavior)
4367
+ if (handler !== Identity) {
4368
+ that = undefined;
4369
+ args = [returned];
4370
+ } // Process the value(s)
4371
+ // Default process is resolve
4372
+
4373
+
4374
+ (special || deferred.resolveWith)(that, args);
4375
+ }
4376
+ },
4377
+ // Only normal processors (resolve) catch and reject exceptions
4378
+ process = special ? mightThrow : function () {
4379
+ try {
4380
+ mightThrow();
4381
+ } catch (e) {
4382
+ if (jQuery.Deferred.exceptionHook) {
4383
+ jQuery.Deferred.exceptionHook(e, process.stackTrace);
4384
+ } // Support: Promises/A+ section 2.3.3.3.4.1
4385
+ // https://promisesaplus.com/#point-61
4386
+ // Ignore post-resolution exceptions
4387
+
4388
+
4389
+ if (depth + 1 >= maxDepth) {
4390
+ // Only substitute handlers pass on context
4391
+ // and multiple values (non-spec behavior)
4392
+ if (handler !== Thrower) {
4393
+ that = undefined;
4394
+ args = [e];
4395
+ }
4396
+
4397
+ deferred.rejectWith(that, args);
4398
+ }
4399
+ }
4400
+ }; // Support: Promises/A+ section 2.3.3.3.1
4401
+ // https://promisesaplus.com/#point-57
4402
+ // Re-resolve promises immediately to dodge false rejection from
4403
+ // subsequent errors
4404
+
4405
+
4406
+ if (depth) {
4407
+ process();
4408
+ } else {
4409
+ // Call an optional hook to record the stack, in case of exception
4410
+ // since it's otherwise lost when execution goes async
4411
+ if (jQuery.Deferred.getStackHook) {
4412
+ process.stackTrace = jQuery.Deferred.getStackHook();
4413
+ }
4414
+
4415
+ window.setTimeout(process);
4416
+ }
4417
+ };
4418
+ }
4419
+
4420
+ return jQuery.Deferred(function (newDefer) {
4421
+ // progress_handlers.add( ... )
4422
+ tuples[0][3].add(resolve(0, newDefer, isFunction(onProgress) ? onProgress : Identity, newDefer.notifyWith)); // fulfilled_handlers.add( ... )
4423
+
4424
+ tuples[1][3].add(resolve(0, newDefer, isFunction(onFulfilled) ? onFulfilled : Identity)); // rejected_handlers.add( ... )
4425
+
4426
+ tuples[2][3].add(resolve(0, newDefer, isFunction(onRejected) ? onRejected : Thrower));
4427
+ }).promise();
4428
+ },
4429
+ // Get a promise for this deferred
4430
+ // If obj is provided, the promise aspect is added to the object
4431
+ promise: function promise(obj) {
4432
+ return obj != null ? jQuery.extend(obj, _promise) : _promise;
4433
+ }
4434
+ },
4435
+ deferred = {}; // Add list-specific methods
4436
+
4437
+ jQuery.each(tuples, function (i, tuple) {
4438
+ var list = tuple[2],
4439
+ stateString = tuple[5]; // promise.progress = list.add
4440
+ // promise.done = list.add
4441
+ // promise.fail = list.add
4442
+
4443
+ _promise[tuple[1]] = list.add; // Handle state
4444
+
4445
+ if (stateString) {
4446
+ list.add(function () {
4447
+ // state = "resolved" (i.e., fulfilled)
4448
+ // state = "rejected"
4449
+ _state = stateString;
4450
+ }, // rejected_callbacks.disable
4451
+ // fulfilled_callbacks.disable
4452
+ tuples[3 - i][2].disable, // rejected_handlers.disable
4453
+ // fulfilled_handlers.disable
4454
+ tuples[3 - i][3].disable, // progress_callbacks.lock
4455
+ tuples[0][2].lock, // progress_handlers.lock
4456
+ tuples[0][3].lock);
4457
+ } // progress_handlers.fire
4458
+ // fulfilled_handlers.fire
4459
+ // rejected_handlers.fire
4460
+
4461
+
4462
+ list.add(tuple[3].fire); // deferred.notify = function() { deferred.notifyWith(...) }
4463
+ // deferred.resolve = function() { deferred.resolveWith(...) }
4464
+ // deferred.reject = function() { deferred.rejectWith(...) }
4465
+
4466
+ deferred[tuple[0]] = function () {
4467
+ deferred[tuple[0] + "With"](this === deferred ? undefined : this, arguments);
4468
+ return this;
4469
+ }; // deferred.notifyWith = list.fireWith
4470
+ // deferred.resolveWith = list.fireWith
4471
+ // deferred.rejectWith = list.fireWith
4472
+
4473
+
4474
+ deferred[tuple[0] + "With"] = list.fireWith;
4475
+ }); // Make the deferred a promise
4476
+
4477
+ _promise.promise(deferred); // Call given func if any
4478
+
4479
+
4480
+ if (func) {
4481
+ func.call(deferred, deferred);
4482
+ } // All done!
4483
+
4484
+
4485
+ return deferred;
4486
+ },
4487
+ // Deferred helper
4488
+ when: function when(singleValue) {
4489
+ var // count of uncompleted subordinates
4490
+ remaining = arguments.length,
4491
+ // count of unprocessed arguments
4492
+ i = remaining,
4493
+ // subordinate fulfillment data
4494
+ resolveContexts = Array(i),
4495
+ resolveValues = _slice.call(arguments),
4496
+ // the master Deferred
4497
+ master = jQuery.Deferred(),
4498
+ // subordinate callback factory
4499
+ updateFunc = function updateFunc(i) {
4500
+ return function (value) {
4501
+ resolveContexts[i] = this;
4502
+ resolveValues[i] = arguments.length > 1 ? _slice.call(arguments) : value;
4503
+
4504
+ if (! --remaining) {
4505
+ master.resolveWith(resolveContexts, resolveValues);
4506
+ }
4507
+ };
4508
+ }; // Single- and empty arguments are adopted like Promise.resolve
4509
+
4510
+
4511
+ if (remaining <= 1) {
4512
+ adoptValue(singleValue, master.done(updateFunc(i)).resolve, master.reject, !remaining); // Use .then() to unwrap secondary thenables (cf. gh-3000)
4513
+
4514
+ if (master.state() === "pending" || isFunction(resolveValues[i] && resolveValues[i].then)) {
4515
+ return master.then();
4516
+ }
4517
+ } // Multiple arguments are aggregated like Promise.all array elements
4518
+
4519
+
4520
+ while (i--) {
4521
+ adoptValue(resolveValues[i], updateFunc(i), master.reject);
4522
+ }
4523
+
4524
+ return master.promise();
4525
+ }
4526
+ }); // These usually indicate a programmer mistake during development,
4527
+ // warn about them ASAP rather than swallowing them by default.
4528
+
4529
+ var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
4530
+
4531
+ jQuery.Deferred.exceptionHook = function (error, stack) {
4532
+ // Support: IE 8 - 9 only
4533
+ // Console exists when dev tools are open, which can happen at any time
4534
+ if (window.console && window.console.warn && error && rerrorNames.test(error.name)) {
4535
+ window.console.warn("jQuery.Deferred exception: " + error.message, error.stack, stack);
4536
+ }
4537
+ };
4538
+
4539
+ jQuery.readyException = function (error) {
4540
+ window.setTimeout(function () {
4541
+ throw error;
4542
+ });
4543
+ }; // The deferred used on DOM ready
4544
+
4545
+
4546
+ var readyList = jQuery.Deferred();
4547
+
4548
+ jQuery.fn.ready = function (fn) {
4549
+ readyList.then(fn) // Wrap jQuery.readyException in a function so that the lookup
4550
+ // happens at the time of error handling instead of callback
4551
+ // registration.
4552
+ ["catch"](function (error) {
4553
+ jQuery.readyException(error);
4554
+ });
4555
+ return this;
4556
+ };
4557
+
4558
+ jQuery.extend({
4559
+ // Is the DOM ready to be used? Set to true once it occurs.
4560
+ isReady: false,
4561
+ // A counter to track how many items to wait for before
4562
+ // the ready event fires. See #6781
4563
+ readyWait: 1,
4564
+ // Handle when the DOM is ready
4565
+ ready: function ready(wait) {
4566
+ // Abort if there are pending holds or we're already ready
4567
+ if (wait === true ? --jQuery.readyWait : jQuery.isReady) {
4568
+ return;
4569
+ } // Remember that the DOM is ready
4570
+
4571
+
4572
+ jQuery.isReady = true; // If a normal DOM Ready event fired, decrement, and wait if need be
4573
+
4574
+ if (wait !== true && --jQuery.readyWait > 0) {
4575
+ return;
4576
+ } // If there are functions bound, to execute
4577
+
4578
+
4579
+ readyList.resolveWith(document, [jQuery]);
4580
+ }
4581
+ });
4582
+ jQuery.ready.then = readyList.then; // The ready event handler and self cleanup method
4583
+
4584
+ function completed() {
4585
+ document.removeEventListener("DOMContentLoaded", completed);
4586
+ window.removeEventListener("load", completed);
4587
+ jQuery.ready();
4588
+ } // Catch cases where $(document).ready() is called
4589
+ // after the browser event has already occurred.
4590
+ // Support: IE <=9 - 10 only
4591
+ // Older IE sometimes signals "interactive" too soon
4592
+
4593
+
4594
+ if (document.readyState === "complete" || document.readyState !== "loading" && !document.documentElement.doScroll) {
4595
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
4596
+ window.setTimeout(jQuery.ready);
4597
+ } else {
4598
+ // Use the handy event callback
4599
+ document.addEventListener("DOMContentLoaded", completed); // A fallback to window.onload, that will always work
4600
+
4601
+ window.addEventListener("load", completed);
4602
+ } // Multifunctional method to get and set values of a collection
4603
+ // The value/s can optionally be executed if it's a function
4604
+
4605
+
4606
+ var access = function access(elems, fn, key, value, chainable, emptyGet, raw) {
4607
+ var i = 0,
4608
+ len = elems.length,
4609
+ bulk = key == null; // Sets many values
4610
+
4611
+ if (toType(key) === "object") {
4612
+ chainable = true;
4613
+
4614
+ for (i in key) {
4615
+ access(elems, fn, i, key[i], true, emptyGet, raw);
4616
+ } // Sets one value
4617
+
4618
+ } else if (value !== undefined) {
4619
+ chainable = true;
4620
+
4621
+ if (!isFunction(value)) {
4622
+ raw = true;
4623
+ }
4624
+
4625
+ if (bulk) {
4626
+ // Bulk operations run against the entire set
4627
+ if (raw) {
4628
+ fn.call(elems, value);
4629
+ fn = null; // ...except when executing function values
4630
+ } else {
4631
+ bulk = fn;
4632
+
4633
+ fn = function fn(elem, _key, value) {
4634
+ return bulk.call(jQuery(elem), value);
4635
+ };
4636
+ }
4637
+ }
4638
+
4639
+ if (fn) {
4640
+ for (; i < len; i++) {
4641
+ fn(elems[i], key, raw ? value : value.call(elems[i], i, fn(elems[i], key)));
4642
+ }
4643
+ }
4644
+ }
4645
+
4646
+ if (chainable) {
4647
+ return elems;
4648
+ } // Gets
4649
+
4650
+
4651
+ if (bulk) {
4652
+ return fn.call(elems);
4653
+ }
4654
+
4655
+ return len ? fn(elems[0], key) : emptyGet;
4656
+ }; // Matches dashed string for camelizing
4657
+
4658
+
4659
+ var rmsPrefix = /^-ms-/,
4660
+ rdashAlpha = /-([a-z])/g; // Used by camelCase as callback to replace()
4661
+
4662
+ function fcamelCase(_all, letter) {
4663
+ return letter.toUpperCase();
4664
+ } // Convert dashed to camelCase; used by the css and data modules
4665
+ // Support: IE <=9 - 11, Edge 12 - 15
4666
+ // Microsoft forgot to hump their vendor prefix (#9572)
4667
+
4668
+
4669
+ function camelCase(string) {
4670
+ return string.replace(rmsPrefix, "ms-").replace(rdashAlpha, fcamelCase);
4671
+ }
4672
+
4673
+ var acceptData = function acceptData(owner) {
4674
+ // Accepts only:
4675
+ // - Node
4676
+ // - Node.ELEMENT_NODE
4677
+ // - Node.DOCUMENT_NODE
4678
+ // - Object
4679
+ // - Any
4680
+ return owner.nodeType === 1 || owner.nodeType === 9 || !+owner.nodeType;
4681
+ };
4682
+
4683
+ function Data() {
4684
+ this.expando = jQuery.expando + Data.uid++;
4685
+ }
4686
+
4687
+ Data.uid = 1;
4688
+ Data.prototype = {
4689
+ cache: function cache(owner) {
4690
+ // Check if the owner object already has a cache
4691
+ var value = owner[this.expando]; // If not, create one
4692
+
4693
+ if (!value) {
4694
+ value = Object.create(null); // We can accept data for non-element nodes in modern browsers,
4695
+ // but we should not, see #8335.
4696
+ // Always return an empty object.
4697
+
4698
+ if (acceptData(owner)) {
4699
+ // If it is a node unlikely to be stringify-ed or looped over
4700
+ // use plain assignment
4701
+ if (owner.nodeType) {
4702
+ owner[this.expando] = value; // Otherwise secure it in a non-enumerable property
4703
+ // configurable must be true to allow the property to be
4704
+ // deleted when data is removed
4705
+ } else {
4706
+ Object.defineProperty(owner, this.expando, {
4707
+ value: value,
4708
+ configurable: true
4709
+ });
4710
+ }
4711
+ }
4712
+ }
4713
+
4714
+ return value;
4715
+ },
4716
+ set: function set(owner, data, value) {
4717
+ var prop,
4718
+ cache = this.cache(owner); // Handle: [ owner, key, value ] args
4719
+ // Always use camelCase key (gh-2257)
4720
+
4721
+ if (typeof data === "string") {
4722
+ cache[camelCase(data)] = value; // Handle: [ owner, { properties } ] args
4723
+ } else {
4724
+ // Copy the properties one-by-one to the cache object
4725
+ for (prop in data) {
4726
+ cache[camelCase(prop)] = data[prop];
4727
+ }
4728
+ }
4729
+
4730
+ return cache;
4731
+ },
4732
+ get: function get(owner, key) {
4733
+ return key === undefined ? this.cache(owner) : // Always use camelCase key (gh-2257)
4734
+ owner[this.expando] && owner[this.expando][camelCase(key)];
4735
+ },
4736
+ access: function access(owner, key, value) {
4737
+ // In cases where either:
4738
+ //
4739
+ // 1. No key was specified
4740
+ // 2. A string key was specified, but no value provided
4741
+ //
4742
+ // Take the "read" path and allow the get method to determine
4743
+ // which value to return, respectively either:
4744
+ //
4745
+ // 1. The entire cache object
4746
+ // 2. The data stored at the key
4747
+ //
4748
+ if (key === undefined || key && typeof key === "string" && value === undefined) {
4749
+ return this.get(owner, key);
4750
+ } // When the key is not a string, or both a key and value
4751
+ // are specified, set or extend (existing objects) with either:
4752
+ //
4753
+ // 1. An object of properties
4754
+ // 2. A key and value
4755
+ //
4756
+
4757
+
4758
+ this.set(owner, key, value); // Since the "set" path can have two possible entry points
4759
+ // return the expected data based on which path was taken[*]
4760
+
4761
+ return value !== undefined ? value : key;
4762
+ },
4763
+ remove: function remove(owner, key) {
4764
+ var i,
4765
+ cache = owner[this.expando];
4766
+
4767
+ if (cache === undefined) {
4768
+ return;
4769
+ }
4770
+
4771
+ if (key !== undefined) {
4772
+ // Support array or space separated string of keys
4773
+ if (Array.isArray(key)) {
4774
+ // If key is an array of keys...
4775
+ // We always set camelCase keys, so remove that.
4776
+ key = key.map(camelCase);
4777
+ } else {
4778
+ key = camelCase(key); // If a key with the spaces exists, use it.
4779
+ // Otherwise, create an array by matching non-whitespace
4780
+
4781
+ key = key in cache ? [key] : key.match(rnothtmlwhite) || [];
4782
+ }
4783
+
4784
+ i = key.length;
4785
+
4786
+ while (i--) {
4787
+ delete cache[key[i]];
4788
+ }
4789
+ } // Remove the expando if there's no more data
4790
+
4791
+
4792
+ if (key === undefined || jQuery.isEmptyObject(cache)) {
4793
+ // Support: Chrome <=35 - 45
4794
+ // Webkit & Blink performance suffers when deleting properties
4795
+ // from DOM nodes, so set to undefined instead
4796
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
4797
+ if (owner.nodeType) {
4798
+ owner[this.expando] = undefined;
4799
+ } else {
4800
+ delete owner[this.expando];
4801
+ }
4802
+ }
4803
+ },
4804
+ hasData: function hasData(owner) {
4805
+ var cache = owner[this.expando];
4806
+ return cache !== undefined && !jQuery.isEmptyObject(cache);
4807
+ }
4808
+ };
4809
+ var dataPriv = new Data();
4810
+ var dataUser = new Data(); // Implementation Summary
4811
+ //
4812
+ // 1. Enforce API surface and semantic compatibility with 1.9.x branch
4813
+ // 2. Improve the module's maintainability by reducing the storage
4814
+ // paths to a single mechanism.
4815
+ // 3. Use the same single mechanism to support "private" and "user" data.
4816
+ // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
4817
+ // 5. Avoid exposing implementation details on user objects (eg. expando properties)
4818
+ // 6. Provide a clear path for implementation upgrade to WeakMap in 2014
4819
+
4820
+ var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
4821
+ rmultiDash = /[A-Z]/g;
4822
+
4823
+ function getData(data) {
4824
+ if (data === "true") {
4825
+ return true;
4826
+ }
4827
+
4828
+ if (data === "false") {
4829
+ return false;
4830
+ }
4831
+
4832
+ if (data === "null") {
4833
+ return null;
4834
+ } // Only convert to a number if it doesn't change the string
4835
+
4836
+
4837
+ if (data === +data + "") {
4838
+ return +data;
4839
+ }
4840
+
4841
+ if (rbrace.test(data)) {
4842
+ return JSON.parse(data);
4843
+ }
4844
+
4845
+ return data;
4846
+ }
4847
+
4848
+ function dataAttr(elem, key, data) {
4849
+ var name; // If nothing was found internally, try to fetch any
4850
+ // data from the HTML5 data-* attribute
4851
+
4852
+ if (data === undefined && elem.nodeType === 1) {
4853
+ name = "data-" + key.replace(rmultiDash, "-$&").toLowerCase();
4854
+ data = elem.getAttribute(name);
4855
+
4856
+ if (typeof data === "string") {
4857
+ try {
4858
+ data = getData(data);
4859
+ } catch (e) {} // Make sure we set the data so it isn't changed later
4860
+
4861
+
4862
+ dataUser.set(elem, key, data);
4863
+ } else {
4864
+ data = undefined;
4865
+ }
4866
+ }
4867
+
4868
+ return data;
4869
+ }
4870
+
4871
+ jQuery.extend({
4872
+ hasData: function hasData(elem) {
4873
+ return dataUser.hasData(elem) || dataPriv.hasData(elem);
4874
+ },
4875
+ data: function data(elem, name, _data) {
4876
+ return dataUser.access(elem, name, _data);
4877
+ },
4878
+ removeData: function removeData(elem, name) {
4879
+ dataUser.remove(elem, name);
4880
+ },
4881
+ // TODO: Now that all calls to _data and _removeData have been replaced
4882
+ // with direct calls to dataPriv methods, these can be deprecated.
4883
+ _data: function _data(elem, name, data) {
4884
+ return dataPriv.access(elem, name, data);
4885
+ },
4886
+ _removeData: function _removeData(elem, name) {
4887
+ dataPriv.remove(elem, name);
4888
+ }
4889
+ });
4890
+ jQuery.fn.extend({
4891
+ data: function data(key, value) {
4892
+ var i,
4893
+ name,
4894
+ data,
4895
+ elem = this[0],
4896
+ attrs = elem && elem.attributes; // Gets all values
4897
+
4898
+ if (key === undefined) {
4899
+ if (this.length) {
4900
+ data = dataUser.get(elem);
4901
+
4902
+ if (elem.nodeType === 1 && !dataPriv.get(elem, "hasDataAttrs")) {
4903
+ i = attrs.length;
4904
+
4905
+ while (i--) {
4906
+ // Support: IE 11 only
4907
+ // The attrs elements can be null (#14894)
4908
+ if (attrs[i]) {
4909
+ name = attrs[i].name;
4910
+
4911
+ if (name.indexOf("data-") === 0) {
4912
+ name = camelCase(name.slice(5));
4913
+ dataAttr(elem, name, data[name]);
4914
+ }
4915
+ }
4916
+ }
4917
+
4918
+ dataPriv.set(elem, "hasDataAttrs", true);
4919
+ }
4920
+ }
4921
+
4922
+ return data;
4923
+ } // Sets multiple values
4924
+
4925
+
4926
+ if (_typeof(key) === "object") {
4927
+ return this.each(function () {
4928
+ dataUser.set(this, key);
4929
+ });
4930
+ }
4931
+
4932
+ return access(this, function (value) {
4933
+ var data; // The calling jQuery object (element matches) is not empty
4934
+ // (and therefore has an element appears at this[ 0 ]) and the
4935
+ // `value` parameter was not undefined. An empty jQuery object
4936
+ // will result in `undefined` for elem = this[ 0 ] which will
4937
+ // throw an exception if an attempt to read a data cache is made.
4938
+
4939
+ if (elem && value === undefined) {
4940
+ // Attempt to get data from the cache
4941
+ // The key will always be camelCased in Data
4942
+ data = dataUser.get(elem, key);
4943
+
4944
+ if (data !== undefined) {
4945
+ return data;
4946
+ } // Attempt to "discover" the data in
4947
+ // HTML5 custom data-* attrs
4948
+
4949
+
4950
+ data = dataAttr(elem, key);
4951
+
4952
+ if (data !== undefined) {
4953
+ return data;
4954
+ } // We tried really hard, but the data doesn't exist.
4955
+
4956
+
4957
+ return;
4958
+ } // Set the data...
4959
+
4960
+
4961
+ this.each(function () {
4962
+ // We always store the camelCased key
4963
+ dataUser.set(this, key, value);
4964
+ });
4965
+ }, null, value, arguments.length > 1, null, true);
4966
+ },
4967
+ removeData: function removeData(key) {
4968
+ return this.each(function () {
4969
+ dataUser.remove(this, key);
4970
+ });
4971
+ }
4972
+ });
4973
+ jQuery.extend({
4974
+ queue: function queue(elem, type, data) {
4975
+ var queue;
4976
+
4977
+ if (elem) {
4978
+ type = (type || "fx") + "queue";
4979
+ queue = dataPriv.get(elem, type); // Speed up dequeue by getting out quickly if this is just a lookup
4980
+
4981
+ if (data) {
4982
+ if (!queue || Array.isArray(data)) {
4983
+ queue = dataPriv.access(elem, type, jQuery.makeArray(data));
4984
+ } else {
4985
+ queue.push(data);
4986
+ }
4987
+ }
4988
+
4989
+ return queue || [];
4990
+ }
4991
+ },
4992
+ dequeue: function dequeue(elem, type) {
4993
+ type = type || "fx";
4994
+
4995
+ var queue = jQuery.queue(elem, type),
4996
+ startLength = queue.length,
4997
+ fn = queue.shift(),
4998
+ hooks = jQuery._queueHooks(elem, type),
4999
+ next = function next() {
5000
+ jQuery.dequeue(elem, type);
5001
+ }; // If the fx queue is dequeued, always remove the progress sentinel
5002
+
5003
+
5004
+ if (fn === "inprogress") {
5005
+ fn = queue.shift();
5006
+ startLength--;
5007
+ }
5008
+
5009
+ if (fn) {
5010
+ // Add a progress sentinel to prevent the fx queue from being
5011
+ // automatically dequeued
5012
+ if (type === "fx") {
5013
+ queue.unshift("inprogress");
5014
+ } // Clear up the last queue stop function
5015
+
5016
+
5017
+ delete hooks.stop;
5018
+ fn.call(elem, next, hooks);
5019
+ }
5020
+
5021
+ if (!startLength && hooks) {
5022
+ hooks.empty.fire();
5023
+ }
5024
+ },
5025
+ // Not public - generate a queueHooks object, or return the current one
5026
+ _queueHooks: function _queueHooks(elem, type) {
5027
+ var key = type + "queueHooks";
5028
+ return dataPriv.get(elem, key) || dataPriv.access(elem, key, {
5029
+ empty: jQuery.Callbacks("once memory").add(function () {
5030
+ dataPriv.remove(elem, [type + "queue", key]);
5031
+ })
5032
+ });
5033
+ }
5034
+ });
5035
+ jQuery.fn.extend({
5036
+ queue: function queue(type, data) {
5037
+ var setter = 2;
5038
+
5039
+ if (typeof type !== "string") {
5040
+ data = type;
5041
+ type = "fx";
5042
+ setter--;
5043
+ }
5044
+
5045
+ if (arguments.length < setter) {
5046
+ return jQuery.queue(this[0], type);
5047
+ }
5048
+
5049
+ return data === undefined ? this : this.each(function () {
5050
+ var queue = jQuery.queue(this, type, data); // Ensure a hooks for this queue
5051
+
5052
+ jQuery._queueHooks(this, type);
5053
+
5054
+ if (type === "fx" && queue[0] !== "inprogress") {
5055
+ jQuery.dequeue(this, type);
5056
+ }
5057
+ });
5058
+ },
5059
+ dequeue: function dequeue(type) {
5060
+ return this.each(function () {
5061
+ jQuery.dequeue(this, type);
5062
+ });
5063
+ },
5064
+ clearQueue: function clearQueue(type) {
5065
+ return this.queue(type || "fx", []);
5066
+ },
5067
+ // Get a promise resolved when queues of a certain type
5068
+ // are emptied (fx is the type by default)
5069
+ promise: function promise(type, obj) {
5070
+ var tmp,
5071
+ count = 1,
5072
+ defer = jQuery.Deferred(),
5073
+ elements = this,
5074
+ i = this.length,
5075
+ resolve = function resolve() {
5076
+ if (! --count) {
5077
+ defer.resolveWith(elements, [elements]);
5078
+ }
5079
+ };
5080
+
5081
+ if (typeof type !== "string") {
5082
+ obj = type;
5083
+ type = undefined;
5084
+ }
5085
+
5086
+ type = type || "fx";
5087
+
5088
+ while (i--) {
5089
+ tmp = dataPriv.get(elements[i], type + "queueHooks");
5090
+
5091
+ if (tmp && tmp.empty) {
5092
+ count++;
5093
+ tmp.empty.add(resolve);
5094
+ }
5095
+ }
5096
+
5097
+ resolve();
5098
+ return defer.promise(obj);
5099
+ }
5100
+ });
5101
+ var pnum = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;
5102
+ var rcssNum = new RegExp("^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i");
5103
+ var cssExpand = ["Top", "Right", "Bottom", "Left"];
5104
+ var documentElement = document.documentElement;
5105
+
5106
+ var isAttached = function isAttached(elem) {
5107
+ return jQuery.contains(elem.ownerDocument, elem);
5108
+ },
5109
+ composed = {
5110
+ composed: true
5111
+ }; // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only
5112
+ // Check attachment across shadow DOM boundaries when possible (gh-3504)
5113
+ // Support: iOS 10.0-10.2 only
5114
+ // Early iOS 10 versions support `attachShadow` but not `getRootNode`,
5115
+ // leading to errors. We need to check for `getRootNode`.
5116
+
5117
+
5118
+ if (documentElement.getRootNode) {
5119
+ isAttached = function isAttached(elem) {
5120
+ return jQuery.contains(elem.ownerDocument, elem) || elem.getRootNode(composed) === elem.ownerDocument;
5121
+ };
5122
+ }
5123
+
5124
+ var isHiddenWithinTree = function isHiddenWithinTree(elem, el) {
5125
+ // isHiddenWithinTree might be called from jQuery#filter function;
5126
+ // in that case, element will be second argument
5127
+ elem = el || elem; // Inline style trumps all
5128
+
5129
+ return elem.style.display === "none" || elem.style.display === "" && // Otherwise, check computed style
5130
+ // Support: Firefox <=43 - 45
5131
+ // Disconnected elements can have computed display: none, so first confirm that elem is
5132
+ // in the document.
5133
+ isAttached(elem) && jQuery.css(elem, "display") === "none";
5134
+ };
5135
+
5136
+ function adjustCSS(elem, prop, valueParts, tween) {
5137
+ var adjusted,
5138
+ scale,
5139
+ maxIterations = 20,
5140
+ currentValue = tween ? function () {
5141
+ return tween.cur();
5142
+ } : function () {
5143
+ return jQuery.css(elem, prop, "");
5144
+ },
5145
+ initial = currentValue(),
5146
+ unit = valueParts && valueParts[3] || (jQuery.cssNumber[prop] ? "" : "px"),
5147
+ // Starting value computation is required for potential unit mismatches
5148
+ initialInUnit = elem.nodeType && (jQuery.cssNumber[prop] || unit !== "px" && +initial) && rcssNum.exec(jQuery.css(elem, prop));
5149
+
5150
+ if (initialInUnit && initialInUnit[3] !== unit) {
5151
+ // Support: Firefox <=54
5152
+ // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
5153
+ initial = initial / 2; // Trust units reported by jQuery.css
5154
+
5155
+ unit = unit || initialInUnit[3]; // Iteratively approximate from a nonzero starting point
5156
+
5157
+ initialInUnit = +initial || 1;
5158
+
5159
+ while (maxIterations--) {
5160
+ // Evaluate and update our best guess (doubling guesses that zero out).
5161
+ // Finish if the scale equals or crosses 1 (making the old*new product non-positive).
5162
+ jQuery.style(elem, prop, initialInUnit + unit);
5163
+
5164
+ if ((1 - scale) * (1 - (scale = currentValue() / initial || 0.5)) <= 0) {
5165
+ maxIterations = 0;
5166
+ }
5167
+
5168
+ initialInUnit = initialInUnit / scale;
5169
+ }
5170
+
5171
+ initialInUnit = initialInUnit * 2;
5172
+ jQuery.style(elem, prop, initialInUnit + unit); // Make sure we update the tween properties later on
5173
+
5174
+ valueParts = valueParts || [];
5175
+ }
5176
+
5177
+ if (valueParts) {
5178
+ initialInUnit = +initialInUnit || +initial || 0; // Apply relative offset (+=/-=) if specified
5179
+
5180
+ adjusted = valueParts[1] ? initialInUnit + (valueParts[1] + 1) * valueParts[2] : +valueParts[2];
5181
+
5182
+ if (tween) {
5183
+ tween.unit = unit;
5184
+ tween.start = initialInUnit;
5185
+ tween.end = adjusted;
5186
+ }
5187
+ }
5188
+
5189
+ return adjusted;
5190
+ }
5191
+
5192
+ var defaultDisplayMap = {};
5193
+
5194
+ function getDefaultDisplay(elem) {
5195
+ var temp,
5196
+ doc = elem.ownerDocument,
5197
+ nodeName = elem.nodeName,
5198
+ display = defaultDisplayMap[nodeName];
5199
+
5200
+ if (display) {
5201
+ return display;
5202
+ }
5203
+
5204
+ temp = doc.body.appendChild(doc.createElement(nodeName));
5205
+ display = jQuery.css(temp, "display");
5206
+ temp.parentNode.removeChild(temp);
5207
+
5208
+ if (display === "none") {
5209
+ display = "block";
5210
+ }
5211
+
5212
+ defaultDisplayMap[nodeName] = display;
5213
+ return display;
5214
+ }
5215
+
5216
+ function showHide(elements, show) {
5217
+ var display,
5218
+ elem,
5219
+ values = [],
5220
+ index = 0,
5221
+ length = elements.length; // Determine new display value for elements that need to change
5222
+
5223
+ for (; index < length; index++) {
5224
+ elem = elements[index];
5225
+
5226
+ if (!elem.style) {
5227
+ continue;
5228
+ }
5229
+
5230
+ display = elem.style.display;
5231
+
5232
+ if (show) {
5233
+ // Since we force visibility upon cascade-hidden elements, an immediate (and slow)
5234
+ // check is required in this first loop unless we have a nonempty display value (either
5235
+ // inline or about-to-be-restored)
5236
+ if (display === "none") {
5237
+ values[index] = dataPriv.get(elem, "display") || null;
5238
+
5239
+ if (!values[index]) {
5240
+ elem.style.display = "";
5241
+ }
5242
+ }
5243
+
5244
+ if (elem.style.display === "" && isHiddenWithinTree(elem)) {
5245
+ values[index] = getDefaultDisplay(elem);
5246
+ }
5247
+ } else {
5248
+ if (display !== "none") {
5249
+ values[index] = "none"; // Remember what we're overwriting
5250
+
5251
+ dataPriv.set(elem, "display", display);
5252
+ }
5253
+ }
5254
+ } // Set the display of the elements in a second loop to avoid constant reflow
5255
+
5256
+
5257
+ for (index = 0; index < length; index++) {
5258
+ if (values[index] != null) {
5259
+ elements[index].style.display = values[index];
5260
+ }
5261
+ }
5262
+
5263
+ return elements;
5264
+ }
5265
+
5266
+ jQuery.fn.extend({
5267
+ show: function show() {
5268
+ return showHide(this, true);
5269
+ },
5270
+ hide: function hide() {
5271
+ return showHide(this);
5272
+ },
5273
+ toggle: function toggle(state) {
5274
+ if (typeof state === "boolean") {
5275
+ return state ? this.show() : this.hide();
5276
+ }
5277
+
5278
+ return this.each(function () {
5279
+ if (isHiddenWithinTree(this)) {
5280
+ jQuery(this).show();
5281
+ } else {
5282
+ jQuery(this).hide();
5283
+ }
5284
+ });
5285
+ }
5286
+ });
5287
+ var rcheckableType = /^(?:checkbox|radio)$/i;
5288
+ var rtagName = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i;
5289
+ var rscriptType = /^$|^module$|\/(?:java|ecma)script/i;
5290
+
5291
+ (function () {
5292
+ var fragment = document.createDocumentFragment(),
5293
+ div = fragment.appendChild(document.createElement("div")),
5294
+ input = document.createElement("input"); // Support: Android 4.0 - 4.3 only
5295
+ // Check state lost if the name is set (#11217)
5296
+ // Support: Windows Web Apps (WWA)
5297
+ // `name` and `type` must use .setAttribute for WWA (#14901)
5298
+
5299
+ input.setAttribute("type", "radio");
5300
+ input.setAttribute("checked", "checked");
5301
+ input.setAttribute("name", "t");
5302
+ div.appendChild(input); // Support: Android <=4.1 only
5303
+ // Older WebKit doesn't clone checked state correctly in fragments
5304
+
5305
+ support.checkClone = div.cloneNode(true).cloneNode(true).lastChild.checked; // Support: IE <=11 only
5306
+ // Make sure textarea (and checkbox) defaultValue is properly cloned
5307
+
5308
+ div.innerHTML = "<textarea>x</textarea>";
5309
+ support.noCloneChecked = !!div.cloneNode(true).lastChild.defaultValue; // Support: IE <=9 only
5310
+ // IE <=9 replaces <option> tags with their contents when inserted outside of
5311
+ // the select element.
5312
+
5313
+ div.innerHTML = "<option></option>";
5314
+ support.option = !!div.lastChild;
5315
+ })(); // We have to close these tags to support XHTML (#13200)
5316
+
5317
+
5318
+ var wrapMap = {
5319
+ // XHTML parsers do not magically insert elements in the
5320
+ // same way that tag soup parsers do. So we cannot shorten
5321
+ // this by omitting <tbody> or other required elements.
5322
+ thead: [1, "<table>", "</table>"],
5323
+ col: [2, "<table><colgroup>", "</colgroup></table>"],
5324
+ tr: [2, "<table><tbody>", "</tbody></table>"],
5325
+ td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
5326
+ _default: [0, "", ""]
5327
+ };
5328
+ wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
5329
+ wrapMap.th = wrapMap.td; // Support: IE <=9 only
5330
+
5331
+ if (!support.option) {
5332
+ wrapMap.optgroup = wrapMap.option = [1, "<select multiple='multiple'>", "</select>"];
5333
+ }
5334
+
5335
+ function getAll(context, tag) {
5336
+ // Support: IE <=9 - 11 only
5337
+ // Use typeof to avoid zero-argument method invocation on host objects (#15151)
5338
+ var ret;
5339
+
5340
+ if (typeof context.getElementsByTagName !== "undefined") {
5341
+ ret = context.getElementsByTagName(tag || "*");
5342
+ } else if (typeof context.querySelectorAll !== "undefined") {
5343
+ ret = context.querySelectorAll(tag || "*");
5344
+ } else {
5345
+ ret = [];
5346
+ }
5347
+
5348
+ if (tag === undefined || tag && nodeName(context, tag)) {
5349
+ return jQuery.merge([context], ret);
5350
+ }
5351
+
5352
+ return ret;
5353
+ } // Mark scripts as having already been evaluated
5354
+
5355
+
5356
+ function setGlobalEval(elems, refElements) {
5357
+ var i = 0,
5358
+ l = elems.length;
5359
+
5360
+ for (; i < l; i++) {
5361
+ dataPriv.set(elems[i], "globalEval", !refElements || dataPriv.get(refElements[i], "globalEval"));
5362
+ }
5363
+ }
5364
+
5365
+ var rhtml = /<|&#?\w+;/;
5366
+
5367
+ function buildFragment(elems, context, scripts, selection, ignored) {
5368
+ var elem,
5369
+ tmp,
5370
+ tag,
5371
+ wrap,
5372
+ attached,
5373
+ j,
5374
+ fragment = context.createDocumentFragment(),
5375
+ nodes = [],
5376
+ i = 0,
5377
+ l = elems.length;
5378
+
5379
+ for (; i < l; i++) {
5380
+ elem = elems[i];
5381
+
5382
+ if (elem || elem === 0) {
5383
+ // Add nodes directly
5384
+ if (toType(elem) === "object") {
5385
+ // Support: Android <=4.0 only, PhantomJS 1 only
5386
+ // push.apply(_, arraylike) throws on ancient WebKit
5387
+ jQuery.merge(nodes, elem.nodeType ? [elem] : elem); // Convert non-html into a text node
5388
+ } else if (!rhtml.test(elem)) {
5389
+ nodes.push(context.createTextNode(elem)); // Convert html into DOM nodes
5390
+ } else {
5391
+ tmp = tmp || fragment.appendChild(context.createElement("div")); // Deserialize a standard representation
5392
+
5393
+ tag = (rtagName.exec(elem) || ["", ""])[1].toLowerCase();
5394
+ wrap = wrapMap[tag] || wrapMap._default;
5395
+ tmp.innerHTML = wrap[1] + jQuery.htmlPrefilter(elem) + wrap[2]; // Descend through wrappers to the right content
5396
+
5397
+ j = wrap[0];
5398
+
5399
+ while (j--) {
5400
+ tmp = tmp.lastChild;
5401
+ } // Support: Android <=4.0 only, PhantomJS 1 only
5402
+ // push.apply(_, arraylike) throws on ancient WebKit
5403
+
5404
+
5405
+ jQuery.merge(nodes, tmp.childNodes); // Remember the top-level container
5406
+
5407
+ tmp = fragment.firstChild; // Ensure the created nodes are orphaned (#12392)
5408
+
5409
+ tmp.textContent = "";
5410
+ }
5411
+ }
5412
+ } // Remove wrapper from fragment
5413
+
5414
+
5415
+ fragment.textContent = "";
5416
+ i = 0;
5417
+
5418
+ while (elem = nodes[i++]) {
5419
+ // Skip elements already in the context collection (trac-4087)
5420
+ if (selection && jQuery.inArray(elem, selection) > -1) {
5421
+ if (ignored) {
5422
+ ignored.push(elem);
5423
+ }
5424
+
5425
+ continue;
5426
+ }
5427
+
5428
+ attached = isAttached(elem); // Append to fragment
5429
+
5430
+ tmp = getAll(fragment.appendChild(elem), "script"); // Preserve script evaluation history
5431
+
5432
+ if (attached) {
5433
+ setGlobalEval(tmp);
5434
+ } // Capture executables
5435
+
5436
+
5437
+ if (scripts) {
5438
+ j = 0;
5439
+
5440
+ while (elem = tmp[j++]) {
5441
+ if (rscriptType.test(elem.type || "")) {
5442
+ scripts.push(elem);
5443
+ }
5444
+ }
5445
+ }
5446
+ }
5447
+
5448
+ return fragment;
5449
+ }
5450
+
5451
+ var rkeyEvent = /^key/,
5452
+ rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
5453
+ rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
5454
+
5455
+ function returnTrue() {
5456
+ return true;
5457
+ }
5458
+
5459
+ function returnFalse() {
5460
+ return false;
5461
+ } // Support: IE <=9 - 11+
5462
+ // focus() and blur() are asynchronous, except when they are no-op.
5463
+ // So expect focus to be synchronous when the element is already active,
5464
+ // and blur to be synchronous when the element is not already active.
5465
+ // (focus and blur are always synchronous in other supported browsers,
5466
+ // this just defines when we can count on it).
5467
+
5468
+
5469
+ function expectSync(elem, type) {
5470
+ return elem === safeActiveElement() === (type === "focus");
5471
+ } // Support: IE <=9 only
5472
+ // Accessing document.activeElement can throw unexpectedly
5473
+ // https://bugs.jquery.com/ticket/13393
5474
+
5475
+
5476
+ function safeActiveElement() {
5477
+ try {
5478
+ return document.activeElement;
5479
+ } catch (err) {}
5480
+ }
5481
+
5482
+ function _on(elem, types, selector, data, fn, one) {
5483
+ var origFn, type; // Types can be a map of types/handlers
5484
+
5485
+ if (_typeof(types) === "object") {
5486
+ // ( types-Object, selector, data )
5487
+ if (typeof selector !== "string") {
5488
+ // ( types-Object, data )
5489
+ data = data || selector;
5490
+ selector = undefined;
5491
+ }
5492
+
5493
+ for (type in types) {
5494
+ _on(elem, type, selector, data, types[type], one);
5495
+ }
5496
+
5497
+ return elem;
5498
+ }
5499
+
5500
+ if (data == null && fn == null) {
5501
+ // ( types, fn )
5502
+ fn = selector;
5503
+ data = selector = undefined;
5504
+ } else if (fn == null) {
5505
+ if (typeof selector === "string") {
5506
+ // ( types, selector, fn )
5507
+ fn = data;
5508
+ data = undefined;
5509
+ } else {
5510
+ // ( types, data, fn )
5511
+ fn = data;
5512
+ data = selector;
5513
+ selector = undefined;
5514
+ }
5515
+ }
5516
+
5517
+ if (fn === false) {
5518
+ fn = returnFalse;
5519
+ } else if (!fn) {
5520
+ return elem;
5521
+ }
5522
+
5523
+ if (one === 1) {
5524
+ origFn = fn;
5525
+
5526
+ fn = function fn(event) {
5527
+ // Can use an empty set, since event contains the info
5528
+ jQuery().off(event);
5529
+ return origFn.apply(this, arguments);
5530
+ }; // Use same guid so caller can remove using origFn
5531
+
5532
+
5533
+ fn.guid = origFn.guid || (origFn.guid = jQuery.guid++);
5534
+ }
5535
+
5536
+ return elem.each(function () {
5537
+ jQuery.event.add(this, types, fn, data, selector);
5538
+ });
5539
+ }
5540
+ /*
5541
+ * Helper functions for managing events -- not part of the public interface.
5542
+ * Props to Dean Edwards' addEvent library for many of the ideas.
5543
+ */
5544
+
5545
+
5546
+ jQuery.event = {
5547
+ global: {},
5548
+ add: function add(elem, types, handler, data, selector) {
5549
+ var handleObjIn,
5550
+ eventHandle,
5551
+ tmp,
5552
+ events,
5553
+ t,
5554
+ handleObj,
5555
+ special,
5556
+ handlers,
5557
+ type,
5558
+ namespaces,
5559
+ origType,
5560
+ elemData = dataPriv.get(elem); // Only attach events to objects that accept data
5561
+
5562
+ if (!acceptData(elem)) {
5563
+ return;
5564
+ } // Caller can pass in an object of custom data in lieu of the handler
5565
+
5566
+
5567
+ if (handler.handler) {
5568
+ handleObjIn = handler;
5569
+ handler = handleObjIn.handler;
5570
+ selector = handleObjIn.selector;
5571
+ } // Ensure that invalid selectors throw exceptions at attach time
5572
+ // Evaluate against documentElement in case elem is a non-element node (e.g., document)
5573
+
5574
+
5575
+ if (selector) {
5576
+ jQuery.find.matchesSelector(documentElement, selector);
5577
+ } // Make sure that the handler has a unique ID, used to find/remove it later
5578
+
5579
+
5580
+ if (!handler.guid) {
5581
+ handler.guid = jQuery.guid++;
5582
+ } // Init the element's event structure and main handler, if this is the first
5583
+
5584
+
5585
+ if (!(events = elemData.events)) {
5586
+ events = elemData.events = Object.create(null);
5587
+ }
5588
+
5589
+ if (!(eventHandle = elemData.handle)) {
5590
+ eventHandle = elemData.handle = function (e) {
5591
+ // Discard the second event of a jQuery.event.trigger() and
5592
+ // when an event is called after a page has unloaded
5593
+ return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply(elem, arguments) : undefined;
5594
+ };
5595
+ } // Handle multiple events separated by a space
5596
+
5597
+
5598
+ types = (types || "").match(rnothtmlwhite) || [""];
5599
+ t = types.length;
5600
+
5601
+ while (t--) {
5602
+ tmp = rtypenamespace.exec(types[t]) || [];
5603
+ type = origType = tmp[1];
5604
+ namespaces = (tmp[2] || "").split(".").sort(); // There *must* be a type, no attaching namespace-only handlers
5605
+
5606
+ if (!type) {
5607
+ continue;
5608
+ } // If event changes its type, use the special event handlers for the changed type
5609
+
5610
+
5611
+ special = jQuery.event.special[type] || {}; // If selector defined, determine special event api type, otherwise given type
5612
+
5613
+ type = (selector ? special.delegateType : special.bindType) || type; // Update special based on newly reset type
5614
+
5615
+ special = jQuery.event.special[type] || {}; // handleObj is passed to all event handlers
5616
+
5617
+ handleObj = jQuery.extend({
5618
+ type: type,
5619
+ origType: origType,
5620
+ data: data,
5621
+ handler: handler,
5622
+ guid: handler.guid,
5623
+ selector: selector,
5624
+ needsContext: selector && jQuery.expr.match.needsContext.test(selector),
5625
+ namespace: namespaces.join(".")
5626
+ }, handleObjIn); // Init the event handler queue if we're the first
5627
+
5628
+ if (!(handlers = events[type])) {
5629
+ handlers = events[type] = [];
5630
+ handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false
5631
+
5632
+ if (!special.setup || special.setup.call(elem, data, namespaces, eventHandle) === false) {
5633
+ if (elem.addEventListener) {
5634
+ elem.addEventListener(type, eventHandle);
5635
+ }
5636
+ }
5637
+ }
5638
+
5639
+ if (special.add) {
5640
+ special.add.call(elem, handleObj);
5641
+
5642
+ if (!handleObj.handler.guid) {
5643
+ handleObj.handler.guid = handler.guid;
5644
+ }
5645
+ } // Add to the element's handler list, delegates in front
5646
+
5647
+
5648
+ if (selector) {
5649
+ handlers.splice(handlers.delegateCount++, 0, handleObj);
5650
+ } else {
5651
+ handlers.push(handleObj);
5652
+ } // Keep track of which events have ever been used, for event optimization
5653
+
5654
+
5655
+ jQuery.event.global[type] = true;
5656
+ }
5657
+ },
5658
+ // Detach an event or set of events from an element
5659
+ remove: function remove(elem, types, handler, selector, mappedTypes) {
5660
+ var j,
5661
+ origCount,
5662
+ tmp,
5663
+ events,
5664
+ t,
5665
+ handleObj,
5666
+ special,
5667
+ handlers,
5668
+ type,
5669
+ namespaces,
5670
+ origType,
5671
+ elemData = dataPriv.hasData(elem) && dataPriv.get(elem);
5672
+
5673
+ if (!elemData || !(events = elemData.events)) {
5674
+ return;
5675
+ } // Once for each type.namespace in types; type may be omitted
5676
+
5677
+
5678
+ types = (types || "").match(rnothtmlwhite) || [""];
5679
+ t = types.length;
5680
+
5681
+ while (t--) {
5682
+ tmp = rtypenamespace.exec(types[t]) || [];
5683
+ type = origType = tmp[1];
5684
+ namespaces = (tmp[2] || "").split(".").sort(); // Unbind all events (on this namespace, if provided) for the element
5685
+
5686
+ if (!type) {
5687
+ for (type in events) {
5688
+ jQuery.event.remove(elem, type + types[t], handler, selector, true);
5689
+ }
5690
+
5691
+ continue;
5692
+ }
5693
+
5694
+ special = jQuery.event.special[type] || {};
5695
+ type = (selector ? special.delegateType : special.bindType) || type;
5696
+ handlers = events[type] || [];
5697
+ tmp = tmp[2] && new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)"); // Remove matching events
5698
+
5699
+ origCount = j = handlers.length;
5700
+
5701
+ while (j--) {
5702
+ handleObj = handlers[j];
5703
+
5704
+ if ((mappedTypes || origType === handleObj.origType) && (!handler || handler.guid === handleObj.guid) && (!tmp || tmp.test(handleObj.namespace)) && (!selector || selector === handleObj.selector || selector === "**" && handleObj.selector)) {
5705
+ handlers.splice(j, 1);
5706
+
5707
+ if (handleObj.selector) {
5708
+ handlers.delegateCount--;
5709
+ }
5710
+
5711
+ if (special.remove) {
5712
+ special.remove.call(elem, handleObj);
5713
+ }
5714
+ }
5715
+ } // Remove generic event handler if we removed something and no more handlers exist
5716
+ // (avoids potential for endless recursion during removal of special event handlers)
5717
+
5718
+
5719
+ if (origCount && !handlers.length) {
5720
+ if (!special.teardown || special.teardown.call(elem, namespaces, elemData.handle) === false) {
5721
+ jQuery.removeEvent(elem, type, elemData.handle);
5722
+ }
5723
+
5724
+ delete events[type];
5725
+ }
5726
+ } // Remove data and the expando if it's no longer used
5727
+
5728
+
5729
+ if (jQuery.isEmptyObject(events)) {
5730
+ dataPriv.remove(elem, "handle events");
5731
+ }
5732
+ },
5733
+ dispatch: function dispatch(nativeEvent) {
5734
+ var i,
5735
+ j,
5736
+ ret,
5737
+ matched,
5738
+ handleObj,
5739
+ handlerQueue,
5740
+ args = new Array(arguments.length),
5741
+ // Make a writable jQuery.Event from the native event object
5742
+ event = jQuery.event.fix(nativeEvent),
5743
+ handlers = (dataPriv.get(this, "events") || Object.create(null))[event.type] || [],
5744
+ special = jQuery.event.special[event.type] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event
5745
+
5746
+ args[0] = event;
5747
+
5748
+ for (i = 1; i < arguments.length; i++) {
5749
+ args[i] = arguments[i];
5750
+ }
5751
+
5752
+ event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired
5753
+
5754
+ if (special.preDispatch && special.preDispatch.call(this, event) === false) {
5755
+ return;
5756
+ } // Determine handlers
5757
+
5758
+
5759
+ handlerQueue = jQuery.event.handlers.call(this, event, handlers); // Run delegates first; they may want to stop propagation beneath us
5760
+
5761
+ i = 0;
5762
+
5763
+ while ((matched = handlerQueue[i++]) && !event.isPropagationStopped()) {
5764
+ event.currentTarget = matched.elem;
5765
+ j = 0;
5766
+
5767
+ while ((handleObj = matched.handlers[j++]) && !event.isImmediatePropagationStopped()) {
5768
+ // If the event is namespaced, then each handler is only invoked if it is
5769
+ // specially universal or its namespaces are a superset of the event's.
5770
+ if (!event.rnamespace || handleObj.namespace === false || event.rnamespace.test(handleObj.namespace)) {
5771
+ event.handleObj = handleObj;
5772
+ event.data = handleObj.data;
5773
+ ret = ((jQuery.event.special[handleObj.origType] || {}).handle || handleObj.handler).apply(matched.elem, args);
5774
+
5775
+ if (ret !== undefined) {
5776
+ if ((event.result = ret) === false) {
5777
+ event.preventDefault();
5778
+ event.stopPropagation();
5779
+ }
5780
+ }
5781
+ }
5782
+ }
5783
+ } // Call the postDispatch hook for the mapped type
5784
+
5785
+
5786
+ if (special.postDispatch) {
5787
+ special.postDispatch.call(this, event);
5788
+ }
5789
+
5790
+ return event.result;
5791
+ },
5792
+ handlers: function handlers(event, _handlers) {
5793
+ var i,
5794
+ handleObj,
5795
+ sel,
5796
+ matchedHandlers,
5797
+ matchedSelectors,
5798
+ handlerQueue = [],
5799
+ delegateCount = _handlers.delegateCount,
5800
+ cur = event.target; // Find delegate handlers
5801
+
5802
+ if (delegateCount && // Support: IE <=9
5803
+ // Black-hole SVG <use> instance trees (trac-13180)
5804
+ cur.nodeType && // Support: Firefox <=42
5805
+ // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
5806
+ // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
5807
+ // Support: IE 11 only
5808
+ // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
5809
+ !(event.type === "click" && event.button >= 1)) {
5810
+ for (; cur !== this; cur = cur.parentNode || this) {
5811
+ // Don't check non-elements (#13208)
5812
+ // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
5813
+ if (cur.nodeType === 1 && !(event.type === "click" && cur.disabled === true)) {
5814
+ matchedHandlers = [];
5815
+ matchedSelectors = {};
5816
+
5817
+ for (i = 0; i < delegateCount; i++) {
5818
+ handleObj = _handlers[i]; // Don't conflict with Object.prototype properties (#13203)
5819
+
5820
+ sel = handleObj.selector + " ";
5821
+
5822
+ if (matchedSelectors[sel] === undefined) {
5823
+ matchedSelectors[sel] = handleObj.needsContext ? jQuery(sel, this).index(cur) > -1 : jQuery.find(sel, this, null, [cur]).length;
5824
+ }
5825
+
5826
+ if (matchedSelectors[sel]) {
5827
+ matchedHandlers.push(handleObj);
5828
+ }
5829
+ }
5830
+
5831
+ if (matchedHandlers.length) {
5832
+ handlerQueue.push({
5833
+ elem: cur,
5834
+ handlers: matchedHandlers
5835
+ });
5836
+ }
5837
+ }
5838
+ }
5839
+ } // Add the remaining (directly-bound) handlers
5840
+
5841
+
5842
+ cur = this;
5843
+
5844
+ if (delegateCount < _handlers.length) {
5845
+ handlerQueue.push({
5846
+ elem: cur,
5847
+ handlers: _handlers.slice(delegateCount)
5848
+ });
5849
+ }
5850
+
5851
+ return handlerQueue;
5852
+ },
5853
+ addProp: function addProp(name, hook) {
5854
+ Object.defineProperty(jQuery.Event.prototype, name, {
5855
+ enumerable: true,
5856
+ configurable: true,
5857
+ get: isFunction(hook) ? function () {
5858
+ if (this.originalEvent) {
5859
+ return hook(this.originalEvent);
5860
+ }
5861
+ } : function () {
5862
+ if (this.originalEvent) {
5863
+ return this.originalEvent[name];
5864
+ }
5865
+ },
5866
+ set: function set(value) {
5867
+ Object.defineProperty(this, name, {
5868
+ enumerable: true,
5869
+ configurable: true,
5870
+ writable: true,
5871
+ value: value
5872
+ });
5873
+ }
5874
+ });
5875
+ },
5876
+ fix: function fix(originalEvent) {
5877
+ return originalEvent[jQuery.expando] ? originalEvent : new jQuery.Event(originalEvent);
5878
+ },
5879
+ special: {
5880
+ load: {
5881
+ // Prevent triggered image.load events from bubbling to window.load
5882
+ noBubble: true
5883
+ },
5884
+ click: {
5885
+ // Utilize native event to ensure correct state for checkable inputs
5886
+ setup: function setup(data) {
5887
+ // For mutual compressibility with _default, replace `this` access with a local var.
5888
+ // `|| data` is dead code meant only to preserve the variable through minification.
5889
+ var el = this || data; // Claim the first handler
5890
+
5891
+ if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
5892
+ // dataPriv.set( el, "click", ... )
5893
+ leverageNative(el, "click", returnTrue);
5894
+ } // Return false to allow normal processing in the caller
5895
+
5896
+
5897
+ return false;
5898
+ },
5899
+ trigger: function trigger(data) {
5900
+ // For mutual compressibility with _default, replace `this` access with a local var.
5901
+ // `|| data` is dead code meant only to preserve the variable through minification.
5902
+ var el = this || data; // Force setup before triggering a click
5903
+
5904
+ if (rcheckableType.test(el.type) && el.click && nodeName(el, "input")) {
5905
+ leverageNative(el, "click");
5906
+ } // Return non-false to allow normal event-path propagation
5907
+
5908
+
5909
+ return true;
5910
+ },
5911
+ // For cross-browser consistency, suppress native .click() on links
5912
+ // Also prevent it if we're currently inside a leveraged native-event stack
5913
+ _default: function _default(event) {
5914
+ var target = event.target;
5915
+ return rcheckableType.test(target.type) && target.click && nodeName(target, "input") && dataPriv.get(target, "click") || nodeName(target, "a");
5916
+ }
5917
+ },
5918
+ beforeunload: {
5919
+ postDispatch: function postDispatch(event) {
5920
+ // Support: Firefox 20+
5921
+ // Firefox doesn't alert if the returnValue field is not set.
5922
+ if (event.result !== undefined && event.originalEvent) {
5923
+ event.originalEvent.returnValue = event.result;
5924
+ }
5925
+ }
5926
+ }
5927
+ }
5928
+ }; // Ensure the presence of an event listener that handles manually-triggered
5929
+ // synthetic events by interrupting progress until reinvoked in response to
5930
+ // *native* events that it fires directly, ensuring that state changes have
5931
+ // already occurred before other listeners are invoked.
5932
+
5933
+ function leverageNative(el, type, expectSync) {
5934
+ // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add
5935
+ if (!expectSync) {
5936
+ if (dataPriv.get(el, type) === undefined) {
5937
+ jQuery.event.add(el, type, returnTrue);
5938
+ }
5939
+
5940
+ return;
5941
+ } // Register the controller as a special universal handler for all event namespaces
5942
+
5943
+
5944
+ dataPriv.set(el, type, false);
5945
+ jQuery.event.add(el, type, {
5946
+ namespace: false,
5947
+ handler: function handler(event) {
5948
+ var notAsync,
5949
+ result,
5950
+ saved = dataPriv.get(this, type);
5951
+
5952
+ if (event.isTrigger & 1 && this[type]) {
5953
+ // Interrupt processing of the outer synthetic .trigger()ed event
5954
+ // Saved data should be false in such cases, but might be a leftover capture object
5955
+ // from an async native handler (gh-4350)
5956
+ if (!saved.length) {
5957
+ // Store arguments for use when handling the inner native event
5958
+ // There will always be at least one argument (an event object), so this array
5959
+ // will not be confused with a leftover capture object.
5960
+ saved = _slice.call(arguments);
5961
+ dataPriv.set(this, type, saved); // Trigger the native event and capture its result
5962
+ // Support: IE <=9 - 11+
5963
+ // focus() and blur() are asynchronous
5964
+
5965
+ notAsync = expectSync(this, type);
5966
+ this[type]();
5967
+ result = dataPriv.get(this, type);
5968
+
5969
+ if (saved !== result || notAsync) {
5970
+ dataPriv.set(this, type, false);
5971
+ } else {
5972
+ result = {};
5973
+ }
5974
+
5975
+ if (saved !== result) {
5976
+ // Cancel the outer synthetic event
5977
+ event.stopImmediatePropagation();
5978
+ event.preventDefault();
5979
+ return result.value;
5980
+ } // If this is an inner synthetic event for an event with a bubbling surrogate
5981
+ // (focus or blur), assume that the surrogate already propagated from triggering the
5982
+ // native event and prevent that from happening again here.
5983
+ // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the
5984
+ // bubbling surrogate propagates *after* the non-bubbling base), but that seems
5985
+ // less bad than duplication.
5986
+
5987
+ } else if ((jQuery.event.special[type] || {}).delegateType) {
5988
+ event.stopPropagation();
5989
+ } // If this is a native event triggered above, everything is now in order
5990
+ // Fire an inner synthetic event with the original arguments
5991
+
5992
+ } else if (saved.length) {
5993
+ // ...and capture the result
5994
+ dataPriv.set(this, type, {
5995
+ value: jQuery.event.trigger( // Support: IE <=9 - 11+
5996
+ // Extend with the prototype to reset the above stopImmediatePropagation()
5997
+ jQuery.extend(saved[0], jQuery.Event.prototype), saved.slice(1), this)
5998
+ }); // Abort handling of the native event
5999
+
6000
+ event.stopImmediatePropagation();
6001
+ }
6002
+ }
6003
+ });
6004
+ }
6005
+
6006
+ jQuery.removeEvent = function (elem, type, handle) {
6007
+ // This "if" is needed for plain objects
6008
+ if (elem.removeEventListener) {
6009
+ elem.removeEventListener(type, handle);
6010
+ }
6011
+ };
6012
+
6013
+ jQuery.Event = function (src, props) {
6014
+ // Allow instantiation without the 'new' keyword
6015
+ if (!(this instanceof jQuery.Event)) {
6016
+ return new jQuery.Event(src, props);
6017
+ } // Event object
6018
+
6019
+
6020
+ if (src && src.type) {
6021
+ this.originalEvent = src;
6022
+ this.type = src.type; // Events bubbling up the document may have been marked as prevented
6023
+ // by a handler lower down the tree; reflect the correct value.
6024
+
6025
+ this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only
6026
+ src.returnValue === false ? returnTrue : returnFalse; // Create target properties
6027
+ // Support: Safari <=6 - 7 only
6028
+ // Target should not be a text node (#504, #13143)
6029
+
6030
+ this.target = src.target && src.target.nodeType === 3 ? src.target.parentNode : src.target;
6031
+ this.currentTarget = src.currentTarget;
6032
+ this.relatedTarget = src.relatedTarget; // Event type
6033
+ } else {
6034
+ this.type = src;
6035
+ } // Put explicitly provided properties onto the event object
6036
+
6037
+
6038
+ if (props) {
6039
+ jQuery.extend(this, props);
6040
+ } // Create a timestamp if incoming event doesn't have one
6041
+
6042
+
6043
+ this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed
6044
+
6045
+ this[jQuery.expando] = true;
6046
+ }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
6047
+ // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
6048
+
6049
+
6050
+ jQuery.Event.prototype = {
6051
+ constructor: jQuery.Event,
6052
+ isDefaultPrevented: returnFalse,
6053
+ isPropagationStopped: returnFalse,
6054
+ isImmediatePropagationStopped: returnFalse,
6055
+ isSimulated: false,
6056
+ preventDefault: function preventDefault() {
6057
+ var e = this.originalEvent;
6058
+ this.isDefaultPrevented = returnTrue;
6059
+
6060
+ if (e && !this.isSimulated) {
6061
+ e.preventDefault();
6062
+ }
6063
+ },
6064
+ stopPropagation: function stopPropagation() {
6065
+ var e = this.originalEvent;
6066
+ this.isPropagationStopped = returnTrue;
6067
+
6068
+ if (e && !this.isSimulated) {
6069
+ e.stopPropagation();
6070
+ }
6071
+ },
6072
+ stopImmediatePropagation: function stopImmediatePropagation() {
6073
+ var e = this.originalEvent;
6074
+ this.isImmediatePropagationStopped = returnTrue;
6075
+
6076
+ if (e && !this.isSimulated) {
6077
+ e.stopImmediatePropagation();
6078
+ }
6079
+
6080
+ this.stopPropagation();
6081
+ }
6082
+ }; // Includes all common event props including KeyEvent and MouseEvent specific props
6083
+
6084
+ jQuery.each({
6085
+ altKey: true,
6086
+ bubbles: true,
6087
+ cancelable: true,
6088
+ changedTouches: true,
6089
+ ctrlKey: true,
6090
+ detail: true,
6091
+ eventPhase: true,
6092
+ metaKey: true,
6093
+ pageX: true,
6094
+ pageY: true,
6095
+ shiftKey: true,
6096
+ view: true,
6097
+ "char": true,
6098
+ code: true,
6099
+ charCode: true,
6100
+ key: true,
6101
+ keyCode: true,
6102
+ button: true,
6103
+ buttons: true,
6104
+ clientX: true,
6105
+ clientY: true,
6106
+ offsetX: true,
6107
+ offsetY: true,
6108
+ pointerId: true,
6109
+ pointerType: true,
6110
+ screenX: true,
6111
+ screenY: true,
6112
+ targetTouches: true,
6113
+ toElement: true,
6114
+ touches: true,
6115
+ which: function which(event) {
6116
+ var button = event.button; // Add which for key events
6117
+
6118
+ if (event.which == null && rkeyEvent.test(event.type)) {
6119
+ return event.charCode != null ? event.charCode : event.keyCode;
6120
+ } // Add which for click: 1 === left; 2 === middle; 3 === right
6121
+
6122
+
6123
+ if (!event.which && button !== undefined && rmouseEvent.test(event.type)) {
6124
+ if (button & 1) {
6125
+ return 1;
6126
+ }
6127
+
6128
+ if (button & 2) {
6129
+ return 3;
6130
+ }
6131
+
6132
+ if (button & 4) {
6133
+ return 2;
6134
+ }
6135
+
6136
+ return 0;
6137
+ }
6138
+
6139
+ return event.which;
6140
+ }
6141
+ }, jQuery.event.addProp);
6142
+ jQuery.each({
6143
+ focus: "focusin",
6144
+ blur: "focusout"
6145
+ }, function (type, delegateType) {
6146
+ jQuery.event.special[type] = {
6147
+ // Utilize native event if possible so blur/focus sequence is correct
6148
+ setup: function setup() {
6149
+ // Claim the first handler
6150
+ // dataPriv.set( this, "focus", ... )
6151
+ // dataPriv.set( this, "blur", ... )
6152
+ leverageNative(this, type, expectSync); // Return false to allow normal processing in the caller
6153
+
6154
+ return false;
6155
+ },
6156
+ trigger: function trigger() {
6157
+ // Force setup before trigger
6158
+ leverageNative(this, type); // Return non-false to allow normal event-path propagation
6159
+
6160
+ return true;
6161
+ },
6162
+ delegateType: delegateType
6163
+ };
6164
+ }); // Create mouseenter/leave events using mouseover/out and event-time checks
6165
+ // so that event delegation works in jQuery.
6166
+ // Do the same for pointerenter/pointerleave and pointerover/pointerout
6167
+ //
6168
+ // Support: Safari 7 only
6169
+ // Safari sends mouseenter too often; see:
6170
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=470258
6171
+ // for the description of the bug (it existed in older Chrome versions as well).
6172
+
6173
+ jQuery.each({
6174
+ mouseenter: "mouseover",
6175
+ mouseleave: "mouseout",
6176
+ pointerenter: "pointerover",
6177
+ pointerleave: "pointerout"
6178
+ }, function (orig, fix) {
6179
+ jQuery.event.special[orig] = {
6180
+ delegateType: fix,
6181
+ bindType: fix,
6182
+ handle: function handle(event) {
6183
+ var ret,
6184
+ target = this,
6185
+ related = event.relatedTarget,
6186
+ handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target.
6187
+ // NB: No relatedTarget if the mouse left/entered the browser window
6188
+
6189
+ if (!related || related !== target && !jQuery.contains(target, related)) {
6190
+ event.type = handleObj.origType;
6191
+ ret = handleObj.handler.apply(this, arguments);
6192
+ event.type = fix;
6193
+ }
6194
+
6195
+ return ret;
6196
+ }
6197
+ };
6198
+ });
6199
+ jQuery.fn.extend({
6200
+ on: function on(types, selector, data, fn) {
6201
+ return _on(this, types, selector, data, fn);
6202
+ },
6203
+ one: function one(types, selector, data, fn) {
6204
+ return _on(this, types, selector, data, fn, 1);
6205
+ },
6206
+ off: function off(types, selector, fn) {
6207
+ var handleObj, type;
6208
+
6209
+ if (types && types.preventDefault && types.handleObj) {
6210
+ // ( event ) dispatched jQuery.Event
6211
+ handleObj = types.handleObj;
6212
+ jQuery(types.delegateTarget).off(handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler);
6213
+ return this;
6214
+ }
6215
+
6216
+ if (_typeof(types) === "object") {
6217
+ // ( types-object [, selector] )
6218
+ for (type in types) {
6219
+ this.off(type, selector, types[type]);
6220
+ }
6221
+
6222
+ return this;
6223
+ }
6224
+
6225
+ if (selector === false || typeof selector === "function") {
6226
+ // ( types [, fn] )
6227
+ fn = selector;
6228
+ selector = undefined;
6229
+ }
6230
+
6231
+ if (fn === false) {
6232
+ fn = returnFalse;
6233
+ }
6234
+
6235
+ return this.each(function () {
6236
+ jQuery.event.remove(this, types, fn, selector);
6237
+ });
6238
+ }
6239
+ });
6240
+ var // Support: IE <=10 - 11, Edge 12 - 13 only
6241
+ // In IE/Edge using regex groups here causes severe slowdowns.
6242
+ // See https://connect.microsoft.com/IE/feedback/details/1736512/
6243
+ rnoInnerhtml = /<script|<style|<link/i,
6244
+ // checked="checked" or checked
6245
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
6246
+ rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; // Prefer a tbody over its parent table for containing new rows
6247
+
6248
+ function manipulationTarget(elem, content) {
6249
+ if (nodeName(elem, "table") && nodeName(content.nodeType !== 11 ? content : content.firstChild, "tr")) {
6250
+ return jQuery(elem).children("tbody")[0] || elem;
6251
+ }
6252
+
6253
+ return elem;
6254
+ } // Replace/restore the type attribute of script elements for safe DOM manipulation
6255
+
6256
+
6257
+ function disableScript(elem) {
6258
+ elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
6259
+ return elem;
6260
+ }
6261
+
6262
+ function restoreScript(elem) {
6263
+ if ((elem.type || "").slice(0, 5) === "true/") {
6264
+ elem.type = elem.type.slice(5);
6265
+ } else {
6266
+ elem.removeAttribute("type");
6267
+ }
6268
+
6269
+ return elem;
6270
+ }
6271
+
6272
+ function cloneCopyEvent(src, dest) {
6273
+ var i, l, type, pdataOld, udataOld, udataCur, events;
6274
+
6275
+ if (dest.nodeType !== 1) {
6276
+ return;
6277
+ } // 1. Copy private data: events, handlers, etc.
6278
+
6279
+
6280
+ if (dataPriv.hasData(src)) {
6281
+ pdataOld = dataPriv.get(src);
6282
+ events = pdataOld.events;
6283
+
6284
+ if (events) {
6285
+ dataPriv.remove(dest, "handle events");
6286
+
6287
+ for (type in events) {
6288
+ for (i = 0, l = events[type].length; i < l; i++) {
6289
+ jQuery.event.add(dest, type, events[type][i]);
6290
+ }
6291
+ }
6292
+ }
6293
+ } // 2. Copy user data
6294
+
6295
+
6296
+ if (dataUser.hasData(src)) {
6297
+ udataOld = dataUser.access(src);
6298
+ udataCur = jQuery.extend({}, udataOld);
6299
+ dataUser.set(dest, udataCur);
6300
+ }
6301
+ } // Fix IE bugs, see support tests
6302
+
6303
+
6304
+ function fixInput(src, dest) {
6305
+ var nodeName = dest.nodeName.toLowerCase(); // Fails to persist the checked state of a cloned checkbox or radio button.
6306
+
6307
+ if (nodeName === "input" && rcheckableType.test(src.type)) {
6308
+ dest.checked = src.checked; // Fails to return the selected option to the default selected state when cloning options
6309
+ } else if (nodeName === "input" || nodeName === "textarea") {
6310
+ dest.defaultValue = src.defaultValue;
6311
+ }
6312
+ }
6313
+
6314
+ function domManip(collection, args, callback, ignored) {
6315
+ // Flatten any nested arrays
6316
+ args = flat(args);
6317
+ var fragment,
6318
+ first,
6319
+ scripts,
6320
+ hasScripts,
6321
+ node,
6322
+ doc,
6323
+ i = 0,
6324
+ l = collection.length,
6325
+ iNoClone = l - 1,
6326
+ value = args[0],
6327
+ valueIsFunction = isFunction(value); // We can't cloneNode fragments that contain checked, in WebKit
6328
+
6329
+ if (valueIsFunction || l > 1 && typeof value === "string" && !support.checkClone && rchecked.test(value)) {
6330
+ return collection.each(function (index) {
6331
+ var self = collection.eq(index);
6332
+
6333
+ if (valueIsFunction) {
6334
+ args[0] = value.call(this, index, self.html());
6335
+ }
6336
+
6337
+ domManip(self, args, callback, ignored);
6338
+ });
6339
+ }
6340
+
6341
+ if (l) {
6342
+ fragment = buildFragment(args, collection[0].ownerDocument, false, collection, ignored);
6343
+ first = fragment.firstChild;
6344
+
6345
+ if (fragment.childNodes.length === 1) {
6346
+ fragment = first;
6347
+ } // Require either new content or an interest in ignored elements to invoke the callback
6348
+
6349
+
6350
+ if (first || ignored) {
6351
+ scripts = jQuery.map(getAll(fragment, "script"), disableScript);
6352
+ hasScripts = scripts.length; // Use the original fragment for the last item
6353
+ // instead of the first because it can end up
6354
+ // being emptied incorrectly in certain situations (#8070).
6355
+
6356
+ for (; i < l; i++) {
6357
+ node = fragment;
6358
+
6359
+ if (i !== iNoClone) {
6360
+ node = jQuery.clone(node, true, true); // Keep references to cloned scripts for later restoration
6361
+
6362
+ if (hasScripts) {
6363
+ // Support: Android <=4.0 only, PhantomJS 1 only
6364
+ // push.apply(_, arraylike) throws on ancient WebKit
6365
+ jQuery.merge(scripts, getAll(node, "script"));
6366
+ }
6367
+ }
6368
+
6369
+ callback.call(collection[i], node, i);
6370
+ }
6371
+
6372
+ if (hasScripts) {
6373
+ doc = scripts[scripts.length - 1].ownerDocument; // Reenable scripts
6374
+
6375
+ jQuery.map(scripts, restoreScript); // Evaluate executable scripts on first document insertion
6376
+
6377
+ for (i = 0; i < hasScripts; i++) {
6378
+ node = scripts[i];
6379
+
6380
+ if (rscriptType.test(node.type || "") && !dataPriv.access(node, "globalEval") && jQuery.contains(doc, node)) {
6381
+ if (node.src && (node.type || "").toLowerCase() !== "module") {
6382
+ // Optional AJAX dependency, but won't run scripts if not present
6383
+ if (jQuery._evalUrl && !node.noModule) {
6384
+ jQuery._evalUrl(node.src, {
6385
+ nonce: node.nonce || node.getAttribute("nonce")
6386
+ }, doc);
6387
+ }
6388
+ } else {
6389
+ DOMEval(node.textContent.replace(rcleanScript, ""), node, doc);
6390
+ }
6391
+ }
6392
+ }
6393
+ }
6394
+ }
6395
+ }
6396
+
6397
+ return collection;
6398
+ }
6399
+
6400
+ function _remove(elem, selector, keepData) {
6401
+ var node,
6402
+ nodes = selector ? jQuery.filter(selector, elem) : elem,
6403
+ i = 0;
6404
+
6405
+ for (; (node = nodes[i]) != null; i++) {
6406
+ if (!keepData && node.nodeType === 1) {
6407
+ jQuery.cleanData(getAll(node));
6408
+ }
6409
+
6410
+ if (node.parentNode) {
6411
+ if (keepData && isAttached(node)) {
6412
+ setGlobalEval(getAll(node, "script"));
6413
+ }
6414
+
6415
+ node.parentNode.removeChild(node);
6416
+ }
6417
+ }
6418
+
6419
+ return elem;
6420
+ }
6421
+
6422
+ jQuery.extend({
6423
+ htmlPrefilter: function htmlPrefilter(html) {
6424
+ return html;
6425
+ },
6426
+ clone: function clone(elem, dataAndEvents, deepDataAndEvents) {
6427
+ var i,
6428
+ l,
6429
+ srcElements,
6430
+ destElements,
6431
+ clone = elem.cloneNode(true),
6432
+ inPage = isAttached(elem); // Fix IE cloning issues
6433
+
6434
+ if (!support.noCloneChecked && (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem)) {
6435
+ // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
6436
+ destElements = getAll(clone);
6437
+ srcElements = getAll(elem);
6438
+
6439
+ for (i = 0, l = srcElements.length; i < l; i++) {
6440
+ fixInput(srcElements[i], destElements[i]);
6441
+ }
6442
+ } // Copy the events from the original to the clone
6443
+
6444
+
6445
+ if (dataAndEvents) {
6446
+ if (deepDataAndEvents) {
6447
+ srcElements = srcElements || getAll(elem);
6448
+ destElements = destElements || getAll(clone);
6449
+
6450
+ for (i = 0, l = srcElements.length; i < l; i++) {
6451
+ cloneCopyEvent(srcElements[i], destElements[i]);
6452
+ }
6453
+ } else {
6454
+ cloneCopyEvent(elem, clone);
6455
+ }
6456
+ } // Preserve script evaluation history
6457
+
6458
+
6459
+ destElements = getAll(clone, "script");
6460
+
6461
+ if (destElements.length > 0) {
6462
+ setGlobalEval(destElements, !inPage && getAll(elem, "script"));
6463
+ } // Return the cloned set
6464
+
6465
+
6466
+ return clone;
6467
+ },
6468
+ cleanData: function cleanData(elems) {
6469
+ var data,
6470
+ elem,
6471
+ type,
6472
+ special = jQuery.event.special,
6473
+ i = 0;
6474
+
6475
+ for (; (elem = elems[i]) !== undefined; i++) {
6476
+ if (acceptData(elem)) {
6477
+ if (data = elem[dataPriv.expando]) {
6478
+ if (data.events) {
6479
+ for (type in data.events) {
6480
+ if (special[type]) {
6481
+ jQuery.event.remove(elem, type); // This is a shortcut to avoid jQuery.event.remove's overhead
6482
+ } else {
6483
+ jQuery.removeEvent(elem, type, data.handle);
6484
+ }
6485
+ }
6486
+ } // Support: Chrome <=35 - 45+
6487
+ // Assign undefined instead of using delete, see Data#remove
6488
+
6489
+
6490
+ elem[dataPriv.expando] = undefined;
6491
+ }
6492
+
6493
+ if (elem[dataUser.expando]) {
6494
+ // Support: Chrome <=35 - 45+
6495
+ // Assign undefined instead of using delete, see Data#remove
6496
+ elem[dataUser.expando] = undefined;
6497
+ }
6498
+ }
6499
+ }
6500
+ }
6501
+ });
6502
+ jQuery.fn.extend({
6503
+ detach: function detach(selector) {
6504
+ return _remove(this, selector, true);
6505
+ },
6506
+ remove: function remove(selector) {
6507
+ return _remove(this, selector);
6508
+ },
6509
+ text: function text(value) {
6510
+ return access(this, function (value) {
6511
+ return value === undefined ? jQuery.text(this) : this.empty().each(function () {
6512
+ if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
6513
+ this.textContent = value;
6514
+ }
6515
+ });
6516
+ }, null, value, arguments.length);
6517
+ },
6518
+ append: function append() {
6519
+ return domManip(this, arguments, function (elem) {
6520
+ if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
6521
+ var target = manipulationTarget(this, elem);
6522
+ target.appendChild(elem);
6523
+ }
6524
+ });
6525
+ },
6526
+ prepend: function prepend() {
6527
+ return domManip(this, arguments, function (elem) {
6528
+ if (this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9) {
6529
+ var target = manipulationTarget(this, elem);
6530
+ target.insertBefore(elem, target.firstChild);
6531
+ }
6532
+ });
6533
+ },
6534
+ before: function before() {
6535
+ return domManip(this, arguments, function (elem) {
6536
+ if (this.parentNode) {
6537
+ this.parentNode.insertBefore(elem, this);
6538
+ }
6539
+ });
6540
+ },
6541
+ after: function after() {
6542
+ return domManip(this, arguments, function (elem) {
6543
+ if (this.parentNode) {
6544
+ this.parentNode.insertBefore(elem, this.nextSibling);
6545
+ }
6546
+ });
6547
+ },
6548
+ empty: function empty() {
6549
+ var elem,
6550
+ i = 0;
6551
+
6552
+ for (; (elem = this[i]) != null; i++) {
6553
+ if (elem.nodeType === 1) {
6554
+ // Prevent memory leaks
6555
+ jQuery.cleanData(getAll(elem, false)); // Remove any remaining nodes
6556
+
6557
+ elem.textContent = "";
6558
+ }
6559
+ }
6560
+
6561
+ return this;
6562
+ },
6563
+ clone: function clone(dataAndEvents, deepDataAndEvents) {
6564
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
6565
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
6566
+ return this.map(function () {
6567
+ return jQuery.clone(this, dataAndEvents, deepDataAndEvents);
6568
+ });
6569
+ },
6570
+ html: function html(value) {
6571
+ return access(this, function (value) {
6572
+ var elem = this[0] || {},
6573
+ i = 0,
6574
+ l = this.length;
6575
+
6576
+ if (value === undefined && elem.nodeType === 1) {
6577
+ return elem.innerHTML;
6578
+ } // See if we can take a shortcut and just use innerHTML
6579
+
6580
+
6581
+ if (typeof value === "string" && !rnoInnerhtml.test(value) && !wrapMap[(rtagName.exec(value) || ["", ""])[1].toLowerCase()]) {
6582
+ value = jQuery.htmlPrefilter(value);
6583
+
6584
+ try {
6585
+ for (; i < l; i++) {
6586
+ elem = this[i] || {}; // Remove element nodes and prevent memory leaks
6587
+
6588
+ if (elem.nodeType === 1) {
6589
+ jQuery.cleanData(getAll(elem, false));
6590
+ elem.innerHTML = value;
6591
+ }
6592
+ }
6593
+
6594
+ elem = 0; // If using innerHTML throws an exception, use the fallback method
6595
+ } catch (e) {}
6596
+ }
6597
+
6598
+ if (elem) {
6599
+ this.empty().append(value);
6600
+ }
6601
+ }, null, value, arguments.length);
6602
+ },
6603
+ replaceWith: function replaceWith() {
6604
+ var ignored = []; // Make the changes, replacing each non-ignored context element with the new content
6605
+
6606
+ return domManip(this, arguments, function (elem) {
6607
+ var parent = this.parentNode;
6608
+
6609
+ if (jQuery.inArray(this, ignored) < 0) {
6610
+ jQuery.cleanData(getAll(this));
6611
+
6612
+ if (parent) {
6613
+ parent.replaceChild(elem, this);
6614
+ }
6615
+ } // Force callback invocation
6616
+
6617
+ }, ignored);
6618
+ }
6619
+ });
6620
+ jQuery.each({
6621
+ appendTo: "append",
6622
+ prependTo: "prepend",
6623
+ insertBefore: "before",
6624
+ insertAfter: "after",
6625
+ replaceAll: "replaceWith"
6626
+ }, function (name, original) {
6627
+ jQuery.fn[name] = function (selector) {
6628
+ var elems,
6629
+ ret = [],
6630
+ insert = jQuery(selector),
6631
+ last = insert.length - 1,
6632
+ i = 0;
6633
+
6634
+ for (; i <= last; i++) {
6635
+ elems = i === last ? this : this.clone(true);
6636
+ jQuery(insert[i])[original](elems); // Support: Android <=4.0 only, PhantomJS 1 only
6637
+ // .get() because push.apply(_, arraylike) throws on ancient WebKit
6638
+
6639
+ push.apply(ret, elems.get());
6640
+ }
6641
+
6642
+ return this.pushStack(ret);
6643
+ };
6644
+ });
6645
+ var rnumnonpx = new RegExp("^(" + pnum + ")(?!px)[a-z%]+$", "i");
6646
+
6647
+ var getStyles = function getStyles(elem) {
6648
+ // Support: IE <=11 only, Firefox <=30 (#15098, #14150)
6649
+ // IE throws on elements created in popups
6650
+ // FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
6651
+ var view = elem.ownerDocument.defaultView;
6652
+
6653
+ if (!view || !view.opener) {
6654
+ view = window;
6655
+ }
6656
+
6657
+ return view.getComputedStyle(elem);
6658
+ };
6659
+
6660
+ var swap = function swap(elem, options, callback) {
6661
+ var ret,
6662
+ name,
6663
+ old = {}; // Remember the old values, and insert the new ones
6664
+
6665
+ for (name in options) {
6666
+ old[name] = elem.style[name];
6667
+ elem.style[name] = options[name];
6668
+ }
6669
+
6670
+ ret = callback.call(elem); // Revert the old values
6671
+
6672
+ for (name in options) {
6673
+ elem.style[name] = old[name];
6674
+ }
6675
+
6676
+ return ret;
6677
+ };
6678
+
6679
+ var rboxStyle = new RegExp(cssExpand.join("|"), "i");
6680
+
6681
+ (function () {
6682
+ // Executing both pixelPosition & boxSizingReliable tests require only one layout
6683
+ // so they're executed at the same time to save the second computation.
6684
+ function computeStyleTests() {
6685
+ // This is a singleton, we need to execute it only once
6686
+ if (!div) {
6687
+ return;
6688
+ }
6689
+
6690
+ container.style.cssText = "position:absolute;left:-11111px;width:60px;" + "margin-top:1px;padding:0;border:0";
6691
+ div.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + "margin:auto;border:1px;padding:1px;" + "width:60%;top:1%";
6692
+ documentElement.appendChild(container).appendChild(div);
6693
+ var divStyle = window.getComputedStyle(div);
6694
+ pixelPositionVal = divStyle.top !== "1%"; // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
6695
+
6696
+ reliableMarginLeftVal = roundPixelMeasures(divStyle.marginLeft) === 12; // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
6697
+ // Some styles come back with percentage values, even though they shouldn't
6698
+
6699
+ div.style.right = "60%";
6700
+ pixelBoxStylesVal = roundPixelMeasures(divStyle.right) === 36; // Support: IE 9 - 11 only
6701
+ // Detect misreporting of content dimensions for box-sizing:border-box elements
6702
+
6703
+ boxSizingReliableVal = roundPixelMeasures(divStyle.width) === 36; // Support: IE 9 only
6704
+ // Detect overflow:scroll screwiness (gh-3699)
6705
+ // Support: Chrome <=64
6706
+ // Don't get tricked when zoom affects offsetWidth (gh-4029)
6707
+
6708
+ div.style.position = "absolute";
6709
+ scrollboxSizeVal = roundPixelMeasures(div.offsetWidth / 3) === 12;
6710
+ documentElement.removeChild(container); // Nullify the div so it wouldn't be stored in the memory and
6711
+ // it will also be a sign that checks already performed
6712
+
6713
+ div = null;
6714
+ }
6715
+
6716
+ function roundPixelMeasures(measure) {
6717
+ return Math.round(parseFloat(measure));
6718
+ }
6719
+
6720
+ var pixelPositionVal,
6721
+ boxSizingReliableVal,
6722
+ scrollboxSizeVal,
6723
+ pixelBoxStylesVal,
6724
+ reliableTrDimensionsVal,
6725
+ reliableMarginLeftVal,
6726
+ container = document.createElement("div"),
6727
+ div = document.createElement("div"); // Finish early in limited (non-browser) environments
6728
+
6729
+ if (!div.style) {
6730
+ return;
6731
+ } // Support: IE <=9 - 11 only
6732
+ // Style of cloned element affects source element cloned (#8908)
6733
+
6734
+
6735
+ div.style.backgroundClip = "content-box";
6736
+ div.cloneNode(true).style.backgroundClip = "";
6737
+ support.clearCloneStyle = div.style.backgroundClip === "content-box";
6738
+ jQuery.extend(support, {
6739
+ boxSizingReliable: function boxSizingReliable() {
6740
+ computeStyleTests();
6741
+ return boxSizingReliableVal;
6742
+ },
6743
+ pixelBoxStyles: function pixelBoxStyles() {
6744
+ computeStyleTests();
6745
+ return pixelBoxStylesVal;
6746
+ },
6747
+ pixelPosition: function pixelPosition() {
6748
+ computeStyleTests();
6749
+ return pixelPositionVal;
6750
+ },
6751
+ reliableMarginLeft: function reliableMarginLeft() {
6752
+ computeStyleTests();
6753
+ return reliableMarginLeftVal;
6754
+ },
6755
+ scrollboxSize: function scrollboxSize() {
6756
+ computeStyleTests();
6757
+ return scrollboxSizeVal;
6758
+ },
6759
+ // Support: IE 9 - 11+, Edge 15 - 18+
6760
+ // IE/Edge misreport `getComputedStyle` of table rows with width/height
6761
+ // set in CSS while `offset*` properties report correct values.
6762
+ // Behavior in IE 9 is more subtle than in newer versions & it passes
6763
+ // some versions of this test; make sure not to make it pass there!
6764
+ reliableTrDimensions: function reliableTrDimensions() {
6765
+ var table, tr, trChild, trStyle;
6766
+
6767
+ if (reliableTrDimensionsVal == null) {
6768
+ table = document.createElement("table");
6769
+ tr = document.createElement("tr");
6770
+ trChild = document.createElement("div");
6771
+ table.style.cssText = "position:absolute;left:-11111px";
6772
+ tr.style.height = "1px";
6773
+ trChild.style.height = "9px";
6774
+ documentElement.appendChild(table).appendChild(tr).appendChild(trChild);
6775
+ trStyle = window.getComputedStyle(tr);
6776
+ reliableTrDimensionsVal = parseInt(trStyle.height) > 3;
6777
+ documentElement.removeChild(table);
6778
+ }
6779
+
6780
+ return reliableTrDimensionsVal;
6781
+ }
6782
+ });
6783
+ })();
6784
+
6785
+ function curCSS(elem, name, computed) {
6786
+ var width,
6787
+ minWidth,
6788
+ maxWidth,
6789
+ ret,
6790
+ // Support: Firefox 51+
6791
+ // Retrieving style before computed somehow
6792
+ // fixes an issue with getting wrong values
6793
+ // on detached elements
6794
+ style = elem.style;
6795
+ computed = computed || getStyles(elem); // getPropertyValue is needed for:
6796
+ // .css('filter') (IE 9 only, #12537)
6797
+ // .css('--customProperty) (#3144)
6798
+
6799
+ if (computed) {
6800
+ ret = computed.getPropertyValue(name) || computed[name];
6801
+
6802
+ if (ret === "" && !isAttached(elem)) {
6803
+ ret = jQuery.style(elem, name);
6804
+ } // A tribute to the "awesome hack by Dean Edwards"
6805
+ // Android Browser returns percentage for some values,
6806
+ // but width seems to be reliably pixels.
6807
+ // This is against the CSSOM draft spec:
6808
+ // https://drafts.csswg.org/cssom/#resolved-values
6809
+
6810
+
6811
+ if (!support.pixelBoxStyles() && rnumnonpx.test(ret) && rboxStyle.test(name)) {
6812
+ // Remember the original values
6813
+ width = style.width;
6814
+ minWidth = style.minWidth;
6815
+ maxWidth = style.maxWidth; // Put in the new values to get a computed value out
6816
+
6817
+ style.minWidth = style.maxWidth = style.width = ret;
6818
+ ret = computed.width; // Revert the changed values
6819
+
6820
+ style.width = width;
6821
+ style.minWidth = minWidth;
6822
+ style.maxWidth = maxWidth;
6823
+ }
6824
+ }
6825
+
6826
+ return ret !== undefined ? // Support: IE <=9 - 11 only
6827
+ // IE returns zIndex value as an integer.
6828
+ ret + "" : ret;
6829
+ }
6830
+
6831
+ function addGetHookIf(conditionFn, hookFn) {
6832
+ // Define the hook, we'll check on the first run if it's really needed.
6833
+ return {
6834
+ get: function get() {
6835
+ if (conditionFn()) {
6836
+ // Hook not needed (or it's not possible to use it due
6837
+ // to missing dependency), remove it.
6838
+ delete this.get;
6839
+ return;
6840
+ } // Hook needed; redefine it so that the support test is not executed again.
6841
+
6842
+
6843
+ return (this.get = hookFn).apply(this, arguments);
6844
+ }
6845
+ };
6846
+ }
6847
+
6848
+ var cssPrefixes = ["Webkit", "Moz", "ms"],
6849
+ emptyStyle = document.createElement("div").style,
6850
+ vendorProps = {}; // Return a vendor-prefixed property or undefined
6851
+
6852
+ function vendorPropName(name) {
6853
+ // Check for vendor prefixed names
6854
+ var capName = name[0].toUpperCase() + name.slice(1),
6855
+ i = cssPrefixes.length;
6856
+
6857
+ while (i--) {
6858
+ name = cssPrefixes[i] + capName;
6859
+
6860
+ if (name in emptyStyle) {
6861
+ return name;
6862
+ }
6863
+ }
6864
+ } // Return a potentially-mapped jQuery.cssProps or vendor prefixed property
6865
+
6866
+
6867
+ function finalPropName(name) {
6868
+ var _final = jQuery.cssProps[name] || vendorProps[name];
6869
+
6870
+ if (_final) {
6871
+ return _final;
6872
+ }
6873
+
6874
+ if (name in emptyStyle) {
6875
+ return name;
6876
+ }
6877
+
6878
+ return vendorProps[name] = vendorPropName(name) || name;
6879
+ }
6880
+
6881
+ var // Swappable if display is none or starts with table
6882
+ // except "table", "table-cell", or "table-caption"
6883
+ // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
6884
+ rdisplayswap = /^(none|table(?!-c[ea]).+)/,
6885
+ rcustomProp = /^--/,
6886
+ cssShow = {
6887
+ position: "absolute",
6888
+ visibility: "hidden",
6889
+ display: "block"
6890
+ },
6891
+ cssNormalTransform = {
6892
+ letterSpacing: "0",
6893
+ fontWeight: "400"
6894
+ };
6895
+
6896
+ function setPositiveNumber(_elem, value, subtract) {
6897
+ // Any relative (+/-) values have already been
6898
+ // normalized at this point
6899
+ var matches = rcssNum.exec(value);
6900
+ return matches ? // Guard against undefined "subtract", e.g., when used as in cssHooks
6901
+ Math.max(0, matches[2] - (subtract || 0)) + (matches[3] || "px") : value;
6902
+ }
6903
+
6904
+ function boxModelAdjustment(elem, dimension, box, isBorderBox, styles, computedVal) {
6905
+ var i = dimension === "width" ? 1 : 0,
6906
+ extra = 0,
6907
+ delta = 0; // Adjustment may not be necessary
6908
+
6909
+ if (box === (isBorderBox ? "border" : "content")) {
6910
+ return 0;
6911
+ }
6912
+
6913
+ for (; i < 4; i += 2) {
6914
+ // Both box models exclude margin
6915
+ if (box === "margin") {
6916
+ delta += jQuery.css(elem, box + cssExpand[i], true, styles);
6917
+ } // If we get here with a content-box, we're seeking "padding" or "border" or "margin"
6918
+
6919
+
6920
+ if (!isBorderBox) {
6921
+ // Add padding
6922
+ delta += jQuery.css(elem, "padding" + cssExpand[i], true, styles); // For "border" or "margin", add border
6923
+
6924
+ if (box !== "padding") {
6925
+ delta += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles); // But still keep track of it otherwise
6926
+ } else {
6927
+ extra += jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
6928
+ } // If we get here with a border-box (content + padding + border), we're seeking "content" or
6929
+ // "padding" or "margin"
6930
+
6931
+ } else {
6932
+ // For "content", subtract padding
6933
+ if (box === "content") {
6934
+ delta -= jQuery.css(elem, "padding" + cssExpand[i], true, styles);
6935
+ } // For "content" or "padding", subtract border
6936
+
6937
+
6938
+ if (box !== "margin") {
6939
+ delta -= jQuery.css(elem, "border" + cssExpand[i] + "Width", true, styles);
6940
+ }
6941
+ }
6942
+ } // Account for positive content-box scroll gutter when requested by providing computedVal
6943
+
6944
+
6945
+ if (!isBorderBox && computedVal >= 0) {
6946
+ // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
6947
+ // Assuming integer scroll gutter, subtract the rest and round down
6948
+ delta += Math.max(0, Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - computedVal - delta - extra - 0.5 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter
6949
+ // Use an explicit zero to avoid NaN (gh-3964)
6950
+ )) || 0;
6951
+ }
6952
+
6953
+ return delta;
6954
+ }
6955
+
6956
+ function getWidthOrHeight(elem, dimension, extra) {
6957
+ // Start with computed style
6958
+ var styles = getStyles(elem),
6959
+ // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).
6960
+ // Fake content-box until we know it's needed to know the true value.
6961
+ boxSizingNeeded = !support.boxSizingReliable() || extra,
6962
+ isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box",
6963
+ valueIsBorderBox = isBorderBox,
6964
+ val = curCSS(elem, dimension, styles),
6965
+ offsetProp = "offset" + dimension[0].toUpperCase() + dimension.slice(1); // Support: Firefox <=54
6966
+ // Return a confounding non-pixel value or feign ignorance, as appropriate.
6967
+
6968
+ if (rnumnonpx.test(val)) {
6969
+ if (!extra) {
6970
+ return val;
6971
+ }
6972
+
6973
+ val = "auto";
6974
+ } // Support: IE 9 - 11 only
6975
+ // Use offsetWidth/offsetHeight for when box sizing is unreliable.
6976
+ // In those cases, the computed value can be trusted to be border-box.
6977
+
6978
+
6979
+ if ((!support.boxSizingReliable() && isBorderBox || // Support: IE 10 - 11+, Edge 15 - 18+
6980
+ // IE/Edge misreport `getComputedStyle` of table rows with width/height
6981
+ // set in CSS while `offset*` properties report correct values.
6982
+ // Interestingly, in some cases IE 9 doesn't suffer from this issue.
6983
+ !support.reliableTrDimensions() && nodeName(elem, "tr") || // Fall back to offsetWidth/offsetHeight when value is "auto"
6984
+ // This happens for inline elements with no explicit setting (gh-3571)
6985
+ val === "auto" || // Support: Android <=4.1 - 4.3 only
6986
+ // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
6987
+ !parseFloat(val) && jQuery.css(elem, "display", false, styles) === "inline") && // Make sure the element is visible & connected
6988
+ elem.getClientRects().length) {
6989
+ isBorderBox = jQuery.css(elem, "boxSizing", false, styles) === "border-box"; // Where available, offsetWidth/offsetHeight approximate border box dimensions.
6990
+ // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the
6991
+ // retrieved value as a content box dimension.
6992
+
6993
+ valueIsBorderBox = offsetProp in elem;
6994
+
6995
+ if (valueIsBorderBox) {
6996
+ val = elem[offsetProp];
6997
+ }
6998
+ } // Normalize "" and auto
6999
+
7000
+
7001
+ val = parseFloat(val) || 0; // Adjust for the element's box model
7002
+
7003
+ return val + boxModelAdjustment(elem, dimension, extra || (isBorderBox ? "border" : "content"), valueIsBorderBox, styles, // Provide the current computed size to request scroll gutter calculation (gh-3589)
7004
+ val) + "px";
7005
+ }
7006
+
7007
+ jQuery.extend({
7008
+ // Add in style property hooks for overriding the default
7009
+ // behavior of getting and setting a style property
7010
+ cssHooks: {
7011
+ opacity: {
7012
+ get: function get(elem, computed) {
7013
+ if (computed) {
7014
+ // We should always get a number back from opacity
7015
+ var ret = curCSS(elem, "opacity");
7016
+ return ret === "" ? "1" : ret;
7017
+ }
7018
+ }
7019
+ }
7020
+ },
7021
+ // Don't automatically add "px" to these possibly-unitless properties
7022
+ cssNumber: {
7023
+ "animationIterationCount": true,
7024
+ "columnCount": true,
7025
+ "fillOpacity": true,
7026
+ "flexGrow": true,
7027
+ "flexShrink": true,
7028
+ "fontWeight": true,
7029
+ "gridArea": true,
7030
+ "gridColumn": true,
7031
+ "gridColumnEnd": true,
7032
+ "gridColumnStart": true,
7033
+ "gridRow": true,
7034
+ "gridRowEnd": true,
7035
+ "gridRowStart": true,
7036
+ "lineHeight": true,
7037
+ "opacity": true,
7038
+ "order": true,
7039
+ "orphans": true,
7040
+ "widows": true,
7041
+ "zIndex": true,
7042
+ "zoom": true
7043
+ },
7044
+ // Add in properties whose names you wish to fix before
7045
+ // setting or getting the value
7046
+ cssProps: {},
7047
+ // Get and set the style property on a DOM Node
7048
+ style: function style(elem, name, value, extra) {
7049
+ // Don't set styles on text and comment nodes
7050
+ if (!elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style) {
7051
+ return;
7052
+ } // Make sure that we're working with the right name
7053
+
7054
+
7055
+ var ret,
7056
+ type,
7057
+ hooks,
7058
+ origName = camelCase(name),
7059
+ isCustomProp = rcustomProp.test(name),
7060
+ style = elem.style; // Make sure that we're working with the right name. We don't
7061
+ // want to query the value if it is a CSS custom property
7062
+ // since they are user-defined.
7063
+
7064
+ if (!isCustomProp) {
7065
+ name = finalPropName(origName);
7066
+ } // Gets hook for the prefixed version, then unprefixed version
7067
+
7068
+
7069
+ hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // Check if we're setting a value
7070
+
7071
+ if (value !== undefined) {
7072
+ type = _typeof(value); // Convert "+=" or "-=" to relative numbers (#7345)
7073
+
7074
+ if (type === "string" && (ret = rcssNum.exec(value)) && ret[1]) {
7075
+ value = adjustCSS(elem, name, ret); // Fixes bug #9237
7076
+
7077
+ type = "number";
7078
+ } // Make sure that null and NaN values aren't set (#7116)
7079
+
7080
+
7081
+ if (value == null || value !== value) {
7082
+ return;
7083
+ } // If a number was passed in, add the unit (except for certain CSS properties)
7084
+ // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append
7085
+ // "px" to a few hardcoded values.
7086
+
7087
+
7088
+ if (type === "number" && !isCustomProp) {
7089
+ value += ret && ret[3] || (jQuery.cssNumber[origName] ? "" : "px");
7090
+ } // background-* props affect original clone's values
7091
+
7092
+
7093
+ if (!support.clearCloneStyle && value === "" && name.indexOf("background") === 0) {
7094
+ style[name] = "inherit";
7095
+ } // If a hook was provided, use that value, otherwise just set the specified value
7096
+
7097
+
7098
+ if (!hooks || !("set" in hooks) || (value = hooks.set(elem, value, extra)) !== undefined) {
7099
+ if (isCustomProp) {
7100
+ style.setProperty(name, value);
7101
+ } else {
7102
+ style[name] = value;
7103
+ }
7104
+ }
7105
+ } else {
7106
+ // If a hook was provided get the non-computed value from there
7107
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, false, extra)) !== undefined) {
7108
+ return ret;
7109
+ } // Otherwise just get the value from the style object
7110
+
7111
+
7112
+ return style[name];
7113
+ }
7114
+ },
7115
+ css: function css(elem, name, extra, styles) {
7116
+ var val,
7117
+ num,
7118
+ hooks,
7119
+ origName = camelCase(name),
7120
+ isCustomProp = rcustomProp.test(name); // Make sure that we're working with the right name. We don't
7121
+ // want to modify the value if it is a CSS custom property
7122
+ // since they are user-defined.
7123
+
7124
+ if (!isCustomProp) {
7125
+ name = finalPropName(origName);
7126
+ } // Try prefixed name followed by the unprefixed name
7127
+
7128
+
7129
+ hooks = jQuery.cssHooks[name] || jQuery.cssHooks[origName]; // If a hook was provided get the computed value from there
7130
+
7131
+ if (hooks && "get" in hooks) {
7132
+ val = hooks.get(elem, true, extra);
7133
+ } // Otherwise, if a way to get the computed value exists, use that
7134
+
7135
+
7136
+ if (val === undefined) {
7137
+ val = curCSS(elem, name, styles);
7138
+ } // Convert "normal" to computed value
7139
+
7140
+
7141
+ if (val === "normal" && name in cssNormalTransform) {
7142
+ val = cssNormalTransform[name];
7143
+ } // Make numeric if forced or a qualifier was provided and val looks numeric
7144
+
7145
+
7146
+ if (extra === "" || extra) {
7147
+ num = parseFloat(val);
7148
+ return extra === true || isFinite(num) ? num || 0 : val;
7149
+ }
7150
+
7151
+ return val;
7152
+ }
7153
+ });
7154
+ jQuery.each(["height", "width"], function (_i, dimension) {
7155
+ jQuery.cssHooks[dimension] = {
7156
+ get: function get(elem, computed, extra) {
7157
+ if (computed) {
7158
+ // Certain elements can have dimension info if we invisibly show them
7159
+ // but it must have a current display style that would benefit
7160
+ return rdisplayswap.test(jQuery.css(elem, "display")) && ( // Support: Safari 8+
7161
+ // Table columns in Safari have non-zero offsetWidth & zero
7162
+ // getBoundingClientRect().width unless display is changed.
7163
+ // Support: IE <=11 only
7164
+ // Running getBoundingClientRect on a disconnected node
7165
+ // in IE throws an error.
7166
+ !elem.getClientRects().length || !elem.getBoundingClientRect().width) ? swap(elem, cssShow, function () {
7167
+ return getWidthOrHeight(elem, dimension, extra);
7168
+ }) : getWidthOrHeight(elem, dimension, extra);
7169
+ }
7170
+ },
7171
+ set: function set(elem, value, extra) {
7172
+ var matches,
7173
+ styles = getStyles(elem),
7174
+ // Only read styles.position if the test has a chance to fail
7175
+ // to avoid forcing a reflow.
7176
+ scrollboxSizeBuggy = !support.scrollboxSize() && styles.position === "absolute",
7177
+ // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)
7178
+ boxSizingNeeded = scrollboxSizeBuggy || extra,
7179
+ isBorderBox = boxSizingNeeded && jQuery.css(elem, "boxSizing", false, styles) === "border-box",
7180
+ subtract = extra ? boxModelAdjustment(elem, dimension, extra, isBorderBox, styles) : 0; // Account for unreliable border-box dimensions by comparing offset* to computed and
7181
+ // faking a content-box to get border and padding (gh-3699)
7182
+
7183
+ if (isBorderBox && scrollboxSizeBuggy) {
7184
+ subtract -= Math.ceil(elem["offset" + dimension[0].toUpperCase() + dimension.slice(1)] - parseFloat(styles[dimension]) - boxModelAdjustment(elem, dimension, "border", false, styles) - 0.5);
7185
+ } // Convert to pixels if value adjustment is needed
7186
+
7187
+
7188
+ if (subtract && (matches = rcssNum.exec(value)) && (matches[3] || "px") !== "px") {
7189
+ elem.style[dimension] = value;
7190
+ value = jQuery.css(elem, dimension);
7191
+ }
7192
+
7193
+ return setPositiveNumber(elem, value, subtract);
7194
+ }
7195
+ };
7196
+ });
7197
+ jQuery.cssHooks.marginLeft = addGetHookIf(support.reliableMarginLeft, function (elem, computed) {
7198
+ if (computed) {
7199
+ return (parseFloat(curCSS(elem, "marginLeft")) || elem.getBoundingClientRect().left - swap(elem, {
7200
+ marginLeft: 0
7201
+ }, function () {
7202
+ return elem.getBoundingClientRect().left;
7203
+ })) + "px";
7204
+ }
7205
+ }); // These hooks are used by animate to expand properties
7206
+
7207
+ jQuery.each({
7208
+ margin: "",
7209
+ padding: "",
7210
+ border: "Width"
7211
+ }, function (prefix, suffix) {
7212
+ jQuery.cssHooks[prefix + suffix] = {
7213
+ expand: function expand(value) {
7214
+ var i = 0,
7215
+ expanded = {},
7216
+ // Assumes a single number if not a string
7217
+ parts = typeof value === "string" ? value.split(" ") : [value];
7218
+
7219
+ for (; i < 4; i++) {
7220
+ expanded[prefix + cssExpand[i] + suffix] = parts[i] || parts[i - 2] || parts[0];
7221
+ }
7222
+
7223
+ return expanded;
7224
+ }
7225
+ };
7226
+
7227
+ if (prefix !== "margin") {
7228
+ jQuery.cssHooks[prefix + suffix].set = setPositiveNumber;
7229
+ }
7230
+ });
7231
+ jQuery.fn.extend({
7232
+ css: function css(name, value) {
7233
+ return access(this, function (elem, name, value) {
7234
+ var styles,
7235
+ len,
7236
+ map = {},
7237
+ i = 0;
7238
+
7239
+ if (Array.isArray(name)) {
7240
+ styles = getStyles(elem);
7241
+ len = name.length;
7242
+
7243
+ for (; i < len; i++) {
7244
+ map[name[i]] = jQuery.css(elem, name[i], false, styles);
7245
+ }
7246
+
7247
+ return map;
7248
+ }
7249
+
7250
+ return value !== undefined ? jQuery.style(elem, name, value) : jQuery.css(elem, name);
7251
+ }, name, value, arguments.length > 1);
7252
+ }
7253
+ });
7254
+
7255
+ function Tween(elem, options, prop, end, easing) {
7256
+ return new Tween.prototype.init(elem, options, prop, end, easing);
7257
+ }
7258
+
7259
+ jQuery.Tween = Tween;
7260
+ Tween.prototype = {
7261
+ constructor: Tween,
7262
+ init: function init(elem, options, prop, end, easing, unit) {
7263
+ this.elem = elem;
7264
+ this.prop = prop;
7265
+ this.easing = easing || jQuery.easing._default;
7266
+ this.options = options;
7267
+ this.start = this.now = this.cur();
7268
+ this.end = end;
7269
+ this.unit = unit || (jQuery.cssNumber[prop] ? "" : "px");
7270
+ },
7271
+ cur: function cur() {
7272
+ var hooks = Tween.propHooks[this.prop];
7273
+ return hooks && hooks.get ? hooks.get(this) : Tween.propHooks._default.get(this);
7274
+ },
7275
+ run: function run(percent) {
7276
+ var eased,
7277
+ hooks = Tween.propHooks[this.prop];
7278
+
7279
+ if (this.options.duration) {
7280
+ this.pos = eased = jQuery.easing[this.easing](percent, this.options.duration * percent, 0, 1, this.options.duration);
7281
+ } else {
7282
+ this.pos = eased = percent;
7283
+ }
7284
+
7285
+ this.now = (this.end - this.start) * eased + this.start;
7286
+
7287
+ if (this.options.step) {
7288
+ this.options.step.call(this.elem, this.now, this);
7289
+ }
7290
+
7291
+ if (hooks && hooks.set) {
7292
+ hooks.set(this);
7293
+ } else {
7294
+ Tween.propHooks._default.set(this);
7295
+ }
7296
+
7297
+ return this;
7298
+ }
7299
+ };
7300
+ Tween.prototype.init.prototype = Tween.prototype;
7301
+ Tween.propHooks = {
7302
+ _default: {
7303
+ get: function get(tween) {
7304
+ var result; // Use a property on the element directly when it is not a DOM element,
7305
+ // or when there is no matching style property that exists.
7306
+
7307
+ if (tween.elem.nodeType !== 1 || tween.elem[tween.prop] != null && tween.elem.style[tween.prop] == null) {
7308
+ return tween.elem[tween.prop];
7309
+ } // Passing an empty string as a 3rd parameter to .css will automatically
7310
+ // attempt a parseFloat and fallback to a string if the parse fails.
7311
+ // Simple values such as "10px" are parsed to Float;
7312
+ // complex values such as "rotate(1rad)" are returned as-is.
7313
+
7314
+
7315
+ result = jQuery.css(tween.elem, tween.prop, ""); // Empty strings, null, undefined and "auto" are converted to 0.
7316
+
7317
+ return !result || result === "auto" ? 0 : result;
7318
+ },
7319
+ set: function set(tween) {
7320
+ // Use step hook for back compat.
7321
+ // Use cssHook if its there.
7322
+ // Use .style if available and use plain properties where available.
7323
+ if (jQuery.fx.step[tween.prop]) {
7324
+ jQuery.fx.step[tween.prop](tween);
7325
+ } else if (tween.elem.nodeType === 1 && (jQuery.cssHooks[tween.prop] || tween.elem.style[finalPropName(tween.prop)] != null)) {
7326
+ jQuery.style(tween.elem, tween.prop, tween.now + tween.unit);
7327
+ } else {
7328
+ tween.elem[tween.prop] = tween.now;
7329
+ }
7330
+ }
7331
+ }
7332
+ }; // Support: IE <=9 only
7333
+ // Panic based approach to setting things on disconnected nodes
7334
+
7335
+ Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
7336
+ set: function set(tween) {
7337
+ if (tween.elem.nodeType && tween.elem.parentNode) {
7338
+ tween.elem[tween.prop] = tween.now;
7339
+ }
7340
+ }
7341
+ };
7342
+ jQuery.easing = {
7343
+ linear: function linear(p) {
7344
+ return p;
7345
+ },
7346
+ swing: function swing(p) {
7347
+ return 0.5 - Math.cos(p * Math.PI) / 2;
7348
+ },
7349
+ _default: "swing"
7350
+ };
7351
+ jQuery.fx = Tween.prototype.init; // Back compat <1.8 extension point
7352
+
7353
+ jQuery.fx.step = {};
7354
+ var fxNow,
7355
+ inProgress,
7356
+ rfxtypes = /^(?:toggle|show|hide)$/,
7357
+ rrun = /queueHooks$/;
7358
+
7359
+ function schedule() {
7360
+ if (inProgress) {
7361
+ if (document.hidden === false && window.requestAnimationFrame) {
7362
+ window.requestAnimationFrame(schedule);
7363
+ } else {
7364
+ window.setTimeout(schedule, jQuery.fx.interval);
7365
+ }
7366
+
7367
+ jQuery.fx.tick();
7368
+ }
7369
+ } // Animations created synchronously will run synchronously
7370
+
7371
+
7372
+ function createFxNow() {
7373
+ window.setTimeout(function () {
7374
+ fxNow = undefined;
7375
+ });
7376
+ return fxNow = Date.now();
7377
+ } // Generate parameters to create a standard animation
7378
+
7379
+
7380
+ function genFx(type, includeWidth) {
7381
+ var which,
7382
+ i = 0,
7383
+ attrs = {
7384
+ height: type
7385
+ }; // If we include width, step value is 1 to do all cssExpand values,
7386
+ // otherwise step value is 2 to skip over Left and Right
7387
+
7388
+ includeWidth = includeWidth ? 1 : 0;
7389
+
7390
+ for (; i < 4; i += 2 - includeWidth) {
7391
+ which = cssExpand[i];
7392
+ attrs["margin" + which] = attrs["padding" + which] = type;
7393
+ }
7394
+
7395
+ if (includeWidth) {
7396
+ attrs.opacity = attrs.width = type;
7397
+ }
7398
+
7399
+ return attrs;
7400
+ }
7401
+
7402
+ function createTween(value, prop, animation) {
7403
+ var tween,
7404
+ collection = (Animation.tweeners[prop] || []).concat(Animation.tweeners["*"]),
7405
+ index = 0,
7406
+ length = collection.length;
7407
+
7408
+ for (; index < length; index++) {
7409
+ if (tween = collection[index].call(animation, prop, value)) {
7410
+ // We're done with this property
7411
+ return tween;
7412
+ }
7413
+ }
7414
+ }
7415
+
7416
+ function defaultPrefilter(elem, props, opts) {
7417
+ var prop,
7418
+ value,
7419
+ toggle,
7420
+ hooks,
7421
+ oldfire,
7422
+ propTween,
7423
+ restoreDisplay,
7424
+ display,
7425
+ isBox = "width" in props || "height" in props,
7426
+ anim = this,
7427
+ orig = {},
7428
+ style = elem.style,
7429
+ hidden = elem.nodeType && isHiddenWithinTree(elem),
7430
+ dataShow = dataPriv.get(elem, "fxshow"); // Queue-skipping animations hijack the fx hooks
7431
+
7432
+ if (!opts.queue) {
7433
+ hooks = jQuery._queueHooks(elem, "fx");
7434
+
7435
+ if (hooks.unqueued == null) {
7436
+ hooks.unqueued = 0;
7437
+ oldfire = hooks.empty.fire;
7438
+
7439
+ hooks.empty.fire = function () {
7440
+ if (!hooks.unqueued) {
7441
+ oldfire();
7442
+ }
7443
+ };
7444
+ }
7445
+
7446
+ hooks.unqueued++;
7447
+ anim.always(function () {
7448
+ // Ensure the complete handler is called before this completes
7449
+ anim.always(function () {
7450
+ hooks.unqueued--;
7451
+
7452
+ if (!jQuery.queue(elem, "fx").length) {
7453
+ hooks.empty.fire();
7454
+ }
7455
+ });
7456
+ });
7457
+ } // Detect show/hide animations
7458
+
7459
+
7460
+ for (prop in props) {
7461
+ value = props[prop];
7462
+
7463
+ if (rfxtypes.test(value)) {
7464
+ delete props[prop];
7465
+ toggle = toggle || value === "toggle";
7466
+
7467
+ if (value === (hidden ? "hide" : "show")) {
7468
+ // Pretend to be hidden if this is a "show" and
7469
+ // there is still data from a stopped show/hide
7470
+ if (value === "show" && dataShow && dataShow[prop] !== undefined) {
7471
+ hidden = true; // Ignore all other no-op show/hide data
7472
+ } else {
7473
+ continue;
7474
+ }
7475
+ }
7476
+
7477
+ orig[prop] = dataShow && dataShow[prop] || jQuery.style(elem, prop);
7478
+ }
7479
+ } // Bail out if this is a no-op like .hide().hide()
7480
+
7481
+
7482
+ propTween = !jQuery.isEmptyObject(props);
7483
+
7484
+ if (!propTween && jQuery.isEmptyObject(orig)) {
7485
+ return;
7486
+ } // Restrict "overflow" and "display" styles during box animations
7487
+
7488
+
7489
+ if (isBox && elem.nodeType === 1) {
7490
+ // Support: IE <=9 - 11, Edge 12 - 15
7491
+ // Record all 3 overflow attributes because IE does not infer the shorthand
7492
+ // from identically-valued overflowX and overflowY and Edge just mirrors
7493
+ // the overflowX value there.
7494
+ opts.overflow = [style.overflow, style.overflowX, style.overflowY]; // Identify a display type, preferring old show/hide data over the CSS cascade
7495
+
7496
+ restoreDisplay = dataShow && dataShow.display;
7497
+
7498
+ if (restoreDisplay == null) {
7499
+ restoreDisplay = dataPriv.get(elem, "display");
7500
+ }
7501
+
7502
+ display = jQuery.css(elem, "display");
7503
+
7504
+ if (display === "none") {
7505
+ if (restoreDisplay) {
7506
+ display = restoreDisplay;
7507
+ } else {
7508
+ // Get nonempty value(s) by temporarily forcing visibility
7509
+ showHide([elem], true);
7510
+ restoreDisplay = elem.style.display || restoreDisplay;
7511
+ display = jQuery.css(elem, "display");
7512
+ showHide([elem]);
7513
+ }
7514
+ } // Animate inline elements as inline-block
7515
+
7516
+
7517
+ if (display === "inline" || display === "inline-block" && restoreDisplay != null) {
7518
+ if (jQuery.css(elem, "float") === "none") {
7519
+ // Restore the original display value at the end of pure show/hide animations
7520
+ if (!propTween) {
7521
+ anim.done(function () {
7522
+ style.display = restoreDisplay;
7523
+ });
7524
+
7525
+ if (restoreDisplay == null) {
7526
+ display = style.display;
7527
+ restoreDisplay = display === "none" ? "" : display;
7528
+ }
7529
+ }
7530
+
7531
+ style.display = "inline-block";
7532
+ }
7533
+ }
7534
+ }
7535
+
7536
+ if (opts.overflow) {
7537
+ style.overflow = "hidden";
7538
+ anim.always(function () {
7539
+ style.overflow = opts.overflow[0];
7540
+ style.overflowX = opts.overflow[1];
7541
+ style.overflowY = opts.overflow[2];
7542
+ });
7543
+ } // Implement show/hide animations
7544
+
7545
+
7546
+ propTween = false;
7547
+
7548
+ for (prop in orig) {
7549
+ // General show/hide setup for this element animation
7550
+ if (!propTween) {
7551
+ if (dataShow) {
7552
+ if ("hidden" in dataShow) {
7553
+ hidden = dataShow.hidden;
7554
+ }
7555
+ } else {
7556
+ dataShow = dataPriv.access(elem, "fxshow", {
7557
+ display: restoreDisplay
7558
+ });
7559
+ } // Store hidden/visible for toggle so `.stop().toggle()` "reverses"
7560
+
7561
+
7562
+ if (toggle) {
7563
+ dataShow.hidden = !hidden;
7564
+ } // Show elements before animating them
7565
+
7566
+
7567
+ if (hidden) {
7568
+ showHide([elem], true);
7569
+ }
7570
+ /* eslint-disable no-loop-func */
7571
+
7572
+
7573
+ anim.done(function () {
7574
+ /* eslint-enable no-loop-func */
7575
+ // The final step of a "hide" animation is actually hiding the element
7576
+ if (!hidden) {
7577
+ showHide([elem]);
7578
+ }
7579
+
7580
+ dataPriv.remove(elem, "fxshow");
7581
+
7582
+ for (prop in orig) {
7583
+ jQuery.style(elem, prop, orig[prop]);
7584
+ }
7585
+ });
7586
+ } // Per-property setup
7587
+
7588
+
7589
+ propTween = createTween(hidden ? dataShow[prop] : 0, prop, anim);
7590
+
7591
+ if (!(prop in dataShow)) {
7592
+ dataShow[prop] = propTween.start;
7593
+
7594
+ if (hidden) {
7595
+ propTween.end = propTween.start;
7596
+ propTween.start = 0;
7597
+ }
7598
+ }
7599
+ }
7600
+ }
7601
+
7602
+ function propFilter(props, specialEasing) {
7603
+ var index, name, easing, value, hooks; // camelCase, specialEasing and expand cssHook pass
7604
+
7605
+ for (index in props) {
7606
+ name = camelCase(index);
7607
+ easing = specialEasing[name];
7608
+ value = props[index];
7609
+
7610
+ if (Array.isArray(value)) {
7611
+ easing = value[1];
7612
+ value = props[index] = value[0];
7613
+ }
7614
+
7615
+ if (index !== name) {
7616
+ props[name] = value;
7617
+ delete props[index];
7618
+ }
7619
+
7620
+ hooks = jQuery.cssHooks[name];
7621
+
7622
+ if (hooks && "expand" in hooks) {
7623
+ value = hooks.expand(value);
7624
+ delete props[name]; // Not quite $.extend, this won't overwrite existing keys.
7625
+ // Reusing 'index' because we have the correct "name"
7626
+
7627
+ for (index in value) {
7628
+ if (!(index in props)) {
7629
+ props[index] = value[index];
7630
+ specialEasing[index] = easing;
7631
+ }
7632
+ }
7633
+ } else {
7634
+ specialEasing[name] = easing;
7635
+ }
7636
+ }
7637
+ }
7638
+
7639
+ function Animation(elem, properties, options) {
7640
+ var result,
7641
+ stopped,
7642
+ index = 0,
7643
+ length = Animation.prefilters.length,
7644
+ deferred = jQuery.Deferred().always(function () {
7645
+ // Don't match elem in the :animated selector
7646
+ delete tick.elem;
7647
+ }),
7648
+ tick = function tick() {
7649
+ if (stopped) {
7650
+ return false;
7651
+ }
7652
+
7653
+ var currentTime = fxNow || createFxNow(),
7654
+ remaining = Math.max(0, animation.startTime + animation.duration - currentTime),
7655
+ // Support: Android 2.3 only
7656
+ // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
7657
+ temp = remaining / animation.duration || 0,
7658
+ percent = 1 - temp,
7659
+ index = 0,
7660
+ length = animation.tweens.length;
7661
+
7662
+ for (; index < length; index++) {
7663
+ animation.tweens[index].run(percent);
7664
+ }
7665
+
7666
+ deferred.notifyWith(elem, [animation, percent, remaining]); // If there's more to do, yield
7667
+
7668
+ if (percent < 1 && length) {
7669
+ return remaining;
7670
+ } // If this was an empty animation, synthesize a final progress notification
7671
+
7672
+
7673
+ if (!length) {
7674
+ deferred.notifyWith(elem, [animation, 1, 0]);
7675
+ } // Resolve the animation and report its conclusion
7676
+
7677
+
7678
+ deferred.resolveWith(elem, [animation]);
7679
+ return false;
7680
+ },
7681
+ animation = deferred.promise({
7682
+ elem: elem,
7683
+ props: jQuery.extend({}, properties),
7684
+ opts: jQuery.extend(true, {
7685
+ specialEasing: {},
7686
+ easing: jQuery.easing._default
7687
+ }, options),
7688
+ originalProperties: properties,
7689
+ originalOptions: options,
7690
+ startTime: fxNow || createFxNow(),
7691
+ duration: options.duration,
7692
+ tweens: [],
7693
+ createTween: function createTween(prop, end) {
7694
+ var tween = jQuery.Tween(elem, animation.opts, prop, end, animation.opts.specialEasing[prop] || animation.opts.easing);
7695
+ animation.tweens.push(tween);
7696
+ return tween;
7697
+ },
7698
+ stop: function stop(gotoEnd) {
7699
+ var index = 0,
7700
+ // If we are going to the end, we want to run all the tweens
7701
+ // otherwise we skip this part
7702
+ length = gotoEnd ? animation.tweens.length : 0;
7703
+
7704
+ if (stopped) {
7705
+ return this;
7706
+ }
7707
+
7708
+ stopped = true;
7709
+
7710
+ for (; index < length; index++) {
7711
+ animation.tweens[index].run(1);
7712
+ } // Resolve when we played the last frame; otherwise, reject
7713
+
7714
+
7715
+ if (gotoEnd) {
7716
+ deferred.notifyWith(elem, [animation, 1, 0]);
7717
+ deferred.resolveWith(elem, [animation, gotoEnd]);
7718
+ } else {
7719
+ deferred.rejectWith(elem, [animation, gotoEnd]);
7720
+ }
7721
+
7722
+ return this;
7723
+ }
7724
+ }),
7725
+ props = animation.props;
7726
+
7727
+ propFilter(props, animation.opts.specialEasing);
7728
+
7729
+ for (; index < length; index++) {
7730
+ result = Animation.prefilters[index].call(animation, elem, props, animation.opts);
7731
+
7732
+ if (result) {
7733
+ if (isFunction(result.stop)) {
7734
+ jQuery._queueHooks(animation.elem, animation.opts.queue).stop = result.stop.bind(result);
7735
+ }
7736
+
7737
+ return result;
7738
+ }
7739
+ }
7740
+
7741
+ jQuery.map(props, createTween, animation);
7742
+
7743
+ if (isFunction(animation.opts.start)) {
7744
+ animation.opts.start.call(elem, animation);
7745
+ } // Attach callbacks from options
7746
+
7747
+
7748
+ animation.progress(animation.opts.progress).done(animation.opts.done, animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always);
7749
+ jQuery.fx.timer(jQuery.extend(tick, {
7750
+ elem: elem,
7751
+ anim: animation,
7752
+ queue: animation.opts.queue
7753
+ }));
7754
+ return animation;
7755
+ }
7756
+
7757
+ jQuery.Animation = jQuery.extend(Animation, {
7758
+ tweeners: {
7759
+ "*": [function (prop, value) {
7760
+ var tween = this.createTween(prop, value);
7761
+ adjustCSS(tween.elem, prop, rcssNum.exec(value), tween);
7762
+ return tween;
7763
+ }]
7764
+ },
7765
+ tweener: function tweener(props, callback) {
7766
+ if (isFunction(props)) {
7767
+ callback = props;
7768
+ props = ["*"];
7769
+ } else {
7770
+ props = props.match(rnothtmlwhite);
7771
+ }
7772
+
7773
+ var prop,
7774
+ index = 0,
7775
+ length = props.length;
7776
+
7777
+ for (; index < length; index++) {
7778
+ prop = props[index];
7779
+ Animation.tweeners[prop] = Animation.tweeners[prop] || [];
7780
+ Animation.tweeners[prop].unshift(callback);
7781
+ }
7782
+ },
7783
+ prefilters: [defaultPrefilter],
7784
+ prefilter: function prefilter(callback, prepend) {
7785
+ if (prepend) {
7786
+ Animation.prefilters.unshift(callback);
7787
+ } else {
7788
+ Animation.prefilters.push(callback);
7789
+ }
7790
+ }
7791
+ });
7792
+
7793
+ jQuery.speed = function (speed, easing, fn) {
7794
+ var opt = speed && _typeof(speed) === "object" ? jQuery.extend({}, speed) : {
7795
+ complete: fn || !fn && easing || isFunction(speed) && speed,
7796
+ duration: speed,
7797
+ easing: fn && easing || easing && !isFunction(easing) && easing
7798
+ }; // Go to the end state if fx are off
7799
+
7800
+ if (jQuery.fx.off) {
7801
+ opt.duration = 0;
7802
+ } else {
7803
+ if (typeof opt.duration !== "number") {
7804
+ if (opt.duration in jQuery.fx.speeds) {
7805
+ opt.duration = jQuery.fx.speeds[opt.duration];
7806
+ } else {
7807
+ opt.duration = jQuery.fx.speeds._default;
7808
+ }
7809
+ }
7810
+ } // Normalize opt.queue - true/undefined/null -> "fx"
7811
+
7812
+
7813
+ if (opt.queue == null || opt.queue === true) {
7814
+ opt.queue = "fx";
7815
+ } // Queueing
7816
+
7817
+
7818
+ opt.old = opt.complete;
7819
+
7820
+ opt.complete = function () {
7821
+ if (isFunction(opt.old)) {
7822
+ opt.old.call(this);
7823
+ }
7824
+
7825
+ if (opt.queue) {
7826
+ jQuery.dequeue(this, opt.queue);
7827
+ }
7828
+ };
7829
+
7830
+ return opt;
7831
+ };
7832
+
7833
+ jQuery.fn.extend({
7834
+ fadeTo: function fadeTo(speed, to, easing, callback) {
7835
+ // Show any hidden elements after setting opacity to 0
7836
+ return this.filter(isHiddenWithinTree).css("opacity", 0).show() // Animate to the value specified
7837
+ .end().animate({
7838
+ opacity: to
7839
+ }, speed, easing, callback);
7840
+ },
7841
+ animate: function animate(prop, speed, easing, callback) {
7842
+ var empty = jQuery.isEmptyObject(prop),
7843
+ optall = jQuery.speed(speed, easing, callback),
7844
+ doAnimation = function doAnimation() {
7845
+ // Operate on a copy of prop so per-property easing won't be lost
7846
+ var anim = Animation(this, jQuery.extend({}, prop), optall); // Empty animations, or finishing resolves immediately
7847
+
7848
+ if (empty || dataPriv.get(this, "finish")) {
7849
+ anim.stop(true);
7850
+ }
7851
+ };
7852
+
7853
+ doAnimation.finish = doAnimation;
7854
+ return empty || optall.queue === false ? this.each(doAnimation) : this.queue(optall.queue, doAnimation);
7855
+ },
7856
+ stop: function stop(type, clearQueue, gotoEnd) {
7857
+ var stopQueue = function stopQueue(hooks) {
7858
+ var stop = hooks.stop;
7859
+ delete hooks.stop;
7860
+ stop(gotoEnd);
7861
+ };
7862
+
7863
+ if (typeof type !== "string") {
7864
+ gotoEnd = clearQueue;
7865
+ clearQueue = type;
7866
+ type = undefined;
7867
+ }
7868
+
7869
+ if (clearQueue) {
7870
+ this.queue(type || "fx", []);
7871
+ }
7872
+
7873
+ return this.each(function () {
7874
+ var dequeue = true,
7875
+ index = type != null && type + "queueHooks",
7876
+ timers = jQuery.timers,
7877
+ data = dataPriv.get(this);
7878
+
7879
+ if (index) {
7880
+ if (data[index] && data[index].stop) {
7881
+ stopQueue(data[index]);
7882
+ }
7883
+ } else {
7884
+ for (index in data) {
7885
+ if (data[index] && data[index].stop && rrun.test(index)) {
7886
+ stopQueue(data[index]);
7887
+ }
7888
+ }
7889
+ }
7890
+
7891
+ for (index = timers.length; index--;) {
7892
+ if (timers[index].elem === this && (type == null || timers[index].queue === type)) {
7893
+ timers[index].anim.stop(gotoEnd);
7894
+ dequeue = false;
7895
+ timers.splice(index, 1);
7896
+ }
7897
+ } // Start the next in the queue if the last step wasn't forced.
7898
+ // Timers currently will call their complete callbacks, which
7899
+ // will dequeue but only if they were gotoEnd.
7900
+
7901
+
7902
+ if (dequeue || !gotoEnd) {
7903
+ jQuery.dequeue(this, type);
7904
+ }
7905
+ });
7906
+ },
7907
+ finish: function finish(type) {
7908
+ if (type !== false) {
7909
+ type = type || "fx";
7910
+ }
7911
+
7912
+ return this.each(function () {
7913
+ var index,
7914
+ data = dataPriv.get(this),
7915
+ queue = data[type + "queue"],
7916
+ hooks = data[type + "queueHooks"],
7917
+ timers = jQuery.timers,
7918
+ length = queue ? queue.length : 0; // Enable finishing flag on private data
7919
+
7920
+ data.finish = true; // Empty the queue first
7921
+
7922
+ jQuery.queue(this, type, []);
7923
+
7924
+ if (hooks && hooks.stop) {
7925
+ hooks.stop.call(this, true);
7926
+ } // Look for any active animations, and finish them
7927
+
7928
+
7929
+ for (index = timers.length; index--;) {
7930
+ if (timers[index].elem === this && timers[index].queue === type) {
7931
+ timers[index].anim.stop(true);
7932
+ timers.splice(index, 1);
7933
+ }
7934
+ } // Look for any animations in the old queue and finish them
7935
+
7936
+
7937
+ for (index = 0; index < length; index++) {
7938
+ if (queue[index] && queue[index].finish) {
7939
+ queue[index].finish.call(this);
7940
+ }
7941
+ } // Turn off finishing flag
7942
+
7943
+
7944
+ delete data.finish;
7945
+ });
7946
+ }
7947
+ });
7948
+ jQuery.each(["toggle", "show", "hide"], function (_i, name) {
7949
+ var cssFn = jQuery.fn[name];
7950
+
7951
+ jQuery.fn[name] = function (speed, easing, callback) {
7952
+ return speed == null || typeof speed === "boolean" ? cssFn.apply(this, arguments) : this.animate(genFx(name, true), speed, easing, callback);
7953
+ };
7954
+ }); // Generate shortcuts for custom animations
7955
+
7956
+ jQuery.each({
7957
+ slideDown: genFx("show"),
7958
+ slideUp: genFx("hide"),
7959
+ slideToggle: genFx("toggle"),
7960
+ fadeIn: {
7961
+ opacity: "show"
7962
+ },
7963
+ fadeOut: {
7964
+ opacity: "hide"
7965
+ },
7966
+ fadeToggle: {
7967
+ opacity: "toggle"
7968
+ }
7969
+ }, function (name, props) {
7970
+ jQuery.fn[name] = function (speed, easing, callback) {
7971
+ return this.animate(props, speed, easing, callback);
7972
+ };
7973
+ });
7974
+ jQuery.timers = [];
7975
+
7976
+ jQuery.fx.tick = function () {
7977
+ var timer,
7978
+ i = 0,
7979
+ timers = jQuery.timers;
7980
+ fxNow = Date.now();
7981
+
7982
+ for (; i < timers.length; i++) {
7983
+ timer = timers[i]; // Run the timer and safely remove it when done (allowing for external removal)
7984
+
7985
+ if (!timer() && timers[i] === timer) {
7986
+ timers.splice(i--, 1);
7987
+ }
7988
+ }
7989
+
7990
+ if (!timers.length) {
7991
+ jQuery.fx.stop();
7992
+ }
7993
+
7994
+ fxNow = undefined;
7995
+ };
7996
+
7997
+ jQuery.fx.timer = function (timer) {
7998
+ jQuery.timers.push(timer);
7999
+ jQuery.fx.start();
8000
+ };
8001
+
8002
+ jQuery.fx.interval = 13;
8003
+
8004
+ jQuery.fx.start = function () {
8005
+ if (inProgress) {
8006
+ return;
8007
+ }
8008
+
8009
+ inProgress = true;
8010
+ schedule();
8011
+ };
8012
+
8013
+ jQuery.fx.stop = function () {
8014
+ inProgress = null;
8015
+ };
8016
+
8017
+ jQuery.fx.speeds = {
8018
+ slow: 600,
8019
+ fast: 200,
8020
+ // Default speed
8021
+ _default: 400
8022
+ }; // Based off of the plugin by Clint Helfers, with permission.
8023
+ // https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
8024
+
8025
+ jQuery.fn.delay = function (time, type) {
8026
+ time = jQuery.fx ? jQuery.fx.speeds[time] || time : time;
8027
+ type = type || "fx";
8028
+ return this.queue(type, function (next, hooks) {
8029
+ var timeout = window.setTimeout(next, time);
8030
+
8031
+ hooks.stop = function () {
8032
+ window.clearTimeout(timeout);
8033
+ };
8034
+ });
8035
+ };
8036
+
8037
+ (function () {
8038
+ var input = document.createElement("input"),
8039
+ select = document.createElement("select"),
8040
+ opt = select.appendChild(document.createElement("option"));
8041
+ input.type = "checkbox"; // Support: Android <=4.3 only
8042
+ // Default value for a checkbox should be "on"
8043
+
8044
+ support.checkOn = input.value !== ""; // Support: IE <=11 only
8045
+ // Must access selectedIndex to make default options select
8046
+
8047
+ support.optSelected = opt.selected; // Support: IE <=11 only
8048
+ // An input loses its value after becoming a radio
8049
+
8050
+ input = document.createElement("input");
8051
+ input.value = "t";
8052
+ input.type = "radio";
8053
+ support.radioValue = input.value === "t";
8054
+ })();
8055
+
8056
+ var boolHook,
8057
+ attrHandle = jQuery.expr.attrHandle;
8058
+ jQuery.fn.extend({
8059
+ attr: function attr(name, value) {
8060
+ return access(this, jQuery.attr, name, value, arguments.length > 1);
8061
+ },
8062
+ removeAttr: function removeAttr(name) {
8063
+ return this.each(function () {
8064
+ jQuery.removeAttr(this, name);
8065
+ });
8066
+ }
8067
+ });
8068
+ jQuery.extend({
8069
+ attr: function attr(elem, name, value) {
8070
+ var ret,
8071
+ hooks,
8072
+ nType = elem.nodeType; // Don't get/set attributes on text, comment and attribute nodes
8073
+
8074
+ if (nType === 3 || nType === 8 || nType === 2) {
8075
+ return;
8076
+ } // Fallback to prop when attributes are not supported
8077
+
8078
+
8079
+ if (typeof elem.getAttribute === "undefined") {
8080
+ return jQuery.prop(elem, name, value);
8081
+ } // Attribute hooks are determined by the lowercase version
8082
+ // Grab necessary hook if one is defined
8083
+
8084
+
8085
+ if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
8086
+ hooks = jQuery.attrHooks[name.toLowerCase()] || (jQuery.expr.match.bool.test(name) ? boolHook : undefined);
8087
+ }
8088
+
8089
+ if (value !== undefined) {
8090
+ if (value === null) {
8091
+ jQuery.removeAttr(elem, name);
8092
+ return;
8093
+ }
8094
+
8095
+ if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
8096
+ return ret;
8097
+ }
8098
+
8099
+ elem.setAttribute(name, value + "");
8100
+ return value;
8101
+ }
8102
+
8103
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
8104
+ return ret;
8105
+ }
8106
+
8107
+ ret = jQuery.find.attr(elem, name); // Non-existent attributes return null, we normalize to undefined
8108
+
8109
+ return ret == null ? undefined : ret;
8110
+ },
8111
+ attrHooks: {
8112
+ type: {
8113
+ set: function set(elem, value) {
8114
+ if (!support.radioValue && value === "radio" && nodeName(elem, "input")) {
8115
+ var val = elem.value;
8116
+ elem.setAttribute("type", value);
8117
+
8118
+ if (val) {
8119
+ elem.value = val;
8120
+ }
8121
+
8122
+ return value;
8123
+ }
8124
+ }
8125
+ }
8126
+ },
8127
+ removeAttr: function removeAttr(elem, value) {
8128
+ var name,
8129
+ i = 0,
8130
+ // Attribute names can contain non-HTML whitespace characters
8131
+ // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
8132
+ attrNames = value && value.match(rnothtmlwhite);
8133
+
8134
+ if (attrNames && elem.nodeType === 1) {
8135
+ while (name = attrNames[i++]) {
8136
+ elem.removeAttribute(name);
8137
+ }
8138
+ }
8139
+ }
8140
+ }); // Hooks for boolean attributes
8141
+
8142
+ boolHook = {
8143
+ set: function set(elem, value, name) {
8144
+ if (value === false) {
8145
+ // Remove boolean attributes when set to false
8146
+ jQuery.removeAttr(elem, name);
8147
+ } else {
8148
+ elem.setAttribute(name, name);
8149
+ }
8150
+
8151
+ return name;
8152
+ }
8153
+ };
8154
+ jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g), function (_i, name) {
8155
+ var getter = attrHandle[name] || jQuery.find.attr;
8156
+
8157
+ attrHandle[name] = function (elem, name, isXML) {
8158
+ var ret,
8159
+ handle,
8160
+ lowercaseName = name.toLowerCase();
8161
+
8162
+ if (!isXML) {
8163
+ // Avoid an infinite loop by temporarily removing this function from the getter
8164
+ handle = attrHandle[lowercaseName];
8165
+ attrHandle[lowercaseName] = ret;
8166
+ ret = getter(elem, name, isXML) != null ? lowercaseName : null;
8167
+ attrHandle[lowercaseName] = handle;
8168
+ }
8169
+
8170
+ return ret;
8171
+ };
8172
+ });
8173
+ var rfocusable = /^(?:input|select|textarea|button)$/i,
8174
+ rclickable = /^(?:a|area)$/i;
8175
+ jQuery.fn.extend({
8176
+ prop: function prop(name, value) {
8177
+ return access(this, jQuery.prop, name, value, arguments.length > 1);
8178
+ },
8179
+ removeProp: function removeProp(name) {
8180
+ return this.each(function () {
8181
+ delete this[jQuery.propFix[name] || name];
8182
+ });
8183
+ }
8184
+ });
8185
+ jQuery.extend({
8186
+ prop: function prop(elem, name, value) {
8187
+ var ret,
8188
+ hooks,
8189
+ nType = elem.nodeType; // Don't get/set properties on text, comment and attribute nodes
8190
+
8191
+ if (nType === 3 || nType === 8 || nType === 2) {
8192
+ return;
8193
+ }
8194
+
8195
+ if (nType !== 1 || !jQuery.isXMLDoc(elem)) {
8196
+ // Fix name and attach hooks
8197
+ name = jQuery.propFix[name] || name;
8198
+ hooks = jQuery.propHooks[name];
8199
+ }
8200
+
8201
+ if (value !== undefined) {
8202
+ if (hooks && "set" in hooks && (ret = hooks.set(elem, value, name)) !== undefined) {
8203
+ return ret;
8204
+ }
8205
+
8206
+ return elem[name] = value;
8207
+ }
8208
+
8209
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, name)) !== null) {
8210
+ return ret;
8211
+ }
8212
+
8213
+ return elem[name];
8214
+ },
8215
+ propHooks: {
8216
+ tabIndex: {
8217
+ get: function get(elem) {
8218
+ // Support: IE <=9 - 11 only
8219
+ // elem.tabIndex doesn't always return the
8220
+ // correct value when it hasn't been explicitly set
8221
+ // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
8222
+ // Use proper attribute retrieval(#12072)
8223
+ var tabindex = jQuery.find.attr(elem, "tabindex");
8224
+
8225
+ if (tabindex) {
8226
+ return parseInt(tabindex, 10);
8227
+ }
8228
+
8229
+ if (rfocusable.test(elem.nodeName) || rclickable.test(elem.nodeName) && elem.href) {
8230
+ return 0;
8231
+ }
8232
+
8233
+ return -1;
8234
+ }
8235
+ }
8236
+ },
8237
+ propFix: {
8238
+ "for": "htmlFor",
8239
+ "class": "className"
8240
+ }
8241
+ }); // Support: IE <=11 only
8242
+ // Accessing the selectedIndex property
8243
+ // forces the browser to respect setting selected
8244
+ // on the option
8245
+ // The getter ensures a default option is selected
8246
+ // when in an optgroup
8247
+ // eslint rule "no-unused-expressions" is disabled for this code
8248
+ // since it considers such accessions noop
8249
+
8250
+ if (!support.optSelected) {
8251
+ jQuery.propHooks.selected = {
8252
+ get: function get(elem) {
8253
+ /* eslint no-unused-expressions: "off" */
8254
+ var parent = elem.parentNode;
8255
+
8256
+ if (parent && parent.parentNode) {
8257
+ parent.parentNode.selectedIndex;
8258
+ }
8259
+
8260
+ return null;
8261
+ },
8262
+ set: function set(elem) {
8263
+ /* eslint no-unused-expressions: "off" */
8264
+ var parent = elem.parentNode;
8265
+
8266
+ if (parent) {
8267
+ parent.selectedIndex;
8268
+
8269
+ if (parent.parentNode) {
8270
+ parent.parentNode.selectedIndex;
8271
+ }
8272
+ }
8273
+ }
8274
+ };
8275
+ }
8276
+
8277
+ jQuery.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function () {
8278
+ jQuery.propFix[this.toLowerCase()] = this;
8279
+ }); // Strip and collapse whitespace according to HTML spec
8280
+ // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
8281
+
8282
+ function stripAndCollapse(value) {
8283
+ var tokens = value.match(rnothtmlwhite) || [];
8284
+ return tokens.join(" ");
8285
+ }
8286
+
8287
+ function getClass(elem) {
8288
+ return elem.getAttribute && elem.getAttribute("class") || "";
8289
+ }
8290
+
8291
+ function classesToArray(value) {
8292
+ if (Array.isArray(value)) {
8293
+ return value;
8294
+ }
8295
+
8296
+ if (typeof value === "string") {
8297
+ return value.match(rnothtmlwhite) || [];
8298
+ }
8299
+
8300
+ return [];
8301
+ }
8302
+
8303
+ jQuery.fn.extend({
8304
+ addClass: function addClass(value) {
8305
+ var classes,
8306
+ elem,
8307
+ cur,
8308
+ curValue,
8309
+ clazz,
8310
+ j,
8311
+ finalValue,
8312
+ i = 0;
8313
+
8314
+ if (isFunction(value)) {
8315
+ return this.each(function (j) {
8316
+ jQuery(this).addClass(value.call(this, j, getClass(this)));
8317
+ });
8318
+ }
8319
+
8320
+ classes = classesToArray(value);
8321
+
8322
+ if (classes.length) {
8323
+ while (elem = this[i++]) {
8324
+ curValue = getClass(elem);
8325
+ cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
8326
+
8327
+ if (cur) {
8328
+ j = 0;
8329
+
8330
+ while (clazz = classes[j++]) {
8331
+ if (cur.indexOf(" " + clazz + " ") < 0) {
8332
+ cur += clazz + " ";
8333
+ }
8334
+ } // Only assign if different to avoid unneeded rendering.
8335
+
8336
+
8337
+ finalValue = stripAndCollapse(cur);
8338
+
8339
+ if (curValue !== finalValue) {
8340
+ elem.setAttribute("class", finalValue);
8341
+ }
8342
+ }
8343
+ }
8344
+ }
8345
+
8346
+ return this;
8347
+ },
8348
+ removeClass: function removeClass(value) {
8349
+ var classes,
8350
+ elem,
8351
+ cur,
8352
+ curValue,
8353
+ clazz,
8354
+ j,
8355
+ finalValue,
8356
+ i = 0;
8357
+
8358
+ if (isFunction(value)) {
8359
+ return this.each(function (j) {
8360
+ jQuery(this).removeClass(value.call(this, j, getClass(this)));
8361
+ });
8362
+ }
8363
+
8364
+ if (!arguments.length) {
8365
+ return this.attr("class", "");
8366
+ }
8367
+
8368
+ classes = classesToArray(value);
8369
+
8370
+ if (classes.length) {
8371
+ while (elem = this[i++]) {
8372
+ curValue = getClass(elem); // This expression is here for better compressibility (see addClass)
8373
+
8374
+ cur = elem.nodeType === 1 && " " + stripAndCollapse(curValue) + " ";
8375
+
8376
+ if (cur) {
8377
+ j = 0;
8378
+
8379
+ while (clazz = classes[j++]) {
8380
+ // Remove *all* instances
8381
+ while (cur.indexOf(" " + clazz + " ") > -1) {
8382
+ cur = cur.replace(" " + clazz + " ", " ");
8383
+ }
8384
+ } // Only assign if different to avoid unneeded rendering.
8385
+
8386
+
8387
+ finalValue = stripAndCollapse(cur);
8388
+
8389
+ if (curValue !== finalValue) {
8390
+ elem.setAttribute("class", finalValue);
8391
+ }
8392
+ }
8393
+ }
8394
+ }
8395
+
8396
+ return this;
8397
+ },
8398
+ toggleClass: function toggleClass(value, stateVal) {
8399
+ var type = _typeof(value),
8400
+ isValidValue = type === "string" || Array.isArray(value);
8401
+
8402
+ if (typeof stateVal === "boolean" && isValidValue) {
8403
+ return stateVal ? this.addClass(value) : this.removeClass(value);
8404
+ }
8405
+
8406
+ if (isFunction(value)) {
8407
+ return this.each(function (i) {
8408
+ jQuery(this).toggleClass(value.call(this, i, getClass(this), stateVal), stateVal);
8409
+ });
8410
+ }
8411
+
8412
+ return this.each(function () {
8413
+ var className, i, self, classNames;
8414
+
8415
+ if (isValidValue) {
8416
+ // Toggle individual class names
8417
+ i = 0;
8418
+ self = jQuery(this);
8419
+ classNames = classesToArray(value);
8420
+
8421
+ while (className = classNames[i++]) {
8422
+ // Check each className given, space separated list
8423
+ if (self.hasClass(className)) {
8424
+ self.removeClass(className);
8425
+ } else {
8426
+ self.addClass(className);
8427
+ }
8428
+ } // Toggle whole class name
8429
+
8430
+ } else if (value === undefined || type === "boolean") {
8431
+ className = getClass(this);
8432
+
8433
+ if (className) {
8434
+ // Store className if set
8435
+ dataPriv.set(this, "__className__", className);
8436
+ } // If the element has a class name or if we're passed `false`,
8437
+ // then remove the whole classname (if there was one, the above saved it).
8438
+ // Otherwise bring back whatever was previously saved (if anything),
8439
+ // falling back to the empty string if nothing was stored.
8440
+
8441
+
8442
+ if (this.setAttribute) {
8443
+ this.setAttribute("class", className || value === false ? "" : dataPriv.get(this, "__className__") || "");
8444
+ }
8445
+ }
8446
+ });
8447
+ },
8448
+ hasClass: function hasClass(selector) {
8449
+ var className,
8450
+ elem,
8451
+ i = 0;
8452
+ className = " " + selector + " ";
8453
+
8454
+ while (elem = this[i++]) {
8455
+ if (elem.nodeType === 1 && (" " + stripAndCollapse(getClass(elem)) + " ").indexOf(className) > -1) {
8456
+ return true;
8457
+ }
8458
+ }
8459
+
8460
+ return false;
8461
+ }
8462
+ });
8463
+ var rreturn = /\r/g;
8464
+ jQuery.fn.extend({
8465
+ val: function val(value) {
8466
+ var hooks,
8467
+ ret,
8468
+ valueIsFunction,
8469
+ elem = this[0];
8470
+
8471
+ if (!arguments.length) {
8472
+ if (elem) {
8473
+ hooks = jQuery.valHooks[elem.type] || jQuery.valHooks[elem.nodeName.toLowerCase()];
8474
+
8475
+ if (hooks && "get" in hooks && (ret = hooks.get(elem, "value")) !== undefined) {
8476
+ return ret;
8477
+ }
8478
+
8479
+ ret = elem.value; // Handle most common string cases
8480
+
8481
+ if (typeof ret === "string") {
8482
+ return ret.replace(rreturn, "");
8483
+ } // Handle cases where value is null/undef or number
8484
+
8485
+
8486
+ return ret == null ? "" : ret;
8487
+ }
8488
+
8489
+ return;
8490
+ }
8491
+
8492
+ valueIsFunction = isFunction(value);
8493
+ return this.each(function (i) {
8494
+ var val;
8495
+
8496
+ if (this.nodeType !== 1) {
8497
+ return;
8498
+ }
8499
+
8500
+ if (valueIsFunction) {
8501
+ val = value.call(this, i, jQuery(this).val());
8502
+ } else {
8503
+ val = value;
8504
+ } // Treat null/undefined as ""; convert numbers to string
8505
+
8506
+
8507
+ if (val == null) {
8508
+ val = "";
8509
+ } else if (typeof val === "number") {
8510
+ val += "";
8511
+ } else if (Array.isArray(val)) {
8512
+ val = jQuery.map(val, function (value) {
8513
+ return value == null ? "" : value + "";
8514
+ });
8515
+ }
8516
+
8517
+ hooks = jQuery.valHooks[this.type] || jQuery.valHooks[this.nodeName.toLowerCase()]; // If set returns undefined, fall back to normal setting
8518
+
8519
+ if (!hooks || !("set" in hooks) || hooks.set(this, val, "value") === undefined) {
8520
+ this.value = val;
8521
+ }
8522
+ });
8523
+ }
8524
+ });
8525
+ jQuery.extend({
8526
+ valHooks: {
8527
+ option: {
8528
+ get: function get(elem) {
8529
+ var val = jQuery.find.attr(elem, "value");
8530
+ return val != null ? val : // Support: IE <=10 - 11 only
8531
+ // option.text throws exceptions (#14686, #14858)
8532
+ // Strip and collapse whitespace
8533
+ // https://html.spec.whatwg.org/#strip-and-collapse-whitespace
8534
+ stripAndCollapse(jQuery.text(elem));
8535
+ }
8536
+ },
8537
+ select: {
8538
+ get: function get(elem) {
8539
+ var value,
8540
+ option,
8541
+ i,
8542
+ options = elem.options,
8543
+ index = elem.selectedIndex,
8544
+ one = elem.type === "select-one",
8545
+ values = one ? null : [],
8546
+ max = one ? index + 1 : options.length;
8547
+
8548
+ if (index < 0) {
8549
+ i = max;
8550
+ } else {
8551
+ i = one ? index : 0;
8552
+ } // Loop through all the selected options
8553
+
8554
+
8555
+ for (; i < max; i++) {
8556
+ option = options[i]; // Support: IE <=9 only
8557
+ // IE8-9 doesn't update selected after form reset (#2551)
8558
+
8559
+ if ((option.selected || i === index) && // Don't return options that are disabled or in a disabled optgroup
8560
+ !option.disabled && (!option.parentNode.disabled || !nodeName(option.parentNode, "optgroup"))) {
8561
+ // Get the specific value for the option
8562
+ value = jQuery(option).val(); // We don't need an array for one selects
8563
+
8564
+ if (one) {
8565
+ return value;
8566
+ } // Multi-Selects return an array
8567
+
8568
+
8569
+ values.push(value);
8570
+ }
8571
+ }
8572
+
8573
+ return values;
8574
+ },
8575
+ set: function set(elem, value) {
8576
+ var optionSet,
8577
+ option,
8578
+ options = elem.options,
8579
+ values = jQuery.makeArray(value),
8580
+ i = options.length;
8581
+
8582
+ while (i--) {
8583
+ option = options[i];
8584
+ /* eslint-disable no-cond-assign */
8585
+
8586
+ if (option.selected = jQuery.inArray(jQuery.valHooks.option.get(option), values) > -1) {
8587
+ optionSet = true;
8588
+ }
8589
+ /* eslint-enable no-cond-assign */
8590
+
8591
+ } // Force browsers to behave consistently when non-matching value is set
8592
+
8593
+
8594
+ if (!optionSet) {
8595
+ elem.selectedIndex = -1;
8596
+ }
8597
+
8598
+ return values;
8599
+ }
8600
+ }
8601
+ }
8602
+ }); // Radios and checkboxes getter/setter
8603
+
8604
+ jQuery.each(["radio", "checkbox"], function () {
8605
+ jQuery.valHooks[this] = {
8606
+ set: function set(elem, value) {
8607
+ if (Array.isArray(value)) {
8608
+ return elem.checked = jQuery.inArray(jQuery(elem).val(), value) > -1;
8609
+ }
8610
+ }
8611
+ };
8612
+
8613
+ if (!support.checkOn) {
8614
+ jQuery.valHooks[this].get = function (elem) {
8615
+ return elem.getAttribute("value") === null ? "on" : elem.value;
8616
+ };
8617
+ }
8618
+ }); // Return jQuery for attributes-only inclusion
8619
+
8620
+ support.focusin = "onfocusin" in window;
8621
+
8622
+ var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
8623
+ stopPropagationCallback = function stopPropagationCallback(e) {
8624
+ e.stopPropagation();
8625
+ };
8626
+
8627
+ jQuery.extend(jQuery.event, {
8628
+ trigger: function trigger(event, data, elem, onlyHandlers) {
8629
+ var i,
8630
+ cur,
8631
+ tmp,
8632
+ bubbleType,
8633
+ ontype,
8634
+ handle,
8635
+ special,
8636
+ lastElement,
8637
+ eventPath = [elem || document],
8638
+ type = hasOwn.call(event, "type") ? event.type : event,
8639
+ namespaces = hasOwn.call(event, "namespace") ? event.namespace.split(".") : [];
8640
+ cur = lastElement = tmp = elem = elem || document; // Don't do events on text and comment nodes
8641
+
8642
+ if (elem.nodeType === 3 || elem.nodeType === 8) {
8643
+ return;
8644
+ } // focus/blur morphs to focusin/out; ensure we're not firing them right now
8645
+
8646
+
8647
+ if (rfocusMorph.test(type + jQuery.event.triggered)) {
8648
+ return;
8649
+ }
8650
+
8651
+ if (type.indexOf(".") > -1) {
8652
+ // Namespaced trigger; create a regexp to match event type in handle()
8653
+ namespaces = type.split(".");
8654
+ type = namespaces.shift();
8655
+ namespaces.sort();
8656
+ }
8657
+
8658
+ ontype = type.indexOf(":") < 0 && "on" + type; // Caller can pass in a jQuery.Event object, Object, or just an event type string
8659
+
8660
+ event = event[jQuery.expando] ? event : new jQuery.Event(type, _typeof(event) === "object" && event); // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
8661
+
8662
+ event.isTrigger = onlyHandlers ? 2 : 3;
8663
+ event.namespace = namespaces.join(".");
8664
+ event.rnamespace = event.namespace ? new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)") : null; // Clean up the event in case it is being reused
8665
+
8666
+ event.result = undefined;
8667
+
8668
+ if (!event.target) {
8669
+ event.target = elem;
8670
+ } // Clone any incoming data and prepend the event, creating the handler arg list
8671
+
8672
+
8673
+ data = data == null ? [event] : jQuery.makeArray(data, [event]); // Allow special events to draw outside the lines
8674
+
8675
+ special = jQuery.event.special[type] || {};
8676
+
8677
+ if (!onlyHandlers && special.trigger && special.trigger.apply(elem, data) === false) {
8678
+ return;
8679
+ } // Determine event propagation path in advance, per W3C events spec (#9951)
8680
+ // Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
8681
+
8682
+
8683
+ if (!onlyHandlers && !special.noBubble && !isWindow(elem)) {
8684
+ bubbleType = special.delegateType || type;
8685
+
8686
+ if (!rfocusMorph.test(bubbleType + type)) {
8687
+ cur = cur.parentNode;
8688
+ }
8689
+
8690
+ for (; cur; cur = cur.parentNode) {
8691
+ eventPath.push(cur);
8692
+ tmp = cur;
8693
+ } // Only add window if we got to document (e.g., not plain obj or detached DOM)
8694
+
8695
+
8696
+ if (tmp === (elem.ownerDocument || document)) {
8697
+ eventPath.push(tmp.defaultView || tmp.parentWindow || window);
8698
+ }
8699
+ } // Fire handlers on the event path
8700
+
8701
+
8702
+ i = 0;
8703
+
8704
+ while ((cur = eventPath[i++]) && !event.isPropagationStopped()) {
8705
+ lastElement = cur;
8706
+ event.type = i > 1 ? bubbleType : special.bindType || type; // jQuery handler
8707
+
8708
+ handle = (dataPriv.get(cur, "events") || Object.create(null))[event.type] && dataPriv.get(cur, "handle");
8709
+
8710
+ if (handle) {
8711
+ handle.apply(cur, data);
8712
+ } // Native handler
8713
+
8714
+
8715
+ handle = ontype && cur[ontype];
8716
+
8717
+ if (handle && handle.apply && acceptData(cur)) {
8718
+ event.result = handle.apply(cur, data);
8719
+
8720
+ if (event.result === false) {
8721
+ event.preventDefault();
8722
+ }
8723
+ }
8724
+ }
8725
+
8726
+ event.type = type; // If nobody prevented the default action, do it now
8727
+
8728
+ if (!onlyHandlers && !event.isDefaultPrevented()) {
8729
+ if ((!special._default || special._default.apply(eventPath.pop(), data) === false) && acceptData(elem)) {
8730
+ // Call a native DOM method on the target with the same name as the event.
8731
+ // Don't do default actions on window, that's where global variables be (#6170)
8732
+ if (ontype && isFunction(elem[type]) && !isWindow(elem)) {
8733
+ // Don't re-trigger an onFOO event when we call its FOO() method
8734
+ tmp = elem[ontype];
8735
+
8736
+ if (tmp) {
8737
+ elem[ontype] = null;
8738
+ } // Prevent re-triggering of the same event, since we already bubbled it above
8739
+
8740
+
8741
+ jQuery.event.triggered = type;
8742
+
8743
+ if (event.isPropagationStopped()) {
8744
+ lastElement.addEventListener(type, stopPropagationCallback);
8745
+ }
8746
+
8747
+ elem[type]();
8748
+
8749
+ if (event.isPropagationStopped()) {
8750
+ lastElement.removeEventListener(type, stopPropagationCallback);
8751
+ }
8752
+
8753
+ jQuery.event.triggered = undefined;
8754
+
8755
+ if (tmp) {
8756
+ elem[ontype] = tmp;
8757
+ }
8758
+ }
8759
+ }
8760
+ }
8761
+
8762
+ return event.result;
8763
+ },
8764
+ // Piggyback on a donor event to simulate a different one
8765
+ // Used only for `focus(in | out)` events
8766
+ simulate: function simulate(type, elem, event) {
8767
+ var e = jQuery.extend(new jQuery.Event(), event, {
8768
+ type: type,
8769
+ isSimulated: true
8770
+ });
8771
+ jQuery.event.trigger(e, null, elem);
8772
+ }
8773
+ });
8774
+ jQuery.fn.extend({
8775
+ trigger: function trigger(type, data) {
8776
+ return this.each(function () {
8777
+ jQuery.event.trigger(type, data, this);
8778
+ });
8779
+ },
8780
+ triggerHandler: function triggerHandler(type, data) {
8781
+ var elem = this[0];
8782
+
8783
+ if (elem) {
8784
+ return jQuery.event.trigger(type, data, elem, true);
8785
+ }
8786
+ }
8787
+ }); // Support: Firefox <=44
8788
+ // Firefox doesn't have focus(in | out) events
8789
+ // Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
8790
+ //
8791
+ // Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
8792
+ // focus(in | out) events fire after focus & blur events,
8793
+ // which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
8794
+ // Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
8795
+
8796
+ if (!support.focusin) {
8797
+ jQuery.each({
8798
+ focus: "focusin",
8799
+ blur: "focusout"
8800
+ }, function (orig, fix) {
8801
+ // Attach a single capturing handler on the document while someone wants focusin/focusout
8802
+ var handler = function handler(event) {
8803
+ jQuery.event.simulate(fix, event.target, jQuery.event.fix(event));
8804
+ };
8805
+
8806
+ jQuery.event.special[fix] = {
8807
+ setup: function setup() {
8808
+ // Handle: regular nodes (via `this.ownerDocument`), window
8809
+ // (via `this.document`) & document (via `this`).
8810
+ var doc = this.ownerDocument || this.document || this,
8811
+ attaches = dataPriv.access(doc, fix);
8812
+
8813
+ if (!attaches) {
8814
+ doc.addEventListener(orig, handler, true);
8815
+ }
8816
+
8817
+ dataPriv.access(doc, fix, (attaches || 0) + 1);
8818
+ },
8819
+ teardown: function teardown() {
8820
+ var doc = this.ownerDocument || this.document || this,
8821
+ attaches = dataPriv.access(doc, fix) - 1;
8822
+
8823
+ if (!attaches) {
8824
+ doc.removeEventListener(orig, handler, true);
8825
+ dataPriv.remove(doc, fix);
8826
+ } else {
8827
+ dataPriv.access(doc, fix, attaches);
8828
+ }
8829
+ }
8830
+ };
8831
+ });
8832
+ }
8833
+
8834
+ var location = window.location;
8835
+ var nonce = {
8836
+ guid: Date.now()
8837
+ };
8838
+ var rquery = /\?/; // Cross-browser xml parsing
8839
+
8840
+ jQuery.parseXML = function (data) {
8841
+ var xml;
8842
+
8843
+ if (!data || typeof data !== "string") {
8844
+ return null;
8845
+ } // Support: IE 9 - 11 only
8846
+ // IE throws on parseFromString with invalid input.
8847
+
8848
+
8849
+ try {
8850
+ xml = new window.DOMParser().parseFromString(data, "text/xml");
8851
+ } catch (e) {
8852
+ xml = undefined;
8853
+ }
8854
+
8855
+ if (!xml || xml.getElementsByTagName("parsererror").length) {
8856
+ jQuery.error("Invalid XML: " + data);
8857
+ }
8858
+
8859
+ return xml;
8860
+ };
8861
+
8862
+ var rbracket = /\[\]$/,
8863
+ rCRLF = /\r?\n/g,
8864
+ rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
8865
+ rsubmittable = /^(?:input|select|textarea|keygen)/i;
8866
+
8867
+ function buildParams(prefix, obj, traditional, add) {
8868
+ var name;
8869
+
8870
+ if (Array.isArray(obj)) {
8871
+ // Serialize array item.
8872
+ jQuery.each(obj, function (i, v) {
8873
+ if (traditional || rbracket.test(prefix)) {
8874
+ // Treat each array item as a scalar.
8875
+ add(prefix, v);
8876
+ } else {
8877
+ // Item is non-scalar (array or object), encode its numeric index.
8878
+ buildParams(prefix + "[" + (_typeof(v) === "object" && v != null ? i : "") + "]", v, traditional, add);
8879
+ }
8880
+ });
8881
+ } else if (!traditional && toType(obj) === "object") {
8882
+ // Serialize object item.
8883
+ for (name in obj) {
8884
+ buildParams(prefix + "[" + name + "]", obj[name], traditional, add);
8885
+ }
8886
+ } else {
8887
+ // Serialize scalar item.
8888
+ add(prefix, obj);
8889
+ }
8890
+ } // Serialize an array of form elements or a set of
8891
+ // key/values into a query string
8892
+
8893
+
8894
+ jQuery.param = function (a, traditional) {
8895
+ var prefix,
8896
+ s = [],
8897
+ add = function add(key, valueOrFunction) {
8898
+ // If value is a function, invoke it and use its return value
8899
+ var value = isFunction(valueOrFunction) ? valueOrFunction() : valueOrFunction;
8900
+ s[s.length] = encodeURIComponent(key) + "=" + encodeURIComponent(value == null ? "" : value);
8901
+ };
8902
+
8903
+ if (a == null) {
8904
+ return "";
8905
+ } // If an array was passed in, assume that it is an array of form elements.
8906
+
8907
+
8908
+ if (Array.isArray(a) || a.jquery && !jQuery.isPlainObject(a)) {
8909
+ // Serialize the form elements
8910
+ jQuery.each(a, function () {
8911
+ add(this.name, this.value);
8912
+ });
8913
+ } else {
8914
+ // If traditional, encode the "old" way (the way 1.3.2 or older
8915
+ // did it), otherwise encode params recursively.
8916
+ for (prefix in a) {
8917
+ buildParams(prefix, a[prefix], traditional, add);
8918
+ }
8919
+ } // Return the resulting serialization
8920
+
8921
+
8922
+ return s.join("&");
8923
+ };
8924
+
8925
+ jQuery.fn.extend({
8926
+ serialize: function serialize() {
8927
+ return jQuery.param(this.serializeArray());
8928
+ },
8929
+ serializeArray: function serializeArray() {
8930
+ return this.map(function () {
8931
+ // Can add propHook for "elements" to filter or add form elements
8932
+ var elements = jQuery.prop(this, "elements");
8933
+ return elements ? jQuery.makeArray(elements) : this;
8934
+ }).filter(function () {
8935
+ var type = this.type; // Use .is( ":disabled" ) so that fieldset[disabled] works
8936
+
8937
+ return this.name && !jQuery(this).is(":disabled") && rsubmittable.test(this.nodeName) && !rsubmitterTypes.test(type) && (this.checked || !rcheckableType.test(type));
8938
+ }).map(function (_i, elem) {
8939
+ var val = jQuery(this).val();
8940
+
8941
+ if (val == null) {
8942
+ return null;
8943
+ }
8944
+
8945
+ if (Array.isArray(val)) {
8946
+ return jQuery.map(val, function (val) {
8947
+ return {
8948
+ name: elem.name,
8949
+ value: val.replace(rCRLF, "\r\n")
8950
+ };
8951
+ });
8952
+ }
8953
+
8954
+ return {
8955
+ name: elem.name,
8956
+ value: val.replace(rCRLF, "\r\n")
8957
+ };
8958
+ }).get();
8959
+ }
8960
+ });
8961
+ var r20 = /%20/g,
8962
+ rhash = /#.*$/,
8963
+ rantiCache = /([?&])_=[^&]*/,
8964
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
8965
+ // #7653, #8125, #8152: local protocol detection
8966
+ rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
8967
+ rnoContent = /^(?:GET|HEAD)$/,
8968
+ rprotocol = /^\/\//,
8969
+
8970
+ /* Prefilters
8971
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
8972
+ * 2) These are called:
8973
+ * - BEFORE asking for a transport
8974
+ * - AFTER param serialization (s.data is a string if s.processData is true)
8975
+ * 3) key is the dataType
8976
+ * 4) the catchall symbol "*" can be used
8977
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
8978
+ */
8979
+ prefilters = {},
8980
+
8981
+ /* Transports bindings
8982
+ * 1) key is the dataType
8983
+ * 2) the catchall symbol "*" can be used
8984
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
8985
+ */
8986
+ transports = {},
8987
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
8988
+ allTypes = "*/".concat("*"),
8989
+ // Anchor tag for parsing the document origin
8990
+ originAnchor = document.createElement("a");
8991
+ originAnchor.href = location.href; // Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
8992
+
8993
+ function addToPrefiltersOrTransports(structure) {
8994
+ // dataTypeExpression is optional and defaults to "*"
8995
+ return function (dataTypeExpression, func) {
8996
+ if (typeof dataTypeExpression !== "string") {
8997
+ func = dataTypeExpression;
8998
+ dataTypeExpression = "*";
8999
+ }
9000
+
9001
+ var dataType,
9002
+ i = 0,
9003
+ dataTypes = dataTypeExpression.toLowerCase().match(rnothtmlwhite) || [];
9004
+
9005
+ if (isFunction(func)) {
9006
+ // For each dataType in the dataTypeExpression
9007
+ while (dataType = dataTypes[i++]) {
9008
+ // Prepend if requested
9009
+ if (dataType[0] === "+") {
9010
+ dataType = dataType.slice(1) || "*";
9011
+ (structure[dataType] = structure[dataType] || []).unshift(func); // Otherwise append
9012
+ } else {
9013
+ (structure[dataType] = structure[dataType] || []).push(func);
9014
+ }
9015
+ }
9016
+ }
9017
+ };
9018
+ } // Base inspection function for prefilters and transports
9019
+
9020
+
9021
+ function inspectPrefiltersOrTransports(structure, options, originalOptions, jqXHR) {
9022
+ var inspected = {},
9023
+ seekingTransport = structure === transports;
9024
+
9025
+ function inspect(dataType) {
9026
+ var selected;
9027
+ inspected[dataType] = true;
9028
+ jQuery.each(structure[dataType] || [], function (_, prefilterOrFactory) {
9029
+ var dataTypeOrTransport = prefilterOrFactory(options, originalOptions, jqXHR);
9030
+
9031
+ if (typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[dataTypeOrTransport]) {
9032
+ options.dataTypes.unshift(dataTypeOrTransport);
9033
+ inspect(dataTypeOrTransport);
9034
+ return false;
9035
+ } else if (seekingTransport) {
9036
+ return !(selected = dataTypeOrTransport);
9037
+ }
9038
+ });
9039
+ return selected;
9040
+ }
9041
+
9042
+ return inspect(options.dataTypes[0]) || !inspected["*"] && inspect("*");
9043
+ } // A special extend for ajax options
9044
+ // that takes "flat" options (not to be deep extended)
9045
+ // Fixes #9887
9046
+
9047
+
9048
+ function ajaxExtend(target, src) {
9049
+ var key,
9050
+ deep,
9051
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
9052
+
9053
+ for (key in src) {
9054
+ if (src[key] !== undefined) {
9055
+ (flatOptions[key] ? target : deep || (deep = {}))[key] = src[key];
9056
+ }
9057
+ }
9058
+
9059
+ if (deep) {
9060
+ jQuery.extend(true, target, deep);
9061
+ }
9062
+
9063
+ return target;
9064
+ }
9065
+ /* Handles responses to an ajax request:
9066
+ * - finds the right dataType (mediates between content-type and expected dataType)
9067
+ * - returns the corresponding response
9068
+ */
9069
+
9070
+
9071
+ function ajaxHandleResponses(s, jqXHR, responses) {
9072
+ var ct,
9073
+ type,
9074
+ finalDataType,
9075
+ firstDataType,
9076
+ contents = s.contents,
9077
+ dataTypes = s.dataTypes; // Remove auto dataType and get content-type in the process
9078
+
9079
+ while (dataTypes[0] === "*") {
9080
+ dataTypes.shift();
9081
+
9082
+ if (ct === undefined) {
9083
+ ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
9084
+ }
9085
+ } // Check if we're dealing with a known content-type
9086
+
9087
+
9088
+ if (ct) {
9089
+ for (type in contents) {
9090
+ if (contents[type] && contents[type].test(ct)) {
9091
+ dataTypes.unshift(type);
9092
+ break;
9093
+ }
9094
+ }
9095
+ } // Check to see if we have a response for the expected dataType
9096
+
9097
+
9098
+ if (dataTypes[0] in responses) {
9099
+ finalDataType = dataTypes[0];
9100
+ } else {
9101
+ // Try convertible dataTypes
9102
+ for (type in responses) {
9103
+ if (!dataTypes[0] || s.converters[type + " " + dataTypes[0]]) {
9104
+ finalDataType = type;
9105
+ break;
9106
+ }
9107
+
9108
+ if (!firstDataType) {
9109
+ firstDataType = type;
9110
+ }
9111
+ } // Or just use first one
9112
+
9113
+
9114
+ finalDataType = finalDataType || firstDataType;
9115
+ } // If we found a dataType
9116
+ // We add the dataType to the list if needed
9117
+ // and return the corresponding response
9118
+
9119
+
9120
+ if (finalDataType) {
9121
+ if (finalDataType !== dataTypes[0]) {
9122
+ dataTypes.unshift(finalDataType);
9123
+ }
9124
+
9125
+ return responses[finalDataType];
9126
+ }
9127
+ }
9128
+ /* Chain conversions given the request and the original response
9129
+ * Also sets the responseXXX fields on the jqXHR instance
9130
+ */
9131
+
9132
+
9133
+ function ajaxConvert(s, response, jqXHR, isSuccess) {
9134
+ var conv2,
9135
+ current,
9136
+ conv,
9137
+ tmp,
9138
+ prev,
9139
+ converters = {},
9140
+ // Work with a copy of dataTypes in case we need to modify it for conversion
9141
+ dataTypes = s.dataTypes.slice(); // Create converters map with lowercased keys
9142
+
9143
+ if (dataTypes[1]) {
9144
+ for (conv in s.converters) {
9145
+ converters[conv.toLowerCase()] = s.converters[conv];
9146
+ }
9147
+ }
9148
+
9149
+ current = dataTypes.shift(); // Convert to each sequential dataType
9150
+
9151
+ while (current) {
9152
+ if (s.responseFields[current]) {
9153
+ jqXHR[s.responseFields[current]] = response;
9154
+ } // Apply the dataFilter if provided
9155
+
9156
+
9157
+ if (!prev && isSuccess && s.dataFilter) {
9158
+ response = s.dataFilter(response, s.dataType);
9159
+ }
9160
+
9161
+ prev = current;
9162
+ current = dataTypes.shift();
9163
+
9164
+ if (current) {
9165
+ // There's only work to do if current dataType is non-auto
9166
+ if (current === "*") {
9167
+ current = prev; // Convert response if prev dataType is non-auto and differs from current
9168
+ } else if (prev !== "*" && prev !== current) {
9169
+ // Seek a direct converter
9170
+ conv = converters[prev + " " + current] || converters["* " + current]; // If none found, seek a pair
9171
+
9172
+ if (!conv) {
9173
+ for (conv2 in converters) {
9174
+ // If conv2 outputs current
9175
+ tmp = conv2.split(" ");
9176
+
9177
+ if (tmp[1] === current) {
9178
+ // If prev can be converted to accepted input
9179
+ conv = converters[prev + " " + tmp[0]] || converters["* " + tmp[0]];
9180
+
9181
+ if (conv) {
9182
+ // Condense equivalence converters
9183
+ if (conv === true) {
9184
+ conv = converters[conv2]; // Otherwise, insert the intermediate dataType
9185
+ } else if (converters[conv2] !== true) {
9186
+ current = tmp[0];
9187
+ dataTypes.unshift(tmp[1]);
9188
+ }
9189
+
9190
+ break;
9191
+ }
9192
+ }
9193
+ }
9194
+ } // Apply converter (if not an equivalence)
9195
+
9196
+
9197
+ if (conv !== true) {
9198
+ // Unless errors are allowed to bubble, catch and return them
9199
+ if (conv && s["throws"]) {
9200
+ response = conv(response);
9201
+ } else {
9202
+ try {
9203
+ response = conv(response);
9204
+ } catch (e) {
9205
+ return {
9206
+ state: "parsererror",
9207
+ error: conv ? e : "No conversion from " + prev + " to " + current
9208
+ };
9209
+ }
9210
+ }
9211
+ }
9212
+ }
9213
+ }
9214
+ }
9215
+
9216
+ return {
9217
+ state: "success",
9218
+ data: response
9219
+ };
9220
+ }
9221
+
9222
+ jQuery.extend({
9223
+ // Counter for holding the number of active queries
9224
+ active: 0,
9225
+ // Last-Modified header cache for next request
9226
+ lastModified: {},
9227
+ etag: {},
9228
+ ajaxSettings: {
9229
+ url: location.href,
9230
+ type: "GET",
9231
+ isLocal: rlocalProtocol.test(location.protocol),
9232
+ global: true,
9233
+ processData: true,
9234
+ async: true,
9235
+ contentType: "application/x-www-form-urlencoded; charset=UTF-8",
9236
+
9237
+ /*
9238
+ timeout: 0,
9239
+ data: null,
9240
+ dataType: null,
9241
+ username: null,
9242
+ password: null,
9243
+ cache: null,
9244
+ throws: false,
9245
+ traditional: false,
9246
+ headers: {},
9247
+ */
9248
+ accepts: {
9249
+ "*": allTypes,
9250
+ text: "text/plain",
9251
+ html: "text/html",
9252
+ xml: "application/xml, text/xml",
9253
+ json: "application/json, text/javascript"
9254
+ },
9255
+ contents: {
9256
+ xml: /\bxml\b/,
9257
+ html: /\bhtml/,
9258
+ json: /\bjson\b/
9259
+ },
9260
+ responseFields: {
9261
+ xml: "responseXML",
9262
+ text: "responseText",
9263
+ json: "responseJSON"
9264
+ },
9265
+ // Data converters
9266
+ // Keys separate source (or catchall "*") and destination types with a single space
9267
+ converters: {
9268
+ // Convert anything to text
9269
+ "* text": String,
9270
+ // Text to html (true = no transformation)
9271
+ "text html": true,
9272
+ // Evaluate text as a json expression
9273
+ "text json": JSON.parse,
9274
+ // Parse text as xml
9275
+ "text xml": jQuery.parseXML
9276
+ },
9277
+ // For options that shouldn't be deep extended:
9278
+ // you can add your own custom options here if
9279
+ // and when you create one that shouldn't be
9280
+ // deep extended (see ajaxExtend)
9281
+ flatOptions: {
9282
+ url: true,
9283
+ context: true
9284
+ }
9285
+ },
9286
+ // Creates a full fledged settings object into target
9287
+ // with both ajaxSettings and settings fields.
9288
+ // If target is omitted, writes into ajaxSettings.
9289
+ ajaxSetup: function ajaxSetup(target, settings) {
9290
+ return settings ? // Building a settings object
9291
+ ajaxExtend(ajaxExtend(target, jQuery.ajaxSettings), settings) : // Extending ajaxSettings
9292
+ ajaxExtend(jQuery.ajaxSettings, target);
9293
+ },
9294
+ ajaxPrefilter: addToPrefiltersOrTransports(prefilters),
9295
+ ajaxTransport: addToPrefiltersOrTransports(transports),
9296
+ // Main method
9297
+ ajax: function ajax(url, options) {
9298
+ // If url is an object, simulate pre-1.5 signature
9299
+ if (_typeof(url) === "object") {
9300
+ options = url;
9301
+ url = undefined;
9302
+ } // Force options to be an object
9303
+
9304
+
9305
+ options = options || {};
9306
+
9307
+ var transport,
9308
+ // URL without anti-cache param
9309
+ cacheURL,
9310
+ // Response headers
9311
+ responseHeadersString,
9312
+ responseHeaders,
9313
+ // timeout handle
9314
+ timeoutTimer,
9315
+ // Url cleanup var
9316
+ urlAnchor,
9317
+ // Request state (becomes false upon send and true upon completion)
9318
+ completed,
9319
+ // To know if global events are to be dispatched
9320
+ fireGlobals,
9321
+ // Loop variable
9322
+ i,
9323
+ // uncached part of the url
9324
+ uncached,
9325
+ // Create the final options object
9326
+ s = jQuery.ajaxSetup({}, options),
9327
+ // Callbacks context
9328
+ callbackContext = s.context || s,
9329
+ // Context for global events is callbackContext if it is a DOM node or jQuery collection
9330
+ globalEventContext = s.context && (callbackContext.nodeType || callbackContext.jquery) ? jQuery(callbackContext) : jQuery.event,
9331
+ // Deferreds
9332
+ deferred = jQuery.Deferred(),
9333
+ completeDeferred = jQuery.Callbacks("once memory"),
9334
+ // Status-dependent callbacks
9335
+ _statusCode = s.statusCode || {},
9336
+ // Headers (they are sent all at once)
9337
+ requestHeaders = {},
9338
+ requestHeadersNames = {},
9339
+ // Default abort message
9340
+ strAbort = "canceled",
9341
+ // Fake xhr
9342
+ jqXHR = {
9343
+ readyState: 0,
9344
+ // Builds headers hashtable if needed
9345
+ getResponseHeader: function getResponseHeader(key) {
9346
+ var match;
9347
+
9348
+ if (completed) {
9349
+ if (!responseHeaders) {
9350
+ responseHeaders = {};
9351
+
9352
+ while (match = rheaders.exec(responseHeadersString)) {
9353
+ responseHeaders[match[1].toLowerCase() + " "] = (responseHeaders[match[1].toLowerCase() + " "] || []).concat(match[2]);
9354
+ }
9355
+ }
9356
+
9357
+ match = responseHeaders[key.toLowerCase() + " "];
9358
+ }
9359
+
9360
+ return match == null ? null : match.join(", ");
9361
+ },
9362
+ // Raw string
9363
+ getAllResponseHeaders: function getAllResponseHeaders() {
9364
+ return completed ? responseHeadersString : null;
9365
+ },
9366
+ // Caches the header
9367
+ setRequestHeader: function setRequestHeader(name, value) {
9368
+ if (completed == null) {
9369
+ name = requestHeadersNames[name.toLowerCase()] = requestHeadersNames[name.toLowerCase()] || name;
9370
+ requestHeaders[name] = value;
9371
+ }
9372
+
9373
+ return this;
9374
+ },
9375
+ // Overrides response content-type header
9376
+ overrideMimeType: function overrideMimeType(type) {
9377
+ if (completed == null) {
9378
+ s.mimeType = type;
9379
+ }
9380
+
9381
+ return this;
9382
+ },
9383
+ // Status-dependent callbacks
9384
+ statusCode: function statusCode(map) {
9385
+ var code;
9386
+
9387
+ if (map) {
9388
+ if (completed) {
9389
+ // Execute the appropriate callbacks
9390
+ jqXHR.always(map[jqXHR.status]);
9391
+ } else {
9392
+ // Lazy-add the new callbacks in a way that preserves old ones
9393
+ for (code in map) {
9394
+ _statusCode[code] = [_statusCode[code], map[code]];
9395
+ }
9396
+ }
9397
+ }
9398
+
9399
+ return this;
9400
+ },
9401
+ // Cancel the request
9402
+ abort: function abort(statusText) {
9403
+ var finalText = statusText || strAbort;
9404
+
9405
+ if (transport) {
9406
+ transport.abort(finalText);
9407
+ }
9408
+
9409
+ done(0, finalText);
9410
+ return this;
9411
+ }
9412
+ }; // Attach deferreds
9413
+
9414
+
9415
+ deferred.promise(jqXHR); // Add protocol if not provided (prefilters might expect it)
9416
+ // Handle falsy url in the settings object (#10093: consistency with old signature)
9417
+ // We also use the url parameter if available
9418
+
9419
+ s.url = ((url || s.url || location.href) + "").replace(rprotocol, location.protocol + "//"); // Alias method option to type as per ticket #12004
9420
+
9421
+ s.type = options.method || options.type || s.method || s.type; // Extract dataTypes list
9422
+
9423
+ s.dataTypes = (s.dataType || "*").toLowerCase().match(rnothtmlwhite) || [""]; // A cross-domain request is in order when the origin doesn't match the current origin.
9424
+
9425
+ if (s.crossDomain == null) {
9426
+ urlAnchor = document.createElement("a"); // Support: IE <=8 - 11, Edge 12 - 15
9427
+ // IE throws exception on accessing the href property if url is malformed,
9428
+ // e.g. http://example.com:80x/
9429
+
9430
+ try {
9431
+ urlAnchor.href = s.url; // Support: IE <=8 - 11 only
9432
+ // Anchor's host property isn't correctly set when s.url is relative
9433
+
9434
+ urlAnchor.href = urlAnchor.href;
9435
+ s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== urlAnchor.protocol + "//" + urlAnchor.host;
9436
+ } catch (e) {
9437
+ // If there is an error parsing the URL, assume it is crossDomain,
9438
+ // it can be rejected by the transport if it is invalid
9439
+ s.crossDomain = true;
9440
+ }
9441
+ } // Convert data if not already a string
9442
+
9443
+
9444
+ if (s.data && s.processData && typeof s.data !== "string") {
9445
+ s.data = jQuery.param(s.data, s.traditional);
9446
+ } // Apply prefilters
9447
+
9448
+
9449
+ inspectPrefiltersOrTransports(prefilters, s, options, jqXHR); // If request was aborted inside a prefilter, stop there
9450
+
9451
+ if (completed) {
9452
+ return jqXHR;
9453
+ } // We can fire global events as of now if asked to
9454
+ // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
9455
+
9456
+
9457
+ fireGlobals = jQuery.event && s.global; // Watch for a new set of requests
9458
+
9459
+ if (fireGlobals && jQuery.active++ === 0) {
9460
+ jQuery.event.trigger("ajaxStart");
9461
+ } // Uppercase the type
9462
+
9463
+
9464
+ s.type = s.type.toUpperCase(); // Determine if request has content
9465
+
9466
+ s.hasContent = !rnoContent.test(s.type); // Save the URL in case we're toying with the If-Modified-Since
9467
+ // and/or If-None-Match header later on
9468
+ // Remove hash to simplify url manipulation
9469
+
9470
+ cacheURL = s.url.replace(rhash, ""); // More options handling for requests with no content
9471
+
9472
+ if (!s.hasContent) {
9473
+ // Remember the hash so we can put it back
9474
+ uncached = s.url.slice(cacheURL.length); // If data is available and should be processed, append data to url
9475
+
9476
+ if (s.data && (s.processData || typeof s.data === "string")) {
9477
+ cacheURL += (rquery.test(cacheURL) ? "&" : "?") + s.data; // #9682: remove data so that it's not used in an eventual retry
9478
+
9479
+ delete s.data;
9480
+ } // Add or update anti-cache param if needed
9481
+
9482
+
9483
+ if (s.cache === false) {
9484
+ cacheURL = cacheURL.replace(rantiCache, "$1");
9485
+ uncached = (rquery.test(cacheURL) ? "&" : "?") + "_=" + nonce.guid++ + uncached;
9486
+ } // Put hash and anti-cache on the URL that will be requested (gh-1732)
9487
+
9488
+
9489
+ s.url = cacheURL + uncached; // Change '%20' to '+' if this is encoded form body content (gh-2658)
9490
+ } else if (s.data && s.processData && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0) {
9491
+ s.data = s.data.replace(r20, "+");
9492
+ } // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9493
+
9494
+
9495
+ if (s.ifModified) {
9496
+ if (jQuery.lastModified[cacheURL]) {
9497
+ jqXHR.setRequestHeader("If-Modified-Since", jQuery.lastModified[cacheURL]);
9498
+ }
9499
+
9500
+ if (jQuery.etag[cacheURL]) {
9501
+ jqXHR.setRequestHeader("If-None-Match", jQuery.etag[cacheURL]);
9502
+ }
9503
+ } // Set the correct header, if data is being sent
9504
+
9505
+
9506
+ if (s.data && s.hasContent && s.contentType !== false || options.contentType) {
9507
+ jqXHR.setRequestHeader("Content-Type", s.contentType);
9508
+ } // Set the Accepts header for the server, depending on the dataType
9509
+
9510
+
9511
+ jqXHR.setRequestHeader("Accept", s.dataTypes[0] && s.accepts[s.dataTypes[0]] ? s.accepts[s.dataTypes[0]] + (s.dataTypes[0] !== "*" ? ", " + allTypes + "; q=0.01" : "") : s.accepts["*"]); // Check for headers option
9512
+
9513
+ for (i in s.headers) {
9514
+ jqXHR.setRequestHeader(i, s.headers[i]);
9515
+ } // Allow custom headers/mimetypes and early abort
9516
+
9517
+
9518
+ if (s.beforeSend && (s.beforeSend.call(callbackContext, jqXHR, s) === false || completed)) {
9519
+ // Abort if not done already and return
9520
+ return jqXHR.abort();
9521
+ } // Aborting is no longer a cancellation
9522
+
9523
+
9524
+ strAbort = "abort"; // Install callbacks on deferreds
9525
+
9526
+ completeDeferred.add(s.complete);
9527
+ jqXHR.done(s.success);
9528
+ jqXHR.fail(s.error); // Get transport
9529
+
9530
+ transport = inspectPrefiltersOrTransports(transports, s, options, jqXHR); // If no transport, we auto-abort
9531
+
9532
+ if (!transport) {
9533
+ done(-1, "No Transport");
9534
+ } else {
9535
+ jqXHR.readyState = 1; // Send global event
9536
+
9537
+ if (fireGlobals) {
9538
+ globalEventContext.trigger("ajaxSend", [jqXHR, s]);
9539
+ } // If request was aborted inside ajaxSend, stop there
9540
+
9541
+
9542
+ if (completed) {
9543
+ return jqXHR;
9544
+ } // Timeout
9545
+
9546
+
9547
+ if (s.async && s.timeout > 0) {
9548
+ timeoutTimer = window.setTimeout(function () {
9549
+ jqXHR.abort("timeout");
9550
+ }, s.timeout);
9551
+ }
9552
+
9553
+ try {
9554
+ completed = false;
9555
+ transport.send(requestHeaders, done);
9556
+ } catch (e) {
9557
+ // Rethrow post-completion exceptions
9558
+ if (completed) {
9559
+ throw e;
9560
+ } // Propagate others as results
9561
+
9562
+
9563
+ done(-1, e);
9564
+ }
9565
+ } // Callback for when everything is done
9566
+
9567
+
9568
+ function done(status, nativeStatusText, responses, headers) {
9569
+ var isSuccess,
9570
+ success,
9571
+ error,
9572
+ response,
9573
+ modified,
9574
+ statusText = nativeStatusText; // Ignore repeat invocations
9575
+
9576
+ if (completed) {
9577
+ return;
9578
+ }
9579
+
9580
+ completed = true; // Clear timeout if it exists
9581
+
9582
+ if (timeoutTimer) {
9583
+ window.clearTimeout(timeoutTimer);
9584
+ } // Dereference transport for early garbage collection
9585
+ // (no matter how long the jqXHR object will be used)
9586
+
9587
+
9588
+ transport = undefined; // Cache response headers
9589
+
9590
+ responseHeadersString = headers || ""; // Set readyState
9591
+
9592
+ jqXHR.readyState = status > 0 ? 4 : 0; // Determine if successful
9593
+
9594
+ isSuccess = status >= 200 && status < 300 || status === 304; // Get response data
9595
+
9596
+ if (responses) {
9597
+ response = ajaxHandleResponses(s, jqXHR, responses);
9598
+ } // Use a noop converter for missing script
9599
+
9600
+
9601
+ if (!isSuccess && jQuery.inArray("script", s.dataTypes) > -1) {
9602
+ s.converters["text script"] = function () {};
9603
+ } // Convert no matter what (that way responseXXX fields are always set)
9604
+
9605
+
9606
+ response = ajaxConvert(s, response, jqXHR, isSuccess); // If successful, handle type chaining
9607
+
9608
+ if (isSuccess) {
9609
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
9610
+ if (s.ifModified) {
9611
+ modified = jqXHR.getResponseHeader("Last-Modified");
9612
+
9613
+ if (modified) {
9614
+ jQuery.lastModified[cacheURL] = modified;
9615
+ }
9616
+
9617
+ modified = jqXHR.getResponseHeader("etag");
9618
+
9619
+ if (modified) {
9620
+ jQuery.etag[cacheURL] = modified;
9621
+ }
9622
+ } // if no content
9623
+
9624
+
9625
+ if (status === 204 || s.type === "HEAD") {
9626
+ statusText = "nocontent"; // if not modified
9627
+ } else if (status === 304) {
9628
+ statusText = "notmodified"; // If we have data, let's convert it
9629
+ } else {
9630
+ statusText = response.state;
9631
+ success = response.data;
9632
+ error = response.error;
9633
+ isSuccess = !error;
9634
+ }
9635
+ } else {
9636
+ // Extract error from statusText and normalize for non-aborts
9637
+ error = statusText;
9638
+
9639
+ if (status || !statusText) {
9640
+ statusText = "error";
9641
+
9642
+ if (status < 0) {
9643
+ status = 0;
9644
+ }
9645
+ }
9646
+ } // Set data for the fake xhr object
9647
+
9648
+
9649
+ jqXHR.status = status;
9650
+ jqXHR.statusText = (nativeStatusText || statusText) + ""; // Success/Error
9651
+
9652
+ if (isSuccess) {
9653
+ deferred.resolveWith(callbackContext, [success, statusText, jqXHR]);
9654
+ } else {
9655
+ deferred.rejectWith(callbackContext, [jqXHR, statusText, error]);
9656
+ } // Status-dependent callbacks
9657
+
9658
+
9659
+ jqXHR.statusCode(_statusCode);
9660
+ _statusCode = undefined;
9661
+
9662
+ if (fireGlobals) {
9663
+ globalEventContext.trigger(isSuccess ? "ajaxSuccess" : "ajaxError", [jqXHR, s, isSuccess ? success : error]);
9664
+ } // Complete
9665
+
9666
+
9667
+ completeDeferred.fireWith(callbackContext, [jqXHR, statusText]);
9668
+
9669
+ if (fireGlobals) {
9670
+ globalEventContext.trigger("ajaxComplete", [jqXHR, s]); // Handle the global AJAX counter
9671
+
9672
+ if (! --jQuery.active) {
9673
+ jQuery.event.trigger("ajaxStop");
9674
+ }
9675
+ }
9676
+ }
9677
+
9678
+ return jqXHR;
9679
+ },
9680
+ getJSON: function getJSON(url, data, callback) {
9681
+ return jQuery.get(url, data, callback, "json");
9682
+ },
9683
+ getScript: function getScript(url, callback) {
9684
+ return jQuery.get(url, undefined, callback, "script");
9685
+ }
9686
+ });
9687
+ jQuery.each(["get", "post"], function (_i, method) {
9688
+ jQuery[method] = function (url, data, callback, type) {
9689
+ // Shift arguments if data argument was omitted
9690
+ if (isFunction(data)) {
9691
+ type = type || callback;
9692
+ callback = data;
9693
+ data = undefined;
9694
+ } // The url can be an options object (which then must have .url)
9695
+
9696
+
9697
+ return jQuery.ajax(jQuery.extend({
9698
+ url: url,
9699
+ type: method,
9700
+ dataType: type,
9701
+ data: data,
9702
+ success: callback
9703
+ }, jQuery.isPlainObject(url) && url));
9704
+ };
9705
+ });
9706
+ jQuery.ajaxPrefilter(function (s) {
9707
+ var i;
9708
+
9709
+ for (i in s.headers) {
9710
+ if (i.toLowerCase() === "content-type") {
9711
+ s.contentType = s.headers[i] || "";
9712
+ }
9713
+ }
9714
+ });
9715
+
9716
+ jQuery._evalUrl = function (url, options, doc) {
9717
+ return jQuery.ajax({
9718
+ url: url,
9719
+ // Make this explicit, since user can override this through ajaxSetup (#11264)
9720
+ type: "GET",
9721
+ dataType: "script",
9722
+ cache: true,
9723
+ async: false,
9724
+ global: false,
9725
+ // Only evaluate the response if it is successful (gh-4126)
9726
+ // dataFilter is not invoked for failure responses, so using it instead
9727
+ // of the default converter is kludgy but it works.
9728
+ converters: {
9729
+ "text script": function textScript() {}
9730
+ },
9731
+ dataFilter: function dataFilter(response) {
9732
+ jQuery.globalEval(response, options, doc);
9733
+ }
9734
+ });
9735
+ };
9736
+
9737
+ jQuery.fn.extend({
9738
+ wrapAll: function wrapAll(html) {
9739
+ var wrap;
9740
+
9741
+ if (this[0]) {
9742
+ if (isFunction(html)) {
9743
+ html = html.call(this[0]);
9744
+ } // The elements to wrap the target around
9745
+
9746
+
9747
+ wrap = jQuery(html, this[0].ownerDocument).eq(0).clone(true);
9748
+
9749
+ if (this[0].parentNode) {
9750
+ wrap.insertBefore(this[0]);
9751
+ }
9752
+
9753
+ wrap.map(function () {
9754
+ var elem = this;
9755
+
9756
+ while (elem.firstElementChild) {
9757
+ elem = elem.firstElementChild;
9758
+ }
9759
+
9760
+ return elem;
9761
+ }).append(this);
9762
+ }
9763
+
9764
+ return this;
9765
+ },
9766
+ wrapInner: function wrapInner(html) {
9767
+ if (isFunction(html)) {
9768
+ return this.each(function (i) {
9769
+ jQuery(this).wrapInner(html.call(this, i));
9770
+ });
9771
+ }
9772
+
9773
+ return this.each(function () {
9774
+ var self = jQuery(this),
9775
+ contents = self.contents();
9776
+
9777
+ if (contents.length) {
9778
+ contents.wrapAll(html);
9779
+ } else {
9780
+ self.append(html);
9781
+ }
9782
+ });
9783
+ },
9784
+ wrap: function wrap(html) {
9785
+ var htmlIsFunction = isFunction(html);
9786
+ return this.each(function (i) {
9787
+ jQuery(this).wrapAll(htmlIsFunction ? html.call(this, i) : html);
9788
+ });
9789
+ },
9790
+ unwrap: function unwrap(selector) {
9791
+ this.parent(selector).not("body").each(function () {
9792
+ jQuery(this).replaceWith(this.childNodes);
9793
+ });
9794
+ return this;
9795
+ }
9796
+ });
9797
+
9798
+ jQuery.expr.pseudos.hidden = function (elem) {
9799
+ return !jQuery.expr.pseudos.visible(elem);
9800
+ };
9801
+
9802
+ jQuery.expr.pseudos.visible = function (elem) {
9803
+ return !!(elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length);
9804
+ };
9805
+
9806
+ jQuery.ajaxSettings.xhr = function () {
9807
+ try {
9808
+ return new window.XMLHttpRequest();
9809
+ } catch (e) {}
9810
+ };
9811
+
9812
+ var xhrSuccessStatus = {
9813
+ // File protocol always yields status code 0, assume 200
9814
+ 0: 200,
9815
+ // Support: IE <=9 only
9816
+ // #1450: sometimes IE returns 1223 when it should be 204
9817
+ 1223: 204
9818
+ },
9819
+ xhrSupported = jQuery.ajaxSettings.xhr();
9820
+ support.cors = !!xhrSupported && "withCredentials" in xhrSupported;
9821
+ support.ajax = xhrSupported = !!xhrSupported;
9822
+ jQuery.ajaxTransport(function (options) {
9823
+ var _callback, errorCallback; // Cross domain only allowed if supported through XMLHttpRequest
9824
+
9825
+
9826
+ if (support.cors || xhrSupported && !options.crossDomain) {
9827
+ return {
9828
+ send: function send(headers, complete) {
9829
+ var i,
9830
+ xhr = options.xhr();
9831
+ xhr.open(options.type, options.url, options.async, options.username, options.password); // Apply custom fields if provided
9832
+
9833
+ if (options.xhrFields) {
9834
+ for (i in options.xhrFields) {
9835
+ xhr[i] = options.xhrFields[i];
9836
+ }
9837
+ } // Override mime type if needed
9838
+
9839
+
9840
+ if (options.mimeType && xhr.overrideMimeType) {
9841
+ xhr.overrideMimeType(options.mimeType);
9842
+ } // X-Requested-With header
9843
+ // For cross-domain requests, seeing as conditions for a preflight are
9844
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
9845
+ // (it can always be set on a per-request basis or even using ajaxSetup)
9846
+ // For same-domain requests, won't change header if already provided.
9847
+
9848
+
9849
+ if (!options.crossDomain && !headers["X-Requested-With"]) {
9850
+ headers["X-Requested-With"] = "XMLHttpRequest";
9851
+ } // Set headers
9852
+
9853
+
9854
+ for (i in headers) {
9855
+ xhr.setRequestHeader(i, headers[i]);
9856
+ } // Callback
9857
+
9858
+
9859
+ _callback = function callback(type) {
9860
+ return function () {
9861
+ if (_callback) {
9862
+ _callback = errorCallback = xhr.onload = xhr.onerror = xhr.onabort = xhr.ontimeout = xhr.onreadystatechange = null;
9863
+
9864
+ if (type === "abort") {
9865
+ xhr.abort();
9866
+ } else if (type === "error") {
9867
+ // Support: IE <=9 only
9868
+ // On a manual native abort, IE9 throws
9869
+ // errors on any property access that is not readyState
9870
+ if (typeof xhr.status !== "number") {
9871
+ complete(0, "error");
9872
+ } else {
9873
+ complete( // File: protocol always yields status 0; see #8605, #14207
9874
+ xhr.status, xhr.statusText);
9875
+ }
9876
+ } else {
9877
+ complete(xhrSuccessStatus[xhr.status] || xhr.status, xhr.statusText, // Support: IE <=9 only
9878
+ // IE9 has no XHR2 but throws on binary (trac-11426)
9879
+ // For XHR2 non-text, let the caller handle it (gh-2498)
9880
+ (xhr.responseType || "text") !== "text" || typeof xhr.responseText !== "string" ? {
9881
+ binary: xhr.response
9882
+ } : {
9883
+ text: xhr.responseText
9884
+ }, xhr.getAllResponseHeaders());
9885
+ }
9886
+ }
9887
+ };
9888
+ }; // Listen to events
9889
+
9890
+
9891
+ xhr.onload = _callback();
9892
+ errorCallback = xhr.onerror = xhr.ontimeout = _callback("error"); // Support: IE 9 only
9893
+ // Use onreadystatechange to replace onabort
9894
+ // to handle uncaught aborts
9895
+
9896
+ if (xhr.onabort !== undefined) {
9897
+ xhr.onabort = errorCallback;
9898
+ } else {
9899
+ xhr.onreadystatechange = function () {
9900
+ // Check readyState before timeout as it changes
9901
+ if (xhr.readyState === 4) {
9902
+ // Allow onerror to be called first,
9903
+ // but that will not handle a native abort
9904
+ // Also, save errorCallback to a variable
9905
+ // as xhr.onerror cannot be accessed
9906
+ window.setTimeout(function () {
9907
+ if (_callback) {
9908
+ errorCallback();
9909
+ }
9910
+ });
9911
+ }
9912
+ };
9913
+ } // Create the abort callback
9914
+
9915
+
9916
+ _callback = _callback("abort");
9917
+
9918
+ try {
9919
+ // Do send the request (this may raise an exception)
9920
+ xhr.send(options.hasContent && options.data || null);
9921
+ } catch (e) {
9922
+ // #14683: Only rethrow if this hasn't been notified as an error yet
9923
+ if (_callback) {
9924
+ throw e;
9925
+ }
9926
+ }
9927
+ },
9928
+ abort: function abort() {
9929
+ if (_callback) {
9930
+ _callback();
9931
+ }
9932
+ }
9933
+ };
9934
+ }
9935
+ }); // Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
9936
+
9937
+ jQuery.ajaxPrefilter(function (s) {
9938
+ if (s.crossDomain) {
9939
+ s.contents.script = false;
9940
+ }
9941
+ }); // Install script dataType
9942
+
9943
+ jQuery.ajaxSetup({
9944
+ accepts: {
9945
+ script: "text/javascript, application/javascript, " + "application/ecmascript, application/x-ecmascript"
9946
+ },
9947
+ contents: {
9948
+ script: /\b(?:java|ecma)script\b/
9949
+ },
9950
+ converters: {
9951
+ "text script": function textScript(text) {
9952
+ jQuery.globalEval(text);
9953
+ return text;
9954
+ }
9955
+ }
9956
+ }); // Handle cache's special case and crossDomain
9957
+
9958
+ jQuery.ajaxPrefilter("script", function (s) {
9959
+ if (s.cache === undefined) {
9960
+ s.cache = false;
9961
+ }
9962
+
9963
+ if (s.crossDomain) {
9964
+ s.type = "GET";
9965
+ }
9966
+ }); // Bind script tag hack transport
9967
+
9968
+ jQuery.ajaxTransport("script", function (s) {
9969
+ // This transport only deals with cross domain or forced-by-attrs requests
9970
+ if (s.crossDomain || s.scriptAttrs) {
9971
+ var script, _callback2;
9972
+
9973
+ return {
9974
+ send: function send(_, complete) {
9975
+ script = jQuery("<script>").attr(s.scriptAttrs || {}).prop({
9976
+ charset: s.scriptCharset,
9977
+ src: s.url
9978
+ }).on("load error", _callback2 = function callback(evt) {
9979
+ script.remove();
9980
+ _callback2 = null;
9981
+
9982
+ if (evt) {
9983
+ complete(evt.type === "error" ? 404 : 200, evt.type);
9984
+ }
9985
+ }); // Use native DOM manipulation to avoid our domManip AJAX trickery
9986
+
9987
+ document.head.appendChild(script[0]);
9988
+ },
9989
+ abort: function abort() {
9990
+ if (_callback2) {
9991
+ _callback2();
9992
+ }
9993
+ }
9994
+ };
9995
+ }
9996
+ });
9997
+ var oldCallbacks = [],
9998
+ rjsonp = /(=)\?(?=&|$)|\?\?/; // Default jsonp settings
9999
+
10000
+ jQuery.ajaxSetup({
10001
+ jsonp: "callback",
10002
+ jsonpCallback: function jsonpCallback() {
10003
+ var callback = oldCallbacks.pop() || jQuery.expando + "_" + nonce.guid++;
10004
+ this[callback] = true;
10005
+ return callback;
10006
+ }
10007
+ }); // Detect, normalize options and install callbacks for jsonp requests
10008
+
10009
+ jQuery.ajaxPrefilter("json jsonp", function (s, originalSettings, jqXHR) {
10010
+ var callbackName,
10011
+ overwritten,
10012
+ responseContainer,
10013
+ jsonProp = s.jsonp !== false && (rjsonp.test(s.url) ? "url" : typeof s.data === "string" && (s.contentType || "").indexOf("application/x-www-form-urlencoded") === 0 && rjsonp.test(s.data) && "data"); // Handle iff the expected data type is "jsonp" or we have a parameter to set
10014
+
10015
+ if (jsonProp || s.dataTypes[0] === "jsonp") {
10016
+ // Get callback name, remembering preexisting value associated with it
10017
+ callbackName = s.jsonpCallback = isFunction(s.jsonpCallback) ? s.jsonpCallback() : s.jsonpCallback; // Insert callback into url or form data
10018
+
10019
+ if (jsonProp) {
10020
+ s[jsonProp] = s[jsonProp].replace(rjsonp, "$1" + callbackName);
10021
+ } else if (s.jsonp !== false) {
10022
+ s.url += (rquery.test(s.url) ? "&" : "?") + s.jsonp + "=" + callbackName;
10023
+ } // Use data converter to retrieve json after script execution
10024
+
10025
+
10026
+ s.converters["script json"] = function () {
10027
+ if (!responseContainer) {
10028
+ jQuery.error(callbackName + " was not called");
10029
+ }
10030
+
10031
+ return responseContainer[0];
10032
+ }; // Force json dataType
10033
+
10034
+
10035
+ s.dataTypes[0] = "json"; // Install callback
10036
+
10037
+ overwritten = window[callbackName];
10038
+
10039
+ window[callbackName] = function () {
10040
+ responseContainer = arguments;
10041
+ }; // Clean-up function (fires after converters)
10042
+
10043
+
10044
+ jqXHR.always(function () {
10045
+ // If previous value didn't exist - remove it
10046
+ if (overwritten === undefined) {
10047
+ jQuery(window).removeProp(callbackName); // Otherwise restore preexisting value
10048
+ } else {
10049
+ window[callbackName] = overwritten;
10050
+ } // Save back as free
10051
+
10052
+
10053
+ if (s[callbackName]) {
10054
+ // Make sure that re-using the options doesn't screw things around
10055
+ s.jsonpCallback = originalSettings.jsonpCallback; // Save the callback name for future use
10056
+
10057
+ oldCallbacks.push(callbackName);
10058
+ } // Call if it was a function and we have a response
10059
+
10060
+
10061
+ if (responseContainer && isFunction(overwritten)) {
10062
+ overwritten(responseContainer[0]);
10063
+ }
10064
+
10065
+ responseContainer = overwritten = undefined;
10066
+ }); // Delegate to script
10067
+
10068
+ return "script";
10069
+ }
10070
+ }); // Support: Safari 8 only
10071
+ // In Safari 8 documents created via document.implementation.createHTMLDocument
10072
+ // collapse sibling forms: the second one becomes a child of the first one.
10073
+ // Because of that, this security measure has to be disabled in Safari 8.
10074
+ // https://bugs.webkit.org/show_bug.cgi?id=137337
10075
+
10076
+ support.createHTMLDocument = function () {
10077
+ var body = document.implementation.createHTMLDocument("").body;
10078
+ body.innerHTML = "<form></form><form></form>";
10079
+ return body.childNodes.length === 2;
10080
+ }(); // Argument "data" should be string of html
10081
+ // context (optional): If specified, the fragment will be created in this context,
10082
+ // defaults to document
10083
+ // keepScripts (optional): If true, will include scripts passed in the html string
10084
+
10085
+
10086
+ jQuery.parseHTML = function (data, context, keepScripts) {
10087
+ if (typeof data !== "string") {
10088
+ return [];
10089
+ }
10090
+
10091
+ if (typeof context === "boolean") {
10092
+ keepScripts = context;
10093
+ context = false;
10094
+ }
10095
+
10096
+ var base, parsed, scripts;
10097
+
10098
+ if (!context) {
10099
+ // Stop scripts or inline event handlers from being executed immediately
10100
+ // by using document.implementation
10101
+ if (support.createHTMLDocument) {
10102
+ context = document.implementation.createHTMLDocument(""); // Set the base href for the created document
10103
+ // so any parsed elements with URLs
10104
+ // are based on the document's URL (gh-2965)
10105
+
10106
+ base = context.createElement("base");
10107
+ base.href = document.location.href;
10108
+ context.head.appendChild(base);
10109
+ } else {
10110
+ context = document;
10111
+ }
10112
+ }
10113
+
10114
+ parsed = rsingleTag.exec(data);
10115
+ scripts = !keepScripts && []; // Single tag
10116
+
10117
+ if (parsed) {
10118
+ return [context.createElement(parsed[1])];
10119
+ }
10120
+
10121
+ parsed = buildFragment([data], context, scripts);
10122
+
10123
+ if (scripts && scripts.length) {
10124
+ jQuery(scripts).remove();
10125
+ }
10126
+
10127
+ return jQuery.merge([], parsed.childNodes);
10128
+ };
10129
+ /**
10130
+ * Load a url into a page
10131
+ */
10132
+
10133
+
10134
+ jQuery.fn.load = function (url, params, callback) {
10135
+ var selector,
10136
+ type,
10137
+ response,
10138
+ self = this,
10139
+ off = url.indexOf(" ");
10140
+
10141
+ if (off > -1) {
10142
+ selector = stripAndCollapse(url.slice(off));
10143
+ url = url.slice(0, off);
10144
+ } // If it's a function
10145
+
10146
+
10147
+ if (isFunction(params)) {
10148
+ // We assume that it's the callback
10149
+ callback = params;
10150
+ params = undefined; // Otherwise, build a param string
10151
+ } else if (params && _typeof(params) === "object") {
10152
+ type = "POST";
10153
+ } // If we have elements to modify, make the request
10154
+
10155
+
10156
+ if (self.length > 0) {
10157
+ jQuery.ajax({
10158
+ url: url,
10159
+ // If "type" variable is undefined, then "GET" method will be used.
10160
+ // Make value of this field explicit since
10161
+ // user can override it through ajaxSetup method
10162
+ type: type || "GET",
10163
+ dataType: "html",
10164
+ data: params
10165
+ }).done(function (responseText) {
10166
+ // Save response for use in complete callback
10167
+ response = arguments;
10168
+ self.html(selector ? // If a selector was specified, locate the right elements in a dummy div
10169
+ // Exclude scripts to avoid IE 'Permission Denied' errors
10170
+ jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector) : // Otherwise use the full result
10171
+ responseText); // If the request succeeds, this function gets "data", "status", "jqXHR"
10172
+ // but they are ignored because response was set above.
10173
+ // If it fails, this function gets "jqXHR", "status", "error"
10174
+ }).always(callback && function (jqXHR, status) {
10175
+ self.each(function () {
10176
+ callback.apply(this, response || [jqXHR.responseText, status, jqXHR]);
10177
+ });
10178
+ });
10179
+ }
10180
+
10181
+ return this;
10182
+ };
10183
+
10184
+ jQuery.expr.pseudos.animated = function (elem) {
10185
+ return jQuery.grep(jQuery.timers, function (fn) {
10186
+ return elem === fn.elem;
10187
+ }).length;
10188
+ };
10189
+
10190
+ jQuery.offset = {
10191
+ setOffset: function setOffset(elem, options, i) {
10192
+ var curPosition,
10193
+ curLeft,
10194
+ curCSSTop,
10195
+ curTop,
10196
+ curOffset,
10197
+ curCSSLeft,
10198
+ calculatePosition,
10199
+ position = jQuery.css(elem, "position"),
10200
+ curElem = jQuery(elem),
10201
+ props = {}; // Set position first, in-case top/left are set even on static elem
10202
+
10203
+ if (position === "static") {
10204
+ elem.style.position = "relative";
10205
+ }
10206
+
10207
+ curOffset = curElem.offset();
10208
+ curCSSTop = jQuery.css(elem, "top");
10209
+ curCSSLeft = jQuery.css(elem, "left");
10210
+ calculatePosition = (position === "absolute" || position === "fixed") && (curCSSTop + curCSSLeft).indexOf("auto") > -1; // Need to be able to calculate position if either
10211
+ // top or left is auto and position is either absolute or fixed
10212
+
10213
+ if (calculatePosition) {
10214
+ curPosition = curElem.position();
10215
+ curTop = curPosition.top;
10216
+ curLeft = curPosition.left;
10217
+ } else {
10218
+ curTop = parseFloat(curCSSTop) || 0;
10219
+ curLeft = parseFloat(curCSSLeft) || 0;
10220
+ }
10221
+
10222
+ if (isFunction(options)) {
10223
+ // Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
10224
+ options = options.call(elem, i, jQuery.extend({}, curOffset));
10225
+ }
10226
+
10227
+ if (options.top != null) {
10228
+ props.top = options.top - curOffset.top + curTop;
10229
+ }
10230
+
10231
+ if (options.left != null) {
10232
+ props.left = options.left - curOffset.left + curLeft;
10233
+ }
10234
+
10235
+ if ("using" in options) {
10236
+ options.using.call(elem, props);
10237
+ } else {
10238
+ if (typeof props.top === "number") {
10239
+ props.top += "px";
10240
+ }
10241
+
10242
+ if (typeof props.left === "number") {
10243
+ props.left += "px";
10244
+ }
10245
+
10246
+ curElem.css(props);
10247
+ }
10248
+ }
10249
+ };
10250
+ jQuery.fn.extend({
10251
+ // offset() relates an element's border box to the document origin
10252
+ offset: function offset(options) {
10253
+ // Preserve chaining for setter
10254
+ if (arguments.length) {
10255
+ return options === undefined ? this : this.each(function (i) {
10256
+ jQuery.offset.setOffset(this, options, i);
10257
+ });
10258
+ }
10259
+
10260
+ var rect,
10261
+ win,
10262
+ elem = this[0];
10263
+
10264
+ if (!elem) {
10265
+ return;
10266
+ } // Return zeros for disconnected and hidden (display: none) elements (gh-2310)
10267
+ // Support: IE <=11 only
10268
+ // Running getBoundingClientRect on a
10269
+ // disconnected node in IE throws an error
10270
+
10271
+
10272
+ if (!elem.getClientRects().length) {
10273
+ return {
10274
+ top: 0,
10275
+ left: 0
10276
+ };
10277
+ } // Get document-relative position by adding viewport scroll to viewport-relative gBCR
10278
+
10279
+
10280
+ rect = elem.getBoundingClientRect();
10281
+ win = elem.ownerDocument.defaultView;
10282
+ return {
10283
+ top: rect.top + win.pageYOffset,
10284
+ left: rect.left + win.pageXOffset
10285
+ };
10286
+ },
10287
+ // position() relates an element's margin box to its offset parent's padding box
10288
+ // This corresponds to the behavior of CSS absolute positioning
10289
+ position: function position() {
10290
+ if (!this[0]) {
10291
+ return;
10292
+ }
10293
+
10294
+ var offsetParent,
10295
+ offset,
10296
+ doc,
10297
+ elem = this[0],
10298
+ parentOffset = {
10299
+ top: 0,
10300
+ left: 0
10301
+ }; // position:fixed elements are offset from the viewport, which itself always has zero offset
10302
+
10303
+ if (jQuery.css(elem, "position") === "fixed") {
10304
+ // Assume position:fixed implies availability of getBoundingClientRect
10305
+ offset = elem.getBoundingClientRect();
10306
+ } else {
10307
+ offset = this.offset(); // Account for the *real* offset parent, which can be the document or its root element
10308
+ // when a statically positioned element is identified
10309
+
10310
+ doc = elem.ownerDocument;
10311
+ offsetParent = elem.offsetParent || doc.documentElement;
10312
+
10313
+ while (offsetParent && (offsetParent === doc.body || offsetParent === doc.documentElement) && jQuery.css(offsetParent, "position") === "static") {
10314
+ offsetParent = offsetParent.parentNode;
10315
+ }
10316
+
10317
+ if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {
10318
+ // Incorporate borders into its offset, since they are outside its content origin
10319
+ parentOffset = jQuery(offsetParent).offset();
10320
+ parentOffset.top += jQuery.css(offsetParent, "borderTopWidth", true);
10321
+ parentOffset.left += jQuery.css(offsetParent, "borderLeftWidth", true);
10322
+ }
10323
+ } // Subtract parent offsets and element margins
10324
+
10325
+
10326
+ return {
10327
+ top: offset.top - parentOffset.top - jQuery.css(elem, "marginTop", true),
10328
+ left: offset.left - parentOffset.left - jQuery.css(elem, "marginLeft", true)
10329
+ };
10330
+ },
10331
+ // This method will return documentElement in the following cases:
10332
+ // 1) For the element inside the iframe without offsetParent, this method will return
10333
+ // documentElement of the parent window
10334
+ // 2) For the hidden or detached element
10335
+ // 3) For body or html element, i.e. in case of the html node - it will return itself
10336
+ //
10337
+ // but those exceptions were never presented as a real life use-cases
10338
+ // and might be considered as more preferable results.
10339
+ //
10340
+ // This logic, however, is not guaranteed and can change at any point in the future
10341
+ offsetParent: function offsetParent() {
10342
+ return this.map(function () {
10343
+ var offsetParent = this.offsetParent;
10344
+
10345
+ while (offsetParent && jQuery.css(offsetParent, "position") === "static") {
10346
+ offsetParent = offsetParent.offsetParent;
10347
+ }
10348
+
10349
+ return offsetParent || documentElement;
10350
+ });
10351
+ }
10352
+ }); // Create scrollLeft and scrollTop methods
10353
+
10354
+ jQuery.each({
10355
+ scrollLeft: "pageXOffset",
10356
+ scrollTop: "pageYOffset"
10357
+ }, function (method, prop) {
10358
+ var top = "pageYOffset" === prop;
10359
+
10360
+ jQuery.fn[method] = function (val) {
10361
+ return access(this, function (elem, method, val) {
10362
+ // Coalesce documents and windows
10363
+ var win;
10364
+
10365
+ if (isWindow(elem)) {
10366
+ win = elem;
10367
+ } else if (elem.nodeType === 9) {
10368
+ win = elem.defaultView;
10369
+ }
10370
+
10371
+ if (val === undefined) {
10372
+ return win ? win[prop] : elem[method];
10373
+ }
10374
+
10375
+ if (win) {
10376
+ win.scrollTo(!top ? val : win.pageXOffset, top ? val : win.pageYOffset);
10377
+ } else {
10378
+ elem[method] = val;
10379
+ }
10380
+ }, method, val, arguments.length);
10381
+ };
10382
+ }); // Support: Safari <=7 - 9.1, Chrome <=37 - 49
10383
+ // Add the top/left cssHooks using jQuery.fn.position
10384
+ // Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
10385
+ // Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
10386
+ // getComputedStyle returns percent when specified for top/left/bottom/right;
10387
+ // rather than make the css module depend on the offset module, just check for it here
10388
+
10389
+ jQuery.each(["top", "left"], function (_i, prop) {
10390
+ jQuery.cssHooks[prop] = addGetHookIf(support.pixelPosition, function (elem, computed) {
10391
+ if (computed) {
10392
+ computed = curCSS(elem, prop); // If curCSS returns percentage, fallback to offset
10393
+
10394
+ return rnumnonpx.test(computed) ? jQuery(elem).position()[prop] + "px" : computed;
10395
+ }
10396
+ });
10397
+ }); // Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
10398
+
10399
+ jQuery.each({
10400
+ Height: "height",
10401
+ Width: "width"
10402
+ }, function (name, type) {
10403
+ jQuery.each({
10404
+ padding: "inner" + name,
10405
+ content: type,
10406
+ "": "outer" + name
10407
+ }, function (defaultExtra, funcName) {
10408
+ // Margin is only for outerHeight, outerWidth
10409
+ jQuery.fn[funcName] = function (margin, value) {
10410
+ var chainable = arguments.length && (defaultExtra || typeof margin !== "boolean"),
10411
+ extra = defaultExtra || (margin === true || value === true ? "margin" : "border");
10412
+ return access(this, function (elem, type, value) {
10413
+ var doc;
10414
+
10415
+ if (isWindow(elem)) {
10416
+ // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
10417
+ return funcName.indexOf("outer") === 0 ? elem["inner" + name] : elem.document.documentElement["client" + name];
10418
+ } // Get document width or height
10419
+
10420
+
10421
+ if (elem.nodeType === 9) {
10422
+ doc = elem.documentElement; // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
10423
+ // whichever is greatest
10424
+
10425
+ return Math.max(elem.body["scroll" + name], doc["scroll" + name], elem.body["offset" + name], doc["offset" + name], doc["client" + name]);
10426
+ }
10427
+
10428
+ return value === undefined ? // Get width or height on the element, requesting but not forcing parseFloat
10429
+ jQuery.css(elem, type, extra) : // Set width or height on the element
10430
+ jQuery.style(elem, type, value, extra);
10431
+ }, type, chainable ? margin : undefined, chainable);
10432
+ };
10433
+ });
10434
+ });
10435
+ jQuery.each(["ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend"], function (_i, type) {
10436
+ jQuery.fn[type] = function (fn) {
10437
+ return this.on(type, fn);
10438
+ };
10439
+ });
10440
+ jQuery.fn.extend({
10441
+ bind: function bind(types, data, fn) {
10442
+ return this.on(types, null, data, fn);
10443
+ },
10444
+ unbind: function unbind(types, fn) {
10445
+ return this.off(types, null, fn);
10446
+ },
10447
+ delegate: function delegate(selector, types, data, fn) {
10448
+ return this.on(types, selector, data, fn);
10449
+ },
10450
+ undelegate: function undelegate(selector, types, fn) {
10451
+ // ( namespace ) or ( selector, types [, fn] )
10452
+ return arguments.length === 1 ? this.off(selector, "**") : this.off(types, selector || "**", fn);
10453
+ },
10454
+ hover: function hover(fnOver, fnOut) {
10455
+ return this.mouseenter(fnOver).mouseleave(fnOut || fnOver);
10456
+ }
10457
+ });
10458
+ jQuery.each(("blur focus focusin focusout resize scroll click dblclick " + "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + "change select submit keydown keypress keyup contextmenu").split(" "), function (_i, name) {
10459
+ // Handle event binding
10460
+ jQuery.fn[name] = function (data, fn) {
10461
+ return arguments.length > 0 ? this.on(name, null, data, fn) : this.trigger(name);
10462
+ };
10463
+ }); // Support: Android <=4.0 only
10464
+ // Make sure we trim BOM and NBSP
10465
+
10466
+ var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; // Bind a function to a context, optionally partially applying any
10467
+ // arguments.
10468
+ // jQuery.proxy is deprecated to promote standards (specifically Function#bind)
10469
+ // However, it is not slated for removal any time soon
10470
+
10471
+ jQuery.proxy = function (fn, context) {
10472
+ var tmp, args, proxy;
10473
+
10474
+ if (typeof context === "string") {
10475
+ tmp = fn[context];
10476
+ context = fn;
10477
+ fn = tmp;
10478
+ } // Quick check to determine if target is callable, in the spec
10479
+ // this throws a TypeError, but we will just return undefined.
10480
+
10481
+
10482
+ if (!isFunction(fn)) {
10483
+ return undefined;
10484
+ } // Simulated bind
10485
+
10486
+
10487
+ args = _slice.call(arguments, 2);
10488
+
10489
+ proxy = function proxy() {
10490
+ return fn.apply(context || this, args.concat(_slice.call(arguments)));
10491
+ }; // Set the guid of unique handler to the same of original handler, so it can be removed
10492
+
10493
+
10494
+ proxy.guid = fn.guid = fn.guid || jQuery.guid++;
10495
+ return proxy;
10496
+ };
10497
+
10498
+ jQuery.holdReady = function (hold) {
10499
+ if (hold) {
10500
+ jQuery.readyWait++;
10501
+ } else {
10502
+ jQuery.ready(true);
10503
+ }
10504
+ };
10505
+
10506
+ jQuery.isArray = Array.isArray;
10507
+ jQuery.parseJSON = JSON.parse;
10508
+ jQuery.nodeName = nodeName;
10509
+ jQuery.isFunction = isFunction;
10510
+ jQuery.isWindow = isWindow;
10511
+ jQuery.camelCase = camelCase;
10512
+ jQuery.type = toType;
10513
+ jQuery.now = Date.now;
10514
+
10515
+ jQuery.isNumeric = function (obj) {
10516
+ // As of jQuery 3.0, isNumeric is limited to
10517
+ // strings and numbers (primitives or objects)
10518
+ // that can be coerced to finite numbers (gh-2662)
10519
+ var type = jQuery.type(obj);
10520
+ return (type === "number" || type === "string") && // parseFloat NaNs numeric-cast false positives ("")
10521
+ // ...but misinterprets leading-number strings, particularly hex literals ("0x...")
10522
+ // subtraction forces infinities to NaN
10523
+ !isNaN(obj - parseFloat(obj));
10524
+ };
10525
+
10526
+ jQuery.trim = function (text) {
10527
+ return text == null ? "" : (text + "").replace(rtrim, "");
10528
+ }; // Register as a named AMD module, since jQuery can be concatenated with other
10529
+ // files that may use define, but not via a proper concatenation script that
10530
+ // understands anonymous AMD modules. A named AMD is safest and most robust
10531
+ // way to register. Lowercase jquery is used because AMD module names are
10532
+ // derived from file names, and jQuery is normally delivered in a lowercase
10533
+ // file name. Do this after creating the global so that if an AMD module wants
10534
+ // to call noConflict to hide this version of jQuery, it will work.
10535
+ // Note that for maximum portability, libraries that are not jQuery should
10536
+ // declare themselves as anonymous modules, and avoid setting a global if an
10537
+ // AMD loader is present. jQuery is a special case. For more information, see
10538
+ // https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
10539
+
10540
+
10541
+ if (true) {
10542
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
10543
+ return jQuery;
10544
+ }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
10545
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
10546
+ }
10547
+
10548
+ var // Map over jQuery in case of overwrite
10549
+ _jQuery = window.jQuery,
10550
+ // Map over the $ in case of overwrite
10551
+ _$ = window.$;
10552
+
10553
+ jQuery.noConflict = function (deep) {
10554
+ if (window.$ === jQuery) {
10555
+ window.$ = _$;
10556
+ }
10557
+
10558
+ if (deep && window.jQuery === jQuery) {
10559
+ window.jQuery = _jQuery;
10560
+ }
10561
+
10562
+ return jQuery;
10563
+ }; // Expose jQuery and $ identifiers, even in AMD
10564
+ // (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
10565
+ // and CommonJS for browser emulators (#13566)
10566
+
10567
+
10568
+ if (typeof noGlobal === "undefined") {
10569
+ window.jQuery = window.$ = jQuery;
10570
+ }
10571
+
10572
+ return jQuery;
10573
+ });
10574
+ /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/module.js */ "./node_modules/webpack/buildin/module.js")(module)))
10575
+
10576
+ /***/ }),
10577
+
10578
  /***/ "./node_modules/regenerator-runtime/runtime.js":
10579
  /*!*****************************************************!*\
10580
  !*** ./node_modules/regenerator-runtime/runtime.js ***!
10582
  /*! no static exports found */
10583
  /***/ (function(module, exports, __webpack_require__) {
10584
 
10585
+ /* WEBPACK VAR INJECTION */(function(module) {function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
10586
 
10587
  /**
10588
  * Copyright (c) 2014-present, Facebook, Inc.
10718
  };
10719
  };
10720
 
10721
+ function AsyncIterator(generator, PromiseImpl) {
10722
  function invoke(method, arg, resolve, reject) {
10723
  var record = tryCatch(generator[method], generator, arg);
10724
 
10729
  var value = result.value;
10730
 
10731
  if (value && _typeof(value) === "object" && hasOwn.call(value, "__await")) {
10732
+ return PromiseImpl.resolve(value.__await).then(function (value) {
10733
  invoke("next", value, resolve, reject);
10734
  }, function (err) {
10735
  invoke("throw", err, resolve, reject);
10736
  });
10737
  }
10738
 
10739
+ return PromiseImpl.resolve(value).then(function (unwrapped) {
10740
  // When a yielded Promise is resolved, its final value becomes
10741
  // the .value of the Promise<{value,done}> result for the
10742
  // current iteration.
10754
 
10755
  function enqueue(method, arg) {
10756
  function callInvokeWithMethodAndArg() {
10757
+ return new PromiseImpl(function (resolve, reject) {
10758
  invoke(method, arg, resolve, reject);
10759
  });
10760
  }
10791
  // AsyncIterator objects; they just return a Promise for the value of
10792
  // the final result produced by the iterator.
10793
 
10794
+ exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
10795
+ if (PromiseImpl === void 0) PromiseImpl = Promise;
10796
+ var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
10797
  return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
10798
  : iter.next().then(function (result) {
10799
  return result.done ? result.value : iter.next();
js/scripts.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/scripts_es6.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///(webpack)/buildin/module.js"],"names":["cf7signature_resized","wpcf7cf_timeout","wpcf7cf_show_animation","wpcf7cf_hide_animation","wpcf7cf_show_step_animation","wpcf7cf_hide_step_animation","wpcf7cf_change_events","wpcf7cf_forms","String","prototype","endsWith","search","this_len","undefined","length","substring","Wpcf7cfForm","$form","options_element","find","eq","val","form","form_options","JSON","parse","$input_hidden_group_fields","$input_hidden_groups","$input_visible_groups","$input_repeaters","$input_steps","unit_tag","closest","attr","conditions","i","condition","and_rules","if_field","if_value","operator","initial_conditions","settings","$groups","jQuery","repeaters","multistep","fields","animation_intime","parseInt","animation_outtime","animation","updateGroups","updateEventListeners","displayFields","on","e","data","setTimeout","resetRepeaters","moveToStep","each","push","Wpcf7cfRepeater","stringify","map","item","params","$repeater","id","$multistep","Wpcf7cfMultistep","forEach","repeater","updateSubs","initial_subs","window","wpcf7cf","get_simplified_dom_model","wpcf7cf_conditions","wpcf7cf_settings","signatures","constructor","Array","canvas","width","$sig_canvas","$sig_wrap","height","addClass","show_group","should_group_be_shown","then_field","removeClass","index","$group","is","finish","css","hasClass","prop","show","trigger","animate","$inputs","not","$this","defaultValue","defaultChecked","change","hide","updateHiddenFields","updateSummaryFields","$summary","fd","FormData","formdata","serializeArray","key","input","append","name","value","ajax","url","wpcf7cf_global_settings","ajaxurl","type","processData","contentType","dataType","success","json","html","summaryHtml","hidden_fields","hidden_groups","visible_groups","get_nested_conditions","off","clearTimeout","text","$","num_subs","orig_id","min","max","$repeater_sub","children","$repeater_controls","$repeater_sub_clone","clone","addBack","prev_suffix","new_suffix","prev_name","orig_name","new_name","replace","prev_data_id","orig_data_id","new_data_id","prev_id","new_id","prev_for","orig_for","new_for","repeater_sub_html","outerHTML","$repeater_count_field","$button_add","$button_remove","click","remove","subs_to_show","subs_to_add","removeSubs","addSubs","showButtonRemove","showButtonAdd","html_str","sub_suffix","RegExp","$html","insertBefore","updateMultistepState","cf7mdInit","slice","duration","done","$steps","$btn_next","$btn_prev","$dots","currentStep","numSteps","validateStep","result","stopImmediatePropagation","document","ajaxComplete","xhr","hasOwnProperty","responseJSON","status","into","step_index","Promise","resolve","_cf7mls_db_form_data_id","checkError","invalid_fields","el","controlWrap","reason","console","log","parent","message","fail","always","previousStep","scrollIntoView","getFieldsInStep","simpleDom","inStep","filter","step","initForm","$current_form","simplified_dom","groups","sub_conditions","g","relevant_conditions","original_name","and_rule","suffix","concat","currentNode","ni","createNodeIterator","NodeFilter","SHOW_ELEMENT","nextNode","classList","contains","dataset","className","hasAttribute","getAttribute","original_name_length","stepsData","fieldsInCurrentStep","$submit_button","$ajax_loader","detach","appendTo","and_rule_i","condition_ok","condition_and_rule","$field","if_val","if_val_as_number","isFinite","parseFloat","regex_patt","isValidRegex","$option","option_val","test","field_val","field_val_as_number","field_is_checked","all_values","checked_values","checked_value_index","inArray","value_index","ind","checked_val","checked_val_as_number","ready","f","old_wpcf7ExclusiveCheckbox","fn","wpcf7ExclusiveCheckbox","module","exports","require","runtime","Op","Object","hasOwn","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","_invoke","makeInvokeMethod","tryCatch","obj","arg","call","err","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","displayName","defineIteratorMethods","method","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","invoke","reject","record","then","unwrapped","error","previousPromise","enqueue","callInvokeWithMethodAndArg","async","iter","next","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","info","resultName","nextLoc","toString","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","keys","object","reverse","pop","iterable","iteratorMethod","isNaN","skipTempReset","prev","charAt","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","webpackPolyfill","deprecate","paths","defineProperty","enumerable","get","l"],"mappings":"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","file":"scripts.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/scripts_es6.js\");\n","\"use strict\";\n\nvar cf7signature_resized = 0; // for compatibility with contact-form-7-signature-addon\n\nvar wpcf7cf_timeout;\n\nvar wpcf7cf_show_animation = { \"height\": \"show\", \"marginTop\": \"show\", \"marginBottom\": \"show\", \"paddingTop\": \"show\", \"paddingBottom\": \"show\" };\nvar wpcf7cf_hide_animation = { \"height\": \"hide\", \"marginTop\": \"hide\", \"marginBottom\": \"hide\", \"paddingTop\": \"hide\", \"paddingBottom\": \"hide\" };\n\nvar wpcf7cf_show_step_animation = { \"opacity\": \"show\" };\nvar wpcf7cf_hide_step_animation = { \"opacity\": \"hide\" };\n\nvar wpcf7cf_change_events = 'input.wpcf7cf paste.wpcf7cf change.wpcf7cf click.wpcf7cf propertychange.wpcf7cf';\n\nvar wpcf7cf_forms = [];\n\n// endswith polyfill\nif (!String.prototype.endsWith) {\n\tString.prototype.endsWith = function(search, this_len) {\n\t\tif (this_len === undefined || this_len > this.length) {\n\t\t\tthis_len = this.length;\n\t\t}\n\t\treturn this.substring(this_len - search.length, this_len) === search;\n\t};\n}\n\nvar Wpcf7cfForm = function($form) {\n\n var options_element = $form.find('input[name=\"_wpcf7cf_options\"]').eq(0);\n if (!options_element.length || !options_element.val()) {\n // doesn't look like a CF7 form created with conditional fields plugin enabled.\n return false;\n }\n\n var form = this;\n\n var form_options = JSON.parse(options_element.val());\n\n form.$form = $form;\n form.$input_hidden_group_fields = $form.find('[name=\"_wpcf7cf_hidden_group_fields\"]');\n form.$input_hidden_groups = $form.find('[name=\"_wpcf7cf_hidden_groups\"]');\n form.$input_visible_groups = $form.find('[name=\"_wpcf7cf_visible_groups\"]');\n form.$input_repeaters = $form.find('[name=\"_wpcf7cf_repeaters\"]');\n form.$input_steps = $form.find('[name=\"_wpcf7cf_steps\"]');\n\n form.unit_tag = $form.closest('.wpcf7').attr('id');\n form.conditions = form_options['conditions'];\n\n // compatibility with conditional forms created with older versions of the plugin ( < 1.4 )\n for (var i=0; i < form.conditions.length; i++) {\n var condition = form.conditions[i];\n if (!('and_rules' in condition)) {\n condition.and_rules = [{'if_field':condition.if_field,'if_value':condition.if_value,'operator':condition.operator}];\n }\n }\n\n form.initial_conditions = form.conditions;\n form.settings = form_options['settings'];\n\n form.$groups = jQuery(); // empty jQuery set\n form.repeaters = [];\n form.multistep = null;\n form.fields = [];\n\n form.settings.animation_intime = parseInt(form.settings.animation_intime);\n form.settings.animation_outtime = parseInt(form.settings.animation_outtime);\n\n if (form.settings.animation === 'no') {\n form.settings.animation_intime = 0;\n form.settings.animation_outtime = 0;\n }\n\n form.updateGroups();\n form.updateEventListeners();\n form.displayFields();\n\n // bring form in initial state if the reset event is fired on it.\n form.$form.on('reset.wpcf7cf', form, function(e) {\n var form = e.data;\n setTimeout(function(){\n form.displayFields();\n form.resetRepeaters();\n if (form.multistep != null) {\n form.multistep.moveToStep(1); \n }\n },200);\n });\n\n // PRO ONLY\n\n jQuery('.wpcf7cf_repeater:not(.wpcf7cf_repeater .wpcf7cf_repeater)', $form).each(function(){\n form.repeaters.push(new Wpcf7cfRepeater(jQuery(this),form));\n });\n\n form.$input_repeaters.val(JSON.stringify(form.repeaters.map((item)=>item.params.$repeater.id)));\n\n var $multistep = jQuery('.wpcf7cf_multistep', $form);\n\n if ($multistep.length) {\n form.multistep = new Wpcf7cfMultistep($multistep, form);\n // window.wpcf7cf.updateMultistepState(form.multistep);\n }\n\n // END PRO ONLY\n\n}\n\n/**\n * reset initial number of subs for each repeater.\n * (does not clear values)\n */\nWpcf7cfForm.prototype.resetRepeaters = function() {\n var form = this;\n form.repeaters.forEach(repeater => {\n repeater.updateSubs( repeater.params.$repeater.initial_subs );\n });\n}\n\nWpcf7cfForm.prototype.displayFields = function() {\n\n var form = this;\n\n window.wpcf7cf.get_simplified_dom_model(form.$form);\n\n var unit_tag = this.unit_tag;\n var wpcf7cf_conditions = this.conditions;\n var wpcf7cf_settings = this.settings;\n\n //for compatibility with contact-form-7-signature-addon\n if (cf7signature_resized === 0 && typeof signatures !== 'undefined' && signatures.constructor === Array && signatures.length > 0 ) {\n for (var i = 0; i < signatures.length; i++) {\n if (signatures[i].canvas.width === 0) {\n\n var $sig_canvas = jQuery(\".wpcf7-form-control-signature-body>canvas\");\n var $sig_wrap = jQuery(\".wpcf7-form-control-signature-wrap\");\n $sig_canvas.eq(i).attr('width', $sig_wrap.width());\n $sig_canvas.eq(i).attr('height', $sig_wrap.height());\n\n cf7signature_resized = 1;\n }\n }\n }\n\n form.$groups.addClass('wpcf7cf-hidden');\n\n for (var i=0; i < wpcf7cf_conditions.length; i++) {\n\n var condition = wpcf7cf_conditions[i];\n\n var show_group = window.wpcf7cf.should_group_be_shown(condition, form.$form);\n\n if (show_group) {\n jQuery('[data-id='+condition.then_field+']',form.$form).eq(0).removeClass('wpcf7cf-hidden');\n }\n }\n\n var animation_intime = wpcf7cf_settings.animation_intime;\n var animation_outtime = wpcf7cf_settings.animation_outtime;\n\n form.$groups.each(function (index) {\n var $group = jQuery(this);\n if ($group.is(':animated')) $group.finish(); // stop any current animations on the group\n if ($group.css('display') === 'none' && !$group.hasClass('wpcf7cf-hidden')) {\n if ($group.prop('tagName') === 'SPAN') {\n $group.show().trigger('wpcf7cf_show_group');\n } else {\n $group.animate(wpcf7cf_show_animation, animation_intime).trigger('wpcf7cf_show_group'); // show\n }\n } else if ($group.css('display') !== 'none' && $group.hasClass('wpcf7cf-hidden')) {\n\n if ($group.attr('data-clear_on_hide') !== undefined) {\n var $inputs = jQuery(':input', $group).not(':button, :submit, :reset, :hidden');\n\n $inputs.each(function(){\n var $this = jQuery(this);\n $this.val(this.defaultValue);\n $this.prop('checked', this.defaultChecked);\n });\n\n $inputs.change();\n //display_fields();\n }\n\n if ($group.prop('tagName') === 'SPAN') {\n $group.hide().trigger('wpcf7cf_hide_group');\n } else {\n $group.animate(wpcf7cf_hide_animation, animation_outtime).trigger('wpcf7cf_hide_group'); // hide\n }\n\n }\n });\n\n form.updateHiddenFields();\n form.updateSummaryFields();\n};\n\nWpcf7cfForm.prototype.updateSummaryFields = function() {\n var $summary = jQuery('.wpcf7cf-summary', this.$form);\n\n if ($summary.length == 0 || !$summary.is(':visible')) return;\n\n var fd = new FormData();\n\n var formdata = this.$form.serializeArray();\n jQuery.each(formdata,function(key, input){\n fd.append(input.name, input.value);\n });\n\n jQuery.ajax({\n url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_get_summary',\n type: 'POST',\n data: fd,\n processData: false,\n contentType: false,\n dataType: 'json',\n success: function(json) {\n $summary.html(json.summaryHtml);\n }\n });\n};\n\nWpcf7cfForm.prototype.updateHiddenFields = function() {\n\n var form = this;\n\n var hidden_fields = [];\n var hidden_groups = [];\n var visible_groups = [];\n\n form.$groups.each(function () {\n var $this = jQuery(this);\n if ($this.hasClass('wpcf7cf-hidden')) {\n hidden_groups.push($this.data('id'));\n $this.find('input,select,textarea').each(function () {\n hidden_fields.push(jQuery(this).attr('name'));\n });\n } else {\n visible_groups.push($this.data('id'));\n }\n });\n\n form.hidden_fields = hidden_fields;\n form.hidden_groups = hidden_groups;\n form.visible_groups = visible_groups;\n\n form.$input_hidden_group_fields.val(JSON.stringify(hidden_fields));\n form.$input_hidden_groups.val(JSON.stringify(hidden_groups));\n form.$input_visible_groups.val(JSON.stringify(visible_groups));\n\n return true;\n};\nWpcf7cfForm.prototype.updateGroups = function() {\n var form = this;\n form.$groups = form.$form.find('[data-class=\"wpcf7cf_group\"]');\n\n form.conditions = window.wpcf7cf.get_nested_conditions(form.initial_conditions, form.$form);\n\n};\nWpcf7cfForm.prototype.updateEventListeners = function() {\n\n var form = this;\n\n // monitor input changes, and call display_fields() if something has changed\n jQuery('input, select, textarea, button',form.$form).not('.wpcf7cf_add, .wpcf7cf_remove').off(wpcf7cf_change_events).on(wpcf7cf_change_events,form, function(e) {\n var form = e.data;\n clearTimeout(wpcf7cf_timeout);\n wpcf7cf_timeout = setTimeout(function() {\n form.displayFields();\n }, 100);\n });\n\n // PRO ONLY\n jQuery('.wpcf7cf-togglebutton', form.$form).off('click.toggle_wpcf7cf').on('click.toggle_wpcf7cf',function() {\n var $this = jQuery(this);\n if ($this.text() === $this.data('val-1')) {\n $this.text($this.data('val-2'));\n $this.val($this.data('val-2'));\n } else {\n $this.text($this.data('val-1'));\n $this.val($this.data('val-1'));\n }\n });\n // END PRO ONLY\n};\n\n// PRO ONLY\nfunction Wpcf7cfRepeater($repeater, form) {\n var $ = jQuery;\n\n var repeater = this;\n\n var wpcf7cf_settings = form.settings;\n\n repeater.form = form;\n\n $repeater.num_subs = 0;\n $repeater.id = $repeater.data('id');\n $repeater.orig_id = $repeater.data('orig_data_id');\n $repeater.min = typeof( $repeater.data('min')) !== 'undefined' ? parseInt($repeater.data('min')) : 1;\n $repeater.max = typeof( $repeater.data('max')) !== 'undefined' ? parseInt($repeater.data('max')) : 200;\n $repeater.initial_subs = typeof( $repeater.data('initial')) !== 'undefined' ? parseInt($repeater.data('initial')) : $repeater.min;\n if ($repeater.initial_subs > $repeater.max) $repeater.initial_subs = $repeater.max;\n var $repeater_sub = $repeater.children('.wpcf7cf_repeater_sub').eq(0);\n var $repeater_controls = $repeater.children('.wpcf7cf_repeater_controls').eq(0);\n\n var $repeater_sub_clone = $repeater_sub.clone();\n\n $repeater_sub_clone.find('.wpcf7cf_repeater_sub').addBack('.wpcf7cf_repeater_sub').each(function() {\n var $this = jQuery(this);\n var prev_suffix = $this.attr('data-repeater_sub_suffix');\n var new_suffix = prev_suffix+'__{{repeater_sub_suffix}}';\n $this.attr('data-repeater_sub_suffix', new_suffix);\n });\n\n $repeater_sub_clone.find('[name]').each(function() {\n var $this = jQuery(this);\n var prev_name = $this.attr('name');\n var orig_name = $this.attr('data-orig_name') != null ? $this.attr('data-orig_name') : prev_name;\n var new_name = prev_name+'__{{repeater_sub_suffix}}';\n\n if(prev_name.endsWith('_count')) {\n new_name = prev_name.replace('_count','__{{repeater_sub_suffix}}_count');\n }\n\n $this.attr('name', new_name);\n $this.attr('data-orig_name', orig_name);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_name);\n });\n\n $repeater_sub_clone.find('.wpcf7cf_repeater,[data-class=\"wpcf7cf_group\"]').each(function() {\n var $this = jQuery(this);\n var prev_data_id = $this.attr('data-id');\n var orig_data_id = $this.attr('data-orig_data_id') != null ? $this.attr('data-orig_data_id') : prev_data_id;\n var new_data_id = prev_data_id+'__{{repeater_sub_suffix}}';\n\n if(prev_data_id.endsWith('_count')) {\n new_data_id = prev_data_id.replace('_count','__{{repeater_sub_suffix}}_count');\n }\n\n $this.attr('data-id', new_data_id);\n $this.attr('data-orig_data_id', orig_data_id);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_data_id);\n });\n\n $repeater_sub_clone.find('[id]').each(function() {\n var $this = jQuery(this);\n var prev_id = $this.attr('id');\n var orig_id = $this.attr('data-orig_id') != null ? $this.attr('data-orig_id') : prev_id;\n var new_id = prev_id+'__{{repeater_sub_suffix}}';\n\n $this.attr('id', new_id);\n $this.attr('data-orig_id', orig_id);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_id);\n });\n\n $repeater_sub_clone.find('[for]').each(function() {\n var $this = jQuery(this);\n var prev_for = $this.attr('for');\n var orig_for = $this.attr('data-orig_for') != null ? $this.attr('data-orig_for') : prev_for;\n var new_for = prev_for+'__{{repeater_sub_suffix}}';\n\n $this.attr('for', new_for);\n $this.attr('data-orig_for', orig_for);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_for);\n });\n\n var repeater_sub_html = $repeater_sub_clone[0].outerHTML;\n\n var $repeater_count_field = $repeater.find('[name='+$repeater.id+'_count]').eq(0);\n var $button_add = $repeater_controls.find('.wpcf7cf_add').eq(0);\n var $button_remove = $repeater_controls.find('.wpcf7cf_remove').eq(0);\n\n var params = {\n $repeater: $repeater,\n $repeater_count_field: $repeater_count_field,\n repeater_sub_html: repeater_sub_html,\n $repeater_controls: $repeater_controls,\n $button_add: $button_add,\n $button_remove: $button_remove,\n wpcf7cf_settings: wpcf7cf_settings\n };\n \n this.params = params;\n\n $button_add.click( repeater, function(e) {\n var repeater = e.data;\n repeater.updateSubs(params.$repeater.num_subs+1);\n });\n\n $button_remove.click( repeater,function(e) {\n var repeater = e.data;\n repeater.updateSubs(params.$repeater.num_subs-1);\n });\n\n jQuery('> .wpcf7cf_repeater_sub',params.$repeater).eq(0).remove(); // remove the first sub, it's just a template.\n\n repeater.updateSubs($repeater.initial_subs); \n\n}\n\n\n\nWpcf7cfRepeater.prototype.updateSubs = function(subs_to_show) {\n var repeater = this;\n var params = repeater.params;\n var subs_to_add = subs_to_show - params.$repeater.num_subs;\n\n if (subs_to_add < 0) {\n repeater.removeSubs(-subs_to_add);\n } else if (subs_to_add > 0) {\n repeater.addSubs(subs_to_add);\n }\n\n var showButtonRemove = false;\n var showButtonAdd = false;\n\n if (params.$repeater.num_subs < params.$repeater.max) {\n showButtonAdd = true;\n }\n if (params.$repeater.num_subs > params.$repeater.min) {\n showButtonRemove = true;\n }\n\n if (showButtonAdd) {\n params.$button_add.show();\n } else {\n params.$button_add.hide();\n\n }\n\n if (showButtonRemove) {\n params.$button_remove.show();\n } else {\n params.$button_remove.hide();\n }\n\n params.$repeater_count_field.val(subs_to_show);\n\n};\nWpcf7cfRepeater.prototype.addSubs = function(subs_to_add) {\n var $ = jQuery;\n var params = this.params;\n var repeater = this;\n var form = repeater.form;\n\n\n var $repeater = params.$repeater; \n var $repeater_controls = params.$repeater_controls;\n\n //jQuery(params.repeater_sub_html.replace(/name=\"(.*?)\"/g,'name=\"wpcf7cf_repeater['+$repeater.id+']['+$repeater.num_subs+'][$1]\" data-original-name=\"$1\"')).hide().insertBefore($repeater_controls).animate(wpcf7cf_show_animation, params.wpcf7cf_settings.animation_intime);\n\n var html_str = '';\n\n for(var i=1; i<=subs_to_add; i++) {\n var sub_suffix = $repeater.num_subs+i;\n html_str += params.repeater_sub_html.replace(/\\{\\{repeater_sub_suffix\\}\\}/g,sub_suffix)\n .replace(new RegExp('\\{\\{'+$repeater.orig_id+'_index\\}\\}','g'),sub_suffix);\n }\n\n\n var $html = jQuery(html_str);\n\n // Add the newly created fields to the form\n $html.hide().insertBefore($repeater_controls).animate(wpcf7cf_show_animation, params.wpcf7cf_settings.animation_intime).trigger('wpcf7cf_repeater_added');\n\n jQuery('.wpcf7cf_repeater', $html).each(function(){\n form.repeaters.push(new Wpcf7cfRepeater(jQuery(this),form));\n });\n form.$input_repeaters.val(JSON.stringify(form.repeaters.map((item)=>item.params.$repeater.id)));\n\n $repeater.num_subs+= subs_to_add;\n\n window.wpcf7cf.updateMultistepState(form.multistep);\n form.updateGroups();\n form.updateEventListeners();\n form.displayFields();\n\n // Exclusive Checkbox\n $html.on( 'click', '.wpcf7-exclusive-checkbox input:checkbox', function() {\n var name = $( this ).attr( 'name' );\n $html.find( 'input:checkbox[name=\"' + name + '\"]' ).not( this ).prop( 'checked', false );\n } );\n\n //basic compatibility with material-design-for-contact-form-7\n if (typeof window.cf7mdInit === \"function\") {\n window.cf7mdInit();\n }\n\n return false;\n};\nWpcf7cfRepeater.prototype.removeSubs = function(num_subs) {\n var $ = jQuery;\n var params = this.params;\n var form = this.form;\n\n params.$repeater.num_subs-= num_subs;\n\n jQuery('> .wpcf7cf_repeater_sub',params.$repeater).slice(-num_subs).animate(wpcf7cf_hide_animation, {duration:params.wpcf7cf_settings.animation_intime, done:function() {\n var $this = jQuery(this);\n //remove the actual fields from the form\n $this.remove();\n params.$repeater.trigger('wpcf7cf_repeater_removed');\n window.wpcf7cf.updateMultistepState(form.multistep);\n form.updateGroups();\n form.updateEventListeners();\n form.displayFields();\n }});\n\n return false;\n};\n\nfunction Wpcf7cfMultistep($multistep, form) {\n var multistep = this;\n multistep.$multistep = $multistep;\n multistep.form = form;\n multistep.$steps = $multistep.find('.wpcf7cf_step');\n multistep.$btn_next = $multistep.find('.wpcf7cf_next');\n multistep.$btn_prev = $multistep.find('.wpcf7cf_prev');\n multistep.$dots = $multistep.find('.wpcf7cf_steps-dots');\n multistep.currentStep = 0;\n multistep.numSteps = multistep.$steps.length;\n\n\n multistep.$dots.html('');\n for (var i = 1; i <= multistep.numSteps; i++) {\n multistep.$dots.append(`\n <div class=\"dot\" data-step=\"${i}\">\n <div class=\"step-index\">${i}</div>\n <div class=\"step-title\">${multistep.$steps.eq(i-1).data('title')}</div>\n </div>\n `);\n }\n\n multistep.$btn_next.on('click.wpcf7cf_step', async function() {\n \n var result = await multistep.validateStep(multistep.currentStep);\n if (result === 'success') {\n multistep.moveToStep(multistep.currentStep+1); \n }\n\n });\n\n // If form is submitted (by pressing retrun for example), and if we are not on the last step,\n // then trigger click event on the $next button instead.\n multistep.form.$form.on('submit.wpcf7cf_step', function(e) {\n\n if (multistep.currentStep !== multistep.numSteps) {\n multistep.$btn_next.trigger('click.wpcf7cf_step');\n\n e.stopImmediatePropagation();\n return false;\n }\n });\n\n multistep.$btn_prev.click(function() {\n multistep.moveToStep(multistep.currentStep-1);\n });\n\n multistep.moveToStep(1);\n}\n\njQuery(document).ajaxComplete(function(e, xhr, settings){\n if (\n xhr.hasOwnProperty('responseJSON') &&\n xhr.responseJSON != null &&\n xhr.responseJSON.hasOwnProperty('status') &&\n xhr.responseJSON.hasOwnProperty('into') &&\n xhr.responseJSON.status === \"mail_success\"\n ) {\n jQuery( xhr.responseJSON.into ).trigger('reset.wpcf7cf');\n }\n});\n\nWpcf7cfMultistep.prototype.validateStep = function(step_index) {\n\n var multistep = this;\n var $multistep = multistep.$multistep;\n var $form = multistep.form.$form;\n\n $form.find('.wpcf7-response-output').addClass('wpcf7-display-none');\n\n return new Promise(resolve => {\n\n var fd = new FormData();\n\n // TEST IF FILES UPLOADS WORK? THEN REMOVE THIS\n // jQuery.each($form.find('[data-id=\"step'+step_index+'\"] input[type=\"file\"]'), function(index, el) {\n // fd.append(jQuery(el).attr('name'), jQuery(el)[0].files[0]);\n // });\n\n var formdata = $form.serializeArray();\n jQuery.each(formdata,function(key, input){\n fd.append(input.name, input.value);\n });\n\n jQuery.ajax({\n url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_validate_step',\n type: 'POST',\n data: fd,\n processData: false,\n contentType: false,\n dataType: 'json',\n }).done(function(json) {\n\n /*\n * Insert _form_data_id if 'json variable' has\n */\n if (typeof json._cf7mls_db_form_data_id != 'undefined') {\n if (!form.find('input[name=\"_cf7mls_db_form_data_id\"]').length) {\n form.append('<input type=\"hidden\" name=\"_cf7mls_db_form_data_id\" value=\"'+json._cf7mls_db_form_data_id+'\" />');\n }\n }\n\n //reset error messages\n $multistep.find('.wpcf7-form-control-wrap').removeClass('cf7mls-invalid');\n $multistep.find('.wpcf7-form-control-wrap .wpcf7-not-valid-tip').remove();\n $multistep.find('.wpcf7-response-output').remove();\n $multistep.find('.wpcf7-response-output.wpcf7-validation-errors').removeClass('wpcf7-validation-errors');\n\n if (!json.success) {\n var checkError = 0;\n\n jQuery.each(json.invalid_fields, function(index, el) {\n if ($multistep.find('input[name=\"'+index+'\"]').length ||\n $multistep.find('input[name=\"'+index+'[]\"]').length ||\n $multistep.find('select[name=\"'+index+'\"]').length ||\n $multistep.find('select[name=\"'+index+'[]\"]').length ||\n $multistep.find('textarea[name=\"'+index+'\"]').length ||\n $multistep.find('textarea[name=\"'+index+'[]\"]').length\n ) {\n checkError = checkError + 1;\n\n var controlWrap = jQuery('.wpcf7-form-control-wrap.' + index, $form);\n controlWrap.addClass('cf7mls-invalid');\n controlWrap.find('span.wpcf7-not-valid-tip').remove();\n controlWrap.append('<span role=\"alert\" class=\"wpcf7-not-valid-tip\">' + el.reason + '</span>');\n\n //return false;\n }\n });\n\n resolve('failed');\n //$multistep.append('<div class=\"wpcf7-response-output wpcf7-display-none wpcf7-validation-errors\" style=\"display: block;\" role=\"alert\">' + json.message + '</div>');\n\n console.log($multistep.parent().find('.wpcf7-response-output'));\n $multistep.parent().find('.wpcf7-response-output').removeClass('wpcf7-display-none').html(json.message);\n\n } else if (json.success) {\n resolve('success');\n return false;\n }\n\n }).fail(function() {\n resolve('error');\n }).always(function() {\n // do nothing\n });\n });\n\n};\nWpcf7cfMultistep.prototype.moveToStep = function(step_index) {\n var multistep = this;\n var previousStep = multistep.currentStep;\n\n multistep.currentStep = step_index > multistep.numSteps ? multistep.numSteps\n : step_index < 1 ? 1\n : step_index;\n\n // ANIMATION DISABLED FOR NOW cause it's ugly\n // multistep.$steps.animate(wpcf7cf_hide_step_animation, multistep.form.settings.animation_outtime);\n // multistep.$steps.eq(multistep.currentStep-1).animate(wpcf7cf_show_step_animation, multistep.form.settings.animation_intime);\n\n multistep.$multistep.attr('data-current_step', multistep.currentStep);\n multistep.$steps.hide();\n multistep.$steps\n .eq(multistep.currentStep-1)\n .show()\n .trigger('wpcf7cf_change_step', [previousStep, multistep.currentStep]);\n\n multistep.form.$form[0].scrollIntoView();\n\n multistep.form.updateSummaryFields();\n\n window.wpcf7cf.updateMultistepState(multistep);\n};\n\nWpcf7cfMultistep.prototype.getFieldsInStep = function(step_index) {\n var simpleDom = window.wpcf7cf.get_simplified_dom_model(this.form.$form);\n var inStep = false;\n return simpleDom.filter(function(item, i) {\n if(item.type == 'step') {\n inStep = item.step == step_index+'';\n }\n return inStep && item.type == 'input';\n }).map(function(item) {\n return item.name;\n });\n};\n\n// END PRO ONLY\n\nwindow.wpcf7cf = {\n\n // keep this for backwards compatibility\n initForm : function($form) {\n wpcf7cf_forms.push(new Wpcf7cfForm($form));\n },\n\n get_nested_conditions : function(conditions, $current_form) {\n //loop trough conditions. Then loop trough the dom, and each repeater we pass we should update all sub_values we encounter with __index\n var simplified_dom = window.wpcf7cf.get_simplified_dom_model($current_form);\n var groups = simplified_dom.filter(function(item, i) {\n return item.type==='group';\n });\n\n var sub_conditions = [];\n\n for(var i = 0; i < groups.length; i++) {\n var g = groups[i];\n var relevant_conditions = conditions.filter(function(condition, i) {\n return condition.then_field === g.original_name;\n });\n \n var relevant_conditions = relevant_conditions.map(function(item,i) {\n return {\n then_field : g.name,\n and_rules : item.and_rules.map(function(and_rule, i) {\n return {\n if_field : and_rule.if_field+g.suffix,\n if_value : and_rule.if_value,\n operator : and_rule.operator\n };\n })\n }\n });\n\n sub_conditions = sub_conditions.concat(relevant_conditions);\n }\n return conditions.concat(sub_conditions);\n },\n\n get_simplified_dom_model : function($current_form) {\n // if the dom is something like:\n // <form>\n // <repeater ra>\n // <group ga__1>\n // <repeater rb__1>\n // <input txta__1__1 />\n // <input txta__1__2 />\n // </repeater>\n // <group gb__1>\n // <input txtb__1 />\n // </group>\n // </group>\n // <group ga__2>\n // <repeater rb__2>\n // <input txta__2__1 />\n // </repeater>\n // <group gb__2>\n // <input txtb__2 />\n // </group>\n // </group>\n // </repeater>\n // </form>\n // \n // return something like:\n // [{type:repeater, name:'ra', suffix: '__1'}, {type: group, name:'ga', suffix: '__1'}, ...]\n\n var currentNode;\n var ni = document.createNodeIterator($current_form[0], NodeFilter.SHOW_ELEMENT, null, false); //, NodeFilter.SHOW_ELEMENT, function(){ return NodeFilter.FILTER_ACCEPT; }\n\n var simplified_dom = [];\n\n while(currentNode = ni.nextNode()) {\n if (currentNode.classList.contains('wpcf7cf_repeater')) {\n simplified_dom.push({type:'repeater', name:currentNode.dataset.id, original_name:currentNode.dataset.orig_data_id})\n } else if (currentNode.dataset.class == 'wpcf7cf_group') {\n simplified_dom.push({type:'group', name:currentNode.dataset.id, original_name:currentNode.dataset.orig_data_id})\n } else if (currentNode.className == 'wpcf7cf_step') {\n simplified_dom.push({type:'step', name:currentNode.dataset.id, original_name:currentNode.dataset.id, step: currentNode.dataset.id.substring(5)})\n } else if (currentNode.hasAttribute('name')) {\n simplified_dom.push({type:'input', name:currentNode.getAttribute('name'), original_name:currentNode.getAttribute('data-orig_name')})\n }\n }\n\n simplified_dom = simplified_dom.map(function(item, i){\n var original_name_length = item.original_name == null ? item.name.length : item.original_name.length;\n item.suffix = item.name.substring(original_name_length);\n return item;\n });\n\n //console.table(simplified_dom);\n return simplified_dom;\n\n },\n\n updateMultistepState: function (multistep) {\n if (multistep == null) return;\n\n // update hidden input field\n\n var stepsData = {\n currentStep : multistep.currentStep,\n numSteps : multistep.numSteps,\n fieldsInCurrentStep : multistep.getFieldsInStep(multistep.currentStep)\n };\n multistep.form.$input_steps.val(JSON.stringify(stepsData));\n\n // update Buttons\n multistep.$btn_prev.removeClass('disabled');\n multistep.$btn_next.removeClass('disabled');\n if (multistep.currentStep == multistep.numSteps) {\n multistep.$btn_next.addClass('disabled');\n }\n if (multistep.currentStep == 1) {\n multistep.$btn_prev.addClass('disabled');\n }\n\n // replace next button with submit button on last step.\n // TODO: make this depend on a setting\n var $submit_button = multistep.form.$form.find('input[type=\"submit\"]').eq(0);\n var $ajax_loader = multistep.form.$form.find('.ajax-loader').eq(0);\n if (multistep.currentStep == multistep.numSteps) {\n multistep.$btn_next.hide();\n $ajax_loader.detach().appendTo(multistep.$btn_next.parent());\n $submit_button.detach().appendTo(multistep.$btn_next.parent());\n $submit_button.show();\n } else {\n $submit_button.hide();\n multistep.$btn_next.show();\n }\n\n // update dots\n var $dots = multistep.$dots.find('.dot');\n $dots.removeClass('active').removeClass('completed');\n for(var step = 1; step <= multistep.numSteps; step++) {\n if (step < multistep.currentStep) {\n $dots.eq(step-1).addClass('completed');\n } else if (step == multistep.currentStep) {\n $dots.eq(step-1).addClass('active');\n }\n }\n\n },\n\n should_group_be_shown : function(condition, $current_form) {\n\n var $ = jQuery;\n\n var show_group = true;\n\n for (var and_rule_i = 0; and_rule_i < condition.and_rules.length; and_rule_i++) {\n\n var condition_ok = false;\n\n var condition_and_rule = condition.and_rules[and_rule_i];\n\n var $field = jQuery('[name=\"' + condition_and_rule.if_field + '\"], [name=\"' + condition_and_rule.if_field + '[]\"], [data-original-name=\"' + condition_and_rule.if_field + '\"], [data-original-name=\"' + condition_and_rule.if_field + '[]\"]',$current_form);\n\n var if_val = condition_and_rule.if_value;\n var if_val_as_number = isFinite(parseFloat(if_val)) ? parseFloat(if_val):0;\n var operator = condition_and_rule.operator;\n \n var regex_patt = /.*/i; // fallback regex pattern\n var isValidRegex = true;\n try {\n regex_patt = new RegExp(if_val, 'i');\n } catch(e) {\n isValidRegex = false;\n }\n\n\n //backwards compat\n operator = operator === '≤' ? 'less than or equals' : operator;\n operator = operator === '≥' ? 'greater than or equals' : operator;\n operator = operator === '>' ? 'greater than' : operator;\n operator = operator === '<' ? 'less than' : operator;\n\n\n if ($field.length === 1) {\n\n // single field (tested with text field, single checkbox, select with single value (dropdown), select with multiple values)\n\n if ($field.is('select')) {\n\n if (operator === 'not equals') {\n condition_ok = true;\n }\n\n $field.find('option:selected').each(function () {\n var $option = jQuery(this);\n var option_val = $option.val()\n if (\n operator === 'equals' && option_val === if_val ||\n operator === 'equals (regex)' && regex_patt.test($option.val())\n ) {\n condition_ok = true;\n } else if (\n operator === 'not equals' && option_val === if_val ||\n operator === 'not equals (regex)' && !regex_patt.test($option.val())\n ) {\n condition_ok = false;\n return false; // break out of the loop\n }\n });\n\n show_group = show_group && condition_ok;\n }\n\n var field_val = $field.val();\n var field_val_as_number = isFinite(parseFloat(field_val)) ? parseFloat(field_val):0;\n\n if ($field.attr('type') === 'checkbox') {\n var field_is_checked = $field.is(':checked');\n if (\n operator === 'equals' && field_is_checked && field_val === if_val ||\n operator === 'not equals' && !field_is_checked ||\n operator === 'is empty' && !field_is_checked ||\n operator === 'not empty' && field_is_checked ||\n operator === 'greater than' && field_is_checked && field_val_as_number > if_val_as_number ||\n operator === 'less than' && field_is_checked && field_val_as_number < if_val_as_number ||\n operator === 'greater than or equals' && field_is_checked && field_val_as_number >= if_val_as_number ||\n operator === 'less than or equals' && field_is_checked && field_val_as_number <= if_val_as_number ||\n operator === 'equals (regex)' && field_is_checked && regex_patt.test(field_val) ||\n operator === 'not equals (regex)' && !field_is_checked\n\n ) {\n condition_ok = true;\n }\n } else if (\n operator === 'equals' && field_val === if_val ||\n operator === 'not equals' && field_val !== if_val ||\n operator === 'equals (regex)' && regex_patt.test(field_val) ||\n operator === 'not equals (regex)' && !regex_patt.test(field_val) ||\n operator === 'greater than' && field_val_as_number > if_val_as_number ||\n operator === 'less than' && field_val_as_number < if_val_as_number ||\n operator === 'greater than or equals' && field_val_as_number >= if_val_as_number ||\n operator === 'less than or equals' && field_val_as_number <= if_val_as_number ||\n operator === 'is empty' && field_val === '' ||\n operator === 'not empty' && field_val !== '' ||\n (\n operator === 'function'\n && typeof window[if_val] == 'function'\n && window[if_val]($field)\n )\n ) {\n condition_ok = true;\n }\n\n\n } else if ($field.length > 1) {\n\n // multiple fields (tested with checkboxes, exclusive checkboxes, dropdown with multiple values)\n\n var all_values = [];\n var checked_values = [];\n $field.each(function () {\n all_values.push(jQuery(this).val());\n if (jQuery(this).is(':checked')) {\n checked_values.push(jQuery(this).val());\n }\n });\n\n var checked_value_index = jQuery.inArray(if_val, checked_values);\n var value_index = jQuery.inArray(if_val, all_values);\n\n if (\n ( operator === 'is empty' && checked_values.length === 0 ) ||\n ( operator === 'not empty' && checked_values.length > 0 )\n ) {\n condition_ok = true;\n }\n\n\n for (var ind = 0; ind < checked_values.length; ind++) {\n var checked_val = checked_values[ind];\n var checked_val_as_number = isFinite(parseFloat(checked_val)) ? parseFloat(checked_val):0;\n if (\n ( operator === 'equals' && checked_val === if_val ) ||\n ( operator === 'not equals' && checked_val !== if_val ) ||\n ( operator === 'equals (regex)' && regex_patt.test(checked_val) ) ||\n ( operator === 'not equals (regex)' && !regex_patt.test(checked_val) ) ||\n ( operator === 'greater than' && checked_val_as_number > if_val_as_number ) ||\n ( operator === 'less than' && checked_val_as_number < if_val_as_number ) ||\n ( operator === 'greater than or equals' && checked_val_as_number >= if_val_as_number ) ||\n ( operator === 'less than or equals' && checked_val_as_number <= if_val_as_number )\n ) {\n condition_ok = true;\n }\n }\n }\n\n show_group = show_group && condition_ok;\n }\n\n return show_group;\n\n }\n\n};\n\n\njQuery('.wpcf7-form').each(function(){\n wpcf7cf_forms.push(new Wpcf7cfForm(jQuery(this)));\n});\n\n// Call displayFields again on all forms\n// Necessary in case some theme or plugin changed a form value by the time the entire page is fully loaded.\njQuery('document').ready(function() {\n wpcf7cf_forms.forEach(function(f){\n f.displayFields();\n });\n});\n\n// fix for exclusive checkboxes in IE (this will call the change-event again after all other checkboxes are unchecked, triggering the display_fields() function)\nvar old_wpcf7ExclusiveCheckbox = jQuery.fn.wpcf7ExclusiveCheckbox;\njQuery.fn.wpcf7ExclusiveCheckbox = function() {\n return this.find('input:checkbox').click(function() {\n var name = jQuery(this).attr('name');\n jQuery(this).closest('form').find('input:checkbox[name=\"' + name + '\"]').not(this).prop('checked', false).eq(0).change();\n });\n};\n\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n IteratorPrototype[iteratorSymbol] = function () {\n return this;\n };\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunctionPrototype[toStringTagSymbol] =\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n if (!(toStringTagSymbol in genFun)) {\n genFun[toStringTagSymbol] = \"GeneratorFunction\";\n }\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return Promise.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return Promise.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new Promise(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n"],"sourceRoot":""}
1
+ {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./js/scripts_es6.js","webpack:///./node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack:///./node_modules/@babel/runtime/regenerator/index.js","webpack:///./node_modules/jquery/dist/jquery.js","webpack:///./node_modules/regenerator-runtime/runtime.js","webpack:///(webpack)/buildin/module.js"],"names":["cf7signature_resized","wpcf7cf_timeout","wpcf7cf_change_time_ms","window","wpcf7cf_running_tests","console","log","wpcf7cf_show_animation","wpcf7cf_hide_animation","wpcf7cf_show_step_animation","wpcf7cf_hide_step_animation","wpcf7cf_change_events","wpcf7cf_forms","String","prototype","endsWith","search","this_len","undefined","length","substring","Wpcf7cfForm","$form","options_element","find","eq","val","form","form_options","JSON","parse","$input_hidden_group_fields","$input_hidden_groups","$input_visible_groups","$input_repeaters","$input_steps","unit_tag","closest","attr","conditions","i","condition","and_rules","if_field","if_value","operator","initial_conditions","settings","$groups","jQuery","repeaters","multistep","fields","animation_intime","parseInt","animation_outtime","animation","updateGroups","updateEventListeners","displayFields","on","e","data","setTimeout","resetRepeaters","moveToStep","each","push","Wpcf7cfRepeater","stringify","map","item","params","$repeater","id","$multistep","Wpcf7cfMultistep","forEach","repeater","updateSubs","initial_subs","wpcf7cf","get_simplified_dom_model","wpcf7cf_conditions","wpcf7cf_settings","signatures","constructor","Array","canvas","width","$sig_canvas","$sig_wrap","height","addClass","show_group","should_group_be_shown","then_field","removeClass","index","$group","is","finish","css","hasClass","prop","show","trigger","animate","$inputs","not","$this","defaultValue","defaultChecked","selected","defaultSelected","$select","change","hide","updateHiddenFields","updateSummaryFields","$summary","fd","FormData","formdata","serializeArray","key","input","append","name","value","ajax","url","wpcf7cf_global_settings","ajaxurl","type","processData","contentType","dataType","success","json","html","summaryHtml","hidden_fields","hidden_groups","visible_groups","get_nested_conditions","off","clearTimeout","text","$","num_subs","orig_id","min","max","$repeater_sub","children","$repeater_controls","$repeater_sub_clone","clone","addBack","prev_suffix","new_suffix","prev_name","orig_name","new_name","replace","prev_data_id","orig_data_id","new_data_id","prev_id","new_id","prev_for","orig_for","new_for","repeater_sub_html","outerHTML","$repeater_count_field","$button_add","$button_remove","click","remove","subs_to_show","subs_to_add","removeSubs","addSubs","showButtonRemove","showButtonAdd","html_str","sub_suffix","RegExp","$html","insertBefore","updateMultistepState","cf7mdInit","slice","duration","done","$steps","$btn_next","$btn_prev","$dots","currentStep","numSteps","validateStep","result","stopImmediatePropagation","document","ajaxComplete","xhr","hasOwnProperty","responseJSON","status","into","step_index","Promise","resolve","el","files","file","fieldName","checkError","invalid_fields","controlWrap","reason","parent","message","fail","always","previousStep","formEl","topOffset","getBoundingClientRect","top","scrollIntoView","behavior","getFieldsInStep","simpleDom","inStep","filter","step","initForm","$current_form","simplified_dom","groups","sub_conditions","g","relevant_conditions","original_name","and_rule","suffix","concat","currentNode","ni","createNodeIterator","NodeFilter","SHOW_ELEMENT","nextNode","classList","contains","dataset","className","hasAttribute","getAttribute","original_name_length","stepsData","fieldsInCurrentStep","$submit_button","$ajax_loader","detach","appendTo","and_rule_i","condition_ok","condition_and_rule","$field","if_val","if_val_as_number","isFinite","parseFloat","regex_patt","isValidRegex","all_values","checked_values","isConditionTrue","values","testValue","isArray","every","v","testValueNumber","NaN","valueNumber","valsAreNumbers","isNaN","test","ready","f","old_wpcf7ExclusiveCheckbox","fn","wpcf7ExclusiveCheckbox","asyncGeneratorStep","gen","reject","_next","_throw","arg","info","error","then","_asyncToGenerator","self","args","arguments","apply","err","module","exports","require","global","factory","w","Error","noGlobal","arr","getProto","Object","getPrototypeOf","flat","array","call","indexOf","class2type","toString","hasOwn","fnToString","ObjectFunctionString","support","isFunction","obj","nodeType","isWindow","preservedScriptAttributes","src","nonce","noModule","DOMEval","code","node","doc","script","createElement","setAttribute","head","appendChild","parentNode","removeChild","toType","version","selector","context","init","jquery","toArray","get","num","pushStack","elems","ret","merge","prevObject","callback","elem","first","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","copy","copyIsArray","target","deep","isPlainObject","expando","Math","random","isReady","msg","noop","proto","Ctor","isEmptyObject","globalEval","isArrayLike","makeArray","results","inArray","second","invert","callbackInverse","matches","callbackExpect","guid","Symbol","iterator","split","_i","toLowerCase","Sizzle","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","setDocument","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","Date","preferredDoc","dirruns","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","funescape","escape","nonHex","high","fromCharCode","rcssescape","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","inDisabledFieldset","addCombinator","disabled","nodeName","dir","next","childNodes","els","seed","m","nid","match","newSelector","newContext","ownerDocument","exec","getElementById","getElementsByTagName","getElementsByClassName","qsa","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","cacheLength","shift","markFunction","assert","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","nextSibling","createInputPseudo","createButtonPseudo","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","hasCompare","subWindow","defaultView","addEventListener","attachEvent","createComment","getById","getElementsByName","attrId","getAttributeNode","tag","tmp","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative","preFilter","excess","unquoted","nodeNameSelector","pattern","check","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","useCache","lastChild","uniqueID","pseudo","setFilters","idx","matched","matcher","unmatched","lang","elemLang","hash","location","activeElement","hasFocus","href","tabIndex","checked","selectedIndex","_matchIndexes","radio","checkbox","password","image","submit","reset","filters","parseOnly","tokens","soFar","preFilters","cached","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","multipleContexts","contexts","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","matcherIn","matcherOut","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","matcherFromGroupMatchers","elementMatchers","setMatchers","bySet","byElement","superMatcher","outermost","matchedCount","setMatched","contextBackup","dirrunsUnique","token","compiled","_name","unique","isXMLDoc","escapeSelector","until","truncate","siblings","n","rneedsContext","needsContext","rsingleTag","winnow","qualifier","rootjQuery","root","parseHTML","rparentsprev","guaranteedUnique","contents","prev","has","targets","l","prevAll","add","sibling","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","createOptions","object","_","flag","Callbacks","firing","memory","fired","locked","queue","firingIndex","fire","once","stopOnFalse","empty","disable","lock","fireWith","Identity","Thrower","ex","adoptValue","noValue","method","promise","Deferred","func","tuples","state","deferred","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","that","mightThrow","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","stateString","when","singleValue","remaining","resolveContexts","resolveValues","master","updateFunc","rerrorNames","stack","warn","readyException","readyList","readyWait","wait","completed","removeEventListener","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","create","defineProperty","configurable","set","hasData","dataPriv","dataUser","rbrace","rmultiDash","getData","dataAttr","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","pnum","source","rcssNum","cssExpand","isAttached","composed","getRootNode","isHiddenWithinTree","style","display","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","getDefaultDisplay","body","showHide","toggle","rcheckableType","rtagName","rscriptType","fragment","createDocumentFragment","div","checkClone","cloneNode","noCloneChecked","option","wrapMap","thead","col","tr","td","_default","tbody","tfoot","colgroup","caption","th","optgroup","getAll","setGlobalEval","refElements","buildFragment","scripts","selection","ignored","wrap","attached","nodes","createTextNode","htmlPrefilter","rkeyEvent","rmouseEvent","rtypenamespace","returnTrue","returnFalse","expectSync","safeActiveElement","types","one","origFn","event","handleObjIn","eventHandle","events","t","handleObj","handlers","namespaces","origType","elemData","handle","triggered","dispatch","delegateType","bindType","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","preventDefault","stopPropagation","postDispatch","matchedHandlers","matchedSelectors","button","addProp","hook","Event","enumerable","originalEvent","writable","load","noBubble","leverageNative","beforeunload","returnValue","notAsync","saved","isTrigger","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","focus","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","pdataOld","udataOld","udataCur","fixInput","domManip","collection","hasScripts","iNoClone","valueIsFunction","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","prepend","before","after","replaceWith","replaceChild","prependTo","insertAfter","replaceAll","original","insert","rnumnonpx","getStyles","opener","getComputedStyle","swap","old","rboxStyle","computeStyleTests","container","cssText","divStyle","pixelPositionVal","reliableMarginLeftVal","roundPixelMeasures","marginLeft","right","pixelBoxStylesVal","boxSizingReliableVal","position","scrollboxSizeVal","offsetWidth","measure","round","reliableTrDimensionsVal","backgroundClip","clearCloneStyle","boxSizingReliable","pixelBoxStyles","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trChild","trStyle","curCSS","computed","minWidth","maxWidth","getPropertyValue","addGetHookIf","conditionFn","hookFn","cssPrefixes","emptyStyle","vendorProps","vendorPropName","capName","finalPropName","final","cssProps","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","boxSizingNeeded","valueIsBorderBox","offsetProp","getClientRects","cssHooks","opacity","origName","isCustomProp","setProperty","scrollboxSizeBuggy","left","margin","padding","border","prefix","expand","expanded","parts","Tween","easing","propHooks","run","percent","eased","pos","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","Animation","tweeners","defaultPrefilter","opts","oldfire","propTween","restoreDisplay","isBox","anim","dataShow","unqueued","overflow","overflowX","overflowY","propFilter","specialEasing","properties","stopped","prefilters","currentTime","startTime","tweens","originalProperties","originalOptions","gotoEnd","bind","complete","timer","tweener","prefilter","speed","opt","speeds","fadeTo","to","optall","doAnimation","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","checkOn","optSelected","radioValue","boolHook","removeAttr","nType","attrHooks","bool","attrNames","getter","lowercaseName","rfocusable","rclickable","removeProp","propFix","tabindex","stripAndCollapse","getClass","classesToArray","classes","curValue","clazz","finalValue","toggleClass","stateVal","isValidValue","classNames","rreturn","valHooks","optionSet","focusin","rfocusMorph","stopPropagationCallback","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","parseXML","DOMParser","parseFromString","rbracket","rCRLF","rsubmitterTypes","rsubmittable","buildParams","traditional","param","s","valueOrFunction","encodeURIComponent","serialize","r20","rhash","rantiCache","rheaders","rlocalProtocol","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","ajaxHandleResponses","responses","ct","finalDataType","firstDataType","mimeType","getResponseHeader","converters","ajaxConvert","response","isSuccess","conv2","current","conv","responseFields","dataFilter","active","lastModified","etag","isLocal","protocol","async","accepts","ajaxSetup","ajaxPrefilter","ajaxTransport","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","urlAnchor","fireGlobals","uncached","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getAllResponseHeaders","setRequestHeader","overrideMimeType","abort","statusText","finalText","crossDomain","host","hasContent","ifModified","headers","beforeSend","send","nativeStatusText","modified","getJSON","getScript","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","offsetHeight","XMLHttpRequest","xhrSuccessStatus","xhrSupported","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","oldCallbacks","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","animated","offset","setOffset","curPosition","curLeft","curCSSTop","curTop","curOffset","curCSSLeft","calculatePosition","curElem","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","proxy","holdReady","hold","parseJSON","isNumeric","trim","define","_jQuery","_$","noConflict","runtime","Op","$Symbol","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","makeInvokeMethod","tryCatch","GenStateSuspendedStart","GenStateSuspendedYield","GenStateExecuting","GenStateCompleted","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","displayName","defineIteratorMethods","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","__await","AsyncIterator","PromiseImpl","invoke","record","unwrapped","previousPromise","enqueue","callInvokeWithMethodAndArg","iter","doneResult","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iterable","iteratorMethod","skipTempReset","charAt","rootEntry","rootRecord","rval","exception","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","Function","webpackPolyfill","deprecate","paths"],"mappings":"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","file":"scripts.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./js/scripts_es6.js\");\n","\"use strict\";\n\nimport jQuery from 'jquery';\n\n\nvar cf7signature_resized = 0; // for compatibility with contact-form-7-signature-addon\n\nvar wpcf7cf_timeout;\nvar wpcf7cf_change_time_ms = window.wpcf7cf_running_tests ? 0 : 100;\n\nconsole.log(wpcf7cf_change_time_ms);\n\nvar wpcf7cf_show_animation = { \"height\": \"show\", \"marginTop\": \"show\", \"marginBottom\": \"show\", \"paddingTop\": \"show\", \"paddingBottom\": \"show\" };\nvar wpcf7cf_hide_animation = { \"height\": \"hide\", \"marginTop\": \"hide\", \"marginBottom\": \"hide\", \"paddingTop\": \"hide\", \"paddingBottom\": \"hide\" };\n\nvar wpcf7cf_show_step_animation = { \"opacity\": \"show\" };\nvar wpcf7cf_hide_step_animation = { \"opacity\": \"hide\" };\n\nvar wpcf7cf_change_events = 'input.wpcf7cf paste.wpcf7cf change.wpcf7cf click.wpcf7cf propertychange.wpcf7cf';\n\nvar wpcf7cf_forms = [];\n\n// endswith polyfill\nif (!String.prototype.endsWith) {\n\tString.prototype.endsWith = function(search, this_len) {\n\t\tif (this_len === undefined || this_len > this.length) {\n\t\t\tthis_len = this.length;\n\t\t}\n\t\treturn this.substring(this_len - search.length, this_len) === search;\n\t};\n}\n\nvar Wpcf7cfForm = function($form) {\n\n var options_element = $form.find('input[name=\"_wpcf7cf_options\"]').eq(0);\n if (!options_element.length || !options_element.val()) {\n // doesn't look like a CF7 form created with conditional fields plugin enabled.\n return false;\n }\n\n var form = this;\n\n var form_options = JSON.parse(options_element.val());\n\n form.$form = $form;\n form.$input_hidden_group_fields = $form.find('[name=\"_wpcf7cf_hidden_group_fields\"]');\n form.$input_hidden_groups = $form.find('[name=\"_wpcf7cf_hidden_groups\"]');\n form.$input_visible_groups = $form.find('[name=\"_wpcf7cf_visible_groups\"]');\n form.$input_repeaters = $form.find('[name=\"_wpcf7cf_repeaters\"]');\n form.$input_steps = $form.find('[name=\"_wpcf7cf_steps\"]');\n\n form.unit_tag = $form.closest('.wpcf7').attr('id');\n form.conditions = form_options['conditions'];\n\n // compatibility with conditional forms created with older versions of the plugin ( < 1.4 )\n for (var i=0; i < form.conditions.length; i++) {\n var condition = form.conditions[i];\n if (!('and_rules' in condition)) {\n condition.and_rules = [{'if_field':condition.if_field,'if_value':condition.if_value,'operator':condition.operator}];\n }\n }\n\n form.initial_conditions = form.conditions;\n form.settings = form_options['settings'];\n\n form.$groups = jQuery(); // empty jQuery set\n form.repeaters = [];\n form.multistep = null;\n form.fields = [];\n\n form.settings.animation_intime = parseInt(form.settings.animation_intime);\n form.settings.animation_outtime = parseInt(form.settings.animation_outtime);\n\n if (form.settings.animation === 'no') {\n form.settings.animation_intime = 0;\n form.settings.animation_outtime = 0;\n }\n\n form.updateGroups();\n form.updateEventListeners();\n form.displayFields();\n\n // bring form in initial state if the reset event is fired on it.\n form.$form.on('reset.wpcf7cf', form, function(e) {\n var form = e.data;\n setTimeout(function(){\n form.displayFields();\n form.resetRepeaters();\n if (form.multistep != null) {\n form.multistep.moveToStep(1); \n }\n },200);\n });\n\n // PRO ONLY\n\n jQuery('.wpcf7cf_repeater:not(.wpcf7cf_repeater .wpcf7cf_repeater)', $form).each(function(){\n form.repeaters.push(new Wpcf7cfRepeater(jQuery(this),form));\n });\n\n form.$input_repeaters.val(JSON.stringify(form.repeaters.map((item)=>item.params.$repeater.id)));\n\n var $multistep = jQuery('.wpcf7cf_multistep', $form);\n\n if ($multistep.length) {\n form.multistep = new Wpcf7cfMultistep($multistep, form);\n // window.wpcf7cf.updateMultistepState(form.multistep);\n }\n\n // END PRO ONLY\n\n}\n\n/**\n * reset initial number of subs for each repeater.\n * (does not clear values)\n */\nWpcf7cfForm.prototype.resetRepeaters = function() {\n var form = this;\n form.repeaters.forEach(repeater => {\n repeater.updateSubs( repeater.params.$repeater.initial_subs );\n });\n}\n\nWpcf7cfForm.prototype.displayFields = function() {\n\n var form = this;\n\n window.wpcf7cf.get_simplified_dom_model(form.$form);\n\n var unit_tag = this.unit_tag;\n var wpcf7cf_conditions = this.conditions;\n var wpcf7cf_settings = this.settings;\n\n //for compatibility with contact-form-7-signature-addon\n if (cf7signature_resized === 0 && typeof signatures !== 'undefined' && signatures.constructor === Array && signatures.length > 0 ) {\n for (var i = 0; i < signatures.length; i++) {\n if (signatures[i].canvas.width === 0) {\n\n var $sig_canvas = jQuery(\".wpcf7-form-control-signature-body>canvas\");\n var $sig_wrap = jQuery(\".wpcf7-form-control-signature-wrap\");\n $sig_canvas.eq(i).attr('width', $sig_wrap.width());\n $sig_canvas.eq(i).attr('height', $sig_wrap.height());\n\n cf7signature_resized = 1;\n }\n }\n }\n\n form.$groups.addClass('wpcf7cf-hidden');\n\n for (var i=0; i < wpcf7cf_conditions.length; i++) {\n\n var condition = wpcf7cf_conditions[i];\n\n var show_group = window.wpcf7cf.should_group_be_shown(condition, form.$form);\n\n if (show_group) {\n jQuery('[data-id=\"'+condition.then_field+'\"]',form.$form).eq(0).removeClass('wpcf7cf-hidden');\n }\n }\n\n var animation_intime = wpcf7cf_settings.animation_intime;\n var animation_outtime = wpcf7cf_settings.animation_outtime;\n\n form.$groups.each(function (index) {\n var $group = jQuery(this);\n if ($group.is(':animated')) $group.finish(); // stop any current animations on the group\n if ($group.css('display') === 'none' && !$group.hasClass('wpcf7cf-hidden')) {\n if ($group.prop('tagName') === 'SPAN') {\n $group.show().trigger('wpcf7cf_show_group');\n } else {\n $group.animate(wpcf7cf_show_animation, animation_intime).trigger('wpcf7cf_show_group'); // show\n }\n } else if ($group.css('display') !== 'none' && $group.hasClass('wpcf7cf-hidden')) {\n\n if ($group.attr('data-clear_on_hide') !== undefined) {\n var $inputs = jQuery(':input', $group).not(':button, :submit, :reset, :hidden');\n\n $inputs.each(function(){\n var $this = jQuery(this);\n $this.val(this.defaultValue);\n $this.prop('checked', this.defaultChecked);\n });\n\n jQuery('option', $group).each(function() {\n this.selected = this.defaultSelected;\n });\n\n jQuery('select', $group).each(function() {\n const $select = jQuery(this);\n if ($select.val() === null) {\n $select.val(jQuery(\"option:first\",$select).val());\n }\n });\n\n $inputs.change();\n //display_fields();\n }\n\n if ($group.prop('tagName') === 'SPAN') {\n $group.hide().trigger('wpcf7cf_hide_group');\n } else {\n $group.animate(wpcf7cf_hide_animation, animation_outtime).trigger('wpcf7cf_hide_group'); // hide\n }\n\n }\n });\n\n form.updateHiddenFields();\n form.updateSummaryFields();\n};\n\nWpcf7cfForm.prototype.updateSummaryFields = function() {\n var $summary = jQuery('.wpcf7cf-summary', this.$form);\n\n if ($summary.length == 0 || !$summary.is(':visible')) return;\n\n var fd = new FormData();\n\n var formdata = this.$form.serializeArray();\n jQuery.each(formdata,function(key, input){\n fd.append(input.name, input.value);\n });\n\n jQuery.ajax({\n url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_get_summary',\n type: 'POST',\n data: fd,\n processData: false,\n contentType: false,\n dataType: 'json',\n success: function(json) {\n $summary.html(json.summaryHtml);\n }\n });\n};\n\nWpcf7cfForm.prototype.updateHiddenFields = function() {\n\n var form = this;\n\n var hidden_fields = [];\n var hidden_groups = [];\n var visible_groups = [];\n\n form.$groups.each(function () {\n var $this = jQuery(this);\n if ($this.hasClass('wpcf7cf-hidden')) {\n hidden_groups.push($this.data('id'));\n $this.find('input,select,textarea').each(function () {\n hidden_fields.push(jQuery(this).attr('name'));\n });\n } else {\n visible_groups.push($this.data('id'));\n }\n });\n\n form.hidden_fields = hidden_fields;\n form.hidden_groups = hidden_groups;\n form.visible_groups = visible_groups;\n\n form.$input_hidden_group_fields.val(JSON.stringify(hidden_fields));\n form.$input_hidden_groups.val(JSON.stringify(hidden_groups));\n form.$input_visible_groups.val(JSON.stringify(visible_groups));\n\n return true;\n};\nWpcf7cfForm.prototype.updateGroups = function() {\n var form = this;\n form.$groups = form.$form.find('[data-class=\"wpcf7cf_group\"]');\n\n form.conditions = window.wpcf7cf.get_nested_conditions(form.initial_conditions, form.$form);\n\n};\nWpcf7cfForm.prototype.updateEventListeners = function() {\n\n var form = this;\n\n // monitor input changes, and call display_fields() if something has changed\n jQuery('input, select, textarea, button',form.$form).not('.wpcf7cf_add, .wpcf7cf_remove').off(wpcf7cf_change_events).on(wpcf7cf_change_events,form, function(e) {\n var form = e.data;\n clearTimeout(wpcf7cf_timeout);\n wpcf7cf_timeout = setTimeout(function() {\n form.displayFields();\n }, wpcf7cf_change_time_ms);\n });\n\n // PRO ONLY\n jQuery('.wpcf7cf-togglebutton', form.$form).off('click.toggle_wpcf7cf').on('click.toggle_wpcf7cf',function() {\n var $this = jQuery(this);\n if ($this.text() === $this.data('val-1')) {\n $this.text($this.data('val-2'));\n $this.val($this.data('val-2'));\n } else {\n $this.text($this.data('val-1'));\n $this.val($this.data('val-1'));\n }\n });\n // END PRO ONLY\n};\n\n// PRO ONLY\nfunction Wpcf7cfRepeater($repeater, form) {\n var $ = jQuery;\n\n var repeater = this;\n\n var wpcf7cf_settings = form.settings;\n\n repeater.form = form;\n\n $repeater.num_subs = 0;\n $repeater.id = $repeater.data('id');\n $repeater.orig_id = $repeater.data('orig_data_id');\n $repeater.min = typeof( $repeater.data('min')) !== 'undefined' ? parseInt($repeater.data('min')) : 1;\n $repeater.max = typeof( $repeater.data('max')) !== 'undefined' ? parseInt($repeater.data('max')) : 200;\n $repeater.initial_subs = typeof( $repeater.data('initial')) !== 'undefined' ? parseInt($repeater.data('initial')) : $repeater.min;\n if ($repeater.initial_subs > $repeater.max) $repeater.initial_subs = $repeater.max;\n var $repeater_sub = $repeater.children('.wpcf7cf_repeater_sub').eq(0);\n var $repeater_controls = $repeater.children('.wpcf7cf_repeater_controls').eq(0);\n\n var $repeater_sub_clone = $repeater_sub.clone();\n\n $repeater_sub_clone.find('.wpcf7cf_repeater_sub').addBack('.wpcf7cf_repeater_sub').each(function() {\n var $this = jQuery(this);\n var prev_suffix = $this.attr('data-repeater_sub_suffix');\n var new_suffix = prev_suffix+'__{{repeater_sub_suffix}}';\n $this.attr('data-repeater_sub_suffix', new_suffix);\n });\n\n $repeater_sub_clone.find('[name]').each(function() {\n var $this = jQuery(this);\n var prev_name = $this.attr('name');\n var orig_name = $this.attr('data-orig_name') != null ? $this.attr('data-orig_name') : prev_name;\n var new_name = prev_name+'__{{repeater_sub_suffix}}';\n\n if(prev_name.endsWith('_count')) {\n new_name = prev_name.replace('_count','__{{repeater_sub_suffix}}_count');\n }\n\n $this.attr('name', new_name);\n $this.attr('data-orig_name', orig_name);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_name);\n });\n\n $repeater_sub_clone.find('.wpcf7cf_repeater,[data-class=\"wpcf7cf_group\"]').each(function() {\n var $this = jQuery(this);\n var prev_data_id = $this.attr('data-id');\n var orig_data_id = $this.attr('data-orig_data_id') != null ? $this.attr('data-orig_data_id') : prev_data_id;\n var new_data_id = prev_data_id+'__{{repeater_sub_suffix}}';\n\n if(prev_data_id.endsWith('_count')) {\n new_data_id = prev_data_id.replace('_count','__{{repeater_sub_suffix}}_count');\n }\n\n $this.attr('data-id', new_data_id);\n $this.attr('data-orig_data_id', orig_data_id);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_data_id);\n });\n\n $repeater_sub_clone.find('[id]').each(function() {\n var $this = jQuery(this);\n var prev_id = $this.attr('id');\n var orig_id = $this.attr('data-orig_id') != null ? $this.attr('data-orig_id') : prev_id;\n var new_id = prev_id+'__{{repeater_sub_suffix}}';\n\n $this.attr('id', new_id);\n $this.attr('data-orig_id', orig_id);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_id);\n });\n\n $repeater_sub_clone.find('[for]').each(function() {\n var $this = jQuery(this);\n var prev_for = $this.attr('for');\n var orig_for = $this.attr('data-orig_for') != null ? $this.attr('data-orig_for') : prev_for;\n var new_for = prev_for+'__{{repeater_sub_suffix}}';\n\n $this.attr('for', new_for);\n $this.attr('data-orig_for', orig_for);\n $this.closest('.wpcf7-form-control-wrap').addClass(new_for);\n });\n\n var repeater_sub_html = $repeater_sub_clone[0].outerHTML;\n\n var $repeater_count_field = $repeater.find('[name='+$repeater.id+'_count]').eq(0);\n var $button_add = $repeater_controls.find('.wpcf7cf_add').eq(0);\n var $button_remove = $repeater_controls.find('.wpcf7cf_remove').eq(0);\n\n var params = {\n $repeater: $repeater,\n $repeater_count_field: $repeater_count_field,\n repeater_sub_html: repeater_sub_html,\n $repeater_controls: $repeater_controls,\n $button_add: $button_add,\n $button_remove: $button_remove,\n wpcf7cf_settings: wpcf7cf_settings\n };\n \n this.params = params;\n\n $button_add.click( repeater, function(e) {\n var repeater = e.data;\n repeater.updateSubs(params.$repeater.num_subs+1);\n });\n\n $button_remove.click( repeater,function(e) {\n var repeater = e.data;\n repeater.updateSubs(params.$repeater.num_subs-1);\n });\n\n jQuery('> .wpcf7cf_repeater_sub',params.$repeater).eq(0).remove(); // remove the first sub, it's just a template.\n\n repeater.updateSubs($repeater.initial_subs); \n\n}\n\n\n\nWpcf7cfRepeater.prototype.updateSubs = function(subs_to_show) {\n var repeater = this;\n var params = repeater.params;\n var subs_to_add = subs_to_show - params.$repeater.num_subs;\n\n if (subs_to_add < 0) {\n repeater.removeSubs(-subs_to_add);\n } else if (subs_to_add > 0) {\n repeater.addSubs(subs_to_add);\n }\n\n var showButtonRemove = false;\n var showButtonAdd = false;\n\n if (params.$repeater.num_subs < params.$repeater.max) {\n showButtonAdd = true;\n }\n if (params.$repeater.num_subs > params.$repeater.min) {\n showButtonRemove = true;\n }\n\n if (showButtonAdd) {\n params.$button_add.show();\n } else {\n params.$button_add.hide();\n\n }\n\n if (showButtonRemove) {\n params.$button_remove.show();\n } else {\n params.$button_remove.hide();\n }\n\n params.$repeater_count_field.val(subs_to_show);\n\n};\nWpcf7cfRepeater.prototype.addSubs = function(subs_to_add) {\n var $ = jQuery;\n var params = this.params;\n var repeater = this;\n var form = repeater.form;\n\n\n var $repeater = params.$repeater; \n var $repeater_controls = params.$repeater_controls;\n\n //jQuery(params.repeater_sub_html.replace(/name=\"(.*?)\"/g,'name=\"wpcf7cf_repeater['+$repeater.id+']['+$repeater.num_subs+'][$1]\" data-original-name=\"$1\"')).hide().insertBefore($repeater_controls).animate(wpcf7cf_show_animation, params.wpcf7cf_settings.animation_intime);\n\n var html_str = '';\n\n for(var i=1; i<=subs_to_add; i++) {\n var sub_suffix = $repeater.num_subs+i;\n html_str += params.repeater_sub_html.replace(/\\{\\{repeater_sub_suffix\\}\\}/g,sub_suffix)\n .replace(new RegExp('\\{\\{'+$repeater.orig_id+'_index\\}\\}','g'),sub_suffix);\n }\n\n\n var $html = jQuery(html_str);\n\n // Add the newly created fields to the form\n $html.hide().insertBefore($repeater_controls).animate(wpcf7cf_show_animation, params.wpcf7cf_settings.animation_intime).trigger('wpcf7cf_repeater_added');\n\n jQuery('.wpcf7cf_repeater', $html).each(function(){\n form.repeaters.push(new Wpcf7cfRepeater(jQuery(this),form));\n });\n form.$input_repeaters.val(JSON.stringify(form.repeaters.map((item)=>item.params.$repeater.id)));\n\n $repeater.num_subs+= subs_to_add;\n\n window.wpcf7cf.updateMultistepState(form.multistep);\n form.updateGroups();\n form.updateEventListeners();\n form.displayFields();\n\n // Exclusive Checkbox\n $html.on( 'click', '.wpcf7-exclusive-checkbox input:checkbox', function() {\n var name = $( this ).attr( 'name' );\n $html.find( 'input:checkbox[name=\"' + name + '\"]' ).not( this ).prop( 'checked', false );\n } );\n\n //basic compatibility with material-design-for-contact-form-7\n if (typeof window.cf7mdInit === \"function\") {\n window.cf7mdInit();\n }\n\n return false;\n};\nWpcf7cfRepeater.prototype.removeSubs = function(num_subs) {\n var $ = jQuery;\n var params = this.params;\n var form = this.form;\n\n params.$repeater.num_subs-= num_subs;\n\n jQuery('> .wpcf7cf_repeater_sub',params.$repeater).slice(-num_subs).animate(wpcf7cf_hide_animation, {duration:params.wpcf7cf_settings.animation_intime, done:function() {\n var $this = jQuery(this);\n //remove the actual fields from the form\n $this.remove();\n params.$repeater.trigger('wpcf7cf_repeater_removed');\n window.wpcf7cf.updateMultistepState(form.multistep);\n form.updateGroups();\n form.updateEventListeners();\n form.displayFields();\n }});\n\n return false;\n};\n\nfunction Wpcf7cfMultistep($multistep, form) {\n var multistep = this;\n multistep.$multistep = $multistep;\n multistep.form = form;\n multistep.$steps = $multistep.find('.wpcf7cf_step');\n multistep.$btn_next = $multistep.find('.wpcf7cf_next');\n multistep.$btn_prev = $multistep.find('.wpcf7cf_prev');\n multistep.$dots = $multistep.find('.wpcf7cf_steps-dots');\n multistep.currentStep = 0;\n multistep.numSteps = multistep.$steps.length;\n\n\n multistep.$dots.html('');\n for (var i = 1; i <= multistep.numSteps; i++) {\n multistep.$dots.append(`\n <div class=\"dot\" data-step=\"${i}\">\n <div class=\"step-index\">${i}</div>\n <div class=\"step-title\">${multistep.$steps.eq(i-1).data('title')}</div>\n </div>\n `);\n }\n\n multistep.$btn_next.on('click.wpcf7cf_step', async function() {\n \n var result = await multistep.validateStep(multistep.currentStep);\n if (result === 'success') {\n multistep.moveToStep(multistep.currentStep+1); \n }\n\n });\n\n // If form is submitted (by pressing retrun for example), and if we are not on the last step,\n // then trigger click event on the $next button instead.\n multistep.form.$form.on('submit.wpcf7cf_step', function(e) {\n\n if (multistep.currentStep !== multistep.numSteps) {\n multistep.$btn_next.trigger('click.wpcf7cf_step');\n\n e.stopImmediatePropagation();\n return false;\n }\n });\n\n multistep.$btn_prev.click(function() {\n multistep.moveToStep(multistep.currentStep-1);\n });\n\n multistep.moveToStep(1);\n}\n\njQuery(document).ajaxComplete(function(e, xhr, settings){\n if (\n xhr.hasOwnProperty('responseJSON') &&\n xhr.responseJSON != null &&\n xhr.responseJSON.hasOwnProperty('status') &&\n xhr.responseJSON.hasOwnProperty('into') &&\n xhr.responseJSON.status === \"mail_success\"\n ) {\n jQuery( xhr.responseJSON.into ).trigger('reset.wpcf7cf');\n }\n});\n\nWpcf7cfMultistep.prototype.validateStep = function(step_index) {\n\n var multistep = this;\n var $multistep = multistep.$multistep;\n var $form = multistep.form.$form;\n\n $form.find('.wpcf7-response-output').addClass('wpcf7-display-none');\n\n return new Promise(resolve => {\n\n var fd = new FormData();\n\n // Make sure to add file fields to FormData\n jQuery.each($form.find('[data-id=\"step-'+step_index+'\"] input[type=\"file\"]'), function(index, el) {\n if (! el.files.length) return false;\n const file = el.files[0];\n const fieldName = el.name;\n fd.append(fieldName, file);\n });\n\n var formdata = $form.serializeArray();\n jQuery.each(formdata,function(key, input){\n fd.append(input.name, input.value);\n });\n\n jQuery.ajax({\n url: wpcf7cf_global_settings.ajaxurl + '?action=wpcf7cf_validate_step',\n type: 'POST',\n data: fd,\n processData: false,\n contentType: false,\n dataType: 'json',\n }).done(function(json) {\n\n /*\n * Insert _form_data_id if 'json variable' has\n */\n // if (typeof json._cf7mls_db_form_data_id != 'undefined') {\n // if (!form.find('input[name=\"_cf7mls_db_form_data_id\"]').length) {\n // form.append('<input type=\"hidden\" name=\"_cf7mls_db_form_data_id\" value=\"'+json._cf7mls_db_form_data_id+'\" />');\n // }\n // }\n\n //reset error messages\n //$multistep.find('.wpcf7-form-control-wrap').removeClass('cf7mls-invalid');\n $multistep.find('.wpcf7-form-control-wrap .wpcf7-not-valid-tip').remove();\n $multistep.find('.wpcf7-not-valid').removeClass('wpcf7-not-valid');\n $multistep.find('.wpcf7-response-output').remove();\n $multistep.find('.wpcf7-response-output.wpcf7-validation-errors').removeClass('wpcf7-validation-errors');\n\n if (!json.success) {\n var checkError = 0;\n\n jQuery.each(json.invalid_fields, function(index, el) {\n if ($multistep.find('input[name=\"'+index+'\"]').length ||\n $multistep.find('input[name=\"'+index+'[]\"]').length ||\n $multistep.find('select[name=\"'+index+'\"]').length ||\n $multistep.find('select[name=\"'+index+'[]\"]').length ||\n $multistep.find('textarea[name=\"'+index+'\"]').length ||\n $multistep.find('textarea[name=\"'+index+'[]\"]').length\n ) {\n checkError = checkError + 1;\n\n var controlWrap = jQuery('.wpcf7-form-control-wrap.' + index, $form);\n //controlWrap.addClass('cf7mls-invalid');\n controlWrap.find('input').addClass('wpcf7-not-valid');\n controlWrap.find('span.wpcf7-not-valid-tip').remove();\n controlWrap.append('<span role=\"alert\" class=\"wpcf7-not-valid-tip\">' + el.reason + '</span>');\n\n //return false;\n }\n });\n\n resolve('failed');\n //$multistep.append('<div class=\"wpcf7-response-output wpcf7-display-none wpcf7-validation-errors\" style=\"display: block;\" role=\"alert\">' + json.message + '</div>');\n\n console.log($multistep.parent().find('.wpcf7-response-output'));\n $multistep.parent().find('.wpcf7-response-output').removeClass('wpcf7-display-none').html(json.message);\n\n } else if (json.success) {\n resolve('success');\n return false;\n }\n\n }).fail(function() {\n resolve('error');\n }).always(function() {\n // do nothing\n });\n });\n\n};\nWpcf7cfMultistep.prototype.moveToStep = function(step_index) {\n var multistep = this;\n var previousStep = multistep.currentStep;\n\n multistep.currentStep = step_index > multistep.numSteps ? multistep.numSteps\n : step_index < 1 ? 1\n : step_index;\n\n // ANIMATION DISABLED FOR NOW cause it's ugly\n // multistep.$steps.animate(wpcf7cf_hide_step_animation, multistep.form.settings.animation_outtime);\n // multistep.$steps.eq(multistep.currentStep-1).animate(wpcf7cf_show_step_animation, multistep.form.settings.animation_intime);\n\n multistep.$multistep.attr('data-current_step', multistep.currentStep);\n multistep.$steps.hide();\n multistep.$steps\n .eq(multistep.currentStep-1)\n .show()\n .trigger('wpcf7cf_change_step', [previousStep, multistep.currentStep]);\n\n const formEl = multistep.form.$form[0];\n const topOffset = formEl.getBoundingClientRect().top;\n if (topOffset < 0 && previousStep > 0) {\n formEl.scrollIntoView({behavior: \"smooth\"});\n }\n\n multistep.form.updateSummaryFields();\n\n window.wpcf7cf.updateMultistepState(multistep);\n};\n\nWpcf7cfMultistep.prototype.getFieldsInStep = function(step_index) {\n var simpleDom = window.wpcf7cf.get_simplified_dom_model(this.form.$form);\n var inStep = false;\n return simpleDom.filter(function(item, i) {\n if(item.type == 'step') {\n inStep = item.step == step_index+'';\n }\n return inStep && item.type == 'input';\n }).map(function(item) {\n return item.name;\n });\n};\n\n// END PRO ONLY\n\nwindow.wpcf7cf = {\n\n // keep this for backwards compatibility\n initForm : function($form) {\n wpcf7cf_forms.push(new Wpcf7cfForm($form));\n },\n\n get_nested_conditions : function(conditions, $current_form) {\n //loop trough conditions. Then loop trough the dom, and each repeater we pass we should update all sub_values we encounter with __index\n var simplified_dom = window.wpcf7cf.get_simplified_dom_model($current_form);\n var groups = simplified_dom.filter(function(item, i) {\n return item.type==='group';\n });\n\n var sub_conditions = [];\n\n for(var i = 0; i < groups.length; i++) {\n var g = groups[i];\n var relevant_conditions = conditions.filter(function(condition, i) {\n return condition.then_field === g.original_name;\n });\n \n var relevant_conditions = relevant_conditions.map(function(item,i) {\n return {\n then_field : g.name,\n and_rules : item.and_rules.map(function(and_rule, i) {\n return {\n if_field : and_rule.if_field+g.suffix,\n if_value : and_rule.if_value,\n operator : and_rule.operator\n };\n })\n }\n });\n\n sub_conditions = sub_conditions.concat(relevant_conditions);\n }\n return conditions.concat(sub_conditions);\n },\n\n get_simplified_dom_model : function($current_form) {\n // if the dom is something like:\n // <form>\n // <repeater ra>\n // <group ga__1>\n // <repeater rb__1>\n // <input txta__1__1 />\n // <input txta__1__2 />\n // </repeater>\n // <group gb__1>\n // <input txtb__1 />\n // </group>\n // </group>\n // <group ga__2>\n // <repeater rb__2>\n // <input txta__2__1 />\n // </repeater>\n // <group gb__2>\n // <input txtb__2 />\n // </group>\n // </group>\n // </repeater>\n // </form>\n // \n // return something like:\n // [{type:repeater, name:'ra', suffix: '__1'}, {type: group, name:'ga', suffix: '__1'}, ...]\n\n var currentNode;\n var ni = document.createNodeIterator($current_form[0], NodeFilter.SHOW_ELEMENT, null, false); //, NodeFilter.SHOW_ELEMENT, function(){ return NodeFilter.FILTER_ACCEPT; }\n\n var simplified_dom = [];\n\n while(currentNode = ni.nextNode()) {\n if (currentNode.classList.contains('wpcf7cf_repeater')) {\n simplified_dom.push({type:'repeater', name:currentNode.dataset.id, original_name:currentNode.dataset.orig_data_id})\n } else if (currentNode.dataset.class == 'wpcf7cf_group') {\n simplified_dom.push({type:'group', name:currentNode.dataset.id, original_name:currentNode.dataset.orig_data_id})\n } else if (currentNode.className == 'wpcf7cf_step') {\n simplified_dom.push({type:'step', name:currentNode.dataset.id, original_name:currentNode.dataset.id, step: currentNode.dataset.id.substring(5)})\n } else if (currentNode.hasAttribute('name')) {\n simplified_dom.push({type:'input', name:currentNode.getAttribute('name'), original_name:currentNode.getAttribute('data-orig_name')})\n }\n }\n\n simplified_dom = simplified_dom.map(function(item, i){\n var original_name_length = item.original_name == null ? item.name.length : item.original_name.length;\n item.suffix = item.name.substring(original_name_length);\n return item;\n });\n\n //console.table(simplified_dom);\n return simplified_dom;\n\n },\n\n updateMultistepState: function (multistep) {\n if (multistep == null) return;\n\n // update hidden input field\n\n var stepsData = {\n currentStep : multistep.currentStep,\n numSteps : multistep.numSteps,\n fieldsInCurrentStep : multistep.getFieldsInStep(multistep.currentStep)\n };\n multistep.form.$input_steps.val(JSON.stringify(stepsData));\n\n // update Buttons\n multistep.$btn_prev.removeClass('disabled');\n multistep.$btn_next.removeClass('disabled');\n if (multistep.currentStep == multistep.numSteps) {\n multistep.$btn_next.addClass('disabled');\n }\n if (multistep.currentStep == 1) {\n multistep.$btn_prev.addClass('disabled');\n }\n\n // replace next button with submit button on last step.\n // TODO: make this depend on a setting\n var $submit_button = multistep.form.$form.find('input[type=\"submit\"]').eq(0);\n var $ajax_loader = multistep.form.$form.find('.ajax-loader').eq(0);\n if (multistep.currentStep == multistep.numSteps) {\n multistep.$btn_next.hide();\n $ajax_loader.detach().appendTo(multistep.$btn_next.parent());\n $submit_button.detach().appendTo(multistep.$btn_next.parent());\n $submit_button.show();\n } else {\n $submit_button.hide();\n multistep.$btn_next.show();\n }\n\n // update dots\n var $dots = multistep.$dots.find('.dot');\n $dots.removeClass('active').removeClass('completed');\n for(var step = 1; step <= multistep.numSteps; step++) {\n if (step < multistep.currentStep) {\n $dots.eq(step-1).addClass('completed');\n } else if (step == multistep.currentStep) {\n $dots.eq(step-1).addClass('active');\n }\n }\n\n },\n\n should_group_be_shown : function(condition, $current_form) {\n\n var $ = jQuery;\n\n var show_group = true;\n\n for (var and_rule_i = 0; and_rule_i < condition.and_rules.length; and_rule_i++) {\n\n var condition_ok = false;\n\n var condition_and_rule = condition.and_rules[and_rule_i];\n\n var $field = jQuery('[name=\"' + condition_and_rule.if_field + '\"], [name=\"' + condition_and_rule.if_field + '[]\"], [data-original-name=\"' + condition_and_rule.if_field + '\"], [data-original-name=\"' + condition_and_rule.if_field + '[]\"]',$current_form);\n\n var if_val = condition_and_rule.if_value;\n var if_val_as_number = isFinite(parseFloat(if_val)) ? parseFloat(if_val):0;\n var operator = condition_and_rule.operator;\n \n var regex_patt = /.*/i; // fallback regex pattern\n var isValidRegex = true;\n try {\n regex_patt = new RegExp(if_val, 'i');\n } catch(e) {\n isValidRegex = false;\n }\n\n\n //backwards compat\n operator = operator === '≤' ? 'less than or equals' : operator;\n operator = operator === '≥' ? 'greater than or equals' : operator;\n operator = operator === '>' ? 'greater than' : operator;\n operator = operator === '<' ? 'less than' : operator;\n\n\n if ( $field.is(':checkbox') || $field.is(':radio') ) {\n\n var all_values = [];\n var checked_values = [];\n $field.each(function () {\n all_values.push(jQuery(this).val());\n if (jQuery(this).is(':checked')) {\n checked_values.push(jQuery(this).val());\n }\n });\n\n condition_ok = this.isConditionTrue(checked_values,operator,if_val,$field);\n \n } else {\n \n condition_ok = this.isConditionTrue($field.val(),operator,if_val,$field);\n }\n\n show_group = show_group && condition_ok;\n }\n\n return show_group;\n\n },\n isConditionTrue(values, operator, testValue='', $field=jQuery()) {\n\n if (!Array.isArray(values)) {\n values = [values];\n }\n\n let condition_ok = false; // start by assuming that the condition is not met\n\n if (!values || values.length == 0 || values.every((v) => !v||0)) { // no values or only empty values passed (0 is not considered empty)\n if (operator === 'is empty') {\n condition_ok = true;\n }\n if (operator === 'not empty') {\n condition_ok = false;\n }\n } else {\n if (operator === 'is empty') {\n condition_ok = false;\n }\n if (operator === 'not empty') {\n condition_ok = true;\n }\n }\n\n const testValueNumber = isFinite(parseFloat(testValue)) ? parseFloat(testValue) : NaN;\n\n\n if (operator === 'not equals' || operator === 'not equals (regex)') {\n // start by assuming that the condition is met\n condition_ok = true;\n }\n\n if (\n operator === 'function'\n && typeof window[testValue] == 'function'\n && window[testValue]($field) // here we call the actual user defined function\n ) {\n condition_ok = true;\n }\n\n let regex_patt = /.*/i; // fallback regex pattern\n let isValidRegex = true;\n if (operator === 'equals (regex)' || operator === 'not equals (regex)') {\n try {\n regex_patt = new RegExp(testValue, 'i');\n } catch(e) {\n isValidRegex = false;\n }\n }\n\n\n for(let i = 0; i < values.length; i++) {\n\n const value = values[i];\n\n const valueNumber = isFinite(parseFloat(value)) ? parseFloat(value) : NaN;\n const valsAreNumbers = !isNaN(valueNumber) && !isNaN(testValueNumber);\n\n if (\n\n operator === 'equals' && value === testValue ||\n operator === 'equals (regex)' && regex_patt.test(value) ||\n operator === 'greater than' && valsAreNumbers && valueNumber > testValueNumber ||\n operator === 'less than' && valsAreNumbers && valueNumber < testValueNumber ||\n operator === 'greater than or equals' && valsAreNumbers && valueNumber >= testValueNumber ||\n operator === 'less than or equals' && valsAreNumbers && valueNumber <= testValueNumber\n \n ) {\n\n condition_ok = true;\n break;\n\n } else if (\n\n operator === 'not equals' && value === testValue ||\n operator === 'not equals (regex)' && regex_patt.test(value)\n\n ) {\n\n condition_ok = false;\n break;\n\n }\n }\n\n return condition_ok;\n\n }\n\n};\n\n\n\n\njQuery('.wpcf7-form').each(function(){\n wpcf7cf_forms.push(new Wpcf7cfForm(jQuery(this)));\n});\n\n// Call displayFields again on all forms\n// Necessary in case some theme or plugin changed a form value by the time the entire page is fully loaded.\njQuery('document').ready(function() {\n wpcf7cf_forms.forEach(function(f){\n f.displayFields();\n });\n});\n\n// fix for exclusive checkboxes in IE (this will call the change-event again after all other checkboxes are unchecked, triggering the display_fields() function)\nvar old_wpcf7ExclusiveCheckbox = jQuery.fn.wpcf7ExclusiveCheckbox;\njQuery.fn.wpcf7ExclusiveCheckbox = function() {\n return this.find('input:checkbox').click(function() {\n var name = jQuery(this).attr('name');\n jQuery(this).closest('form').find('input:checkbox[name=\"' + name + '\"]').not(this).prop('checked', false).eq(0).change();\n });\n};\n\n","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator;","module.exports = require(\"regenerator-runtime\");\n","/*!\n * jQuery JavaScript Library v3.5.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2020-04-10T15:07Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n // Support: Chrome <=57, Firefox <=52\n // In some browsers, typeof returns \"function\" for HTML <object> elements\n // (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n // We don't want to classify *any* DOM node as a function.\n return typeof obj === \"function\" && typeof obj.nodeType !== \"number\";\n };\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.5.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\nfunction( _i, name ) {\n\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.5\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2020-03-14\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem.namespaceURI,\n\t\tdocElem = ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"<a id='\" + expando + \"'></a>\" +\n\t\t\t\t\"<select id='\" + expando + \"-\\r\\\\' msallowcapture=''>\" +\n\t\t\t\t\"<option selected=''></option></select>\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"<a href='' disabled='disabled'></a>\" +\n\t\t\t\t\"<select disabled='disabled'><option/></select>\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: <number>) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"<a href='#'></a>\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"<input/>\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n};\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// <object> elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the master Deferred\n\t\t\tmaster = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tmaster.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( master.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn master.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), master.reject );\n\t\t}\n\n\t\treturn master.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\tvalue :\n\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = Object.create( null );\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"<textarea>x</textarea>\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces <option> tags with their contents when inserted outside of\n\t// the select element.\n\tdiv.innerHTML = \"<option></option>\";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting <tbody> or other required elements.\n\tthead: [ 1, \"<table>\", \"</table>\" ],\n\tcol: [ 2, \"<table><colgroup>\", \"</colgroup></table>\" ],\n\ttr: [ 2, \"<table><tbody>\", \"</tbody></table>\" ],\n\ttd: [ 3, \"<table><tbody><tr>\", \"</tr></tbody></table>\" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"<select multiple='multiple'>\", \"</select>\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar\n\trkeyEvent = /^key/,\n\trmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,\n\trtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG <use> instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\treturn result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\n\twhich: function( event ) {\n\t\tvar button = event.button;\n\n\t\t// Add which for key events\n\t\tif ( event.which == null && rkeyEvent.test( event.type ) ) {\n\t\t\treturn event.charCode != null ? event.charCode : event.keyCode;\n\t\t}\n\n\t\t// Add which for click: 1 === left; 2 === middle; 3 === right\n\t\tif ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {\n\t\t\tif ( button & 1 ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\tif ( button & 2 ) {\n\t\t\t\treturn 3;\n\t\t\t}\n\n\t\t\tif ( button & 4 ) {\n\t\t\t\treturn 2;\n\t\t\t}\n\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn event.which;\n\t}\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /<script|<style|<link/i,\n\n\t// checked=\"checked\" or checked\n\trchecked = /checked\\s*(?:[^=]|=\\s*.checked.)/i,\n\trcleanScript = /^\\s*<!(?:\\[CDATA\\[|--)|(?:\\]\\]|--)>\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px\";\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = parseInt( trStyle.height ) > 3;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQu