!function(t){"use strict";"function"==typeof window.define&&window.define.amd?window.define(["jquery"],t):"object"==typeof window.module&&window.module.exports?window.module.exports=t(window.require("jquery")):t(window.jQuery)}(function(d){"use strict";var i,e,n={};return d.extend(d.fn,{tc_validate:function(t){var s;if(this.length)return(s=d.data(this[0],"tc_validator"))||(this.attr("novalidate","novalidate"),s=new d.tc_validator(t,this[0]),d.data(this[0],"tc_validator",s),s.settings.onsubmit&&(this.on("click.tc_validate",":submit",function(t){s.submitButton=t.currentTarget,d(this).hasClass("cancel")&&(s.cancelSubmit=!0),void 0!==d(this).attr("formnovalidate")&&(s.cancelSubmit=!0)}),this.on("submit.tc_validate",function(i){function t(){var t,e;return s.submitButton&&(s.settings.submitHandler||s.formSubmitted)&&(t=d("<input type='hidden'>").attr("name",s.submitButton.name).val(d(s.submitButton).val()).appendTo(s.currentForm)),!(s.settings.submitHandler&&!s.settings.debug)||(e=s.settings.submitHandler.call(s,s.currentForm,i),t&&t.remove(),void 0!==e&&e)}return s.settings.debug&&i.preventDefault(),s.cancelSubmit?(s.cancelSubmit=!1,t()):s.form()?s.pendingRequest?!(s.formSubmitted=!0):t():(s.focusInvalid(),!1)}))),s},tc_valid:function(){var t,e,i;return d(this[0]).is("form")?t=this.tc_validate().form():(i=[],t=!0,e=d(this[0].form).tc_validate(),this.each(function(){(t=e.element(this)&&t)||(i=i.concat(e.errorList))}),e.errorList=i),t},tc_rules:function(t,e){var i,s,n,r,a,o=this[0],l=void 0!==this.attr("contenteditable")&&"false"!==this.attr("contenteditable");if(null!==o&&(!o.form&&l&&(o.form=this.closest("form")[0],o.name=this.attr("name")),null!==o.form)){if(t)switch(s=(i=d.data(o.form,"tc_validator").settings).rules,n=d.tc_validator.staticRules(o),t){case"add":d.extend(n,d.tc_validator.normalizeRule(e)),delete n.messages,s[o.name]=n,e.messages&&(i.messages[o.name]=d.extend(i.messages[o.name],e.messages));break;case"remove":return e?(a={},d.each(e.split(/\s/),function(t,e){a[e]=n[e],delete n[e]}),a):(delete s[o.name],n)}return(l=d.tc_validator.normalizeRules(d.extend({},d.tc_validator.classRules(o),d.tc_validator.attributeRules(o),d.tc_validator.dataRules(o),d.tc_validator.staticRules(o)),o)).required&&(r=l.required,delete l.required,l=d.extend({required:r},l)),l.remote&&(r=l.remote,delete l.remote,l=d.extend(l,{remote:r})),l}}}),e=function(t){return t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")},d.extend(d.expr.pseudos||d.expr[":"],{blank:function(t){return!e(""+d(t).val())},filled:function(t){t=d(t).val();return null!==t&&!!e(""+t)},unchecked:function(t){return!d(t).prop("checked")}}),d.tc_validator=function(t,e){this.settings=d.extend(!0,{},d.tc_validator.defaults,t),this.currentForm=e,this.init()},d.tc_validator.format=function(i,t){return 1===arguments.length?function(){var t=d.makeArray(arguments);return t.unshift(i),d.tc_validator.format.apply(this,t)}:(void 0!==t&&((t=2<arguments.length&&t.constructor!==Array?d.makeArray(arguments).slice(1):t).constructor!==Array&&(t=[t]),d.each(t,function(t,e){i=i.replace(new RegExp("\\{"+t+"\\}","g"),function(){return e})})),i)},d.extend(d.tc_validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",pendingClass:"pending",validClass:"valid",errorElement:"label",focusCleanup:!1,focusInvalid:!0,errorContainer:d([]),errorLabelContainer:d([]),onsubmit:!0,ignore:":hidden",ignoreTitle:!1,onfocusin:function(t){this.lastActive=t,this.settings.focusCleanup&&(this.settings.unhighlight&&this.settings.unhighlight.call(this,t,this.settings.errorClass,this.settings.validClass),this.hideThese(this.errorsFor(t)))},onfocusout:function(t){this.checkable(t)||!(t.name in this.submitted)&&this.optional(t)||this.element(t)},onkeyup:function(t,e){9===e.which&&""===this.elementValue(t)||-1!==d.inArray(e.keyCode,[16,17,18,20,35,36,37,38,39,40,45,144,225])||(t.name in this.submitted||t.name in this.invalid)&&this.element(t)},onclick:function(t){t.name in this.submitted?this.element(t):t.parentNode.name in this.submitted&&this.element(t.parentNode)},highlight:function(t,e,i){("radio"===t.type?this.findByName(t.name):d(t)).addClass(e).removeClass(i)},unhighlight:function(t,e,i){("radio"===t.type?this.findByName(t.name):d(t)).removeClass(e).addClass(i)}},setDefaults:function(t){d.extend(d.tc_validator.defaults,t)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",equalTo:"Please enter the same value again.",maxlength:d.tc_validator.format("Please enter no more than {0} characters."),maxlengthsingle:d.tc_validator.format("Please enter no more than {0} character."),minlength:d.tc_validator.format("Please enter at least {0} characters."),minlengthsingle:d.tc_validator.format("Please enter at least {0} character."),rangelength:d.tc_validator.format("Please enter a value between {0} and {1} characters long."),range:d.tc_validator.format("Please enter a value between {0} and {1}."),max:d.tc_validator.format("Please enter a value less than or equal to {0}."),min:d.tc_validator.format("Please enter a value greater than or equal to {0}."),step:d.tc_validator.format("Please enter a multiple of {0}.")},autoCreateRanges:!1,prototype:{init:function(){var i,n=this.currentForm;function t(t){var e,i,s=void 0!==d(t.data.that).attr("contenteditable")&&"false"!==d(t.data.that).attr("contenteditable");!t.data.that.form&&s&&(t.data.that.form=d(t.data.that).closest("form")[0],t.data.that.name=d(t.data.that).attr("name")),n===t.data.that.form&&(s=d.data(t.data.that.form,"tc_validator"),e="on"+t.type.replace(/^validate/,""),(i=s.settings)[e])&&!d(t.data.that).is(i.ignore)&&i[e].call(s,t.data.that,t)}this.labelContainer=d(this.settings.errorLabelContainer),this.errorContext=this.labelContainer.length&&this.labelContainer||d(this.currentForm),this.containers=d(this.settings.errorContainer).add(this.settings.errorLabelContainer),this.submitted={},this.valueCache={},this.pendingRequest=0,this.pending={},this.invalid={},this.reset(),this.groups={},d.each(this.settings.groups,function(t,e){"string"==typeof e&&(e=e.split(/\s/)),d.each(e,function(t,e){e,0})}),i=this.settings.rules,d.each(i,function(t,e){i[t]=d.tc_validator.normalizeRule(e)}),d(this.currentForm).on("focusin.tc_validate focusout.tc_validate keyup.tc_validate",":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], [type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], [type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], [type='radio'], [type='checkbox'], [contenteditable], [type='button']",{that:this},t).on("click.tc_validate","select, option, [type='radio'], [type='checkbox']",{that:this},t),this.settings.invalidHandler&&d(this.currentForm).on("invalid-form.tc_validate",this.settings.invalidHandler)},form:function(){return this.checkForm(),d.extend(this.submitted,this.errorMap),this.invalid=d.extend({},this.errorMap),this.tc_valid()||d(this.currentForm).triggerHandler("invalid-form",[this]),this.showErrors(),this.tc_valid()},checkForm:function(){var t,e;for(this.prepareForm(),t=0,e=this.elements();e[t];t+=1)this.currentElements=e,this.check(e[t]);return this.tc_valid()},element:function(t){var e,i,s=this.clean(t),n=this.validationTargetFor(s),r=this,a=!0;return void 0===n?delete this.invalid[s.name]:(this.prepareElement(n),this.currentElements=d(n),(i=this.groups[n.name])&&d.each(this.groups,function(t,e){e===i&&t!==n.name&&(s=r.validationTargetFor(r.clean(r.findByName(t))))&&s.name in r.invalid&&(r.currentElements.push(s),a=r.check(s)&&a)}),e=!1!==this.check(n),a=a&&e,this.invalid[n.name]=!e,this.numberOfInvalids()||(this.toHide=this.toHide.add(this.containers)),this.showErrors(),d(t).attr("aria-invalid",!e)),a},showErrors:function(e){var i;e&&(d.extend((i=this).errorMap,e),this.errorList=d.map(this.errorMap,function(t,e){return{message:t,element:i.findByName(e)[0]}}),this.successList=d.grep(this.successList,function(t){return!(t.name in e)})),this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){var t;d.fn.resetForm&&d(this.currentForm).resetForm(),this.invalid={},this.submitted={},this.prepareForm(),this.hideErrors(),t=this.elements().removeData("previousValue").removeAttr("aria-invalid"),this.resetElements(t)},resetElements:function(t){var e;if(this.settings.unhighlight)for(e=0;t[e];e+=1)this.settings.unhighlight.call(this,t[e],this.settings.errorClass,""),this.findByName(t[e].name).removeClass(this.settings.validClass);else t.removeClass(this.settings.errorClass).removeClass(this.settings.validClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(t){var e,i=0;for(e in t)void 0!==t[e]&&null!==t[e]&&!1!==t[e]&&(i+=1);return i},hideErrors:function(){this.hideThese(this.toHide)},hideThese:function(t){t.not(this.containers).text(""),this.addWrapper(t).hide()},tc_valid:function(){return 0===this.size()},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{d(this.findLastActive()||this.errorList.length&&this.errorList[0].element||[]).filter(":visible").trigger("focus").trigger("focusin")}catch(t){}},findLastActive:function(){var e=this.lastActive;return e&&1===d.grep(this.errorList,function(t){return t.element.name===e.name}).length&&e},elements:function(){var e=this,i={};return d(this.currentForm).find("input, select, textarea, [contenteditable]").not(":submit, :reset, :image, :disabled").not(this.settings.ignore).filter(function(){var t=this.name||d(this).attr("name");return void 0!==d(this).attr("contenteditable")&&"false"!==d(this).attr("contenteditable")&&(this.form=d(this).closest("form")[0],this.name=t),this.form===e.currentForm&&!(t in i||!e.objectLength(d(this).tc_rules()))&&(i[t]=!0)})},clean:function(t){return d(t)[0]},errors:function(){var t=this.settings.errorClass.split(" ").join(".");return d(this.settings.errorElement+"."+t,this.errorContext)},resetInternals:function(){this.successList=[],this.errorList=[],this.errorMap={},this.toShow=d([]),this.toHide=d([])},reset:function(){this.resetInternals(),this.currentElements=d([])},prepareForm:function(){this.reset(),this.toHide=this.errors().add(this.containers)},prepareElement:function(t){this.reset(),this.toHide=this.errorsFor(t)},elementValue:function(t){var e=d(t),i=t.type,s=void 0!==e.attr("contenteditable")&&"false"!==e.attr("contenteditable");return"radio"===i||"checkbox"===i?this.findByName(t.name).filter(":checked").val():"number"===i&&void 0!==t.validity?t.validity.badInput?"NaN":e.val():(t=s?e.text():e.val(),"file"===i?"C:\\fakepath\\"===t.substring(0,12)?t.substring(12):0<=(s=t.lastIndexOf("/"))||0<=(s=t.lastIndexOf("\\"))?t.substring(s+1):t:"string"==typeof t?t.replace(/\r/g,""):t)},check:function(e){var t,i,s,n,r,a,o,l;for(a in e=this.validationTargetFor(this.clean(e)),t=d(e).tc_rules(),i=d.map(t,function(t,e){return e}).length,s=!1,n=this.elementValue(e),"function"==typeof t.normalizer?l=t.normalizer:"function"==typeof this.settings.normalizer&&(l=this.settings.normalizer),l&&(n=l.call(e,n),delete t.normalizer),t)if(a){o={method:a,parameters:t[a]};try{if("dependency-mismatch"===(r=d.tc_validator.methods[a].call(this,n,e,o.parameters))&&1===i)s=!0;else{if(s=!1,"pending"===r)return void(this.toHide=this.toHide.not(this.errorsFor(e)));if(!r)return this.formatAndAdd(e,o),!1}}catch(t){throw t instanceof TypeError&&(t.message+=".  Exception occurred when checking element "+e.id+", check the '"+o.method+"' method."),t}}if(!s)return this.objectLength(t)&&this.successList.push(e),!0},customDataMessage:function(t,e){return d(t).data("msg"+e.charAt(0).toUpperCase()+e.substring(1).toLowerCase())||d(t).data("msg")},customMessage:function(t,e){t=this.settings.messages[t];return t&&(t.constructor===String?t:t[e])},findDefined:function(){for(var t=0;t<arguments.length;t+=1)if(void 0!==arguments[t])return arguments[t]},defaultMessage:function(t,e){var i,s="";return"minlength"!==(e="string"==typeof e?{method:e}:e).method&&"maxlength"!==e.method||1!==e.parameters&&"1"!==e.parameters||(s="single"),i=/\$?\{(\d+)\}/g,"function"==typeof(s=this.findDefined(this.customMessage(t.name,e.method+s),this.customDataMessage(t,e.method+s),!this.settings.ignoreTitle&&t.title||void 0,d.tc_validator.messages[e.method+s],"<strong>Warning: No message defined for "+t.name+"</strong>"))?s=s.call(this,e.parameters,t):i.test(s)&&(s=d.tc_validator.format(s.replace(i,"{$1}"),e.parameters)),s},formatAndAdd:function(t,e){var i=this.defaultMessage(t,e);this.errorList.push({message:i,element:t,method:e.method}),this.errorMap[t.name]=i,this.submitted[t.name]=i},addWrapper:function(t){return t=this.settings.wrapper?t.add(t.parent(this.settings.wrapper)):t},defaultShowErrors:function(){for(var t,e,i=0;this.errorList[i];i+=1)e=this.errorList[i],this.settings.highlight&&this.settings.highlight.call(this,e.element,this.settings.errorClass,this.settings.validClass),this.showLabel(e.element,e.message);if(this.errorList.length&&(this.toShow=this.toShow.add(this.containers)),this.settings.success)for(i=0;this.successList[i];i+=1)this.showLabel(this.successList[i]);if(this.settings.unhighlight)for(i=0,t=this.validElements();t[i];i+=1)this.settings.unhighlight.call(this,t[i],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow),this.hideErrors(),this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return d(this.errorList).map(function(){return this.element})},showLabel:function(t,e){var i,s,n,r=this.errorsFor(t),a=this.idOrName(t),o=d(t).attr("aria-describedby");r.length?(r.removeClass(this.settings.validClass).addClass(this.settings.errorClass),r.html(e)):(s=r=d("<"+this.settings.errorElement+">").attr("id",a+"-error").addClass(this.settings.errorClass).html(e||""),this.settings.wrapper&&(s=r.hide().show().wrap("<"+this.settings.wrapper+"/>").parent()),this.labelContainer.length?this.labelContainer.append(s):this.settings.errorPlacement?this.settings.errorPlacement.call(this,s,d(t)):s.insertAfter(t),r.is("label")?r.attr("for",a):0===r.parents("label[for='"+this.escapeCssMeta(a)+"']").length&&(s=r.attr("id"),o?o.match(new RegExp("\\b"+this.escapeCssMeta(s)+"\\b"))||(o+=" "+s):o=s,d(t).attr("aria-describedby",o),i=this.groups[t.name])&&d.each((n=this).groups,function(t,e){e===i&&d("[name='"+n.escapeCssMeta(t)+"']",n.currentForm).attr("aria-describedby",r.attr("id"))})),!e&&this.settings.success&&(r.text(""),"string"==typeof this.settings.success?r.addClass(this.settings.success):this.settings.success(r,t)),this.toShow=this.toShow.add(r)},errorsFor:function(t){var e=this.escapeCssMeta(this.idOrName(t)),t=d(t).attr("aria-describedby"),e="label[for='"+e+"'], label[for='"+e+"'] *";return t&&(e=e+", #"+this.escapeCssMeta(t).replace(/\s+/g,", #")),this.errors().filter(e)},escapeCssMeta:function(t){return t.replace(/([\\!"#$%&'()*+,.\/:;<=>?@\[\]\^`{|}~])/g,"\\$1")},idOrName:function(t){return this.groups[t.name]||!this.checkable(t)&&t.id||t.name},validationTargetFor:function(t){return this.checkable(t)&&(t=this.findByName(t.name)),d(t).not(this.settings.ignore)[0]},checkable:function(t){return/radio|checkbox/i.test(t.type)},findByName:function(t){return d(this.currentForm).find("[name='"+this.escapeCssMeta(t)+"']")},getLength:function(t,e){switch(e.nodeName.toLowerCase()){case"select":return d("option:selected",e).length;case"input":if(this.checkable(e))return this.findByName(e.name).filter(":checked").length}return t.length},depend:function(t,e){return!this.dependTypes[typeof t]||this.dependTypes[typeof t](t,e)},dependTypes:{boolean:function(t){return t},string:function(t,e){return!!d(t,e.form).length},function:function(t,e){return t(e)}},optional:function(t){var e=this.elementValue(t);return!d.tc_validator.methods.required.call(this,e,t)&&"dependency-mismatch"},startRequest:function(t){this.pending[t.name]||(this.pendingRequest+=1,d(t).addClass(this.settings.pendingClass),this.pending[t.name]=!0)},stopRequest:function(t,e){--this.pendingRequest,this.pendingRequest<0&&(this.pendingRequest=0),delete this.pending[t.name],d(t).removeClass(this.settings.pendingClass),e&&0===this.pendingRequest&&this.formSubmitted&&this.form()?(d(this.currentForm).trigger("submit"),this.submitButton&&d("input:hidden[name='"+this.submitButton.name+"']",this.currentForm).remove(),this.formSubmitted=!1):!e&&0===this.pendingRequest&&this.formSubmitted&&(d(this.currentForm).triggerHandler("invalid-form",[this]),this.formSubmitted=!1)},previousValue:function(t,e){return e="string"==typeof e&&e||"remote",d.data(t,"previousValue")||d.data(t,"previousValue",{old:null,valid:!0,message:this.defaultMessage(t,{method:e})})},destroy:function(){this.resetForm(),d(this.currentForm).off(".tc_validate").removeData("tc_validator").find(".tc_validate-equalTo-blur").off(".tc_validate-equalTo").removeClass("validate-equalTo-blur").find(".tc_validate-lessThan-blur").off(".tc_validate-lessThan").removeClass("validate-lessThan-blur").find(".tc_validate-lessThanEqual-blur").off(".tc_validate-lessThanEqual").removeClass("validate-lessThanEqual-blur").find(".tc_validate-greaterThanEqual-blur").off(".tc_validate-greaterThanEqual").removeClass("validate-greaterThanEqual-blur").find(".tc_validate-greaterThan-blur").off(".tc_validate-greaterThan").removeClass("validate-greaterThan-blur")}},classRuleSettings:{required:{required:!0},email:{email:!0},url:{url:!0},date:{date:!0},dateISO:{dateISO:!0},number:{number:!0},digits:{digits:!0},creditcard:{creditcard:!0}},addClassRules:function(t,e){t.constructor===String?this.classRuleSettings[t]=e:d.extend(this.classRuleSettings,t)},classRules:function(t){var e={},t=d(t).attr("class");return t&&d.each(t.split(" "),function(){this in d.tc_validator.classRuleSettings&&d.extend(e,d.tc_validator.classRuleSettings[this])}),e},normalizeAttributeRule:function(t,e,i,s){(s=/min|max|step/.test(i)&&(null===e||/number|range|text/.test(e))&&(s=Number(s),isNaN(s))?void 0:s)||0===s?t[i]=s:e===i&&"range"!==e&&(t[i]=!0)},attributeRules:function(t){var e,i,s={},n=d(t),r=t.getAttribute("type");for(e in d.tc_validator.methods)e&&(i="required"===e?!!(i=""===(i=t.getAttribute(e))?!0:i):n.attr(e),this.normalizeAttributeRule(s,r,e,i));return s.maxlength&&/-1|2147483647|524288/.test(s.maxlength)&&delete s.maxlength,s},dataRules:function(t){var e,i,s={},n=d(t),r=t.getAttribute("type");for(e in d.tc_validator.methods)e&&(""===(i=n.data("rule"+e.charAt(0).toUpperCase()+e.substring(1).toLowerCase()))&&(i=!0),this.normalizeAttributeRule(s,r,e,i));return s},staticRules:function(t){var e={},i=d.data(t.form,"tc_validator");return e=i.settings.rules?d.tc_validator.normalizeRule(i.settings.rules[t.name])||{}:e},normalizeRules:function(i,s){var n;return d.each(i,function(t,e){if(!1===e)delete i[t];else if(e.param||e.depends){switch(n=!0,typeof e.depends){case"string":n=!!d(e.depends,s.form).length;break;case"function":n=e.depends.call(s,s)}n?i[t]=void 0===e.param||e.param:(d.data(s.form,"tc_validator").resetElements(d(s)),delete i[t])}}),d.each(i,function(t,e){i[t]="function"==typeof e&&"normalizer"!==t?e(s):e}),d.each(["minlength","maxlength"],function(){i[this]&&(i[this]=Number(i[this]))}),d.each(["rangelength","range"],function(){var t;i[this]&&(Array.isArray(i[this])?i[this]=[Number(i[this][0]),Number(i[this][1])]:"string"==typeof i[this]&&(t=i[this].replace(/[[\]]/g,"").split(/[\s,]+/),i[this]=[Number(t[0]),Number(t[1])]))}),d.tc_validator.autoCreateRanges&&(null!==i.min&&null!==i.max&&(i.range=[i.min,i.max],delete i.min,delete i.max),null!==i.minlength)&&null!==i.maxlength&&(i.rangelength=[i.minlength,i.maxlength],delete i.minlength,delete i.maxlength),i},normalizeRule:function(t){var e;return"string"==typeof t&&(e={},d.each(t.split(/\s/),function(){e[this]=!0}),t=e),t},addMethod:function(t,e,i){d.tc_validator.methods[t]=e,d.tc_validator.messages[t]=void 0!==i?i:d.tc_validator.messages[t],e.length<3&&d.tc_validator.addClassRules(t,d.tc_validator.normalizeRule(t))},methods:{required:function(t,e,i){return this.depend(i,e)?"select"===e.nodeName.toLowerCase()?(i=d(e).val())&&0<i.length:this.checkable(e)?0<this.getLength(t,e):null!=t&&0<t.length:"dependency-mismatch"},email:function(t,e){return this.optional(e)||/^[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(t)},url:function(t,e){return this.optional(e)||/^(?:(?:(?:https?|ftp):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?!(?: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(t)},date:function(t,e){return this.optional(e)||!/Invalid|NaN/.test(new Date(t).toString())},dateISO:function(t,e){return this.optional(e)||/^\d{4}[\/\-](0?[1-9]|1[012])[\/\-](0?[1-9]|[12][0-9]|3[01])$/.test(t)},number:function(t,e){return this.optional(e)||/^(?:-?\d+|-?\d{1,3}(?:,\d{3})+)?(?:\.\d+)?$/.test(t)},digits:function(t,e){return this.optional(e)||/^\d+$/.test(t)},minlength:function(t,e,i){t=Array.isArray(t)?t.length:this.getLength(t,e);return this.optional(e)||i<=t},maxlength:function(t,e,i){t=Array.isArray(t)?t.length:this.getLength(t,e);return this.optional(e)||t<=i},rangelength:function(t,e,i){t=Array.isArray(t)?t.length:this.getLength(t,e);return this.optional(e)||t>=i[0]&&t<=i[1]},min:function(t,e,i){return this.optional(e)||i<=t},max:function(t,e,i){return this.optional(e)||t<=i},range:function(t,e,i){return this.optional(e)||t>=i[0]&&t<=i[1]},step:function(t,e,i){function s(t){return(t=(""+t).match(/(?:\.(\d+))?$/))&&t[1]?t[1].length:0}function n(t){return Math.round(t*Math.pow(10,r))}var r,a=d(e).attr("type"),o="Step attribute on input type "+a+" is not supported.",l=new RegExp("\\b"+a+"\\b"),h=!0;if(a&&!l.test(["text","number","range"].join()))throw new Error(o);return r=s(i),(s(t)>r||n(t)%n(i)!=0)&&(h=!1),this.optional(e)||h},equalTo:function(t,e,i){i=d(i);return this.settings.onfocusout&&i.not(".tc_validate-equalTo-blur").length&&i.addClass("validate-equalTo-blur").on("blur.tc_validate-equalTo",function(){d(e).tc_valid()}),t===i.val()},remote:function(s,n,t,r){var a,o,e;return this.optional(n)?"dependency-mismatch":(r="string"==typeof r&&r||"remote",a=this.previousValue(n,r),this.settings.messages[n.name]||(this.settings.messages[n.name]={}),a.originalMessage=a.originalMessage||this.settings.messages[n.name][r],this.settings.messages[n.name][r]=a.message,e=d.param(d.extend({data:s},(t="string"==typeof t?{url:t}:t).data)),a.old===e?a.valid:(a.old=e,(o=this).startRequest(n),(e={})[n.name]=s,d.ajax(d.extend(!0,{mode:"abort",port:"validate"+n.name,dataType:"json",data:e,context:o.currentForm,success:function(t){var e,i=!0===t||"true"===t;o.settings.messages[n.name][r]=a.originalMessage,i?(e=o.formSubmitted,o.resetInternals(),o.toHide=o.errorsFor(n),o.formSubmitted=e,o.successList.push(n),o.invalid[n.name]=!1,o.showErrors()):(e={},t=t||o.defaultMessage(n,{method:r,parameters:s}),a.message=t,e[n.name]=t,o.invalid[n.name]=!0,o.showErrors(e)),a.valid=i,o.stopRequest(n,i)}},t)),"pending"))}}}),d.ajaxPrefilter?d.ajaxPrefilter(function(t,e,i){var s=t.port;"abort"===t.mode&&(n[s]&&n[s].abort(),n[s]=i)}):(i=d.ajax,d.ajax=function(t){var e=("mode"in t?t:d.ajaxSettings).mode,t=("port"in t?t:d.ajaxSettings).port;return"abort"===e?(n[t]&&n[t].abort(),n[t]=i.apply(this,arguments),n[t]):i.apply(this,arguments)}),d});