{"version":3,"file":"base-ts3RI3wd.js","sources":["../../node_modules/jquery-validation/dist/jquery.validate.js","../../static/js/libs/bootstrap/transition.js","../../static/js/libs/bootstrap/alert.js","../../static/js/libs/bootstrap/collapse.js","../../static/js/libs/bootstrap/dropdown.js","../../static/js/libs/bootstrap/modal.js","../../static/js/libs/bootstrap/tab.js","../../static/js/libs/bootstrap/tooltip.js","../../static/js/libs/bootstrap/popover.js","../../node_modules/bootstrap-breakpoints/src/bootstrap-breakpoints.js","../../static/js/addons/responsive.js","../../static/js/addons/header.js","../../static/js/addons/accordion.js","../../static/js/addons/blog.js","../../node_modules/js-cookie/dist/js.cookie.mjs","../../static/js/addons/cookie-policy.js","../../node_modules/jquery-validation/dist/additional-methods.js","../../static/js/addons/forms/index.js","../../static/js/addons/localscroll.js","../../static/js/addons/modal.js","../../static/js/addons/search.js","../../static/js/addons/tabs.js","../../node_modules/simple-parallax-js/dist/simpleParallax.min.js","../../static/js/addons/parallax.js","../../static/js/base.js"],"sourcesContent":["/*!\n * jQuery Validation Plugin v1.22.1\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2026 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t//   - A user defined a `submitHandler`\n\t\t\t\t\t//   - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t//     was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"<input type='hidden'/>\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array  ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\tariaDescribedByCleanup: false,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tcustomElements: [],\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift       => 16\n\t\t\t// Ctrl        => 17\n\t\t\t// Alt         => 18\n\t\t\t// Caps lock   => 20\n\t\t\t// End         => 35\n\t\t\t// Home        => 36\n\t\t\t// Left arrow  => 37\n\t\t\t// Up arrow    => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow  => 40\n\t\t\t// Insert      => 45\n\t\t\t// Num lock    => 144\n\t\t\t// AltGr key   => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar focusListeners = [ \":text\", \"[type='password']\", \"[type='file']\", \"select\", \"textarea\", \"[type='number']\", \"[type='search']\",\n\t\t\t\t\t\t\t\t\"[type='tel']\", \"[type='url']\", \"[type='email']\", \"[type='datetime']\", \"[type='date']\", \"[type='month']\",\n\t\t\t\t\t\t\t\t\"[type='week']\", \"[type='time']\", \"[type='datetime-local']\", \"[type='range']\", \"[type='color']\",\n\t\t\t\t\t\t\t\t\"[type='radio']\", \"[type='checkbox']\", \"[contenteditable]\", \"[type='button']\" ];\n\t\t\tvar clickListeners = [ \"select\", \"option\", \"[type='radio']\", \"[type='checkbox']\" ];\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\", focusListeners.concat( this.settings.customElements ).join( \", \" ), delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", clickListeners.concat( this.settings.customElements ).join( \", \" ), delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\n\t\t\t\t\t\t\t// Don't want to check fields if a user hasn't gotten to them yet\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.pushStack( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\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\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\t\taddErrorAriaDescribedBy: function( element, error, updateGroupMembers ) {\n\t\t\tupdateGroupMembers = ( updateGroupMembers === undefined ) ? false : updateGroupMembers;\n\n\t\t\tvar errorID, v, group,\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t// Respect existing non-error aria-describedby\n\t\t\tif ( !describedBy ) {\n\t\t\t\tdescribedBy = errorID;\n\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t// Add to end of list if not already present\n\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t}\n\n\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\tif ( updateGroupMembers ) {\n\n\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\tv = this;\n\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\tv.addErrorAriaDescribedBy( $( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm ), error, false );\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\tremoveErrorAriaDescribedBy: function( element, error ) {\n\n\t\t\tvar describedBy = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tdescribedByIds = describedBy.split( \" \" ),\n\t\t\t\terrorID = error.attr( \"id\" ),\n\t\t\t\tind = describedByIds.indexOf( errorID );\n\n\t\t\tif ( ind > -1 ) {\n\t\t\t\tdescribedByIds.splice( ind, 1 );\n\t\t\t}\n\n\t\t\tif ( describedByIds.length ) {\n\t\t\t\t$( element ).attr( \"aria-describedby\", describedByIds.join( \" \" ) );\n\t\t\t} else {\n\t\t\t\t$( element ).removeAttr( \"aria-describedby\" );\n\t\t\t}\n\n\t\t},\n\n\t\thideThese: function( errors ) {\n\n\t\t\tfor ( var i = 0; errors[ i ]; i++ ) {\n\t\t\t\tvar error = $( errors[ i ] ),\n\t\t\t\t\terrorID = error.attr( \"id\" ) ? this.escapeCssMeta( error.attr( \"id\" ) ) : undefined,\n\t\t\t\t\telement = ( errorID ) ? this.elements().filter( '[aria-describedby~=\"' + errorID + '\"]' ) : [];\n\n\t\t\t\tif ( this.settings.ariaDescribedByCleanup && element.length ) {\n\t\t\t\t\tthis.removeErrorAriaDescribedBy( element, error );\n\t\t\t\t}\n\n\t\t\t\tif ( !error.is( this.containers ) ) {\n\t\t\t\t\terror.text( \"\" );\n\t\t\t\t}\n\n\t\t\t\tthis.addWrapper( error ).hide();\n\t\t\t}\n\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {},\n\t\t\t\tselectors = [ \"input\", \"select\", \"textarea\", \"[contenteditable]\" ],\n\t\t\t\tformId = this.currentForm.getAttribute( \"id\" ),\n\t\t\t\telements;\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\telements = $( this.currentForm )\n\t\t\t.find( selectors.concat( this.settings.customElements ).join( \", \" ) )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore );\n\n\t\t\t// If the form has an ID, also include elements outside the form that have\n\t\t\t// a form attribute pointing to this form\n\t\t\tif ( formId ) {\n\t\t\t\telements = elements.add(\n\t\t\t\t\t$( selectors.concat( this.settings.customElements ).join( \", \" ) )\n\t\t\t\t\t.filter( \"[form='\" + validator.escapeCssMeta( formId ) + \"']\" )\n\t\t\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t\t\t.not( this.settings.ignore )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn elements.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Abort any pending Ajax request from a previous call to this method.\n\t\t\tthis.abortRequest( element );\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \".  Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t//     method: \"method name\",\n\t\t//     parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"<strong>Warning: No message defined for \" + element.name + \"</strong>\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Non-label error exists but is not currently associated with element via aria-describedby\n\t\t\t\tif ( error.closest( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 && ( describedBy === undefined || describedBy.split( \" \" ).indexOf( error.attr( \"id\" ) ) === -1 ) ) {\n\t\t\t\t\tthis.addErrorAriaDescribedBy( element, error, true );\n\t\t\t\t}\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass );\n\n\t\t\t\tif ( this.settings && this.settings.escapeHtml ) {\n\t\t\t\t\terror.text( message || \"\" );\n\t\t\t\t} else {\n\t\t\t\t\terror.html( message || \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\tthis.addErrorAriaDescribedBy( element, error, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\t// There may be hidden error elements not currently associated via aria-describedby (if ariaDescribedByCleanup is true)\n\t\t\tselector = selector + \", #\" + name + \"-error\";\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\tvar formId = this.currentForm.getAttribute( \"id\" ),\n\t\t\t\tselector = \"[name='\" + this.escapeCssMeta( name ) + \"']\",\n\t\t\t\telements = $( this.currentForm ).find( selector );\n\n\t\t\t// If the form has an ID, also include elements outside the form that have\n\t\t\t// a form attribute pointing to this form\n\t\t\tif ( formId ) {\n\t\t\t\telements = elements.add(\n\t\t\t\t\t$( selector )\n\t\t\t\t\t.filter( \"[form='\" + this.escapeCssMeta( formId ) + \"']\" )\n\t\t\t\t);\n\t\t\t}\n\n\t\t\treturn elements;\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\telementAjaxPort: function( element ) {\n\t\t\treturn \"validate\" + element.name;\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tabortRequest: function( element ) {\n\t\t\tvar port;\n\n\t\t\tif ( this.pending[ element.name ] ) {\n\t\t\t\tport = this.elementAjaxPort( element );\n\t\t\t\t$.ajaxAbort( port );\n\n\t\t\t\tthis.pendingRequest--;\n\n\t\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\t\tthis.pendingRequest = 0;\n\t\t\t\t}\n\n\t\t\t\tdelete this.pending[ element.name ];\n\t\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for <input required> in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:-?\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.valid !== null && previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tprevious.valid = null;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: this.elementAjaxPort( element ),\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n//        $.ajaxAbort( port );\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\t$.ajaxAbort( port );\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\n\n// Abort the previous request without sending a new one\n$.ajaxAbort = function( port ) {\n\tif ( pendingRequests[ port ] ) {\n\t\tpendingRequests[ port ].abort();\n\t\tdelete pendingRequests[ port ];\n\t}\n};\nreturn $;\n}));","/* ========================================================================\n * Bootstrap: transition.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#transitions\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // CSS TRANSITION SUPPORT (Shoutout: https://modernizr.com/)\n  // ============================================================\n\n  function transitionEnd() {\n    var el = document.createElement('bootstrap')\n\n    var transEndEventNames = {\n      WebkitTransition : 'webkitTransitionEnd',\n      MozTransition    : 'transitionend',\n      OTransition      : 'oTransitionEnd otransitionend',\n      transition       : 'transitionend'\n    }\n\n    for (var name in transEndEventNames) {\n      if (el.style[name] !== undefined) {\n        return { end: transEndEventNames[name] }\n      }\n    }\n\n    return false // explicit for ie8 (  ._.)\n  }\n\n  // https://blog.alexmaccaw.com/css-transitions\n  $.fn.emulateTransitionEnd = function (duration) {\n    var called = false\n    var $el = this\n    $(this).one('bsTransitionEnd', function () { called = true })\n    var callback = function () { if (!called) $($el).trigger($.support.transition.end) }\n    setTimeout(callback, duration)\n    return this\n  }\n\n  $(function () {\n    $.support.transition = transitionEnd()\n\n    if (!$.support.transition) return\n\n    $.event.special.bsTransitionEnd = {\n      bindType: $.support.transition.end,\n      delegateType: $.support.transition.end,\n      handle: function (e) {\n        if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)\n      }\n    }\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: alert.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#alerts\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // ALERT CLASS DEFINITION\n  // ======================\n\n  var dismiss = '[data-dismiss=\"alert\"]'\n  var Alert   = function (el) {\n    $(el).on('click', dismiss, this.close)\n  }\n\n  Alert.VERSION = '3.4.1'\n\n  Alert.TRANSITION_DURATION = 150\n\n  Alert.prototype.close = function (e) {\n    var $this    = $(this)\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    selector    = selector === '#' ? [] : selector\n    var $parent = $(document).find(selector)\n\n    if (e) e.preventDefault()\n\n    if (!$parent.length) {\n      $parent = $this.closest('.alert')\n    }\n\n    $parent.trigger(e = $.Event('close.bs.alert'))\n\n    if (e.isDefaultPrevented()) return\n\n    $parent.removeClass('in')\n\n    function removeElement() {\n      // detach from parent, fire event then clean up data\n      $parent.detach().trigger('closed.bs.alert').remove()\n    }\n\n    $.support.transition && $parent.hasClass('fade') ?\n      $parent\n        .one('bsTransitionEnd', removeElement)\n        .emulateTransitionEnd(Alert.TRANSITION_DURATION) :\n      removeElement()\n  }\n\n\n  // ALERT PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.alert')\n\n      if (!data) $this.data('bs.alert', (data = new Alert(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.alert\n\n  $.fn.alert             = Plugin\n  $.fn.alert.Constructor = Alert\n\n\n  // ALERT NO CONFLICT\n  // =================\n\n  $.fn.alert.noConflict = function () {\n    $.fn.alert = old\n    return this\n  }\n\n\n  // ALERT DATA-API\n  // ==============\n\n  $(document).on('click.bs.alert.data-api', dismiss, Alert.prototype.close)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: collapse.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#collapse\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n/* jshint latedef: false */\n\n+function ($) {\n  'use strict';\n\n  // COLLAPSE PUBLIC CLASS DEFINITION\n  // ================================\n\n  var Collapse = function (element, options) {\n    this.$element      = $(element)\n    this.options       = $.extend({}, Collapse.DEFAULTS, options)\n    this.$trigger      = $('[data-toggle=\"collapse\"][href=\"#' + element.id + '\"],' +\n                           '[data-toggle=\"collapse\"][data-target=\"#' + element.id + '\"]')\n    this.transitioning = null\n\n    if (this.options.parent) {\n      this.$parent = this.getParent()\n    } else {\n      this.addAriaAndCollapsedClass(this.$element, this.$trigger)\n    }\n\n    if (this.options.toggle) this.toggle()\n  }\n\n  Collapse.VERSION  = '3.4.1'\n\n  Collapse.TRANSITION_DURATION = 350\n\n  Collapse.DEFAULTS = {\n    toggle: true\n  }\n\n  Collapse.prototype.dimension = function () {\n    var hasWidth = this.$element.hasClass('width')\n    return hasWidth ? 'width' : 'height'\n  }\n\n  Collapse.prototype.show = function () {\n    if (this.transitioning || this.$element.hasClass('in')) return\n\n    var activesData\n    var actives = this.$parent && this.$parent.children('.panel').children('.in, .collapsing')\n\n    if (actives && actives.length) {\n      activesData = actives.data('bs.collapse')\n      if (activesData && activesData.transitioning) return\n    }\n\n    var startEvent = $.Event('show.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    if (actives && actives.length) {\n      Plugin.call(actives, 'hide')\n      activesData || actives.data('bs.collapse', null)\n    }\n\n    var dimension = this.dimension()\n\n    this.$element\n      .removeClass('collapse')\n      .addClass('collapsing')[dimension](0)\n      .attr('aria-expanded', true)\n\n    this.$trigger\n      .removeClass('collapsed')\n      .attr('aria-expanded', true)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse in')[dimension]('')\n      this.transitioning = 0\n      this.$element\n        .trigger('shown.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    var scrollSize = $.camelCase(['scroll', dimension].join('-'))\n\n    this.$element\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)[dimension](this.$element[0][scrollSize])\n  }\n\n  Collapse.prototype.hide = function () {\n    if (this.transitioning || !this.$element.hasClass('in')) return\n\n    var startEvent = $.Event('hide.bs.collapse')\n    this.$element.trigger(startEvent)\n    if (startEvent.isDefaultPrevented()) return\n\n    var dimension = this.dimension()\n\n    this.$element[dimension](this.$element[dimension]())[0].offsetHeight\n\n    this.$element\n      .addClass('collapsing')\n      .removeClass('collapse in')\n      .attr('aria-expanded', false)\n\n    this.$trigger\n      .addClass('collapsed')\n      .attr('aria-expanded', false)\n\n    this.transitioning = 1\n\n    var complete = function () {\n      this.transitioning = 0\n      this.$element\n        .removeClass('collapsing')\n        .addClass('collapse')\n        .trigger('hidden.bs.collapse')\n    }\n\n    if (!$.support.transition) return complete.call(this)\n\n    this.$element\n      [dimension](0)\n      .one('bsTransitionEnd', $.proxy(complete, this))\n      .emulateTransitionEnd(Collapse.TRANSITION_DURATION)\n  }\n\n  Collapse.prototype.toggle = function () {\n    this[this.$element.hasClass('in') ? 'hide' : 'show']()\n  }\n\n  Collapse.prototype.getParent = function () {\n    return $(document).find(this.options.parent)\n      .find('[data-toggle=\"collapse\"][data-parent=\"' + this.options.parent + '\"]')\n      .each($.proxy(function (i, element) {\n        var $element = $(element)\n        this.addAriaAndCollapsedClass(getTargetFromTrigger($element), $element)\n      }, this))\n      .end()\n  }\n\n  Collapse.prototype.addAriaAndCollapsedClass = function ($element, $trigger) {\n    var isOpen = $element.hasClass('in')\n\n    $element.attr('aria-expanded', isOpen)\n    $trigger\n      .toggleClass('collapsed', !isOpen)\n      .attr('aria-expanded', isOpen)\n  }\n\n  function getTargetFromTrigger($trigger) {\n    var href\n    var target = $trigger.attr('data-target')\n      || (href = $trigger.attr('href')) && href.replace(/.*(?=#[^\\s]+$)/, '') // strip for ie7\n\n    return $(document).find(target)\n  }\n\n\n  // COLLAPSE PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.collapse')\n      var options = $.extend({}, Collapse.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data && options.toggle && /show|hide/.test(option)) options.toggle = false\n      if (!data) $this.data('bs.collapse', (data = new Collapse(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.collapse\n\n  $.fn.collapse             = Plugin\n  $.fn.collapse.Constructor = Collapse\n\n\n  // COLLAPSE NO CONFLICT\n  // ====================\n\n  $.fn.collapse.noConflict = function () {\n    $.fn.collapse = old\n    return this\n  }\n\n\n  // COLLAPSE DATA-API\n  // =================\n\n  $(document).on('click.bs.collapse.data-api', '[data-toggle=\"collapse\"]', function (e) {\n    var $this   = $(this)\n\n    if (!$this.attr('data-target')) e.preventDefault()\n\n    var $target = getTargetFromTrigger($this)\n    var data    = $target.data('bs.collapse')\n    var option  = data ? 'toggle' : $this.data()\n\n    Plugin.call($target, option)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: dropdown.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#dropdowns\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // DROPDOWN CLASS DEFINITION\n  // =========================\n\n  var backdrop = '.dropdown-backdrop'\n  var toggle   = '[data-toggle=\"dropdown\"]'\n  var Dropdown = function (element) {\n    $(element).on('click.bs.dropdown', this.toggle)\n  }\n\n  Dropdown.VERSION = '3.4.1'\n\n  function getParent($this) {\n    var selector = $this.attr('data-target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    var $parent = selector !== '#' ? $(document).find(selector) : null\n\n    return $parent && $parent.length ? $parent : $this.parent()\n  }\n\n  function clearMenus(e) {\n    if (e && e.which === 3) return\n    $(backdrop).remove()\n    $(toggle).each(function () {\n      var $this         = $(this)\n      var $parent       = getParent($this)\n      var relatedTarget = { relatedTarget: this }\n\n      if (!$parent.hasClass('open')) return\n\n      if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return\n\n      $parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this.attr('aria-expanded', 'false')\n      $parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))\n    })\n  }\n\n  Dropdown.prototype.toggle = function (e) {\n    var $this = $(this)\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    clearMenus()\n\n    if (!isActive) {\n      if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {\n        // if mobile we use a backdrop because click events don't delegate\n        $(document.createElement('div'))\n          .addClass('dropdown-backdrop')\n          .insertAfter($(this))\n          .on('click', clearMenus)\n      }\n\n      var relatedTarget = { relatedTarget: this }\n      $parent.trigger(e = $.Event('show.bs.dropdown', relatedTarget))\n\n      if (e.isDefaultPrevented()) return\n\n      $this\n        .trigger('focus')\n        .attr('aria-expanded', 'true')\n\n      $parent\n        .toggleClass('open')\n        .trigger($.Event('shown.bs.dropdown', relatedTarget))\n    }\n\n    return false\n  }\n\n  Dropdown.prototype.keydown = function (e) {\n    if (!/(38|40|27|32)/.test(e.which) || /input|textarea/i.test(e.target.tagName)) return\n\n    var $this = $(this)\n\n    e.preventDefault()\n    e.stopPropagation()\n\n    if ($this.is('.disabled, :disabled')) return\n\n    var $parent  = getParent($this)\n    var isActive = $parent.hasClass('open')\n\n    if (!isActive && e.which != 27 || isActive && e.which == 27) {\n      if (e.which == 27) $parent.find(toggle).trigger('focus')\n      return $this.trigger('click')\n    }\n\n    var desc = ' li:not(.disabled):visible a'\n    var $items = $parent.find('.dropdown-menu' + desc)\n\n    if (!$items.length) return\n\n    var index = $items.index(e.target)\n\n    if (e.which == 38 && index > 0)                 index--         // up\n    if (e.which == 40 && index < $items.length - 1) index++         // down\n    if (!~index)                                    index = 0\n\n    $items.eq(index).trigger('focus')\n  }\n\n\n  // DROPDOWN PLUGIN DEFINITION\n  // ==========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.dropdown')\n\n      if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))\n      if (typeof option == 'string') data[option].call($this)\n    })\n  }\n\n  var old = $.fn.dropdown\n\n  $.fn.dropdown             = Plugin\n  $.fn.dropdown.Constructor = Dropdown\n\n\n  // DROPDOWN NO CONFLICT\n  // ====================\n\n  $.fn.dropdown.noConflict = function () {\n    $.fn.dropdown = old\n    return this\n  }\n\n\n  // APPLY TO STANDARD DROPDOWN ELEMENTS\n  // ===================================\n\n  $(document)\n    .on('click.bs.dropdown.data-api', clearMenus)\n    .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })\n    .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)\n    .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)\n    .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: modal.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#modals\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // MODAL CLASS DEFINITION\n  // ======================\n\n  var Modal = function (element, options) {\n    this.options = options\n    this.$body = $(document.body)\n    this.$element = $(element)\n    this.$dialog = this.$element.find('.modal-dialog')\n    this.$backdrop = null\n    this.isShown = null\n    this.originalBodyPad = null\n    this.scrollbarWidth = 0\n    this.ignoreBackdropClick = false\n    this.fixedContent = '.navbar-fixed-top, .navbar-fixed-bottom'\n\n    if (this.options.remote) {\n      this.$element\n        .find('.modal-content')\n        .load(this.options.remote, $.proxy(function () {\n          this.$element.trigger('loaded.bs.modal')\n        }, this))\n    }\n  }\n\n  Modal.VERSION = '3.4.1'\n\n  Modal.TRANSITION_DURATION = 300\n  Modal.BACKDROP_TRANSITION_DURATION = 150\n\n  Modal.DEFAULTS = {\n    backdrop: true,\n    keyboard: true,\n    show: true\n  }\n\n  Modal.prototype.toggle = function (_relatedTarget) {\n    return this.isShown ? this.hide() : this.show(_relatedTarget)\n  }\n\n  Modal.prototype.show = function (_relatedTarget) {\n    var that = this\n    var e = $.Event('show.bs.modal', { relatedTarget: _relatedTarget })\n\n    this.$element.trigger(e)\n\n    if (this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = true\n\n    this.checkScrollbar()\n    this.setScrollbar()\n    this.$body.addClass('modal-open')\n\n    this.escape()\n    this.resize()\n\n    this.$element.on('click.dismiss.bs.modal', '[data-dismiss=\"modal\"]', $.proxy(this.hide, this))\n\n    this.$dialog.on('mousedown.dismiss.bs.modal', function () {\n      that.$element.one('mouseup.dismiss.bs.modal', function (e) {\n        if ($(e.target).is(that.$element)) that.ignoreBackdropClick = true\n      })\n    })\n\n    this.backdrop(function () {\n      var transition = $.support.transition && that.$element.hasClass('fade')\n\n      if (!that.$element.parent().length) {\n        that.$element.appendTo(that.$body) // don't move modals dom position\n      }\n\n      that.$element\n        .show()\n        .scrollTop(0)\n\n      that.adjustDialog()\n\n      if (transition) {\n        that.$element[0].offsetWidth // force reflow\n      }\n\n      that.$element.addClass('in')\n\n      that.enforceFocus()\n\n      var e = $.Event('shown.bs.modal', { relatedTarget: _relatedTarget })\n\n      transition ?\n        that.$dialog // wait for modal to slide in\n          .one('bsTransitionEnd', function () {\n            that.$element.trigger('focus').trigger(e)\n          })\n          .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n        that.$element.trigger('focus').trigger(e)\n    })\n  }\n\n  Modal.prototype.hide = function (e) {\n    if (e) e.preventDefault()\n\n    e = $.Event('hide.bs.modal')\n\n    this.$element.trigger(e)\n\n    if (!this.isShown || e.isDefaultPrevented()) return\n\n    this.isShown = false\n\n    this.escape()\n    this.resize()\n\n    $(document).off('focusin.bs.modal')\n\n    this.$element\n      .removeClass('in')\n      .off('click.dismiss.bs.modal')\n      .off('mouseup.dismiss.bs.modal')\n\n    this.$dialog.off('mousedown.dismiss.bs.modal')\n\n    $.support.transition && this.$element.hasClass('fade') ?\n      this.$element\n        .one('bsTransitionEnd', $.proxy(this.hideModal, this))\n        .emulateTransitionEnd(Modal.TRANSITION_DURATION) :\n      this.hideModal()\n  }\n\n  Modal.prototype.enforceFocus = function () {\n    $(document)\n      .off('focusin.bs.modal') // guard against infinite focus loop\n      .on('focusin.bs.modal', $.proxy(function (e) {\n        if (document !== e.target &&\n          this.$element[0] !== e.target &&\n          !this.$element.has(e.target).length) {\n          this.$element.trigger('focus')\n        }\n      }, this))\n  }\n\n  Modal.prototype.escape = function () {\n    if (this.isShown && this.options.keyboard) {\n      this.$element.on('keydown.dismiss.bs.modal', $.proxy(function (e) {\n        e.which == 27 && this.hide()\n      }, this))\n    } else if (!this.isShown) {\n      this.$element.off('keydown.dismiss.bs.modal')\n    }\n  }\n\n  Modal.prototype.resize = function () {\n    if (this.isShown) {\n      $(window).on('resize.bs.modal', $.proxy(this.handleUpdate, this))\n    } else {\n      $(window).off('resize.bs.modal')\n    }\n  }\n\n  Modal.prototype.hideModal = function () {\n    var that = this\n    this.$element.hide()\n    this.backdrop(function () {\n      that.$body.removeClass('modal-open')\n      that.resetAdjustments()\n      that.resetScrollbar()\n      that.$element.trigger('hidden.bs.modal')\n    })\n  }\n\n  Modal.prototype.removeBackdrop = function () {\n    this.$backdrop && this.$backdrop.remove()\n    this.$backdrop = null\n  }\n\n  Modal.prototype.backdrop = function (callback) {\n    var that = this\n    var animate = this.$element.hasClass('fade') ? 'fade' : ''\n\n    if (this.isShown && this.options.backdrop) {\n      var doAnimate = $.support.transition && animate\n\n      this.$backdrop = $(document.createElement('div'))\n        .addClass('modal-backdrop ' + animate)\n        .appendTo(this.$body)\n\n      this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {\n        if (this.ignoreBackdropClick) {\n          this.ignoreBackdropClick = false\n          return\n        }\n        if (e.target !== e.currentTarget) return\n        this.options.backdrop == 'static'\n          ? this.$element[0].focus()\n          : this.hide()\n      }, this))\n\n      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow\n\n      this.$backdrop.addClass('in')\n\n      if (!callback) return\n\n      doAnimate ?\n        this.$backdrop\n          .one('bsTransitionEnd', callback)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callback()\n\n    } else if (!this.isShown && this.$backdrop) {\n      this.$backdrop.removeClass('in')\n\n      var callbackRemove = function () {\n        that.removeBackdrop()\n        callback && callback()\n      }\n      $.support.transition && this.$element.hasClass('fade') ?\n        this.$backdrop\n          .one('bsTransitionEnd', callbackRemove)\n          .emulateTransitionEnd(Modal.BACKDROP_TRANSITION_DURATION) :\n        callbackRemove()\n\n    } else if (callback) {\n      callback()\n    }\n  }\n\n  // these following methods are used to handle overflowing modals\n\n  Modal.prototype.handleUpdate = function () {\n    this.adjustDialog()\n  }\n\n  Modal.prototype.adjustDialog = function () {\n    var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight\n\n    this.$element.css({\n      paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',\n      paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''\n    })\n  }\n\n  Modal.prototype.resetAdjustments = function () {\n    this.$element.css({\n      paddingLeft: '',\n      paddingRight: ''\n    })\n  }\n\n  Modal.prototype.checkScrollbar = function () {\n    var fullWindowWidth = window.innerWidth\n    if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8\n      var documentElementRect = document.documentElement.getBoundingClientRect()\n      fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)\n    }\n    this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth\n    this.scrollbarWidth = this.measureScrollbar()\n  }\n\n  Modal.prototype.setScrollbar = function () {\n    var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)\n    this.originalBodyPad = document.body.style.paddingRight || ''\n    var scrollbarWidth = this.scrollbarWidth\n    if (this.bodyIsOverflowing) {\n      this.$body.css('padding-right', bodyPad + scrollbarWidth)\n      $(this.fixedContent).each(function (index, element) {\n        var actualPadding = element.style.paddingRight\n        var calculatedPadding = $(element).css('padding-right')\n        $(element)\n          .data('padding-right', actualPadding)\n          .css('padding-right', parseFloat(calculatedPadding) + scrollbarWidth + 'px')\n      })\n    }\n  }\n\n  Modal.prototype.resetScrollbar = function () {\n    this.$body.css('padding-right', this.originalBodyPad)\n    $(this.fixedContent).each(function (index, element) {\n      var padding = $(element).data('padding-right')\n      $(element).removeData('padding-right')\n      element.style.paddingRight = padding ? padding : ''\n    })\n  }\n\n  Modal.prototype.measureScrollbar = function () { // thx walsh\n    var scrollDiv = document.createElement('div')\n    scrollDiv.className = 'modal-scrollbar-measure'\n    this.$body.append(scrollDiv)\n    var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth\n    this.$body[0].removeChild(scrollDiv)\n    return scrollbarWidth\n  }\n\n\n  // MODAL PLUGIN DEFINITION\n  // =======================\n\n  function Plugin(option, _relatedTarget) {\n    return this.each(function () {\n      var $this = $(this)\n      var data = $this.data('bs.modal')\n      var options = $.extend({}, Modal.DEFAULTS, $this.data(), typeof option == 'object' && option)\n\n      if (!data) $this.data('bs.modal', (data = new Modal(this, options)))\n      if (typeof option == 'string') data[option](_relatedTarget)\n      else if (options.show) data.show(_relatedTarget)\n    })\n  }\n\n  var old = $.fn.modal\n\n  $.fn.modal = Plugin\n  $.fn.modal.Constructor = Modal\n\n\n  // MODAL NO CONFLICT\n  // =================\n\n  $.fn.modal.noConflict = function () {\n    $.fn.modal = old\n    return this\n  }\n\n\n  // MODAL DATA-API\n  // ==============\n\n  $(document).on('click.bs.modal.data-api', '[data-toggle=\"modal\"]', function (e) {\n    var $this = $(this)\n    var href = $this.attr('href')\n    var target = $this.attr('data-target') ||\n      (href && href.replace(/.*(?=#[^\\s]+$)/, '')) // strip for ie7\n\n    var $target = $(document).find(target)\n    var option = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())\n\n    if ($this.is('a')) e.preventDefault()\n\n    $target.one('show.bs.modal', function (showEvent) {\n      if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown\n      $target.one('hidden.bs.modal', function () {\n        $this.is(':visible') && $this.trigger('focus')\n      })\n    })\n    Plugin.call($target, option, this)\n  })\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tab.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tabs\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // TAB CLASS DEFINITION\n  // ====================\n\n  var Tab = function (element) {\n    // jscs:disable requireDollarBeforejQueryAssignment\n    this.element = $(element)\n    // jscs:enable requireDollarBeforejQueryAssignment\n  }\n\n  Tab.VERSION = '3.4.1'\n\n  Tab.TRANSITION_DURATION = 150\n\n  Tab.prototype.show = function () {\n    var $this    = this.element\n    var $ul      = $this.closest('ul:not(.dropdown-menu)')\n    var selector = $this.data('target')\n\n    if (!selector) {\n      selector = $this.attr('href')\n      selector = selector && selector.replace(/.*(?=#[^\\s]*$)/, '') // strip for ie7\n    }\n\n    if ($this.parent('li').hasClass('active')) return\n\n    var $previous = $ul.find('.active:last a')\n    var hideEvent = $.Event('hide.bs.tab', {\n      relatedTarget: $this[0]\n    })\n    var showEvent = $.Event('show.bs.tab', {\n      relatedTarget: $previous[0]\n    })\n\n    $previous.trigger(hideEvent)\n    $this.trigger(showEvent)\n\n    if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) return\n\n    var $target = $(document).find(selector)\n\n    this.activate($this.closest('li'), $ul)\n    this.activate($target, $target.parent(), function () {\n      $previous.trigger({\n        type: 'hidden.bs.tab',\n        relatedTarget: $this[0]\n      })\n      $this.trigger({\n        type: 'shown.bs.tab',\n        relatedTarget: $previous[0]\n      })\n    })\n  }\n\n  Tab.prototype.activate = function (element, container, callback) {\n    var $active    = container.find('> .active')\n    var transition = callback\n      && $.support.transition\n      && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)\n\n    function next() {\n      $active\n        .removeClass('active')\n        .find('> .dropdown-menu > .active')\n        .removeClass('active')\n        .end()\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', false)\n\n      element\n        .addClass('active')\n        .find('[data-toggle=\"tab\"]')\n        .attr('aria-expanded', true)\n\n      if (transition) {\n        element[0].offsetWidth // reflow for transition\n        element.addClass('in')\n      } else {\n        element.removeClass('fade')\n      }\n\n      if (element.parent('.dropdown-menu').length) {\n        element\n          .closest('li.dropdown')\n          .addClass('active')\n          .end()\n          .find('[data-toggle=\"tab\"]')\n          .attr('aria-expanded', true)\n      }\n\n      callback && callback()\n    }\n\n    $active.length && transition ?\n      $active\n        .one('bsTransitionEnd', next)\n        .emulateTransitionEnd(Tab.TRANSITION_DURATION) :\n      next()\n\n    $active.removeClass('in')\n  }\n\n\n  // TAB PLUGIN DEFINITION\n  // =====================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this = $(this)\n      var data  = $this.data('bs.tab')\n\n      if (!data) $this.data('bs.tab', (data = new Tab(this)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tab\n\n  $.fn.tab             = Plugin\n  $.fn.tab.Constructor = Tab\n\n\n  // TAB NO CONFLICT\n  // ===============\n\n  $.fn.tab.noConflict = function () {\n    $.fn.tab = old\n    return this\n  }\n\n\n  // TAB DATA-API\n  // ============\n\n  var clickHandler = function (e) {\n    e.preventDefault()\n    Plugin.call($(this), 'show')\n  }\n\n  $(document)\n    .on('click.bs.tab.data-api', '[data-toggle=\"tab\"]', clickHandler)\n    .on('click.bs.tab.data-api', '[data-toggle=\"pill\"]', clickHandler)\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: tooltip.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#tooltip\n * Inspired by the original jQuery.tipsy by Jason Frame\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n+function ($) {\n  'use strict';\n\n  var DISALLOWED_ATTRIBUTES = ['sanitize', 'whiteList', 'sanitizeFn']\n\n  var uriAttrs = [\n    'background',\n    'cite',\n    'href',\n    'itemtype',\n    'longdesc',\n    'poster',\n    'src',\n    'xlink:href'\n  ]\n\n  var ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n  var DefaultWhitelist = {\n    // Global attributes allowed on any supplied element below.\n    '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n    a: ['target', 'href', 'title', 'rel'],\n    area: [],\n    b: [],\n    br: [],\n    col: [],\n    code: [],\n    div: [],\n    em: [],\n    hr: [],\n    h1: [],\n    h2: [],\n    h3: [],\n    h4: [],\n    h5: [],\n    h6: [],\n    i: [],\n    img: ['src', 'alt', 'title', 'width', 'height'],\n    li: [],\n    ol: [],\n    p: [],\n    pre: [],\n    s: [],\n    small: [],\n    span: [],\n    sub: [],\n    sup: [],\n    strong: [],\n    u: [],\n    ul: []\n  }\n\n  /**\n   * A pattern that recognizes a commonly useful subset of URLs that are safe.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi\n\n  /**\n   * A pattern that matches safe data URLs. Only matches image, video and audio types.\n   *\n   * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n   */\n  var DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i\n\n  function allowedAttribute(attr, allowedAttributeList) {\n    var attrName = attr.nodeName.toLowerCase()\n\n    if ($.inArray(attrName, allowedAttributeList) !== -1) {\n      if ($.inArray(attrName, uriAttrs) !== -1) {\n        return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN))\n      }\n\n      return true\n    }\n\n    var regExp = $(allowedAttributeList).filter(function (index, value) {\n      return value instanceof RegExp\n    })\n\n    // Check if a regular expression validates the attribute.\n    for (var i = 0, l = regExp.length; i < l; i++) {\n      if (attrName.match(regExp[i])) {\n        return true\n      }\n    }\n\n    return false\n  }\n\n  function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) {\n    if (unsafeHtml.length === 0) {\n      return unsafeHtml\n    }\n\n    if (sanitizeFn && typeof sanitizeFn === 'function') {\n      return sanitizeFn(unsafeHtml)\n    }\n\n    // IE 8 and below don't support createHTMLDocument\n    if (!document.implementation || !document.implementation.createHTMLDocument) {\n      return unsafeHtml\n    }\n\n    var createdDocument = document.implementation.createHTMLDocument('sanitization')\n    createdDocument.body.innerHTML = unsafeHtml\n\n    var whitelistKeys = $.map(whiteList, function (el, i) { return i })\n    var elements = $(createdDocument.body).find('*')\n\n    for (var i = 0, len = elements.length; i < len; i++) {\n      var el = elements[i]\n      var elName = el.nodeName.toLowerCase()\n\n      if ($.inArray(elName, whitelistKeys) === -1) {\n        el.parentNode.removeChild(el)\n\n        continue\n      }\n\n      var attributeList = $.map(el.attributes, function (el) { return el })\n      var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || [])\n\n      for (var j = 0, len2 = attributeList.length; j < len2; j++) {\n        if (!allowedAttribute(attributeList[j], whitelistedAttributes)) {\n          el.removeAttribute(attributeList[j].nodeName)\n        }\n      }\n    }\n\n    return createdDocument.body.innerHTML\n  }\n\n  // TOOLTIP PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Tooltip = function (element, options) {\n    this.type       = null\n    this.options    = null\n    this.enabled    = null\n    this.timeout    = null\n    this.hoverState = null\n    this.$element   = null\n    this.inState    = null\n\n    this.init('tooltip', element, options)\n  }\n\n  Tooltip.VERSION  = '3.4.1'\n\n  Tooltip.TRANSITION_DURATION = 150\n\n  Tooltip.DEFAULTS = {\n    animation: true,\n    placement: 'top',\n    selector: false,\n    template: '<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',\n    trigger: 'hover focus',\n    title: '',\n    delay: 0,\n    html: false,\n    container: false,\n    viewport: {\n      selector: 'body',\n      padding: 0\n    },\n    sanitize : true,\n    sanitizeFn : null,\n    whiteList : DefaultWhitelist\n  }\n\n  Tooltip.prototype.init = function (type, element, options) {\n    this.enabled   = true\n    this.type      = type\n    this.$element  = $(element)\n    this.options   = this.getOptions(options)\n    this.$viewport = this.options.viewport && $(document).find($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))\n    this.inState   = { click: false, hover: false, focus: false }\n\n    if (this.$element[0] instanceof document.constructor && !this.options.selector) {\n      throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')\n    }\n\n    var triggers = this.options.trigger.split(' ')\n\n    for (var i = triggers.length; i--;) {\n      var trigger = triggers[i]\n\n      if (trigger == 'click') {\n        this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))\n      } else if (trigger != 'manual') {\n        var eventIn  = trigger == 'hover' ? 'mouseenter' : 'focusin'\n        var eventOut = trigger == 'hover' ? 'mouseleave' : 'focusout'\n\n        this.$element.on(eventIn  + '.' + this.type, this.options.selector, $.proxy(this.enter, this))\n        this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))\n      }\n    }\n\n    this.options.selector ?\n      (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :\n      this.fixTitle()\n  }\n\n  Tooltip.prototype.getDefaults = function () {\n    return Tooltip.DEFAULTS\n  }\n\n  Tooltip.prototype.getOptions = function (options) {\n    var dataAttributes = this.$element.data()\n\n    for (var dataAttr in dataAttributes) {\n      if (dataAttributes.hasOwnProperty(dataAttr) && $.inArray(dataAttr, DISALLOWED_ATTRIBUTES) !== -1) {\n        delete dataAttributes[dataAttr]\n      }\n    }\n\n    options = $.extend({}, this.getDefaults(), dataAttributes, options)\n\n    if (options.delay && typeof options.delay == 'number') {\n      options.delay = {\n        show: options.delay,\n        hide: options.delay\n      }\n    }\n\n    if (options.sanitize) {\n      options.template = sanitizeHtml(options.template, options.whiteList, options.sanitizeFn)\n    }\n\n    return options\n  }\n\n  Tooltip.prototype.getDelegateOptions = function () {\n    var options  = {}\n    var defaults = this.getDefaults()\n\n    this._options && $.each(this._options, function (key, value) {\n      if (defaults[key] != value) options[key] = value\n    })\n\n    return options\n  }\n\n  Tooltip.prototype.enter = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true\n    }\n\n    if (self.tip().hasClass('in') || self.hoverState == 'in') {\n      self.hoverState = 'in'\n      return\n    }\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'in'\n\n    if (!self.options.delay || !self.options.delay.show) return self.show()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'in') self.show()\n    }, self.options.delay.show)\n  }\n\n  Tooltip.prototype.isInStateTrue = function () {\n    for (var key in this.inState) {\n      if (this.inState[key]) return true\n    }\n\n    return false\n  }\n\n  Tooltip.prototype.leave = function (obj) {\n    var self = obj instanceof this.constructor ?\n      obj : $(obj.currentTarget).data('bs.' + this.type)\n\n    if (!self) {\n      self = new this.constructor(obj.currentTarget, this.getDelegateOptions())\n      $(obj.currentTarget).data('bs.' + this.type, self)\n    }\n\n    if (obj instanceof $.Event) {\n      self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false\n    }\n\n    if (self.isInStateTrue()) return\n\n    clearTimeout(self.timeout)\n\n    self.hoverState = 'out'\n\n    if (!self.options.delay || !self.options.delay.hide) return self.hide()\n\n    self.timeout = setTimeout(function () {\n      if (self.hoverState == 'out') self.hide()\n    }, self.options.delay.hide)\n  }\n\n  Tooltip.prototype.show = function () {\n    var e = $.Event('show.bs.' + this.type)\n\n    if (this.hasContent() && this.enabled) {\n      this.$element.trigger(e)\n\n      var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])\n      if (e.isDefaultPrevented() || !inDom) return\n      var that = this\n\n      var $tip = this.tip()\n\n      var tipId = this.getUID(this.type)\n\n      this.setContent()\n      $tip.attr('id', tipId)\n      this.$element.attr('aria-describedby', tipId)\n\n      if (this.options.animation) $tip.addClass('fade')\n\n      var placement = typeof this.options.placement == 'function' ?\n        this.options.placement.call(this, $tip[0], this.$element[0]) :\n        this.options.placement\n\n      var autoToken = /\\s?auto?\\s?/i\n      var autoPlace = autoToken.test(placement)\n      if (autoPlace) placement = placement.replace(autoToken, '') || 'top'\n\n      $tip\n        .detach()\n        .css({ top: 0, left: 0, display: 'block' })\n        .addClass(placement)\n        .data('bs.' + this.type, this)\n\n      this.options.container ? $tip.appendTo($(document).find(this.options.container)) : $tip.insertAfter(this.$element)\n      this.$element.trigger('inserted.bs.' + this.type)\n\n      var pos          = this.getPosition()\n      var actualWidth  = $tip[0].offsetWidth\n      var actualHeight = $tip[0].offsetHeight\n\n      if (autoPlace) {\n        var orgPlacement = placement\n        var viewportDim = this.getPosition(this.$viewport)\n\n        placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top'    :\n                    placement == 'top'    && pos.top    - actualHeight < viewportDim.top    ? 'bottom' :\n                    placement == 'right'  && pos.right  + actualWidth  > viewportDim.width  ? 'left'   :\n                    placement == 'left'   && pos.left   - actualWidth  < viewportDim.left   ? 'right'  :\n                    placement\n\n        $tip\n          .removeClass(orgPlacement)\n          .addClass(placement)\n      }\n\n      var calculatedOffset = this.getCalculatedOffset(placement, pos, actualWidth, actualHeight)\n\n      this.applyPlacement(calculatedOffset, placement)\n\n      var complete = function () {\n        var prevHoverState = that.hoverState\n        that.$element.trigger('shown.bs.' + that.type)\n        that.hoverState = null\n\n        if (prevHoverState == 'out') that.leave(that)\n      }\n\n      $.support.transition && this.$tip.hasClass('fade') ?\n        $tip\n          .one('bsTransitionEnd', complete)\n          .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n        complete()\n    }\n  }\n\n  Tooltip.prototype.applyPlacement = function (offset, placement) {\n    var $tip   = this.tip()\n    var width  = $tip[0].offsetWidth\n    var height = $tip[0].offsetHeight\n\n    // manually read margins because getBoundingClientRect includes difference\n    var marginTop = parseInt($tip.css('margin-top'), 10)\n    var marginLeft = parseInt($tip.css('margin-left'), 10)\n\n    // we must check for NaN for ie 8/9\n    if (isNaN(marginTop))  marginTop  = 0\n    if (isNaN(marginLeft)) marginLeft = 0\n\n    offset.top  += marginTop\n    offset.left += marginLeft\n\n    // $.fn.offset doesn't round pixel values\n    // so we use setOffset directly with our own function B-0\n    $.offset.setOffset($tip[0], $.extend({\n      using: function (props) {\n        $tip.css({\n          top: Math.round(props.top),\n          left: Math.round(props.left)\n        })\n      }\n    }, offset), 0)\n\n    $tip.addClass('in')\n\n    // check to see if placing tip in new offset caused the tip to resize itself\n    var actualWidth  = $tip[0].offsetWidth\n    var actualHeight = $tip[0].offsetHeight\n\n    if (placement == 'top' && actualHeight != height) {\n      offset.top = offset.top + height - actualHeight\n    }\n\n    var delta = this.getViewportAdjustedDelta(placement, offset, actualWidth, actualHeight)\n\n    if (delta.left) offset.left += delta.left\n    else offset.top += delta.top\n\n    var isVertical          = /top|bottom/.test(placement)\n    var arrowDelta          = isVertical ? delta.left * 2 - width + actualWidth : delta.top * 2 - height + actualHeight\n    var arrowOffsetPosition = isVertical ? 'offsetWidth' : 'offsetHeight'\n\n    $tip.offset(offset)\n    this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)\n  }\n\n  Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {\n    this.arrow()\n      .css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')\n      .css(isVertical ? 'top' : 'left', '')\n  }\n\n  Tooltip.prototype.setContent = function () {\n    var $tip  = this.tip()\n    var title = this.getTitle()\n\n    if (this.options.html) {\n      if (this.options.sanitize) {\n        title = sanitizeHtml(title, this.options.whiteList, this.options.sanitizeFn)\n      }\n\n      $tip.find('.tooltip-inner').html(title)\n    } else {\n      $tip.find('.tooltip-inner').text(title)\n    }\n\n    $tip.removeClass('fade in top bottom left right')\n  }\n\n  Tooltip.prototype.hide = function (callback) {\n    var that = this\n    var $tip = $(this.$tip)\n    var e    = $.Event('hide.bs.' + this.type)\n\n    function complete() {\n      if (that.hoverState != 'in') $tip.detach()\n      if (that.$element) { // TODO: Check whether guarding this code with this `if` is really necessary.\n        that.$element\n          .removeAttr('aria-describedby')\n          .trigger('hidden.bs.' + that.type)\n      }\n      callback && callback()\n    }\n\n    this.$element.trigger(e)\n\n    if (e.isDefaultPrevented()) return\n\n    $tip.removeClass('in')\n\n    $.support.transition && $tip.hasClass('fade') ?\n      $tip\n        .one('bsTransitionEnd', complete)\n        .emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :\n      complete()\n\n    this.hoverState = null\n\n    return this\n  }\n\n  Tooltip.prototype.fixTitle = function () {\n    var $e = this.$element\n    if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {\n      $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')\n    }\n  }\n\n  Tooltip.prototype.hasContent = function () {\n    return this.getTitle()\n  }\n\n  Tooltip.prototype.getPosition = function ($element) {\n    $element   = $element || this.$element\n\n    var el     = $element[0]\n    var isBody = el.tagName == 'BODY'\n\n    var elRect    = el.getBoundingClientRect()\n    if (elRect.width == null) {\n      // width and height are missing in IE8, so compute them manually; see https://github.com/twbs/bootstrap/issues/14093\n      elRect = $.extend({}, elRect, { width: elRect.right - elRect.left, height: elRect.bottom - elRect.top })\n    }\n    var isSvg = window.SVGElement && el instanceof window.SVGElement\n    // Avoid using $.offset() on SVGs since it gives incorrect results in jQuery 3.\n    // See https://github.com/twbs/bootstrap/issues/20280\n    var elOffset  = isBody ? { top: 0, left: 0 } : (isSvg ? null : $element.offset())\n    var scroll    = { scroll: isBody ? document.documentElement.scrollTop || document.body.scrollTop : $element.scrollTop() }\n    var outerDims = isBody ? { width: $(window).width(), height: $(window).height() } : null\n\n    return $.extend({}, elRect, scroll, outerDims, elOffset)\n  }\n\n  Tooltip.prototype.getCalculatedOffset = function (placement, pos, actualWidth, actualHeight) {\n    return placement == 'bottom' ? { top: pos.top + pos.height,   left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'top'    ? { top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 } :\n           placement == 'left'   ? { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth } :\n        /* placement == 'right' */ { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width }\n\n  }\n\n  Tooltip.prototype.getViewportAdjustedDelta = function (placement, pos, actualWidth, actualHeight) {\n    var delta = { top: 0, left: 0 }\n    if (!this.$viewport) return delta\n\n    var viewportPadding = this.options.viewport && this.options.viewport.padding || 0\n    var viewportDimensions = this.getPosition(this.$viewport)\n\n    if (/right|left/.test(placement)) {\n      var topEdgeOffset    = pos.top - viewportPadding - viewportDimensions.scroll\n      var bottomEdgeOffset = pos.top + viewportPadding - viewportDimensions.scroll + actualHeight\n      if (topEdgeOffset < viewportDimensions.top) { // top overflow\n        delta.top = viewportDimensions.top - topEdgeOffset\n      } else if (bottomEdgeOffset > viewportDimensions.top + viewportDimensions.height) { // bottom overflow\n        delta.top = viewportDimensions.top + viewportDimensions.height - bottomEdgeOffset\n      }\n    } else {\n      var leftEdgeOffset  = pos.left - viewportPadding\n      var rightEdgeOffset = pos.left + viewportPadding + actualWidth\n      if (leftEdgeOffset < viewportDimensions.left) { // left overflow\n        delta.left = viewportDimensions.left - leftEdgeOffset\n      } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow\n        delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset\n      }\n    }\n\n    return delta\n  }\n\n  Tooltip.prototype.getTitle = function () {\n    var title\n    var $e = this.$element\n    var o  = this.options\n\n    title = $e.attr('data-original-title')\n      || (typeof o.title == 'function' ? o.title.call($e[0]) :  o.title)\n\n    return title\n  }\n\n  Tooltip.prototype.getUID = function (prefix) {\n    do prefix += ~~(Math.random() * 1000000)\n    while (document.getElementById(prefix))\n    return prefix\n  }\n\n  Tooltip.prototype.tip = function () {\n    if (!this.$tip) {\n      this.$tip = $(this.options.template)\n      if (this.$tip.length != 1) {\n        throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')\n      }\n    }\n    return this.$tip\n  }\n\n  Tooltip.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.tooltip-arrow'))\n  }\n\n  Tooltip.prototype.enable = function () {\n    this.enabled = true\n  }\n\n  Tooltip.prototype.disable = function () {\n    this.enabled = false\n  }\n\n  Tooltip.prototype.toggleEnabled = function () {\n    this.enabled = !this.enabled\n  }\n\n  Tooltip.prototype.toggle = function (e) {\n    var self = this\n    if (e) {\n      self = $(e.currentTarget).data('bs.' + this.type)\n      if (!self) {\n        self = new this.constructor(e.currentTarget, this.getDelegateOptions())\n        $(e.currentTarget).data('bs.' + this.type, self)\n      }\n    }\n\n    if (e) {\n      self.inState.click = !self.inState.click\n      if (self.isInStateTrue()) self.enter(self)\n      else self.leave(self)\n    } else {\n      self.tip().hasClass('in') ? self.leave(self) : self.enter(self)\n    }\n  }\n\n  Tooltip.prototype.destroy = function () {\n    var that = this\n    clearTimeout(this.timeout)\n    this.hide(function () {\n      that.$element.off('.' + that.type).removeData('bs.' + that.type)\n      if (that.$tip) {\n        that.$tip.detach()\n      }\n      that.$tip = null\n      that.$arrow = null\n      that.$viewport = null\n      that.$element = null\n    })\n  }\n\n  Tooltip.prototype.sanitizeHtml = function (unsafeHtml) {\n    return sanitizeHtml(unsafeHtml, this.options.whiteList, this.options.sanitizeFn)\n  }\n\n  // TOOLTIP PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.tooltip')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.tooltip\n\n  $.fn.tooltip             = Plugin\n  $.fn.tooltip.Constructor = Tooltip\n\n\n  // TOOLTIP NO CONFLICT\n  // ===================\n\n  $.fn.tooltip.noConflict = function () {\n    $.fn.tooltip = old\n    return this\n  }\n\n}(jQuery);\n","/* ========================================================================\n * Bootstrap: popover.js v3.4.1\n * https://getbootstrap.com/docs/3.4/javascript/#popovers\n * ========================================================================\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * ======================================================================== */\n\n\n+function ($) {\n  'use strict';\n\n  // POPOVER PUBLIC CLASS DEFINITION\n  // ===============================\n\n  var Popover = function (element, options) {\n    this.init('popover', element, options)\n  }\n\n  if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')\n\n  Popover.VERSION  = '3.4.1'\n\n  Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {\n    placement: 'right',\n    trigger: 'click',\n    content: '',\n    template: '<div class=\"popover\" role=\"tooltip\"><div class=\"arrow\"></div><h3 class=\"popover-title\"></h3><div class=\"popover-content\"></div></div>'\n  })\n\n\n  // NOTE: POPOVER EXTENDS tooltip.js\n  // ================================\n\n  Popover.prototype = $.extend({}, $.fn.tooltip.Constructor.prototype)\n\n  Popover.prototype.constructor = Popover\n\n  Popover.prototype.getDefaults = function () {\n    return Popover.DEFAULTS\n  }\n\n  Popover.prototype.setContent = function () {\n    var $tip    = this.tip()\n    var title   = this.getTitle()\n    var content = this.getContent()\n\n    if (this.options.html) {\n      var typeContent = typeof content\n\n      if (this.options.sanitize) {\n        title = this.sanitizeHtml(title)\n\n        if (typeContent === 'string') {\n          content = this.sanitizeHtml(content)\n        }\n      }\n\n      $tip.find('.popover-title').html(title)\n      $tip.find('.popover-content').children().detach().end()[\n        typeContent === 'string' ? 'html' : 'append'\n      ](content)\n    } else {\n      $tip.find('.popover-title').text(title)\n      $tip.find('.popover-content').children().detach().end().text(content)\n    }\n\n    $tip.removeClass('fade top bottom left right in')\n\n    // IE8 doesn't accept hiding via the `:empty` pseudo selector, we have to do\n    // this manually by checking the contents.\n    if (!$tip.find('.popover-title').html()) $tip.find('.popover-title').hide()\n  }\n\n  Popover.prototype.hasContent = function () {\n    return this.getTitle() || this.getContent()\n  }\n\n  Popover.prototype.getContent = function () {\n    var $e = this.$element\n    var o  = this.options\n\n    return $e.attr('data-content')\n      || (typeof o.content == 'function' ?\n        o.content.call($e[0]) :\n        o.content)\n  }\n\n  Popover.prototype.arrow = function () {\n    return (this.$arrow = this.$arrow || this.tip().find('.arrow'))\n  }\n\n\n  // POPOVER PLUGIN DEFINITION\n  // =========================\n\n  function Plugin(option) {\n    return this.each(function () {\n      var $this   = $(this)\n      var data    = $this.data('bs.popover')\n      var options = typeof option == 'object' && option\n\n      if (!data && /destroy|hide/.test(option)) return\n      if (!data) $this.data('bs.popover', (data = new Popover(this, options)))\n      if (typeof option == 'string') data[option]()\n    })\n  }\n\n  var old = $.fn.popover\n\n  $.fn.popover             = Plugin\n  $.fn.popover.Constructor = Popover\n\n\n  // POPOVER NO CONFLICT\n  // ===================\n\n  $.fn.popover.noConflict = function () {\n    $.fn.popover = old\n    return this\n  }\n\n}(jQuery);\n","(function (root, factory) {\n    if (typeof define === 'function' && define.amd) {\n        // AMD\n        define(['jquery'], factory);\n    } else if (typeof exports === 'object') {\n        // Node, CommonJS-like\n        module.exports = factory(require('jquery'));\n    } else {\n        // Browser globals (root is window)\n        root.Breakpoint = factory(root.jQuery);\n    }\n}(this, function ($) {\n    var _win = $(window);\n    var _breakpoints;\n    var _currentBreakpoint;\n    var _defaults = {\n        xs: {\n            min: 0,\n            max: 767\n        },\n        sm: {\n            min: 768,\n            max: 991\n        },\n        md: {\n            min: 992,\n            max: 1199\n        },\n        lg: {\n            min: 1200,\n            max: Infinity\n        }\n    };\n\n    var _validate = function (breakpoint) {\n        if (!_breakpoints[breakpoint]) {\n            throw new Error('Invalid breakpoint');\n        }\n    };\n\n    var _onResize = function () {\n        var oldBreakpoint = _currentBreakpoint;\n        // we need to use innerWidth because of scrollbars\n        // this is ie9 +\n        // ie8 support would require to create extra element\n        var viewport = _win[0].innerWidth;\n        for (var breakpoint in _breakpoints) {\n            if (viewport >= _breakpoints[breakpoint].min &&\n                viewport <= _breakpoints[breakpoint].max) {\n                _currentBreakpoint = breakpoint;\n                if (_currentBreakpoint !== oldBreakpoint) {\n                    _win.trigger('change:breakpoint', [_currentBreakpoint, oldBreakpoint || 'xs']);\n                }\n            }\n        }\n    };\n\n    var _initWatch = function () {\n        _win.on('resize.bootstrap.breakpoints', _onResize);\n        _onResize();\n    };\n\n    var getBreakpoints = function () {\n        return _breakpoints;\n    };\n\n    var is = function (breakpoint) {\n        _validate(breakpoint);\n        return (_currentBreakpoint === breakpoint);\n    };\n\n    var current = function () {\n        return _currentBreakpoint;\n    };\n\n    var init = function (breakpoints) {\n        _breakpoints = $.extend(true, _defaults, breakpoints);\n        //making sure that we don't have millions of handlers in case of multiple inits\n        destroy();\n        _initWatch();\n    };\n\n    var destroy = function () {\n        _win.off('resize.bootstrap.breakpoints');\n        _currentBreakpoint = undefined;\n    };\n\n    return {\n        init: init,\n        destroy: destroy,\n        is: is,\n        current: current,\n        getBreakpoints: getBreakpoints\n    };\n}));\n","import Breakpoint from 'bootstrap-breakpoints'\n\nBreakpoint.init()\n\nexport default Breakpoint\n","import $ from 'jquery'\nimport Breakpoint from './responsive'\n\nfunction preventTouchScrolling(element, namespace) {\n  element.on('touchmove.cms.preventscroll.' + namespace, function (e) {\n    e.preventDefault()\n  })\n}\n\nfunction allowTouchScrolling(element, namespace) {\n  element.off('touchmove.cms.preventscroll.' + namespace)\n}\n\nfunction isMobileMenu() {\n  return Breakpoint.is('xs') || Breakpoint.is('sm')\n}\n\nexport function initDesktopMenu() {\n  // when hovering over top level items on large screens - toggle dropdown programmatically\n  const topLevelDropdowns = $('.navbar-main > .navbar-nav > .dropdown')\n\n  topLevelDropdowns.on('mouseenter mouseleave', function (e) {\n    if (isMobileMenu()) {\n      return\n    }\n\n    if (e.type === 'mouseenter') {\n      $(this).addClass('open').attr('aria-expanded', true)\n    } else {\n      setTimeout(() => {\n        $(this).removeClass('open').removeAttr('aria-expanded')\n      }, 300)\n    }\n  })\n\n  topLevelDropdowns.on('touchstart click', function (e) {\n    if (isMobileMenu()) {\n      return\n    }\n\n    const dropdownToggle = $(this)\n\n    // touchstart normally happens before click,\n    // that's the only reliable way to detect if the device\n    // was operated with touch (normally windows tablets and ipad pro)\n    if (e.type === 'touchstart') {\n      dropdownToggle.data('just-touched', true)\n    }\n    if (e.type === 'click') {\n      if (dropdownToggle.data('just-touched')) {\n        e.preventDefault()\n        dropdownToggle.data('just-touched', false)\n      }\n    }\n  })\n\n  $(window)\n    .on('change:breakpoint', function () {\n      if (isMobileMenu()) {\n        // init dropdowns\n        topLevelDropdowns.find('> a').attr('data-toggle', 'dropdown').dropdown()\n      } else {\n        // At this point we need to destroy dropdowns because it prevents the default\n        // action on the toggle (opening a link), and since\n        // bootstrap doesn't support \"hover\" dropdowns and it doesn't have destroy\n        // method we have to do it manually\n        topLevelDropdowns.find('> a').removeAttr('data-toggle').off('click.bs.dropdown').data('bs.dropdown', null)\n      }\n    })\n    .trigger('change:breakpoint', [Breakpoint.current()])\n}\n\nexport function initMobileMenu() {\n  const toggle = $('.js-header-nav-toggle')\n  const mobileMenu = $('.js-navbar-header')\n  const html = $('html')\n\n  // close button lives outside it's normal place so we toggle it manually\n  mobileMenu.on('show.bs.collapse hide.bs.collapse', () => {\n    toggle.toggleClass('collapsed')\n    html.toggleClass('mobile-menu-open')\n\n    if (html.hasClass('mobile-menu-open')) {\n      preventTouchScrolling(html)\n    } else {\n      allowTouchScrolling(html)\n    }\n  })\n\n  $('.header .dropdown').on('show.bs.dropdown hide.bs.dropdown', (e) => {\n    const currentDropdown = $(e.target)\n\n    // by default bootstrap closes all the dropdowns, so we need to keep parents open\n    // when we are deep in it\n    currentDropdown.parents('.dropdown').addClass('open').attr('aria-expanded', true)\n  })\n\n  $('.megamenu-links-title').on('click', (e) => {\n    if (!isMobileMenu()) {\n      e.stopPropagation()\n    }\n  })\n\n  // when opening other header dropdowns - hide the mobile menu\n  $('.country-picker.dropdown, .header-top-menu-waffle.dropdown, .header-search-form.dropdown').on(\n    'show.bs.dropdown',\n    () => {\n      mobileMenu.collapse('hide')\n    }\n  )\n\n  // Back button navigation in mobile menu (delegated event)\n  $('.megamenu-mobile-title-link').on('click', '.js-megamenu-mobile-back', function (e) {\n    e.preventDefault()\n    e.stopPropagation()\n\n    const backButton = $(this)\n    const currentDropdown = backButton.closest('.dropdown')\n\n    if (currentDropdown.length) {\n      // Remove the open class and aria-expanded\n      currentDropdown.removeClass('open')\n      const dropdownToggle = currentDropdown.find('> .dropdown-toggle, > a[data-toggle=\"dropdown\"]')\n      dropdownToggle.attr('aria-expanded', 'false')\n    }\n  })\n\n  // Allow title link clicks to work in mobile menu\n  $('.megamenu-mobile-title-link').on('click', function (e) {\n    // Allow default link behavior (navigate to page)\n    // Stop propagation to prevent dropdown toggle\n    e.stopPropagation()\n  })\n\n  $('.navbar-collapse').on('touchmove', (e) => {\n    if (html.hasClass('mobile-menu-open')) {\n      e.stopPropagation()\n    }\n  })\n}\n","import { scrollTo } from './utils'\n\nexport function initAccordions(selector = '.panel .panel-collapse') {\n  $(selector).each((i, el) => {\n    $(el).on('shown.bs.collapse', (e) => {\n      const { top } = $(e.currentTarget).closest('.panel').offset()\n      let offset = 0\n\n      if ($('html').hasClass('cms-toolbar-expanded')) {\n        offset = 45\n      }\n\n      scrollTo(top - offset)\n    })\n  })\n}\n","import $ from 'jquery'\n\nfunction initPostsByAuthorLink() {\n  const link = $('.js-blog-filter-expand-link')\n\n  link.on('click', (e) => {\n    e.preventDefault()\n    e.stopPropagation()\n\n    $(e.target).hide().prev('ul').children('li').show()\n  })\n}\n\nexport function initBlog() {\n  initPostsByAuthorLink()\n}\n","/*! js-cookie v3.0.5 | MIT */\n/* eslint-disable no-var */\nfunction assign (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n    for (var key in source) {\n      target[key] = source[key];\n    }\n  }\n  return target\n}\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\nvar defaultConverter = {\n  read: function (value) {\n    if (value[0] === '\"') {\n      value = value.slice(1, -1);\n    }\n    return value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n  },\n  write: function (value) {\n    return encodeURIComponent(value).replace(\n      /%(2[346BF]|3[AC-F]|40|5[BDE]|60|7[BCD])/g,\n      decodeURIComponent\n    )\n  }\n};\n/* eslint-enable no-var */\n\n/* eslint-disable no-var */\n\nfunction init (converter, defaultAttributes) {\n  function set (name, value, attributes) {\n    if (typeof document === 'undefined') {\n      return\n    }\n\n    attributes = assign({}, defaultAttributes, attributes);\n\n    if (typeof attributes.expires === 'number') {\n      attributes.expires = new Date(Date.now() + attributes.expires * 864e5);\n    }\n    if (attributes.expires) {\n      attributes.expires = attributes.expires.toUTCString();\n    }\n\n    name = encodeURIComponent(name)\n      .replace(/%(2[346B]|5E|60|7C)/g, decodeURIComponent)\n      .replace(/[()]/g, escape);\n\n    var stringifiedAttributes = '';\n    for (var attributeName in attributes) {\n      if (!attributes[attributeName]) {\n        continue\n      }\n\n      stringifiedAttributes += '; ' + attributeName;\n\n      if (attributes[attributeName] === true) {\n        continue\n      }\n\n      // Considers RFC 6265 section 5.2:\n      // ...\n      // 3.  If the remaining unparsed-attributes contains a %x3B (\";\")\n      //     character:\n      // Consume the characters of the unparsed-attributes up to,\n      // not including, the first %x3B (\";\") character.\n      // ...\n      stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n    }\n\n    return (document.cookie =\n      name + '=' + converter.write(value, name) + stringifiedAttributes)\n  }\n\n  function get (name) {\n    if (typeof document === 'undefined' || (arguments.length && !name)) {\n      return\n    }\n\n    // To prevent the for loop in the first place assign an empty array\n    // in case there are no cookies at all.\n    var cookies = document.cookie ? document.cookie.split('; ') : [];\n    var jar = {};\n    for (var i = 0; i < cookies.length; i++) {\n      var parts = cookies[i].split('=');\n      var value = parts.slice(1).join('=');\n\n      try {\n        var found = decodeURIComponent(parts[0]);\n        jar[found] = converter.read(value, found);\n\n        if (name === found) {\n          break\n        }\n      } catch (e) {}\n    }\n\n    return name ? jar[name] : jar\n  }\n\n  return Object.create(\n    {\n      set,\n      get,\n      remove: function (name, attributes) {\n        set(\n          name,\n          '',\n          assign({}, attributes, {\n            expires: -1\n          })\n        );\n      },\n      withAttributes: function (attributes) {\n        return init(this.converter, assign({}, this.attributes, attributes))\n      },\n      withConverter: function (converter) {\n        return init(assign({}, this.converter, converter), this.attributes)\n      }\n    },\n    {\n      attributes: { value: Object.freeze(defaultAttributes) },\n      converter: { value: Object.freeze(converter) }\n    }\n  )\n}\n\nvar api = init(defaultConverter, { path: '/' });\n/* eslint-enable no-var */\n\nexport { api as default };\n","import $ from 'jquery'\nimport Cookies from 'js-cookie'\n\n// @TODO: Not used, can go away\nexport function initCookiePolicy() {\n  if (Cookies.get('shown-cookie-policy') && !window.location.href.match(/show-cookie-policy/)) {\n    return\n  }\n\n  const policy = $('.js-cookie-policy')\n  const close = $('.js-cookie-policy-close')\n\n  policy.show()\n  Cookies.set('shown-cookie-policy', 1)\n\n  close.on('click', (e) => {\n    e.preventDefault()\n\n    $('.js-cookie-policy').remove()\n  })\n}\n","/*!\n * jQuery Validation Plugin v1.22.1\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2026 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\", \"./jquery.validate\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n( function() {\n\n\tfunction stripHtml( value ) {\n\n\t\t// Remove html tags and space chars\n\t\treturn value.replace( /<.[^<>]*?>/g, \" \" ).replace( /&nbsp;|&#160;/gi, \" \" )\n\n\t\t// Remove punctuation\n\t\t.replace( /[.(),;:!?%#$'\\\"_+=\\/\\-“”’]*/g, \"\" );\n\t}\n\n\t$.validator.addMethod( \"maxWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length <= params;\n\t}, $.validator.format( \"Please enter {0} words or less.\" ) );\n\n\t$.validator.addMethod( \"minWords\", function( value, element, params ) {\n\t\treturn this.optional( element ) || stripHtml( value ).match( /\\b\\w+\\b/g ).length >= params;\n\t}, $.validator.format( \"Please enter at least {0} words.\" ) );\n\n\t$.validator.addMethod( \"rangeWords\", function( value, element, params ) {\n\t\tvar valueStripped = stripHtml( value ),\n\t\t\tregex = /\\b\\w+\\b/g;\n\t\treturn this.optional( element ) || valueStripped.match( regex ).length >= params[ 0 ] && valueStripped.match( regex ).length <= params[ 1 ];\n\t}, $.validator.format( \"Please enter between {0} and {1} words.\" ) );\n\n}() );\n\n/**\n * This is used in the United States to process payments, deposits,\n * or transfers using the Automated Clearing House (ACH) or Fedwire\n * systems. A very common use case would be to validate a form for\n * an ACH bill payment.\n */\n$.validator.addMethod( \"abaRoutingNumber\", function( value ) {\n\tvar checksum = 0;\n\tvar tokens = value.split( \"\" );\n\tvar length = tokens.length;\n\n\t// Length Check\n\tif ( length !== 9 ) {\n\t\treturn false;\n\t}\n\n\t// Calc the checksum\n\t// https://en.wikipedia.org/wiki/ABA_routing_transit_number\n\tfor ( var i = 0; i < length; i += 3 ) {\n\t\tchecksum +=\tparseInt( tokens[ i ], 10 )     * 3 +\n\t\t\t\t\tparseInt( tokens[ i + 1 ], 10 ) * 7 +\n\t\t\t\t\tparseInt( tokens[ i + 2 ], 10 );\n\t}\n\n\t// If not zero and divisible by 10 then valid\n\tif ( checksum !== 0 && checksum % 10 === 0 ) {\n\t\treturn true;\n\t}\n\n\treturn false;\n}, \"Please enter a valid routing number.\" );\n\n// Accept a value from a file input based on a required mimetype\n$.validator.addMethod( \"accept\", function( value, element, param ) {\n\n\t// Split mime on commas in case we have multiple types we can accept\n\tvar typeParam = typeof param === \"string\" ? param.replace( /\\s/g, \"\" ) : \"image/*\",\n\t\toptionalValue = this.optional( element ),\n\t\ti, file, regex;\n\n\t// Element is optional\n\tif ( optionalValue ) {\n\t\treturn optionalValue;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\n\t\t// Escape string to be used in the regex\n\t\t// see: https://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex\n\t\t// Escape also \"/*\" as \"/.*\" as a wildcard\n\t\ttypeParam = typeParam\n\t\t\t\t.replace( /[\\-\\[\\]\\/\\{\\}\\(\\)\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\" )\n\t\t\t\t.replace( /,/g, \"|\" )\n\t\t\t\t.replace( /\\/\\*/g, \"/.*\" );\n\n\t\t// Check if the element has a FileList before checking each file\n\t\tif ( element.files && element.files.length ) {\n\t\t\tregex = new RegExp( \".?(\" + typeParam + \")$\", \"i\" );\n\t\t\tfor ( i = 0; i < element.files.length; i++ ) {\n\t\t\t\tfile = element.files[ i ];\n\n\t\t\t\t// Grab the mimetype from the loaded file, verify it matches\n\t\t\t\tif ( !file.type.match( regex ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Either return true because we've validated each file, or because the\n\t// browser does not support element.files and the FileList feature\n\treturn true;\n}, $.validator.format( \"Please enter a value with a valid mimetype.\" ) );\n\n$.validator.addMethod( \"alphanumeric\", function( value, element ) {\n\treturn this.optional( element ) || /^\\w+$/i.test( value );\n}, \"Letters, numbers, and underscores only please.\" );\n\n/*\n * Dutch bank account numbers (not 'giro' numbers) have 9 digits\n * and pass the '11 check'.\n * We accept the notation with spaces, as that is common.\n * acceptable: 123456789 or 12 34 56 789\n */\n$.validator.addMethod( \"bankaccountNL\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( !( /^[0-9]{9}|([0-9]{2} ){3}[0-9]{3}$/.test( value ) ) ) {\n\t\treturn false;\n\t}\n\n\t// Now '11 check'\n\tvar account = value.replace( / /g, \"\" ), // Remove spaces\n\t\tsum = 0,\n\t\tlen = account.length,\n\t\tpos, factor, digit;\n\tfor ( pos = 0; pos < len; pos++ ) {\n\t\tfactor = len - pos;\n\t\tdigit = account.substring( pos, pos + 1 );\n\t\tsum = sum + factor * digit;\n\t}\n\treturn sum % 11 === 0;\n}, \"Please specify a valid bank account number.\" );\n\n$.validator.addMethod( \"bankorgiroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) ||\n\t\t\t( $.validator.methods.bankaccountNL.call( this, value, element ) ) ||\n\t\t\t( $.validator.methods.giroaccountNL.call( this, value, element ) );\n}, \"Please specify a valid bank or giro account number.\" );\n\n/**\n * BIC is the business identifier code (ISO 9362). This BIC check is not a guarantee for authenticity.\n *\n * BIC pattern: BBBBCCLLbbb (8 or 11 characters long; bbb is optional)\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n *\n * BIC definition in detail:\n * - First 4 characters - bank code (only letters)\n * - Next 2 characters - ISO 3166-1 alpha-2 country code (only letters)\n * - Next 2 characters - location code (letters and digits)\n *   a. shall not start with '0' or '1'\n *   b. second character must be a letter ('O' is not allowed) or digit ('0' for test (therefore not allowed), '1' denoting passive participant, '2' typically reverse-billing)\n * - Last 3 characters - branch code, optional (shall not start with 'X' except in case of 'XXX' for primary office) (letters and digits)\n */\n$.validator.addMethod( \"bic\", function( value, element ) {\n    return this.optional( element ) || /^([A-Z]{6}[A-Z2-9][A-NP-Z1-9])(X{3}|[A-WY-Z0-9][A-Z0-9]{2})?$/.test( value.toUpperCase() );\n}, \"Please specify a valid BIC code.\" );\n\n/*\n * Código de identificación fiscal ( CIF ) is the tax identification code for Spanish legal entities\n * Further rules can be found in Spanish on http://es.wikipedia.org/wiki/C%C3%B3digo_de_identificaci%C3%B3n_fiscal\n *\n * Spanish CIF structure:\n *\n * [ T ][ P ][ P ][ N ][ N ][ N ][ N ][ N ][ C ]\n *\n * Where:\n *\n * T: 1 character. Kind of Organization Letter: [ABCDEFGHJKLMNPQRSUVW]\n * P: 2 characters. Province.\n * N: 5 characters. Secuencial Number within the province.\n * C: 1 character. Control Digit: [0-9A-J].\n *\n * [ T ]: Kind of Organizations. Possible values:\n *\n *   A. Corporations\n *   B. LLCs\n *   C. General partnerships\n *   D. Companies limited partnerships\n *   E. Communities of goods\n *   F. Cooperative Societies\n *   G. Associations\n *   H. Communities of homeowners in horizontal property regime\n *   J. Civil Societies\n *   K. Old format\n *   L. Old format\n *   M. Old format\n *   N. Nonresident entities\n *   P. Local authorities\n *   Q. Autonomous bodies, state or not, and the like, and congregations and religious institutions\n *   R. Congregations and religious institutions (since 2008 ORDER EHA/451/2008)\n *   S. Organs of State Administration and regions\n *   V. Agrarian Transformation\n *   W. Permanent establishments of non-resident in Spain\n *\n * [ C ]: Control Digit. It can be a number or a letter depending on T value:\n * [ T ]  -->  [ C ]\n * ------    ----------\n *   A         Number\n *   B         Number\n *   E         Number\n *   H         Number\n *   K         Letter\n *   P         Letter\n *   Q         Letter\n *   S         Letter\n *\n */\n$.validator.addMethod( \"cifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar cifRegEx = new RegExp( /^([ABCDEFGHJKLMNPQRSUVW])(\\d{7})([0-9A-J])$/gi );\n\tvar letter  = value.substring( 0, 1 ), // [ T ]\n\t\tnumber  = value.substring( 1, 8 ), // [ P ][ P ][ N ][ N ][ N ][ N ][ N ]\n\t\tcontrol = value.substring( 8, 9 ), // [ C ]\n\t\tall_sum = 0,\n\t\teven_sum = 0,\n\t\todd_sum = 0,\n\t\ti, n,\n\t\tcontrol_digit,\n\t\tcontrol_letter;\n\n\tfunction isOdd( n ) {\n\t\treturn n % 2 === 0;\n\t}\n\n\t// Quick format test\n\tif ( value.length !== 9 || !cifRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tfor ( i = 0; i < number.length; i++ ) {\n\t\tn = parseInt( number[ i ], 10 );\n\n\t\t// Odd positions\n\t\tif ( isOdd( i ) ) {\n\n\t\t\t// Odd positions are multiplied first.\n\t\t\tn *= 2;\n\n\t\t\t// If the multiplication is bigger than 10 we need to adjust\n\t\t\todd_sum += n < 10 ? n : n - 9;\n\n\t\t// Even positions\n\t\t// Just sum them\n\t\t} else {\n\t\t\teven_sum += n;\n\t\t}\n\t}\n\n\tall_sum = even_sum + odd_sum;\n\tcontrol_digit = ( 10 - ( all_sum ).toString().slice( -1 ) ).toString();\n\tcontrol_digit = parseInt( control_digit, 10 ) > 9 ? \"0\" : control_digit;\n\tcontrol_letter = \"JABCDEFGHI\".charAt( control_digit ).toString();\n\n\t// Control must be a digit\n\tif ( letter.match( /[ABEH]/ ) ) {\n\t\treturn control === control_digit;\n\n\t// Control must be a letter\n\t} else if ( letter.match( /[KPQS]/ ) ) {\n\t\treturn control === control_letter;\n\t}\n\n\t// Can be either\n\treturn control === control_digit || control === control_letter;\n\n}, \"Please specify a valid CIF number.\" );\n\n/*\n * Brazillian CNH number (Carteira Nacional de Habilitacao) is the License Driver number.\n * CNH numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cnhBR\", function( value ) {\n\n  // Removing special characters from value\n  value = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n  // Checking value to have 11 digits only\n  if ( value.length !== 11 ) {\n    return false;\n  }\n\n  var sum = 0, dsc = 0, firstChar,\n\t\tfirstCN, secondCN, i, j, v;\n\n  firstChar = value.charAt( 0 );\n\n  if ( new Array( 12 ).join( firstChar ) === value ) {\n    return false;\n  }\n\n  // Step 1 - using first Check Number:\n  for ( i = 0, j = 9, v = 0; i < 9; ++i, --j ) {\n    sum += +( value.charAt( i ) * j );\n  }\n\n  firstCN = sum % 11;\n  if ( firstCN >= 10 ) {\n    firstCN = 0;\n    dsc = 2;\n  }\n\n  sum = 0;\n  for ( i = 0, j = 1, v = 0; i < 9; ++i, ++j ) {\n    sum += +( value.charAt( i ) * j );\n  }\n\n  secondCN = sum % 11;\n  if ( secondCN >= 10 ) {\n    secondCN = 0;\n  } else {\n    secondCN = secondCN - dsc;\n  }\n\n  return ( String( firstCN ).concat( secondCN ) === value.substr( -2 ) );\n\n}, \"Please specify a valid CNH number.\" );\n\n/*\n * Brazillian value number (Cadastrado de Pessoas Juridica).\n * value numbers have 14 digits in total: 12 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cnpjBR\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Removing no number\n\tvalue = value.replace( /[^\\d]+/g, \"\" );\n\n\t// Checking value to have 14 digits only\n\tif ( value.length !== 14 ) {\n\t\treturn false;\n\t}\n\n\t// Elimina values invalidos conhecidos\n\tif ( value === \"00000000000000\" ||\n\t\tvalue === \"11111111111111\" ||\n\t\tvalue === \"22222222222222\" ||\n\t\tvalue === \"33333333333333\" ||\n\t\tvalue === \"44444444444444\" ||\n\t\tvalue === \"55555555555555\" ||\n\t\tvalue === \"66666666666666\" ||\n\t\tvalue === \"77777777777777\" ||\n\t\tvalue === \"88888888888888\" ||\n\t\tvalue === \"99999999999999\" ) {\n\t\treturn false;\n\t}\n\n\t// Valida DVs\n\tvar tamanho = ( value.length - 2 );\n\tvar numeros = value.substring( 0, tamanho );\n\tvar digitos = value.substring( tamanho );\n\tvar soma = 0;\n\tvar pos = tamanho - 7;\n\n\tfor ( var i = tamanho; i >= 1; i-- ) {\n\t\tsoma += numeros.charAt( tamanho - i ) * pos--;\n\t\tif ( pos < 2 ) {\n\t\t\tpos = 9;\n\t\t}\n\t}\n\n\tvar resultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n\tif ( resultado !== parseInt( digitos.charAt( 0 ), 10 ) ) {\n\t\treturn false;\n\t}\n\n\ttamanho = tamanho + 1;\n\tnumeros = value.substring( 0, tamanho );\n\tsoma = 0;\n\tpos = tamanho - 7;\n\n\tfor ( var il = tamanho; il >= 1; il-- ) {\n\t\tsoma += numeros.charAt( tamanho - il ) * pos--;\n\t\tif ( pos < 2 ) {\n\t\t\tpos = 9;\n\t\t}\n\t}\n\n\tresultado = soma % 11 < 2 ? 0 : 11 - soma % 11;\n\n\tif ( resultado !== parseInt( digitos.charAt( 1 ), 10 ) ) {\n\t\treturn false;\n\t}\n\n\treturn true;\n\n}, \"Please specify a CNPJ value number.\" );\n\n/*\n * Brazillian CPF number (Cadastrado de Pessoas Físicas) is the equivalent of a Brazilian tax registration number.\n * CPF numbers have 11 digits in total: 9 numbers followed by 2 check numbers that are being used for validation.\n */\n$.validator.addMethod( \"cpfBR\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\tvar sum = 0,\n\t\tfirstCN, secondCN, checkResult, i;\n\n\tfirstCN = parseInt( value.substring( 9, 10 ), 10 );\n\tsecondCN = parseInt( value.substring( 10, 11 ), 10 );\n\n\tcheckResult = function( sum, cn ) {\n\t\tvar result = ( sum * 10 ) % 11;\n\t\tif ( ( result === 10 ) || ( result === 11 ) ) {\n\t\t\tresult = 0;\n\t\t}\n\t\treturn ( result === cn );\n\t};\n\n\t// Checking for dump data\n\tif ( value === \"\" ||\n\t\tvalue === \"00000000000\" ||\n\t\tvalue === \"11111111111\" ||\n\t\tvalue === \"22222222222\" ||\n\t\tvalue === \"33333333333\" ||\n\t\tvalue === \"44444444444\" ||\n\t\tvalue === \"55555555555\" ||\n\t\tvalue === \"66666666666\" ||\n\t\tvalue === \"77777777777\" ||\n\t\tvalue === \"88888888888\" ||\n\t\tvalue === \"99999999999\"\n\t) {\n\t\treturn false;\n\t}\n\n\t// Step 1 - using first Check Number:\n\tfor ( i = 1; i <= 9; i++ ) {\n\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 11 - i );\n\t}\n\n\t// If first Check Number (CN) is valid, move to Step 2 - using second Check Number:\n\tif ( checkResult( sum, firstCN ) ) {\n\t\tsum = 0;\n\t\tfor ( i = 1; i <= 10; i++ ) {\n\t\t\tsum = sum + parseInt( value.substring( i - 1, i ), 10 ) * ( 12 - i );\n\t\t}\n\t\treturn checkResult( sum, secondCN );\n\t}\n\treturn false;\n\n}, \"Please specify a valid CPF number.\" );\n\n// https://jqueryvalidation.org/creditcard-method/\n// based on https://en.wikipedia.org/wiki/Luhn_algorithm\n$.validator.addMethod( \"creditcard\", function( value, element ) {\n\tif ( this.optional( element ) ) {\n\t\treturn \"dependency-mismatch\";\n\t}\n\n\t// Accept only spaces, digits and dashes\n\tif ( /[^0-9 \\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvar nCheck = 0,\n\t\tnDigit = 0,\n\t\tbEven = false,\n\t\tn, cDigit;\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\t// Basing min and max length on\n\t// https://dev.ean.com/general-info/valid-card-types/\n\tif ( value.length < 13 || value.length > 19 ) {\n\t\treturn false;\n\t}\n\n\tfor ( n = value.length - 1; n >= 0; n-- ) {\n\t\tcDigit = value.charAt( n );\n\t\tnDigit = parseInt( cDigit, 10 );\n\t\tif ( bEven ) {\n\t\t\tif ( ( nDigit *= 2 ) > 9 ) {\n\t\t\t\tnDigit -= 9;\n\t\t\t}\n\t\t}\n\n\t\tnCheck += nDigit;\n\t\tbEven = !bEven;\n\t}\n\n\treturn ( nCheck % 10 ) === 0;\n}, \"Please enter a valid credit card number.\" );\n\n/* NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator\n * Redistributed under the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0\n * Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)\n */\n$.validator.addMethod( \"creditcardtypes\", function( value, element, param ) {\n\tif ( /[^0-9\\-]+/.test( value ) ) {\n\t\treturn false;\n\t}\n\n\tvalue = value.replace( /\\D/g, \"\" );\n\n\tvar validTypes = 0x0000;\n\n\tif ( param.mastercard ) {\n\t\tvalidTypes |= 0x0001;\n\t}\n\tif ( param.visa ) {\n\t\tvalidTypes |= 0x0002;\n\t}\n\tif ( param.amex ) {\n\t\tvalidTypes |= 0x0004;\n\t}\n\tif ( param.dinersclub ) {\n\t\tvalidTypes |= 0x0008;\n\t}\n\tif ( param.enroute ) {\n\t\tvalidTypes |= 0x0010;\n\t}\n\tif ( param.discover ) {\n\t\tvalidTypes |= 0x0020;\n\t}\n\tif ( param.jcb ) {\n\t\tvalidTypes |= 0x0040;\n\t}\n\tif ( param.unknown ) {\n\t\tvalidTypes |= 0x0080;\n\t}\n\tif ( param.all ) {\n\t\tvalidTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;\n\t}\n\tif ( validTypes & 0x0001 && ( /^(5[12345])/.test( value ) || /^(2[234567])/.test( value ) ) ) { // Mastercard\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0002 && /^(4)/.test( value ) ) { // Visa\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0004 && /^(3[47])/.test( value ) ) { // Amex\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0008 && /^(3(0[012345]|[68]))/.test( value ) ) { // Dinersclub\n\t\treturn value.length === 14;\n\t}\n\tif ( validTypes & 0x0010 && /^(2(014|149))/.test( value ) ) { // Enroute\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0020 && /^(6011)/.test( value ) ) { // Discover\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(3)/.test( value ) ) { // Jcb\n\t\treturn value.length === 16;\n\t}\n\tif ( validTypes & 0x0040 && /^(2131|1800)/.test( value ) ) { // Jcb\n\t\treturn value.length === 15;\n\t}\n\tif ( validTypes & 0x0080 ) { // Unknown\n\t\treturn true;\n\t}\n\treturn false;\n}, \"Please enter a valid credit card number.\" );\n\n/**\n * Validates currencies with any given symbols by @jameslouiz\n * Symbols can be optional or required. Symbols required by default\n *\n * Usage examples:\n *  currency: [\"£\", false] - Use false for soft currency validation\n *  currency: [\"$\", false]\n *  currency: [\"RM\", false] - also works with text based symbols such as \"RM\" - Malaysia Ringgit etc\n *\n *  <input class=\"currencyInput\" name=\"currencyInput\">\n *\n * Soft symbol checking\n *  currencyInput: {\n *     currency: [\"$\", false]\n *  }\n *\n * Strict symbol checking (default)\n *  currencyInput: {\n *     currency: \"$\"\n *     //OR\n *     currency: [\"$\", true]\n *  }\n *\n * Multiple Symbols\n *  currencyInput: {\n *     currency: \"$,£,¢\"\n *  }\n */\n$.validator.addMethod( \"currency\", function( value, element, param ) {\n    var isParamString = typeof param === \"string\",\n        symbol = isParamString ? param : param[ 0 ],\n        soft = isParamString ? true : param[ 1 ],\n        regex;\n\n    symbol = symbol.replace( /,/g, \"\" );\n    symbol = soft ? symbol + \"]\" : symbol + \"]?\";\n    regex = \"^[\" + symbol + \"([1-9]{1}[0-9]{0,2}(\\\\,[0-9]{3})*(\\\\.[0-9]{0,2})?|[1-9]{1}[0-9]{0,}(\\\\.[0-9]{0,2})?|0(\\\\.[0-9]{0,2})?|(\\\\.[0-9]{1,2})?)$\";\n    regex = new RegExp( regex );\n    return this.optional( element ) || regex.test( value );\n\n}, \"Please specify a valid currency.\" );\n\n$.validator.addMethod( \"dateFA\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-4]\\d{3}\\/((0?[1-6]\\/((3[0-1])|([1-2][0-9])|(0?[1-9])))|((1[0-2]|(0?[7-9]))\\/(30|([1-2][0-9])|(0?[1-9]))))$/.test( value );\n}, $.validator.messages.date );\n\n/**\n * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.\n *\n * @example $.validator.methods.date(\"01/01/1900\")\n * @result true\n *\n * @example $.validator.methods.date(\"01/13/1990\")\n * @result false\n *\n * @example $.validator.methods.date(\"01.01.1900\")\n * @result false\n *\n * @example <input name=\"pippo\" class=\"{dateITA:true}\" />\n * @desc Declares an optional input element whose value must be a valid date.\n *\n * @name $.validator.methods.dateITA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"dateITA\", function( value, element ) {\n\tvar check = false,\n\t\tre = /^\\d{1,2}\\/\\d{1,2}\\/\\d{4}$/,\n\t\tadata, gg, mm, aaaa, xdata;\n\tif ( re.test( value ) ) {\n\t\tadata = value.split( \"/\" );\n\t\tgg = parseInt( adata[ 0 ], 10 );\n\t\tmm = parseInt( adata[ 1 ], 10 );\n\t\taaaa = parseInt( adata[ 2 ], 10 );\n\t\txdata = new Date( Date.UTC( aaaa, mm - 1, gg, 12, 0, 0, 0 ) );\n\t\tif ( ( xdata.getUTCFullYear() === aaaa ) && ( xdata.getUTCMonth() === mm - 1 ) && ( xdata.getUTCDate() === gg ) ) {\n\t\t\tcheck = true;\n\t\t} else {\n\t\t\tcheck = false;\n\t\t}\n\t} else {\n\t\tcheck = false;\n\t}\n\treturn this.optional( element ) || check;\n}, $.validator.messages.date );\n\n$.validator.addMethod( \"dateNL\", function( value, element ) {\n\treturn this.optional( element ) || /^(0?[1-9]|[12]\\d|3[01])[\\.\\/\\-](0?[1-9]|1[012])[\\.\\/\\-]([12]\\d)?(\\d\\d)$/.test( value );\n}, $.validator.messages.date );\n\n// Older \"accept\" file extension method. Old docs: http://docs.jquery.com/Plugins/Validation/Methods/accept\n$.validator.addMethod( \"extension\", function( value, element, param ) {\n\tparam = typeof param === \"string\" ? param.replace( /,/g, \"|\" ) : \"png|jpe?g|gif\";\n\treturn this.optional( element ) || value.match( new RegExp( \"\\\\.(\" + param + \")$\", \"i\" ) );\n}, $.validator.format( \"Please enter a value with a valid extension.\" ) );\n\n/**\n * Dutch giro account numbers (not bank numbers) have max 7 digits\n */\n$.validator.addMethod( \"giroaccountNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[0-9]{1,7}$/.test( value );\n}, \"Please specify a valid giro account number.\" );\n\n$.validator.addMethod( \"greaterThan\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-greaterThan-blur\" ).length ) {\n        target.addClass( \"validate-greaterThan-blur\" ).on( \"blur.validate-greaterThan\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value > target.val();\n}, \"Please enter a greater value.\" );\n\n$.validator.addMethod( \"greaterThanEqual\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-greaterThanEqual-blur\" ).length ) {\n        target.addClass( \"validate-greaterThanEqual-blur\" ).on( \"blur.validate-greaterThanEqual\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value >= target.val();\n}, \"Please enter a greater value.\" );\n\n/**\n * IBAN is the international bank account number.\n * It has a country - specific format, that is checked here too\n *\n * Validation is case-insensitive. Please make sure to normalize input yourself.\n */\n$.validator.addMethod( \"iban\", function( value, element ) {\n\n\t// Some quick simple tests to prevent needless work\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\t// Remove spaces and to upper case\n\tvar iban = value.replace( / /g, \"\" ).toUpperCase(),\n\t\tibancheckdigits = \"\",\n\t\tleadingZeroes = true,\n\t\tcRest = \"\",\n\t\tcOperator = \"\",\n\t\tcountrycode, ibancheck, charAt, cChar, bbanpattern, bbancountrypatterns, ibanregexp, i, p;\n\n\t// Check for IBAN code length.\n\t// It contains:\n\t// country code ISO 3166-1 - two letters,\n\t// two check digits,\n\t// Basic Bank Account Number (BBAN) - up to 30 chars\n\tvar minimalIBANlength = 5;\n\tif ( iban.length < minimalIBANlength ) {\n\t\treturn false;\n\t}\n\n\t// Check the country code and find the country specific format\n\tcountrycode = iban.substring( 0, 2 );\n\tbbancountrypatterns = {\n\t\t\"AL\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"AD\": \"\\\\d{8}[\\\\dA-Z]{12}\",\n\t\t\"AT\": \"\\\\d{16}\",\n\t\t\"AZ\": \"[\\\\dA-Z]{4}\\\\d{20}\",\n\t\t\"BE\": \"\\\\d{12}\",\n\t\t\"BH\": \"[A-Z]{4}[\\\\dA-Z]{14}\",\n\t\t\"BA\": \"\\\\d{16}\",\n\t\t\"BR\": \"\\\\d{23}[A-Z][\\\\dA-Z]\",\n\t\t\"BG\": \"[A-Z]{4}\\\\d{6}[\\\\dA-Z]{8}\",\n\t\t\"CR\": \"\\\\d{17}\",\n\t\t\"HR\": \"\\\\d{17}\",\n\t\t\"CY\": \"\\\\d{8}[\\\\dA-Z]{16}\",\n\t\t\"CZ\": \"\\\\d{20}\",\n\t\t\"DK\": \"\\\\d{14}\",\n\t\t\"DO\": \"[A-Z]{4}\\\\d{20}\",\n\t\t\"EE\": \"\\\\d{16}\",\n\t\t\"FO\": \"\\\\d{14}\",\n\t\t\"FI\": \"\\\\d{14}\",\n\t\t\"FR\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"GE\": \"[\\\\dA-Z]{2}\\\\d{16}\",\n\t\t\"DE\": \"\\\\d{18}\",\n\t\t\"GI\": \"[A-Z]{4}[\\\\dA-Z]{15}\",\n\t\t\"GR\": \"\\\\d{7}[\\\\dA-Z]{16}\",\n\t\t\"GL\": \"\\\\d{14}\",\n\t\t\"GT\": \"[\\\\dA-Z]{4}[\\\\dA-Z]{20}\",\n\t\t\"HU\": \"\\\\d{24}\",\n\t\t\"IS\": \"\\\\d{22}\",\n\t\t\"IE\": \"[\\\\dA-Z]{4}\\\\d{14}\",\n\t\t\"IL\": \"\\\\d{19}\",\n\t\t\"IT\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"KZ\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"KW\": \"[A-Z]{4}[\\\\dA-Z]{22}\",\n\t\t\"LV\": \"[A-Z]{4}[\\\\dA-Z]{13}\",\n\t\t\"LB\": \"\\\\d{4}[\\\\dA-Z]{20}\",\n\t\t\"LI\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"LT\": \"\\\\d{16}\",\n\t\t\"LU\": \"\\\\d{3}[\\\\dA-Z]{13}\",\n\t\t\"MK\": \"\\\\d{3}[\\\\dA-Z]{10}\\\\d{2}\",\n\t\t\"MT\": \"[A-Z]{4}\\\\d{5}[\\\\dA-Z]{18}\",\n\t\t\"MR\": \"\\\\d{23}\",\n\t\t\"MU\": \"[A-Z]{4}\\\\d{19}[A-Z]{3}\",\n\t\t\"MC\": \"\\\\d{10}[\\\\dA-Z]{11}\\\\d{2}\",\n\t\t\"MD\": \"[\\\\dA-Z]{2}\\\\d{18}\",\n\t\t\"ME\": \"\\\\d{18}\",\n\t\t\"NL\": \"[A-Z]{4}\\\\d{10}\",\n\t\t\"NO\": \"\\\\d{11}\",\n\t\t\"PK\": \"[\\\\dA-Z]{4}\\\\d{16}\",\n\t\t\"PS\": \"[\\\\dA-Z]{4}\\\\d{21}\",\n\t\t\"PL\": \"\\\\d{24}\",\n\t\t\"PT\": \"\\\\d{21}\",\n\t\t\"RO\": \"[A-Z]{4}[\\\\dA-Z]{16}\",\n\t\t\"SM\": \"[A-Z]\\\\d{10}[\\\\dA-Z]{12}\",\n\t\t\"SA\": \"\\\\d{2}[\\\\dA-Z]{18}\",\n\t\t\"RS\": \"\\\\d{18}\",\n\t\t\"SK\": \"\\\\d{20}\",\n\t\t\"SI\": \"\\\\d{15}\",\n\t\t\"ES\": \"\\\\d{20}\",\n\t\t\"SE\": \"\\\\d{20}\",\n\t\t\"CH\": \"\\\\d{5}[\\\\dA-Z]{12}\",\n\t\t\"TN\": \"\\\\d{20}\",\n\t\t\"TR\": \"\\\\d{5}[\\\\dA-Z]{17}\",\n\t\t\"AE\": \"\\\\d{3}\\\\d{16}\",\n\t\t\"GB\": \"[A-Z]{4}\\\\d{14}\",\n\t\t\"VG\": \"[\\\\dA-Z]{4}\\\\d{16}\"\n\t};\n\n\tbbanpattern = bbancountrypatterns[ countrycode ];\n\n\t// As new countries will start using IBAN in the\n\t// future, we only check if the countrycode is known.\n\t// This prevents false negatives, while almost all\n\t// false positives introduced by this, will be caught\n\t// by the checksum validation below anyway.\n\t// Strict checking should return FALSE for unknown\n\t// countries.\n\tif ( typeof bbanpattern !== \"undefined\" ) {\n\t\tibanregexp = new RegExp( \"^[A-Z]{2}\\\\d{2}\" + bbanpattern + \"$\", \"\" );\n\t\tif ( !( ibanregexp.test( iban ) ) ) {\n\t\t\treturn false; // Invalid country specific format\n\t\t}\n\t}\n\n\t// Now check the checksum, first convert to digits\n\tibancheck = iban.substring( 4, iban.length ) + iban.substring( 0, 4 );\n\tfor ( i = 0; i < ibancheck.length; i++ ) {\n\t\tcharAt = ibancheck.charAt( i );\n\t\tif ( charAt !== \"0\" ) {\n\t\t\tleadingZeroes = false;\n\t\t}\n\t\tif ( !leadingZeroes ) {\n\t\t\tibancheckdigits += \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\".indexOf( charAt );\n\t\t}\n\t}\n\n\t// Calculate the result of: ibancheckdigits % 97\n\tfor ( p = 0; p < ibancheckdigits.length; p++ ) {\n\t\tcChar = ibancheckdigits.charAt( p );\n\t\tcOperator = \"\" + cRest + \"\" + cChar;\n\t\tcRest = cOperator % 97;\n\t}\n\treturn cRest === 1;\n}, \"Please specify a valid IBAN.\" );\n\n$.validator.addMethod( \"integer\", function( value, element ) {\n\treturn this.optional( element ) || /^-?\\d+$/.test( value );\n}, \"A positive or negative non-decimal number please.\" );\n\n$.validator.addMethod( \"ipv4\", function( value, element ) {\n\treturn this.optional( element ) || /^(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.(25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/i.test( value );\n}, \"Please enter a valid IP v4 address.\" );\n\n$.validator.addMethod( \"ipv6\", function( value, element ) {\n\treturn this.optional( element ) || /^((([0-9A-Fa-f]{1,4}:){7}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}:[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){5}:([0-9A-Fa-f]{1,4}:)?[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){4}:([0-9A-Fa-f]{1,4}:){0,2}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){3}:([0-9A-Fa-f]{1,4}:){0,3}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){2}:([0-9A-Fa-f]{1,4}:){0,4}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){6}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(([0-9A-Fa-f]{1,4}:){0,5}:((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|(::([0-9A-Fa-f]{1,4}:){0,5}((\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b)\\.){3}(\\b((25[0-5])|(1\\d{2})|(2[0-4]\\d)|(\\d{1,2}))\\b))|([0-9A-Fa-f]{1,4}::([0-9A-Fa-f]{1,4}:){0,5}[0-9A-Fa-f]{1,4})|(::([0-9A-Fa-f]{1,4}:){0,6}[0-9A-Fa-f]{1,4})|(([0-9A-Fa-f]{1,4}:){1,7}:))$/i.test( value );\n}, \"Please enter a valid IP v6 address.\" );\n\n$.validator.addMethod( \"lessThan\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-lessThan-blur\" ).length ) {\n        target.addClass( \"validate-lessThan-blur\" ).on( \"blur.validate-lessThan\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value < target.val();\n}, \"Please enter a lesser value.\" );\n\n$.validator.addMethod( \"lessThanEqual\", function( value, element, param ) {\n    var target = $( param );\n\n    if ( this.settings.onfocusout && target.not( \".validate-lessThanEqual-blur\" ).length ) {\n        target.addClass( \"validate-lessThanEqual-blur\" ).on( \"blur.validate-lessThanEqual\", function() {\n            $( element ).valid();\n        } );\n    }\n\n    return value <= target.val();\n}, \"Please enter a lesser value.\" );\n\n$.validator.addMethod( \"lettersonly\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z]+$/i.test( value );\n}, \"Letters only please.\" );\n\n$.validator.addMethod( \"letterswithbasicpunc\", function( value, element ) {\n\treturn this.optional( element ) || /^[a-z\\-.,()'\"\\s]+$/i.test( value );\n}, \"Letters or punctuation only please.\" );\n\n// Limit the number of files in a FileList.\n$.validator.addMethod( \"maxfiles\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length > param ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"Please select no more than {0} files.\" ) );\n\n// Limit the size of each individual file in a FileList.\n$.validator.addMethod( \"maxsize\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length ) {\n\t\t\tfor ( var i = 0; i < element.files.length; i++ ) {\n\t\t\t\tif ( element.files[ i ].size > param ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"File size must not exceed {0} bytes each.\" ) );\n\n// Limit the size of all files in a FileList.\n$.validator.addMethod( \"maxsizetotal\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tif ( $( element ).attr( \"type\" ) === \"file\" ) {\n\t\tif ( element.files && element.files.length ) {\n\t\t\tvar totalSize = 0;\n\n\t\t\tfor ( var i = 0; i < element.files.length; i++ ) {\n\t\t\t\ttotalSize += element.files[ i ].size;\n\t\t\t\tif ( totalSize > param ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true;\n}, $.validator.format( \"Total size of all files must not exceed {0} bytes.\" ) );\n\n\n$.validator.addMethod( \"mobileNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)6((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid mobile number.\" );\n\n$.validator.addMethod( \"mobileRU\", function( phone_number, element ) {\n\tvar ruPhone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || ruPhone_number.length > 9 && /^((\\+7|7|8)+([0-9]){10})$/.test( ruPhone_number );\n}, \"Please specify a valid mobile number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"mobileUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)7(?:[1345789]\\d{2}|624)\\s?\\d{3}\\s?\\d{3})$/ );\n}, \"Please specify a valid mobile number.\" );\n\n$.validator.addMethod( \"netmask\", function( value, element ) {\n    return this.optional( element ) || /^(254|252|248|240|224|192|128)\\.0\\.0\\.0|255\\.(254|252|248|240|224|192|128|0)\\.0\\.0|255\\.255\\.(254|252|248|240|224|192|128|0)\\.0|255\\.255\\.255\\.(254|252|248|240|224|192|128|0)/i.test( value );\n}, \"Please enter a valid netmask.\" );\n\n/*\n * The NIE (Número de Identificación de Extranjero) is a Spanish tax identification number assigned by the Spanish\n * authorities to any foreigner.\n *\n * The NIE is the equivalent of a Spaniards Número de Identificación Fiscal (NIF) which serves as a fiscal\n * identification number. The CIF number (Certificado de Identificación Fiscal) is equivalent to the NIF, but applies to\n * companies rather than individuals. The NIE consists of an 'X' or 'Y' followed by 7 or 8 digits then another letter.\n */\n$.validator.addMethod( \"nieES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvar nieRegEx = new RegExp( /^[MXYZ]{1}[0-9]{7,8}[TRWAGMYFPDXBNJZSQVHLCKET]{1}$/gi );\n\tvar validChars = \"TRWAGMYFPDXBNJZSQVHLCKET\",\n\t\tletter = value.substr( value.length - 1 ).toUpperCase(),\n\t\tnumber;\n\n\tvalue = value.toString().toUpperCase();\n\n\t// Quick format test\n\tif ( value.length > 10 || value.length < 9 || !nieRegEx.test( value ) ) {\n\t\treturn false;\n\t}\n\n\t// X means same number\n\t// Y means number + 10000000\n\t// Z means number + 20000000\n\tvalue = value.replace( /^[X]/, \"0\" )\n\t\t.replace( /^[Y]/, \"1\" )\n\t\t.replace( /^[Z]/, \"2\" );\n\n\tnumber = value.length === 9 ? value.substr( 0, 8 ) : value.substr( 0, 9 );\n\n\treturn validChars.charAt( parseInt( number, 10 ) % 23 ) === letter;\n\n}, \"Please specify a valid NIE number.\" );\n\n/*\n * The Número de Identificación Fiscal ( NIF ) is the way tax identification used in Spain for individuals\n */\n$.validator.addMethod( \"nifES\", function( value, element ) {\n\t\"use strict\";\n\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\n\tvalue = value.toUpperCase();\n\n\t// Basic format test\n\tif ( !value.match( \"((^[A-Z]{1}[0-9]{7}[A-Z0-9]{1}$|^[T]{1}[A-Z0-9]{8}$)|^[0-9]{8}[A-Z]{1}$)\" ) ) {\n\t\treturn false;\n\t}\n\n\t// Test NIF\n\tif ( /^[0-9]{8}[A-Z]{1}$/.test( value ) ) {\n\t\treturn ( \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 0 ) % 23 ) === value.charAt( 8 ) );\n\t}\n\n\t// Test specials NIF (starts with K, L or M)\n\tif ( /^[KLM]{1}/.test( value ) ) {\n\t\treturn ( value[ 8 ] === \"TRWAGMYFPDXBNJZSQVHLCKE\".charAt( value.substring( 8, 1 ) % 23 ) );\n\t}\n\n\treturn false;\n\n}, \"Please specify a valid NIF number.\" );\n\n/*\n * Numer identyfikacji podatkowej ( NIP ) is the way tax identification used in Poland for companies\n */\n$.validator.addMethod( \"nipPL\", function( value ) {\n\t\"use strict\";\n\n\tvalue = value.replace( /[^0-9]/g, \"\" );\n\n\tif ( value.length !== 10 ) {\n\t\treturn false;\n\t}\n\n\tvar arrSteps = [ 6, 5, 7, 2, 3, 4, 5, 6, 7 ];\n\tvar intSum = 0;\n\tfor ( var i = 0; i < 9; i++ ) {\n\t\tintSum += arrSteps[ i ] * value[ i ];\n\t}\n\tvar int2 = intSum % 11;\n\tvar intControlNr = ( int2 === 10 ) ? 0 : int2;\n\n\treturn ( intControlNr === parseInt( value[ 9 ], 10 ) );\n}, \"Please specify a valid NIP number.\" );\n\n/**\n * Created for project jquery-validation.\n * @Description Brazillian PIS or NIS number (Número de Identificação Social Pis ou Pasep) is the equivalent of a\n * Brazilian tax registration number NIS of PIS numbers have 11 digits in total: 10 numbers followed by 1 check numbers\n * that are being used for validation.\n * @copyright (c) 21/08/2018 13:14, Cleiton da Silva Mendonça\n * @author Cleiton da Silva Mendonça <cleiton.mendonca@gmail.com>\n * @link http://gitlab.com/csmendonca Gitlab of Cleiton da Silva Mendonça\n * @link http://github.com/csmendonca Github of Cleiton da Silva Mendonça\n */\n$.validator.addMethod( \"nisBR\", function( value ) {\n\tvar number;\n\tvar cn;\n\tvar sum = 0;\n\tvar dv;\n\tvar count;\n\tvar multiplier;\n\n\t// Removing special characters from value\n\tvalue = value.replace( /([~!@#$%^&*()_+=`{}\\[\\]\\-|\\\\:;'<>,.\\/? ])+/g, \"\" );\n\n\t// Checking value to have 11 digits only\n\tif ( value.length !== 11 ) {\n\t\treturn false;\n\t}\n\n\t//Get check number of value\n\tcn = parseInt( value.substring( 10, 11 ), 10 );\n\n\t//Get number with 10 digits of the value\n\tnumber = parseInt( value.substring( 0, 10 ), 10 );\n\n\tfor ( count = 2; count < 12; count++ ) {\n\t\tmultiplier = count;\n\t\tif ( count === 10 ) {\n\t\t\tmultiplier = 2;\n\t\t}\n\t\tif ( count === 11 ) {\n\t\t\tmultiplier = 3;\n\t\t}\n\t\tsum += ( ( number % 10 ) * multiplier );\n\t\tnumber = parseInt( number / 10, 10 );\n\t}\n\tdv = ( sum % 11 );\n\n\tif ( dv > 1 ) {\n\t\tdv = ( 11 - dv );\n\t} else {\n\t\tdv = 0;\n\t}\n\n\tif ( cn === dv ) {\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n}, \"Please specify a valid NIS/PIS number.\" );\n\n$.validator.addMethod( \"notEqualTo\", function( value, element, param ) {\n\treturn this.optional( element ) || !$.validator.methods.equalTo.call( this, value, element, param );\n}, \"Please enter a different value, values must not be the same.\" );\n\n$.validator.addMethod( \"nowhitespace\", function( value, element ) {\n\treturn this.optional( element ) || /^\\S+$/i.test( value );\n}, \"No white space please.\" );\n\n/**\n* Return true if the field value matches the given format RegExp\n*\n* @example $.validator.methods.pattern(\"AR1004\",element,/^AR\\d{4}$/)\n* @result true\n*\n* @example $.validator.methods.pattern(\"BR1004\",element,/^AR\\d{4}$/)\n* @result false\n*\n* @name $.validator.methods.pattern\n* @type Boolean\n* @cat Plugins/Validate/Methods\n*/\n$.validator.addMethod( \"pattern\", function( value, element, param ) {\n\tif ( this.optional( element ) ) {\n\t\treturn true;\n\t}\n\tif ( typeof param === \"string\" ) {\n\t\tparam = new RegExp( \"^(?:\" + param + \")$\" );\n\t}\n\treturn param.test( value );\n}, \"Invalid format.\" );\n\n/**\n * Dutch phone numbers have 10 digits (or 11 and start with +31).\n */\n$.validator.addMethod( \"phoneNL\", function( value, element ) {\n\treturn this.optional( element ) || /^((\\+|00(\\s|\\s?\\-\\s?)?)31(\\s|\\s?\\-\\s?)?(\\(0\\)[\\-\\s]?)?|0)[1-9]((\\s|\\s?\\-\\s?)?[0-9]){8}$/.test( value );\n}, \"Please specify a valid phone number.\" );\n\n/**\n * Polish telephone numbers have 9 digits.\n *\n * Mobile phone numbers starts with following digits:\n * 45, 50, 51, 53, 57, 60, 66, 69, 72, 73, 78, 79, 88.\n *\n * Fixed-line numbers starts with area codes:\n * 12, 13, 14, 15, 16, 17, 18, 22, 23, 24, 25, 29, 32, 33,\n * 34, 41, 42, 43, 44, 46, 48, 52, 54, 55, 56, 58, 59, 61,\n * 62, 63, 65, 67, 68, 71, 74, 75, 76, 77, 81, 82, 83, 84,\n * 85, 86, 87, 89, 91, 94, 95.\n *\n * Ministry of National Defence numbers and VoIP numbers starts with 26 and 39.\n *\n * Excludes intelligent networks (premium rate, shared cost, free phone numbers).\n *\n * Poland National Numbering Plan http://www.itu.int/oth/T02020000A8/en\n */\n$.validator.addMethod( \"phonePL\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\tvar regexp = /^(?:(?:(?:\\+|00)?48)|(?:\\(\\+?48\\)))?(?:1[2-8]|2[2-69]|3[2-49]|4[1-68]|5[0-9]|6[0-35-9]|[7-8][1-9]|9[145])\\d{7}$/;\n\treturn this.optional( element ) || regexp.test( phone_number );\n}, \"Please specify a valid phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n\n// Matches UK landline + mobile, accepting only 01-3 for landline or 07 for mobile to exclude many premium numbers\n$.validator.addMethod( \"phonesUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?|0)(?:1\\d{8,9}|[23]\\d{9}|7(?:[1345789]\\d{8}|624\\d{6})))$/ );\n}, \"Please specify a valid uk phone number.\" );\n\n/* For UK phone functions, do the following server side processing:\n * Compare original input with this RegEx pattern:\n * ^\\(?(?:(?:00\\)?[\\s\\-]?\\(?|\\+)(44)\\)?[\\s\\-]?\\(?(?:0\\)?[\\s\\-]?\\(?)?|0)([1-9]\\d{1,4}\\)?[\\s\\d\\-]+)$\n * Extract $1 and set $prefix to '+44<space>' if $1 is '44', otherwise set $prefix to '0'\n * Extract $2 and remove hyphens, spaces and parentheses. Phone number is combined $prefix and $2.\n * A number of very detailed GB telephone number RegEx patterns can also be found at:\n * http://www.aa-asterisk.org.uk/index.php/Regular_Expressions_for_Validating_and_Formatting_GB_Telephone_Numbers\n */\n$.validator.addMethod( \"phoneUK\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\(|\\)|\\s+|-/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(?:(?:(?:00\\s?|\\+)44\\s?)|(?:\\(?0))(?:\\d{2}\\)?\\s?\\d{4}\\s?\\d{4}|\\d{3}\\)?\\s?\\d{3}\\s?\\d{3,4}|\\d{4}\\)?\\s?(?:\\d{5}|\\d{3}\\s?\\d{3})|\\d{5}\\)?\\s?\\d{4,5})$/ );\n}, \"Please specify a valid phone number.\" );\n\n/**\n * Matches US phone number format\n *\n * where the area code may not start with 1 and the prefix may not start with 1\n * allows '-' or ' ' as a separator and allows parens around area code\n * some people may want to put a '1' in front of their number\n *\n * 1(212)-999-2345 or\n * 212 999 2344 or\n * 212-999-0983\n *\n * but not\n * 111-123-5434\n * and not\n * 212 123 4567\n */\n$.validator.addMethod( \"phoneUS\", function( phone_number, element ) {\n\tphone_number = phone_number.replace( /\\s+/g, \"\" );\n\treturn this.optional( element ) || phone_number.length > 9 &&\n\t\tphone_number.match( /^(\\+?1-?)?(\\([2-9]([02-9]\\d|1[02-9])\\)|[2-9]([02-9]\\d|1[02-9]))-?[2-9]\\d{2}-?\\d{4}$/ );\n}, \"Please specify a valid phone number.\" );\n\n/*\n* Valida CEPs do brasileiros:\n*\n* Formatos aceitos:\n* 99999-999\n* 99.999-999\n* 99999999\n*/\n$.validator.addMethod( \"postalcodeBR\", function( cep_value, element ) {\n\treturn this.optional( element ) || /^\\d{2}.\\d{3}-\\d{3}?$|^\\d{5}-?\\d{3}?$/.test( cep_value );\n}, \"Informe um CEP válido.\" );\n\n/**\n * Matches a valid Canadian Postal Code\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H 0H0\", element )\n * @result true\n *\n * @example jQuery.validator.methods.postalCodeCA( \"H0H0H0\", element )\n * @result false\n *\n * @name jQuery.validator.methods.postalCodeCA\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"postalCodeCA\", function( value, element ) {\n\treturn this.optional( element ) || /^[ABCEGHJKLMNPRSTVXY]\\d[ABCEGHJKLMNPRSTVWXYZ] *\\d[ABCEGHJKLMNPRSTVWXYZ]\\d$/i.test( value );\n}, \"Please specify a valid postal code.\" );\n\n/* Matches Italian postcode (CAP) */\n$.validator.addMethod( \"postalcodeIT\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}$/.test( value );\n}, \"Please specify a valid postal code.\" );\n\n$.validator.addMethod( \"postalcodeNL\", function( value, element ) {\n\treturn this.optional( element ) || /^[1-9][0-9]{3}\\s?[a-zA-Z]{2}$/.test( value );\n}, \"Please specify a valid postal code.\" );\n\n// Matches UK postcode. Does not match to UK Channel Islands that have their own postcodes (non standard UK)\n$.validator.addMethod( \"postcodeUK\", function( value, element ) {\n\treturn this.optional( element ) || /^((([A-PR-UWYZ][0-9])|([A-PR-UWYZ][0-9][0-9])|([A-PR-UWYZ][A-HK-Y][0-9])|([A-PR-UWYZ][A-HK-Y][0-9][0-9])|([A-PR-UWYZ][0-9][A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRVWXY]))\\s?([0-9][ABD-HJLNP-UW-Z]{2})|(GIR)\\s?(0AA))$/i.test( value );\n}, \"Please specify a valid UK postcode.\" );\n\n/*\n * Lets you say \"at least X inputs that match selector Y must be filled.\"\n *\n * The end result is that neither of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\n *\t...will validate unless at least one of them is filled.\n *\n * partnumber:\t{require_from_group: [1,\".productinfo\"]},\n * description: {require_from_group: [1,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n */\n$.validator.addMethod( \"require_from_group\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_req_grp\" ) ? $fieldsFirst.data( \"valid_req_grp\" ) : $.extend( {}, this ),\n\t\tisValid = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_req_grp\", validator );\n\n\t// If element isn't being validated, run each require_from_group field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please fill at least {0} of these fields.\" ) );\n\n/*\n * Lets you say \"either at least X inputs that match selector Y must be filled,\n * OR they must all be skipped (left blank).\"\n *\n * The end result, is that none of these inputs:\n *\n *\t<input class=\"productinfo\" name=\"partnumber\">\n *\t<input class=\"productinfo\" name=\"description\">\n *\t<input class=\"productinfo\" name=\"color\">\n *\n *\t...will validate unless either at least two of them are filled,\n *\tOR none of them are.\n *\n * partnumber:\t{skip_or_fill_minimum: [2,\".productinfo\"]},\n * description: {skip_or_fill_minimum: [2,\".productinfo\"]},\n * color:\t\t{skip_or_fill_minimum: [2,\".productinfo\"]}\n *\n * options[0]: number of fields that must be filled in the group\n * options[1]: CSS selector that defines the group of conditionally required fields\n *\n */\n$.validator.addMethod( \"skip_or_fill_minimum\", function( value, element, options ) {\n\tvar $fields = $( options[ 1 ], element.form ),\n\t\t$fieldsFirst = $fields.eq( 0 ),\n\t\tvalidator = $fieldsFirst.data( \"valid_skip\" ) ? $fieldsFirst.data( \"valid_skip\" ) : $.extend( {}, this ),\n\t\tnumberFilled = $fields.filter( function() {\n\t\t\treturn validator.elementValue( this );\n\t\t} ).length,\n\t\tisValid = numberFilled === 0 || numberFilled >= options[ 0 ];\n\n\t// Store the cloned validator for future validation\n\t$fieldsFirst.data( \"valid_skip\", validator );\n\n\t// If element isn't being validated, run each skip_or_fill_minimum field's validation rules\n\tif ( !$( element ).data( \"being_validated\" ) ) {\n\t\t$fields.data( \"being_validated\", true );\n\t\t$fields.each( function() {\n\t\t\tvalidator.element( this );\n\t\t} );\n\t\t$fields.data( \"being_validated\", false );\n\t}\n\treturn isValid;\n}, $.validator.format( \"Please either skip these fields or fill at least {0} of them.\" ) );\n\n/* Validates US States and/or Territories by @jdforsythe\n * Can be case insensitive or require capitalization - default is case insensitive\n * Can include US Territories or not - default does not\n * Can include US Military postal abbreviations (AA, AE, AP) - default does not\n *\n * Note: \"States\" always includes DC (District of Colombia)\n *\n * Usage examples:\n *\n *  This is the default - case insensitive, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false,\n *     includeTerritories: false,\n *     includeMilitary: false\n *  }\n *\n *  Only allow capital letters, no territories, no military zones\n *  stateInput: {\n *     caseSensitive: false\n *  }\n *\n *  Case insensitive, include territories but not military zones\n *  stateInput: {\n *     includeTerritories: true\n *  }\n *\n *  Only allow capital letters, include territories and military zones\n *  stateInput: {\n *     caseSensitive: true,\n *     includeTerritories: true,\n *     includeMilitary: true\n *  }\n *\n */\n$.validator.addMethod( \"stateUS\", function( value, element, options ) {\n\tvar isDefault = typeof options === \"undefined\",\n\t\tcaseSensitive = ( isDefault || typeof options.caseSensitive === \"undefined\" ) ? false : options.caseSensitive,\n\t\tincludeTerritories = ( isDefault || typeof options.includeTerritories === \"undefined\" ) ? false : options.includeTerritories,\n\t\tincludeMilitary = ( isDefault || typeof options.includeMilitary === \"undefined\" ) ? false : options.includeMilitary,\n\t\tregex;\n\n\tif ( !includeTerritories && !includeMilitary ) {\n\t\tregex = \"^(A[KLRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t} else if ( includeTerritories && includeMilitary ) {\n\t\tregex = \"^(A[AEKLPRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else if ( includeTerritories ) {\n\t\tregex = \"^(A[KLRSZ]|C[AOT]|D[CE]|FL|G[AU]|HI|I[ADLN]|K[SY]|LA|M[ADEINOPST]|N[CDEHJMVY]|O[HKR]|P[AR]|RI|S[CD]|T[NX]|UT|V[AIT]|W[AIVY])$\";\n\t} else {\n\t\tregex = \"^(A[AEKLPRZ]|C[AOT]|D[CE]|FL|GA|HI|I[ADLN]|K[SY]|LA|M[ADEINOST]|N[CDEHJMVY]|O[HKR]|PA|RI|S[CD]|T[NX]|UT|V[AT]|W[AIVY])$\";\n\t}\n\n\tregex = caseSensitive ? new RegExp( regex ) : new RegExp( regex, \"i\" );\n\treturn this.optional( element ) || regex.test( value );\n}, \"Please specify a valid state.\" );\n\n// TODO check if value starts with <, otherwise don't try stripping anything\n$.validator.addMethod( \"strippedminlength\", function( value, element, param ) {\n\treturn $( value ).text().length >= param;\n}, $.validator.format( \"Please enter at least {0} characters.\" ) );\n\n$.validator.addMethod( \"time\", function( value, element ) {\n\treturn this.optional( element ) || /^([01]\\d|2[0-3]|[0-9])(:[0-5]\\d){1,2}$/.test( value );\n}, \"Please enter a valid time, between 00:00 and 23:59.\" );\n\n$.validator.addMethod( \"time12h\", function( value, element ) {\n\treturn this.optional( element ) || /^((0?[1-9]|1[012])(:[0-5]\\d){1,2}(\\ ?[AP]M))$/i.test( value );\n}, \"Please enter a valid time in 12-hour am/pm format.\" );\n\n// Same as url, but TLD is optional\n$.validator.addMethod( \"url2\", function( value, element ) {\n\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?)|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff])|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62}\\.)))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n}, $.validator.messages.url );\n\n/**\n * Return true, if the value is a valid vehicle identification number (VIN).\n *\n * Works with all kind of text inputs.\n *\n * @example <input type=\"text\" size=\"20\" name=\"VehicleID\" class=\"{required:true,vinUS:true}\" />\n * @desc Declares a required input element whose value must be a valid vehicle identification number.\n *\n * @name $.validator.methods.vinUS\n * @type Boolean\n * @cat Plugins/Validate/Methods\n */\n$.validator.addMethod( \"vinUS\", function( v ) {\n    if ( v.length !== 17 ) {\n        return false;\n    }\n\n    var LL = [ \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"J\", \"K\", \"L\", \"M\", \"N\", \"P\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\" ],\n        VL = [ 1, 2, 3, 4, 5, 6, 7, 8, 1, 2, 3, 4, 5, 7, 9, 2, 3, 4, 5, 6, 7, 8, 9 ],\n        FL = [ 8, 7, 6, 5, 4, 3, 2, 10, 0, 9, 8, 7, 6, 5, 4, 3, 2 ],\n        rs = 0,\n        i, n, d, f, cd, cdv;\n\n    for ( i = 0; i < 17; i++ ) {\n        f = FL[ i ];\n        d = v.slice( i, i + 1 );\n        if ( isNaN( d ) ) {\n            d = d.toUpperCase();\n            n = VL[ LL.indexOf( d ) ];\n        } else {\n            n = parseInt( d, 10 );\n        }\n        if ( i === 8 )\n        {\n            cdv = n;\n            if ( d === \"X\" ) {\n                cdv = 10;\n            }\n        }\n        rs += n * f;\n    }\n    cd = rs % 11;\n    if ( cd === cdv ) {\n        return true;\n    }\n    return false;\n}, \"The specified vehicle identification number (VIN) is invalid.\" );\n\n$.validator.addMethod( \"zipcodeUS\", function( value, element ) {\n\treturn this.optional( element ) || /^\\d{5}(-\\d{4})?$/.test( value );\n}, \"The specified US ZIP Code is invalid.\" );\n\n$.validator.addMethod( \"ziprange\", function( value, element ) {\n\treturn this.optional( element ) || /^90[2-5]\\d\\{2\\}-\\d{4}$/.test( value );\n}, \"Your ZIP-code must be in the range 902xx-xxxx to 905xx-xxxx.\" );\nreturn $;\n}));","import $ from 'jquery';\nimport 'jquery-validation';\nimport 'jquery-validation/dist/additional-methods';\n\nconst LANGUAGES = {\n    \"en\": \"en\",\n    \"en-au\": \"en\",\n    \"en-nz\": \"en\",\n    \"en-gb\": \"en\",\n    \"en-ca\": \"en\",\n    \"en-za\": \"en\",\n    \"pt-br\": \"pt_BR\",\n    \"fr\": \"fr\",\n    \"fr-ca\": \"fr\",\n    \"zh-hans\": \"zh\",\n    \"zh-hant\": \"zh_TW\",\n    \"de\": \"de\",\n    \"de-at\": \"de\",\n    \"it\": \"it\",\n    \"ja\": \"ja\",\n    \"es\": \"es\",\n    \"es-xl\": \"es\",\n    \"pl\": \"pl\",\n    \"ru\": \"ru\",\n    \"sk\": \"sk\",\n    \"ch-de\": \"de\",\n    \"ch-fr\": \"fr\",\n    \"cs\": \"cs\",\n    \"cs-cz\": \"cs\",\n    \"da\": \"da\",\n    \"fi\": \"fi\",\n    \"nb\": \"en\",\n    \"sv\": \"sv\",\n    \"nl\": \"nl\"\n};\n\nconst addRadioOrCheckboxSelectValidity = function(inputs) {\n    if (inputs.length > 1) {\n        inputs.rules('add', {\n            require_from_group: [1, inputs],\n        });\n    }\n};\n\nfunction initCustomValidationRules(form) {\n    const requiredFields = form.find('.form-required');\n    requiredFields.toArray().forEach(el => {\n        const group = $(el);\n\n        const maybeRadios = group.find(':radio');\n\n        if (maybeRadios.length) {\n            return addRadioOrCheckboxSelectValidity(maybeRadios);\n        }\n\n        const maybeCheckboxes = group.find(':checkbox');\n\n        if (maybeCheckboxes.length) {\n            return addRadioOrCheckboxSelectValidity(maybeCheckboxes);\n        }\n    });\n}\n\nexport default function initLocale() {\n    const locale = $('html').attr('lang');\n\n    if (LANGUAGES[locale] === 'en') {\n        return;\n    }\n}\n\nwindow.IDEXX = window.IDEXX || {};\nwindow.IDEXX.initCustomValidationRules = initCustomValidationRules;\n","import $ from 'jquery'\nimport { scrollTo } from './utils'\n\nconst defaults = {\n  offset: -20,\n  scrollTime: 250\n}\n\n// @TODO: Not used, can go away\nexport function initLocalScroll() {\n  $(document).on('click', '.js-localscroll[href^=\"#\"]', function (e) {\n    e.preventDefault()\n\n    const link = $(this)\n    const href = link.attr('href')\n    const offset = link.data('offset')\n    const time = link.data('time')\n    const options = $.extend(defaults, { offset, time })\n    let target\n\n    try {\n      target = $(href)\n    } catch (e) {} // eslint-disable-line\n\n    if (!target) {\n      return\n    }\n\n    const top = target.offset().top\n\n    scrollTo(top, options.scrollTime).then(function () {\n      if (window.history.pushState) {\n        window.history.pushState('', {}, href)\n      } else {\n        window.location.hash = href\n      }\n    })\n  })\n}\n","import $ from 'jquery'\nimport Cookies from 'js-cookie'\n\nclass ModalBox {\n  constructor(element) {\n    this.cookieName = `closed-modal-box-${element.attr('id')}`\n    this.expires = element.data('expires') ? parseInt(element.data('expires'), 10) : 7\n    this._setupUI(element)\n    this._setupEvents()\n  }\n\n  _setupUI(element) {\n    this.ui = {\n      modal: element,\n      close: element.find('.js-modal-box-close'),\n      window: $(window),\n      cookiePolicy: $('.js-cookie-policy')\n    }\n  }\n\n  _setupEvents() {\n    this.ui.window.on('load', () => {\n      if (!this._checkIfCookieExists()) {\n        this.open()\n      }\n    })\n\n    this.ui.close.on('click', () => {\n      this.close()\n    })\n  }\n\n  _checkIfCookieExists() {\n    return Cookies.get(this.cookieName)\n  }\n\n  _setCookie() {\n    Cookies.set(this.cookieName, 'true', {\n      expires: this.expires,\n      path: ''\n    })\n  }\n\n  open() {\n    if (this.ui.cookiePolicy.is(':visible')) {\n      this.ui.modal.css('margin-bottom', this.ui.cookiePolicy.outerHeight())\n    }\n\n    this.ui.modal.fadeIn('fast')\n  }\n\n  close() {\n    this.ui.modal.fadeOut('fast', () => {\n      this._setCookie()\n    })\n  }\n}\n\nexport function initModalBoxes(selector = '.js-modal-box') {\n  $(selector).each((i, el) => new ModalBox($(el)))\n}\n","import $ from 'jquery'\n\nexport function initSearchFiltersForm() {\n  const form = $('.js-search-filters-form')\n  const searchContainer = $('.js-search-container')\n\n  form.on('change', ':radio, :checkbox', () => form.submit())\n\n  form.on('submit', () => {\n    searchContainer.addClass('loading')\n  })\n}\n","export function showTabFromHash() {\n  const hash = window.location.hash\n  let content = $()\n\n  try {\n    content = $(`${hash}, a[name=${hash.slice(1)}]`)\n  } catch (e) {} // eslint-disable-line\n\n  const pane = content.closest('.tab-pane')\n\n  if (!pane.length) {\n    return\n  }\n\n  const paneId = pane.attr('id')\n\n  $(`[href='#${paneId}']`).tab('show')\n}\n","/*!\n * simpleParallax.min - simpleParallax is a simple JavaScript library that gives your website parallax animations on any images or videos, \n * @date: 20-08-2020 14:0:14, \n * @version: 5.6.2,\n * @link: https://simpleparallax.com/\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(\"simpleParallax\",[],e):\"object\"==typeof exports?exports.simpleParallax=e():t.simpleParallax=e()}(window,(function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",(function(){return x}));var i=function(){return Element.prototype.closest&&\"IntersectionObserver\"in window};function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var s=new(function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.positions={top:0,bottom:0,height:0}}var e,n,i;return e=t,(n=[{key:\"setViewportTop\",value:function(t){return this.positions.top=t?t.scrollTop:window.pageYOffset,this.positions}},{key:\"setViewportBottom\",value:function(){return this.positions.bottom=this.positions.top+this.positions.height,this.positions}},{key:\"setViewportAll\",value:function(t){return this.positions.top=t?t.scrollTop:window.pageYOffset,this.positions.height=t?t.clientHeight:document.documentElement.clientHeight,this.positions.bottom=this.positions.top+this.positions.height,this.positions}}])&&r(e.prototype,n),i&&r(e,i),t}()),o=function(t){return NodeList.prototype.isPrototypeOf(t)||HTMLCollection.prototype.isPrototypeOf(t)?Array.from(t):\"string\"==typeof t||t instanceof String?document.querySelectorAll(t):[t]},a=function(){for(var t,e=\"transform webkitTransform mozTransform oTransform msTransform\".split(\" \"),n=0;void 0===t;)t=void 0!==document.createElement(\"div\").style[e[n]]?e[n]:void 0,n+=1;return t}(),l=function(t){return\"img\"!==t.tagName.toLowerCase()&&\"picture\"!==t.tagName.toLowerCase()||!!t&&(!!t.complete&&(void 0===t.naturalWidth||0!==t.naturalWidth))};function u(t){return function(t){if(Array.isArray(t))return c(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return c(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return c(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function c(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var f=function(){function t(e,n){var i=this;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.element=e,this.elementContainer=e,this.settings=n,this.isVisible=!0,this.isInit=!1,this.oldTranslateValue=-1,this.init=this.init.bind(this),this.customWrapper=this.settings.customWrapper&&this.element.closest(this.settings.customWrapper)?this.element.closest(this.settings.customWrapper):null,l(e)?this.init():this.element.addEventListener(\"load\",(function(){setTimeout((function(){i.init(!0)}),50)}))}var e,n,i;return e=t,(n=[{key:\"init\",value:function(t){var e=this;this.isInit||(t&&(this.rangeMax=null),this.element.closest(\".simpleParallax\")||(!1===this.settings.overflow&&this.wrapElement(this.element),this.setTransformCSS(),this.getElementOffset(),this.intersectionObserver(),this.getTranslateValue(),this.animate(),this.settings.delay>0?setTimeout((function(){e.setTransitionCSS(),e.elementContainer.classList.add(\"simple-parallax-initialized\")}),10):this.elementContainer.classList.add(\"simple-parallax-initialized\"),this.isInit=!0))}},{key:\"wrapElement\",value:function(){var t=this.element.closest(\"picture\")||this.element,e=this.customWrapper||document.createElement(\"div\");e.classList.add(\"simpleParallax\"),e.style.overflow=\"hidden\",this.customWrapper||(t.parentNode.insertBefore(e,t),e.appendChild(t)),this.elementContainer=e}},{key:\"unWrapElement\",value:function(){var t=this.elementContainer;this.customWrapper?(t.classList.remove(\"simpleParallax\"),t.style.overflow=\"\"):t.replaceWith.apply(t,u(t.childNodes))}},{key:\"setTransformCSS\",value:function(){!1===this.settings.overflow&&(this.element.style[a]=\"scale(\".concat(this.settings.scale,\")\")),this.element.style.willChange=\"transform\"}},{key:\"setTransitionCSS\",value:function(){this.element.style.transition=\"transform \".concat(this.settings.delay,\"s \").concat(this.settings.transition)}},{key:\"unSetStyle\",value:function(){this.element.style.willChange=\"\",this.element.style[a]=\"\",this.element.style.transition=\"\"}},{key:\"getElementOffset\",value:function(){var t=this.elementContainer.getBoundingClientRect();if(this.elementHeight=t.height,this.elementTop=t.top+s.positions.top,this.settings.customContainer){var e=this.settings.customContainer.getBoundingClientRect();this.elementTop=t.top-e.top+s.positions.top}this.elementBottom=this.elementHeight+this.elementTop}},{key:\"buildThresholdList\",value:function(){for(var t=[],e=1;e<=this.elementHeight;e++){var n=e/this.elementHeight;t.push(n)}return t}},{key:\"intersectionObserver\",value:function(){var t={root:null,threshold:this.buildThresholdList()};this.observer=new IntersectionObserver(this.intersectionObserverCallback.bind(this),t),this.observer.observe(this.element)}},{key:\"intersectionObserverCallback\",value:function(t){var e=this;t.forEach((function(t){t.isIntersecting?e.isVisible=!0:e.isVisible=!1}))}},{key:\"checkIfVisible\",value:function(){return this.elementBottom>s.positions.top&&this.elementTop<s.positions.bottom}},{key:\"getRangeMax\",value:function(){var t=this.element.clientHeight;this.rangeMax=t*this.settings.scale-t}},{key:\"getTranslateValue\",value:function(){var t=((s.positions.bottom-this.elementTop)/((s.positions.height+this.elementHeight)/100)).toFixed(1);return t=Math.min(100,Math.max(0,t)),0!==this.settings.maxTransition&&t>this.settings.maxTransition&&(t=this.settings.maxTransition),this.oldPercentage!==t&&(this.rangeMax||this.getRangeMax(),this.translateValue=(t/100*this.rangeMax-this.rangeMax/2).toFixed(0),this.oldTranslateValue!==this.translateValue&&(this.oldPercentage=t,this.oldTranslateValue=this.translateValue,!0))}},{key:\"animate\",value:function(){var t,e=0,n=0;(this.settings.orientation.includes(\"left\")||this.settings.orientation.includes(\"right\"))&&(n=\"\".concat(this.settings.orientation.includes(\"left\")?-1*this.translateValue:this.translateValue,\"px\")),(this.settings.orientation.includes(\"up\")||this.settings.orientation.includes(\"down\"))&&(e=\"\".concat(this.settings.orientation.includes(\"up\")?-1*this.translateValue:this.translateValue,\"px\")),t=!1===this.settings.overflow?\"translate3d(\".concat(n,\", \").concat(e,\", 0) scale(\").concat(this.settings.scale,\")\"):\"translate3d(\".concat(n,\", \").concat(e,\", 0)\"),this.element.style[a]=t}}])&&h(e.prototype,n),i&&h(e,i),t}();function m(t){return function(t){if(Array.isArray(t))return y(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&Symbol.iterator in Object(t))return Array.from(t)}(t)||d(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function p(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){if(\"undefined\"==typeof Symbol||!(Symbol.iterator in Object(t)))return;var n=[],i=!0,r=!1,s=void 0;try{for(var o,a=t[Symbol.iterator]();!(i=(o=a.next()).done)&&(n.push(o.value),!e||n.length!==e);i=!0);}catch(t){r=!0,s=t}finally{try{i||null==a.return||a.return()}finally{if(r)throw s}}return n}(t,e)||d(t,e)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function d(t,e){if(t){if(\"string\"==typeof t)return y(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?y(t,e):void 0}}function y(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,i=new Array(e);n<e;n++)i[n]=t[n];return i}function v(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,\"value\"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var g,b,w=!1,T=[],x=function(){function t(e,n){if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),e&&i()){if(this.elements=o(e),this.defaults={delay:0,orientation:\"up\",scale:1.3,overflow:!1,transition:\"cubic-bezier(0,0,0,1)\",customContainer:\"\",customWrapper:\"\",maxTransition:0},this.settings=Object.assign(this.defaults,n),this.settings.customContainer){var r=p(o(this.settings.customContainer),1);this.customContainer=r[0]}this.lastPosition=-1,this.resizeIsDone=this.resizeIsDone.bind(this),this.refresh=this.refresh.bind(this),this.proceedRequestAnimationFrame=this.proceedRequestAnimationFrame.bind(this),this.init()}}var e,n,r;return e=t,(n=[{key:\"init\",value:function(){var t=this;s.setViewportAll(this.customContainer),T=[].concat(m(this.elements.map((function(e){return new f(e,t.settings)}))),m(T)),w||(this.proceedRequestAnimationFrame(),window.addEventListener(\"resize\",this.resizeIsDone),w=!0)}},{key:\"resizeIsDone\",value:function(){clearTimeout(b),b=setTimeout(this.refresh,200)}},{key:\"proceedRequestAnimationFrame\",value:function(){var t=this;s.setViewportTop(this.customContainer),this.lastPosition!==s.positions.top?(s.setViewportBottom(),T.forEach((function(e){t.proceedElement(e)})),g=window.requestAnimationFrame(this.proceedRequestAnimationFrame),this.lastPosition=s.positions.top):g=window.requestAnimationFrame(this.proceedRequestAnimationFrame)}},{key:\"proceedElement\",value:function(t){(this.customContainer?t.checkIfVisible():t.isVisible)&&t.getTranslateValue()&&t.animate()}},{key:\"refresh\",value:function(){s.setViewportAll(this.customContainer),T.forEach((function(t){t.getElementOffset(),t.getRangeMax()})),this.lastPosition=-1}},{key:\"destroy\",value:function(){var t=this,e=[];T=T.filter((function(n){return t.elements.includes(n.element)?(e.push(n),!1):n})),e.forEach((function(e){e.unSetStyle(),!1===t.settings.overflow&&e.unWrapElement()})),T.length||(window.cancelAnimationFrame(g),window.removeEventListener(\"resize\",this.refresh),w=!1)}}])&&v(e.prototype,n),r&&v(e,r),t}()}]).default}));","import simpleParallax from 'simple-parallax-js'\n\nfunction initAllParallax() {\n  const parallaxElements = document.querySelectorAll('[data-parallax]')\n  new simpleParallax(parallaxElements, {\n    scale: 1.5\n  })\n}\n\nexport function initParallax() {\n  initAllParallax()\n}\n","import 'vite/modulepreload-polyfill'\nimport $ from './libs/jquery'\nimport 'jquery-validation'\nimport './libs/bootstrap'\nimport Alpine from 'alpinejs'\nimport htmx from 'htmx.org'\n\nimport {\n  initBasicSlider,\n  initImageTextSlider,\n  initProductSlider,\n  initQuotesSlider,\n  initStandardSlider\n} from './addons/slick'\nimport { initDesktopMenu, initMobileMenu } from './addons/header'\nimport { initAccordions } from './addons/accordion'\nimport { initBlog } from './addons/blog'\nimport { initCookiePolicy } from './addons/cookie-policy'\nimport initFormLocale from './addons/forms'\nimport { initLocalScroll } from './addons/localscroll'\nimport { initModalBoxes } from './addons/modal'\nimport { initSearchFiltersForm } from './addons/search'\nimport { showTabFromHash } from './addons/tabs'\nimport { initParallax } from './addons/parallax'\n\nwindow.Alpine = Alpine\nwindow.$ = $\nwindow.jQuery = $\nwindow.htmx = htmx\n\nAlpine.start()\n\n$(() => {\n  initMobileMenu()\n  initDesktopMenu()\n  initStandardSlider()\n  initProductSlider()\n  initQuotesSlider()\n  initBasicSlider()\n  initImageTextSlider()\n  initBlog()\n  initModalBoxes()\n  initCookiePolicy()\n  initAccordions()\n  initSearchFiltersForm()\n  initLocalScroll()\n  initFormLocale()\n  initParallax()\n\n  $(window)\n    .on('hashchange', () => {\n      showTabFromHash()\n    })\n    .trigger('hashchange')\n})\n\n/**\n * VSS Section Nav\n */\n$('.feature-menu .section-name button.section-nav-toggle').click(function (e) {\n  const el = $(this)\n  const container = el.closest('.container')\n  const menu = container.find('.section-menu')\n\n  if (el.hasClass('collapsed')) {\n    el.removeClass('collapsed')\n    menu.addClass('expanded')\n  } else {\n    el.addClass('collapsed')\n    menu.removeClass('expanded')\n  }\n})\n\n/**\n * Back to top Button\n */\nconst btn = $('.back-to-top')\n\n$(window).scroll(function () {\n  if ($(window).scrollTop() > 300) {\n    btn.addClass('show')\n  } else {\n    btn.removeClass('show')\n  }\n})\n\nbtn.on('click', function (e) {\n  e.preventDefault()\n  $('html, body').animate({ scrollTop: 0 }, '300')\n})\n\n/**\n * Automatically logs the user in when the webpage loads.\n */\nwindow.autologin = function () {\n  const pageEditUrl = `${window.location.pathname}?edit`\n  if (!!window.CMS) {\n    window.location.href = pageEditUrl\n  } else {\n    const nextParam = encodeURIComponent(pageEditUrl)\n    window.location.href = `/admin/login/?autologin=1&next=${nextParam}`\n  }\n}\n\n/**\n * Resize Pardot Iframes if message received.\n */\nwindow.addEventListener('message', function (event) {\n  if (event.origin !== 'https://info.idexx.com') return\n  if (event.data?.type === 'resize-iframe' && event.data.instance) {\n    console.debug('Resizing iframe', event.data)\n    const iframe = document.getElementById(`pardot-form-${event.data.instance}`)\n    if (iframe) {\n      iframe.style.height = event.data.height + 'px'\n    } else {\n      console.error(`Could not find iframe with id pardot-form-${event.data.instance}`)\n    }\n  }\n})\n"],"names":["factory","module","require$$0","$","options","validator","event","handle","hidden","result","valid","errorList","command","argument","element","isContentEditable","settings","staticRules","existingRules","data","param","filtered","index","method","trim","str","a","val","form","source","params","args","i","n","excludedKeys","errorClass","validClass","currentForm","groups","rules","key","value","name","delegate","eventType","focusListeners","clickListeners","elements","cleanElement","checkElement","v","rs","group","testgroup","errors","message","obj","count","error","updateGroupMembers","errorID","describedBy","describedByIds","ind","e","lastActive","rulesCache","selectors","formId","selector","$element","type","idx","rulesCount","dependencyMismatch","rule","normalizer","m","theregex","toToggle","place","elementID","describer","string","port","className","classes","prop","keepRule","parameter","parts","transformed","called","length","errorMessage","supportedTypes","re","notSupported","decimalPlaces","num","match","toInt","decimals","target","previous","optionDataString","response","submitted","pendingRequests","ajax","_","xhr","mode","transitionEnd","el","transEndEventNames","duration","$el","callback","dismiss","Alert","$this","$parent","removeElement","Plugin","option","old","Collapse","hasWidth","activesData","actives","startEvent","dimension","complete","scrollSize","getTargetFromTrigger","$trigger","isOpen","href","$target","backdrop","toggle","Dropdown","getParent","clearMenus","relatedTarget","isActive","desc","$items","Modal","_relatedTarget","that","transition","animate","doAnimate","callbackRemove","modalIsOverflowing","fullWindowWidth","documentElementRect","bodyPad","scrollbarWidth","actualPadding","calculatedPadding","padding","scrollDiv","showEvent","Tab","$ul","$previous","hideEvent","container","$active","next","clickHandler","DISALLOWED_ATTRIBUTES","uriAttrs","ARIA_ATTRIBUTE_PATTERN","DefaultWhitelist","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","regExp","l","sanitizeHtml","unsafeHtml","whiteList","sanitizeFn","createdDocument","whitelistKeys","len","elName","attributeList","whitelistedAttributes","j","len2","Tooltip","triggers","trigger","eventIn","eventOut","dataAttributes","dataAttr","defaults","self","inDom","$tip","tipId","placement","autoToken","autoPlace","pos","actualWidth","actualHeight","orgPlacement","viewportDim","calculatedOffset","prevHoverState","offset","width","height","marginTop","marginLeft","props","delta","isVertical","arrowDelta","arrowOffsetPosition","title","$e","isBody","elRect","isSvg","elOffset","scroll","outerDims","viewportPadding","viewportDimensions","topEdgeOffset","bottomEdgeOffset","leftEdgeOffset","rightEdgeOffset","o","prefix","Popover","content","typeContent","root","this","_win","_breakpoints","_currentBreakpoint","_defaults","_validate","breakpoint","_onResize","oldBreakpoint","viewport","_initWatch","getBreakpoints","is","current","init","breakpoints","destroy","Breakpoint","preventTouchScrolling","namespace","allowTouchScrolling","isMobileMenu","initDesktopMenu","topLevelDropdowns","dropdownToggle","initMobileMenu","mobileMenu","html","currentDropdown","initAccordions","top","scrollTo","initPostsByAuthorLink","initBlog","assign","defaultConverter","converter","defaultAttributes","set","attributes","stringifiedAttributes","attributeName","get","cookies","jar","found","api","initCookiePolicy","Cookies","policy","close","stripHtml","valueStripped","regex","checksum","tokens","typeParam","optionalValue","file","account","sum","factor","digit","cifRegEx","letter","number","control","all_sum","even_sum","odd_sum","control_digit","control_letter","isOdd","dsc","firstChar","firstCN","secondCN","tamanho","numeros","digitos","soma","resultado","il","checkResult","cn","nCheck","nDigit","bEven","cDigit","validTypes","isParamString","symbol","soft","check","adata","gg","mm","aaaa","xdata","iban","ibancheckdigits","leadingZeroes","cRest","cOperator","countrycode","ibancheck","charAt","cChar","bbanpattern","bbancountrypatterns","ibanregexp","p","minimalIBANlength","totalSize","phone_number","ruPhone_number","nieRegEx","validChars","arrSteps","intSum","int2","intControlNr","dv","multiplier","regexp","cep_value","$fields","$fieldsFirst","isValid","numberFilled","isDefault","caseSensitive","includeTerritories","includeMilitary","LL","VL","FL","f","cd","cdv","LANGUAGES","addRadioOrCheckboxSelectValidity","inputs","initCustomValidationRules","maybeRadios","maybeCheckboxes","initLocale","locale","initLocalScroll","link","time","ModalBox","initModalBoxes","initSearchFiltersForm","searchContainer","showTabFromHash","hash","pane","paneId","t","r","x","s","u","c","h","y","d","g","b","w","T","initAllParallax","parallaxElements","simpleParallax","initParallax","Alpine","htmx","initStandardSlider","initProductSlider","initQuotesSlider","initBasicSlider","initImageTextSlider","initFormLocale","menu","btn","pageEditUrl","nextParam","_a","iframe"],"mappings":"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","x_google_ignoreList":[0,9,14,16,22]}