{"version":3,"file":"vee-validate.459294f7.js","sources":["../../../node_modules/vee-validate/dist/vee-validate.esm.js"],"sourcesContent":["/**\n * vee-validate v2.2.15\n * (c) 2019 Abdelrahman Awad\n * @license MIT\n */\n// \n\nvar isTextInput = function (el) {\n return includes(['text', 'password', 'search', 'email', 'tel', 'url', 'textarea', 'number'], el.type);\n};\n\nvar isCheckboxOrRadioInput = function (el) {\n return includes(['radio', 'checkbox'], el.type);\n};\n\nvar isDateInput = function (el) {\n return includes(['date', 'week', 'month', 'datetime-local', 'time'], el.type);\n};\n\n/**\n * Gets the data attribute. the name must be kebab-case.\n */\nvar getDataAttribute = function (el, name) { return el.getAttribute((\"data-vv-\" + name)); };\n\nvar isNaN$1 = function (value) {\n if ('isNaN' in Number) {\n return Number.isNaN(value);\n }\n\n // eslint-disable-next-line\n return typeof(value) === 'number' && value !== value;\n};\n\n/**\n * Checks if the values are either null or undefined.\n */\nvar isNullOrUndefined = function () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return values.every(function (value) {\n return value === null || value === undefined;\n });\n};\n\n/**\n * Creates the default flags object.\n */\nvar createFlags = function () { return ({\n untouched: true,\n touched: false,\n dirty: false,\n pristine: true,\n valid: null,\n invalid: null,\n validated: false,\n pending: false,\n required: false,\n changed: false\n}); };\n\n/**\n * Shallow object comparison.\n */\nvar isEqual = function (lhs, rhs) {\n if (lhs instanceof RegExp && rhs instanceof RegExp) {\n return isEqual(lhs.source, rhs.source) && isEqual(lhs.flags, rhs.flags);\n }\n\n if (Array.isArray(lhs) && Array.isArray(rhs)) {\n if (lhs.length !== rhs.length) { return false; }\n\n for (var i = 0; i < lhs.length; i++) {\n if (!isEqual(lhs[i], rhs[i])) {\n return false;\n }\n }\n\n return true;\n }\n\n // if both are objects, compare each key recursively.\n if (isObject(lhs) && isObject(rhs)) {\n return Object.keys(lhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n }) && Object.keys(rhs).every(function (key) {\n return isEqual(lhs[key], rhs[key]);\n });\n }\n\n if (isNaN$1(lhs) && isNaN$1(rhs)) {\n return true;\n }\n\n return lhs === rhs;\n};\n\n/**\n * Determines the input field scope.\n */\nvar getScope = function (el) {\n var scope = getDataAttribute(el, 'scope');\n if (isNullOrUndefined(scope)) {\n var form = getForm(el);\n\n if (form) {\n scope = getDataAttribute(form, 'scope');\n }\n }\n\n return !isNullOrUndefined(scope) ? scope : null;\n};\n\n/**\n * Get the closest form element.\n */\nvar getForm = function (el) {\n if (isNullOrUndefined(el)) { return null; }\n\n if (el.tagName === 'FORM') { return el; }\n\n if (!isNullOrUndefined(el.form)) { return el.form; }\n\n return !isNullOrUndefined(el.parentNode) ? getForm(el.parentNode) : null;\n};\n\n/**\n * Gets the value in an object safely.\n */\nvar getPath = function (path, target, def) {\n if ( def === void 0 ) def = undefined;\n\n if (!path || !target) { return def; }\n\n var value = target;\n path.split('.').every(function (prop) {\n if (prop in value) {\n value = value[prop];\n\n return true;\n }\n\n value = def;\n\n return false;\n });\n\n return value;\n};\n\n/**\n * Checks if path exists within an object.\n */\nvar hasPath = function (path, target) {\n var obj = target;\n var previousPath = null;\n var isNullOrNonObject = false;\n var isValidPath = path.split('.').reduce(function (reducer, prop) {\n if (obj == null || typeof obj !== 'object') {\n isNullOrNonObject = true;\n return reducer && false;\n }\n\n if (prop in obj) {\n obj = obj[prop];\n previousPath = previousPath === null ? prop : previousPath + '.' + prop;\n\n return reducer && true;\n }\n\n return reducer && false;\n }, true);\n\n if (process.env.NODE_ENV !== 'production') {\n if (isNullOrNonObject) {\n throw new Error(previousPath + ' is not an object');\n }\n }\n\n return isValidPath;\n};\n\n/**\n * Parses a rule string expression.\n */\nvar parseRule = function (rule) {\n var params = [];\n var name = rule.split(':')[0];\n\n if (includes(rule, ':')) {\n params = rule.split(':').slice(1).join(':').split(',');\n }\n\n return { name: name, params: params };\n};\n\n/**\n * Debounces a function.\n */\nvar debounce = function (fn, wait, token) {\n if ( wait === void 0 ) wait = 0;\n if ( token === void 0 ) token = { cancelled: false };\n\n if (wait === 0) {\n return fn;\n }\n\n var timeout;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n var later = function () {\n timeout = null;\n\n // check if the fn call was cancelled.\n if (!token.cancelled) { fn.apply(void 0, args); }\n };\n\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (!timeout) { fn.apply(void 0, args); }\n };\n};\n\n/**\n * Appends a rule definition to a list of rules.\n */\nvar appendRule = function (rule, rules) {\n if (!rules) {\n return normalizeRules(rule);\n }\n\n if (!rule) {\n return normalizeRules(rules);\n }\n\n if (typeof rules === 'string') {\n rules = normalizeRules(rules);\n }\n\n return assign({}, rules, normalizeRules(rule));\n};\n\n/**\n * Normalizes the given rules expression.\n */\nvar normalizeRules = function (rules) {\n // if falsy value return an empty object.\n if (!rules) {\n return {};\n }\n\n if (isObject(rules)) {\n // $FlowFixMe\n return Object.keys(rules).reduce(function (prev, curr) {\n var params = [];\n // $FlowFixMe\n if (rules[curr] === true) {\n params = [];\n } else if (Array.isArray(rules[curr])) {\n params = rules[curr];\n } else if (isObject(rules[curr])) {\n params = rules[curr];\n } else {\n params = [rules[curr]];\n }\n\n // $FlowFixMe\n if (rules[curr] !== false) {\n prev[curr] = params;\n }\n\n return prev;\n }, {});\n }\n\n if (typeof rules !== 'string') {\n warn('rules must be either a string or an object.');\n return {};\n }\n\n return rules.split('|').reduce(function (prev, rule) {\n var parsedRule = parseRule(rule);\n if (!parsedRule.name) {\n return prev;\n }\n\n prev[parsedRule.name] = parsedRule.params;\n return prev;\n }, {});\n};\n\n/**\n * Emits a warning to the console.\n */\nvar warn = function (message) {\n console.warn((\"[vee-validate] \" + message)); // eslint-disable-line\n};\n\n/**\n * Creates a branded error object.\n */\nvar createError = function (message) { return new Error((\"[vee-validate] \" + message)); };\n\n/**\n * Checks if the value is an object.\n */\nvar isObject = function (obj) { return obj !== null && obj && typeof obj === 'object' && ! Array.isArray(obj); };\n\n/**\n * Checks if a function is callable.\n */\nvar isCallable = function (func) { return typeof func === 'function'; };\n\n/**\n * Check if element has the css class on it.\n */\nvar hasClass = function (el, className) {\n if (el.classList) {\n return el.classList.contains(className);\n }\n\n return !!el.className.match(new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\")));\n};\n\n/**\n * Adds the provided css className to the element.\n */\nvar addClass = function (el, className) {\n if (el.classList) {\n el.classList.add(className);\n return;\n }\n\n if (!hasClass(el, className)) {\n el.className += \" \" + className;\n }\n};\n\n/**\n * Remove the provided css className from the element.\n */\nvar removeClass = function (el, className) {\n if (el.classList) {\n el.classList.remove(className);\n return;\n }\n\n if (hasClass(el, className)) {\n var reg = new RegExp((\"(\\\\s|^)\" + className + \"(\\\\s|$)\"));\n el.className = el.className.replace(reg, ' ');\n }\n};\n\n/**\n * Adds or removes a class name on the input depending on the status flag.\n */\nvar toggleClass = function (el, className, status) {\n if (!el || !className) { return; }\n\n if (Array.isArray(className)) {\n className.forEach(function (item) { return toggleClass(el, item, status); });\n return;\n }\n\n if (status) {\n return addClass(el, className);\n }\n\n removeClass(el, className);\n};\n\n/**\n * Converts an array-like object to array, provides a simple polyfill for Array.from\n */\nvar toArray = function (arrayLike) {\n if (isCallable(Array.from)) {\n return Array.from(arrayLike);\n }\n\n var array = [];\n var length = arrayLike.length;\n /* istanbul ignore next */\n for (var i = 0; i < length; i++) {\n array.push(arrayLike[i]);\n }\n\n /* istanbul ignore next */\n return array;\n};\n\n/**\n * Converts an array-like object to array and place other elements in an array\n */\nvar ensureArray = function (arrayLike) {\n if (Array.isArray(arrayLike)) {\n return [].concat( arrayLike );\n }\n var array = toArray(arrayLike);\n return isEmptyArray(array) ? [arrayLike] : array;\n};\n\n/**\n * Assign polyfill from the mdn.\n */\nvar assign = function (target) {\n var others = [], len = arguments.length - 1;\n while ( len-- > 0 ) others[ len ] = arguments[ len + 1 ];\n\n /* istanbul ignore else */\n if (isCallable(Object.assign)) {\n return Object.assign.apply(Object, [ target ].concat( others ));\n }\n\n /* istanbul ignore next */\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n /* istanbul ignore next */\n var to = Object(target);\n /* istanbul ignore next */\n others.forEach(function (arg) {\n // Skip over if undefined or null\n if (arg != null) {\n Object.keys(arg).forEach(function (key) {\n to[key] = arg[key];\n });\n }\n });\n /* istanbul ignore next */\n return to;\n};\n\nvar id = 0;\nvar idTemplate = '{id}';\n\n/**\n * Generates a unique id.\n */\nvar uniqId = function () {\n // handle too many uses of uniqId, although unlikely.\n if (id >= 9999) {\n id = 0;\n // shift the template.\n idTemplate = idTemplate.replace('{id}', '_{id}');\n }\n\n id++;\n var newId = idTemplate.replace('{id}', String(id));\n\n return newId;\n};\n\nvar findIndex = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n for (var i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return i;\n }\n }\n\n return -1;\n};\n\n/**\n * finds the first element that satisfies the predicate callback, polyfills array.find\n */\nvar find = function (arrayLike, predicate) {\n var array = Array.isArray(arrayLike) ? arrayLike : toArray(arrayLike);\n var idx = findIndex(array, predicate);\n\n return idx === -1 ? undefined : array[idx];\n};\n\nvar isBuiltInComponent = function (vnode) {\n if (!vnode) {\n return false;\n }\n\n var tag = vnode.componentOptions.tag;\n\n return /^(keep-alive|transition|transition-group)$/.test(tag);\n};\n\nvar makeDelayObject = function (events, delay, delayConfig) {\n if (typeof delay === 'number') {\n return events.reduce(function (prev, e) {\n prev[e] = delay;\n return prev;\n }, {});\n }\n\n return events.reduce(function (prev, e) {\n if (typeof delay === 'object' && e in delay) {\n prev[e] = delay[e];\n return prev;\n }\n\n if (typeof delayConfig === 'number') {\n prev[e] = delayConfig;\n return prev;\n }\n\n prev[e] = (delayConfig && delayConfig[e]) || 0;\n\n return prev;\n }, {});\n};\n\nvar deepParseInt = function (input) {\n if (typeof input === 'number') { return input; }\n\n if (typeof input === 'string') { return parseInt(input); }\n\n var map = {};\n for (var element in input) {\n map[element] = parseInt(input[element]);\n }\n\n return map;\n};\n\nvar merge = function (target, source) {\n if (! (isObject(target) && isObject(source))) {\n return target;\n }\n\n Object.keys(source).forEach(function (key) {\n var obj, obj$1;\n\n if (isObject(source[key])) {\n if (! target[key]) {\n assign(target, ( obj = {}, obj[key] = {}, obj ));\n }\n\n merge(target[key], source[key]);\n return;\n }\n\n assign(target, ( obj$1 = {}, obj$1[key] = source[key], obj$1 ));\n });\n\n return target;\n};\n\nvar fillRulesFromElement = function (el, rules) {\n if (el.required) {\n rules = appendRule('required', rules);\n }\n\n if (isTextInput(el)) {\n if (el.type === 'email') {\n rules = appendRule((\"email\" + (el.multiple ? ':multiple' : '')), rules);\n }\n\n if (el.pattern) {\n rules = appendRule({ regex: el.pattern }, rules);\n }\n\n // 524288 is the max on some browsers and test environments.\n if (el.maxLength >= 0 && el.maxLength < 524288) {\n rules = appendRule((\"max:\" + (el.maxLength)), rules);\n }\n\n if (el.minLength > 0) {\n rules = appendRule((\"min:\" + (el.minLength)), rules);\n }\n\n if (el.type === 'number') {\n rules = appendRule('decimal', rules);\n if (el.min !== '') {\n rules = appendRule((\"min_value:\" + (el.min)), rules);\n }\n\n if (el.max !== '') {\n rules = appendRule((\"max_value:\" + (el.max)), rules);\n }\n }\n\n return rules;\n }\n\n if (isDateInput(el)) {\n var timeFormat = el.step && Number(el.step) < 60 ? 'HH:mm:ss' : 'HH:mm';\n\n if (el.type === 'date') {\n return appendRule('date_format:yyyy-MM-dd', rules);\n }\n\n if (el.type === 'datetime-local') {\n return appendRule((\"date_format:yyyy-MM-ddT\" + timeFormat), rules);\n }\n\n if (el.type === 'month') {\n return appendRule('date_format:yyyy-MM', rules);\n }\n\n if (el.type === 'week') {\n return appendRule('date_format:yyyy-[W]WW', rules);\n }\n\n if (el.type === 'time') {\n return appendRule((\"date_format:\" + timeFormat), rules);\n }\n }\n\n return rules;\n};\n\nvar values = function (obj) {\n if (isCallable(Object.values)) {\n return Object.values(obj);\n }\n\n // fallback to keys()\n /* istanbul ignore next */\n return Object.keys(obj).map(function (k) { return obj[k]; });\n};\n\nvar parseSelector = function (selector) {\n var rule = null;\n if (includes(selector, ':')) {\n rule = selector.split(':').pop();\n selector = selector.replace((\":\" + rule), '');\n }\n\n if (selector[0] === '#') {\n return {\n id: selector.slice(1),\n rule: rule,\n name: null,\n scope: null\n };\n }\n\n var scope = null;\n var name = selector;\n if (includes(selector, '.')) {\n var parts = selector.split('.');\n scope = parts[0];\n name = parts.slice(1).join('.');\n }\n\n return {\n id: null,\n scope: scope,\n name: name,\n rule: rule\n };\n};\n\nvar includes = function (collection, item) {\n return collection.indexOf(item) !== -1;\n};\n\nvar isEmptyArray = function (arr) {\n return Array.isArray(arr) && arr.length === 0;\n};\n\nvar defineNonReactive = function (obj, prop, value) {\n Object.defineProperty(obj, prop, {\n configurable: false,\n writable: true,\n value: value\n });\n};\n\n// \n\nvar LOCALE = 'en';\n\nvar Dictionary = function Dictionary (dictionary) {\n if ( dictionary === void 0 ) dictionary = {};\n\n this.container = {};\n this.merge(dictionary);\n};\n\nvar prototypeAccessors = { locale: { configurable: true } };\n\nprototypeAccessors.locale.get = function () {\n return LOCALE;\n};\n\nprototypeAccessors.locale.set = function (value) {\n LOCALE = value || 'en';\n};\n\nDictionary.prototype.hasLocale = function hasLocale (locale) {\n return !!this.container[locale];\n};\n\nDictionary.prototype.setDateFormat = function setDateFormat (locale, format) {\n if (!this.container[locale]) {\n this.container[locale] = {};\n }\n\n this.container[locale].dateFormat = format;\n};\n\nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n if (!this.container[locale] || !this.container[locale].dateFormat) {\n return null;\n }\n\n return this.container[locale].dateFormat;\n};\n\nDictionary.prototype.getMessage = function getMessage (locale, key, data) {\n var message = null;\n if (!this.hasMessage(locale, key)) {\n message = this._getDefaultMessage(locale);\n } else {\n message = this.container[locale].messages[key];\n }\n\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\n/**\n * Gets a specific message for field. falls back to the rule message.\n */\nDictionary.prototype.getFieldMessage = function getFieldMessage (locale, field, key, data) {\n if (!this.hasLocale(locale)) {\n return this.getMessage(locale, key, data);\n }\n\n var dict = this.container[locale].custom && this.container[locale].custom[field];\n if (!dict || !dict[key]) {\n return this.getMessage(locale, key, data);\n }\n\n var message = dict[key];\n return isCallable(message) ? message.apply(void 0, data) : message;\n};\n\nDictionary.prototype._getDefaultMessage = function _getDefaultMessage (locale) {\n if (this.hasMessage(locale, '_default')) {\n return this.container[locale].messages._default;\n }\n\n return this.container.en.messages._default;\n};\n\nDictionary.prototype.getAttribute = function getAttribute (locale, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n if (!this.hasAttribute(locale, key)) {\n return fallback;\n }\n\n return this.container[locale].attributes[key];\n};\n\nDictionary.prototype.hasMessage = function hasMessage (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].messages &&\n this.container[locale].messages[key]\n );\n};\n\nDictionary.prototype.hasAttribute = function hasAttribute (locale, key) {\n return !! (\n this.hasLocale(locale) &&\n this.container[locale].attributes &&\n this.container[locale].attributes[key]\n );\n};\n\nDictionary.prototype.merge = function merge$1 (dictionary) {\n merge(this.container, dictionary);\n};\n\nDictionary.prototype.setMessage = function setMessage (locale, key, message) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n \n if (!this.container[locale].messages) {\n this.container[locale].messages = {};\n }\n\n this.container[locale].messages[key] = message;\n};\n\nDictionary.prototype.setAttribute = function setAttribute (locale, key, attribute) {\n if (! this.hasLocale(locale)) {\n this.container[locale] = {\n messages: {},\n attributes: {}\n };\n }\n\n this.container[locale].attributes[key] = attribute;\n};\n\nObject.defineProperties( Dictionary.prototype, prototypeAccessors );\n\nvar drivers = {\n default: new Dictionary({\n en: {\n messages: {},\n attributes: {},\n custom: {}\n }\n })\n};\n\nvar currentDriver = 'default';\n\nvar DictionaryResolver = function DictionaryResolver () {};\n\nDictionaryResolver._checkDriverName = function _checkDriverName (driver) {\n if (!driver) {\n throw createError('you must provide a name to the dictionary driver');\n }\n};\n\nDictionaryResolver.setDriver = function setDriver (driver, implementation) {\n if ( implementation === void 0 ) implementation = null;\n\n this._checkDriverName(driver);\n if (implementation) {\n drivers[driver] = implementation;\n }\n\n currentDriver = driver;\n};\n\nDictionaryResolver.getDriver = function getDriver () {\n return drivers[currentDriver];\n};\n\n// \n\nvar ErrorBag = function ErrorBag (errorBag, id) {\n if ( errorBag === void 0 ) errorBag = null;\n if ( id === void 0 ) id = null;\n\n this.vmId = id || null;\n // make this bag a mirror of the provided one, sharing the same items reference.\n if (errorBag && errorBag instanceof ErrorBag) {\n this.items = errorBag.items;\n } else {\n this.items = [];\n }\n};\n\nErrorBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Adds an error to the internal array.\n */\nErrorBag.prototype.add = function add (error) {\n var ref;\n\n (ref = this.items).push.apply(\n ref, this._normalizeError(error)\n );\n};\n\n/**\n * Normalizes passed errors to an error array.\n */\nErrorBag.prototype._normalizeError = function _normalizeError (error) {\n var this$1 = this;\n\n if (Array.isArray(error)) {\n return error.map(function (e) {\n e.scope = !isNullOrUndefined(e.scope) ? e.scope : null;\n e.vmId = !isNullOrUndefined(e.vmId) ? e.vmId : (this$1.vmId || null);\n\n return e;\n });\n }\n\n error.scope = !isNullOrUndefined(error.scope) ? error.scope : null;\n error.vmId = !isNullOrUndefined(error.vmId) ? error.vmId : (this.vmId || null);\n\n return [error];\n};\n\n/**\n * Regenrates error messages if they have a generator function.\n */\nErrorBag.prototype.regenerate = function regenerate () {\n this.items.forEach(function (i) {\n i.msg = isCallable(i.regenerate) ? i.regenerate() : i.msg;\n });\n};\n\n/**\n * Updates a field error with the new field scope.\n */\nErrorBag.prototype.update = function update (id, error) {\n var item = find(this.items, function (i) { return i.id === id; });\n if (!item) {\n return;\n }\n\n var idx = this.items.indexOf(item);\n this.items.splice(idx, 1);\n item.scope = error.scope;\n this.items.push(item);\n};\n\n/**\n * Gets all error messages from the internal array.\n */\nErrorBag.prototype.all = function all (scope) {\n var this$1 = this;\n\n var filterFn = function (item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n\n return matchesVM && matchesScope;\n };\n\n return this.items.filter(filterFn).map(function (e) { return e.msg; });\n};\n\n/**\n * Checks if there are any errors in the internal array.\n */\nErrorBag.prototype.any = function any (scope) {\n var this$1 = this;\n\n var filterFn = function (item) {\n var matchesScope = true;\n var matchesVM = true;\n if (!isNullOrUndefined(scope)) {\n matchesScope = item.scope === scope;\n }\n\n if (!isNullOrUndefined(this$1.vmId)) {\n matchesVM = item.vmId === this$1.vmId;\n }\n\n return matchesVM && matchesScope;\n };\n\n return !!this.items.filter(filterFn).length;\n};\n\n/**\n * Removes all items from the internal array.\n */\nErrorBag.prototype.clear = function clear (scope) {\n var this$1 = this;\n\n var matchesVM = isNullOrUndefined(this.vmId) ? function () { return true; } : function (i) { return i.vmId === this$1.vmId; };\n var matchesScope = function (i) { return i.scope === scope; };\n if (arguments.length === 0) {\n matchesScope = function () { return true; };\n } else if (isNullOrUndefined(scope)) {\n scope = null;\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (matchesVM(this.items[i]) && matchesScope(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Collects errors into groups or for a specific field.\n */\nErrorBag.prototype.collect = function collect (field, scope, map) {\n var this$1 = this;\n if ( map === void 0 ) map = true;\n\n var isSingleField = !isNullOrUndefined(field) && !field.includes('*');\n var groupErrors = function (items) {\n var errors = items.reduce(function (collection, error) {\n if (!isNullOrUndefined(this$1.vmId) && error.vmId !== this$1.vmId) {\n return collection;\n }\n\n if (!collection[error.field]) {\n collection[error.field] = [];\n }\n\n collection[error.field].push(map ? error.msg : error);\n\n return collection;\n }, {});\n\n // reduce the collection to be a single array.\n if (isSingleField) {\n return values(errors)[0] || [];\n }\n\n return errors;\n };\n\n if (isNullOrUndefined(field)) {\n return groupErrors(this.items);\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n var collected = this.items.reduce(function (prev, curr) {\n if (isPrimary(curr)) {\n prev.primary.push(curr);\n }\n\n if (isAlt(curr)) {\n prev.alt.push(curr);\n }\n\n return prev;\n }, { primary: [], alt: [] });\n\n collected = collected.primary.length ? collected.primary : collected.alt;\n\n return groupErrors(collected);\n};\n\n/**\n * Gets the internal array length.\n */\nErrorBag.prototype.count = function count () {\n var this$1 = this;\n\n if (this.vmId) {\n return this.items.filter(function (e) { return e.vmId === this$1.vmId; }).length;\n }\n\n return this.items.length;\n};\n\n/**\n * Finds and fetches the first error message for the specified field id.\n */\nErrorBag.prototype.firstById = function firstById (id) {\n var error = find(this.items, function (i) { return i.id === id; });\n\n return error ? error.msg : undefined;\n};\n\n/**\n * Gets the first error message for a specific field.\n */\nErrorBag.prototype.first = function first (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n var selector = isNullOrUndefined(scope) ? field : (scope + \".\" + field);\n var match = this._match(selector);\n\n return match && match.msg;\n};\n\n/**\n * Returns the first error rule for the specified field\n */\nErrorBag.prototype.firstRule = function firstRule (field, scope) {\n var errors = this.collect(field, scope, false);\n\n return (errors.length && errors[0].rule) || undefined;\n};\n\n/**\n * Checks if the internal array has at least one error for the specified field.\n */\nErrorBag.prototype.has = function has (field, scope) {\n if ( scope === void 0 ) scope = null;\n\n return !!this.first(field, scope);\n};\n\n/**\n * Gets the first error message for a specific field and a rule.\n */\nErrorBag.prototype.firstByRule = function firstByRule (name, rule, scope) {\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule === rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Gets the first error message for a specific field that not match the rule.\n */\nErrorBag.prototype.firstNot = function firstNot (name, rule, scope) {\n if ( rule === void 0 ) rule = 'required';\n if ( scope === void 0 ) scope = null;\n\n var error = this.collect(name, scope, false).filter(function (e) { return e.rule !== rule; })[0];\n\n return (error && error.msg) || undefined;\n};\n\n/**\n * Removes errors by matching against the id or ids.\n */\nErrorBag.prototype.removeById = function removeById (id) {\n var condition = function (item) { return item.id === id; };\n if (Array.isArray(id)) {\n condition = function (item) { return id.indexOf(item.id) !== -1; };\n }\n\n for (var i = 0; i < this.items.length; ++i) {\n if (condition(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\n/**\n * Removes all error messages associated with a specific field.\n */\nErrorBag.prototype.remove = function remove (field, scope, vmId) {\n if (isNullOrUndefined(field)) {\n return;\n }\n\n var selector = isNullOrUndefined(scope) ? String(field) : (scope + \".\" + field);\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n var matches = function (item) { return isPrimary(item) || isAlt(item); };\n var shouldRemove = function (item) {\n if (isNullOrUndefined(vmId)) { return matches(item); }\n\n return matches(item) && item.vmId === vmId;\n };\n\n for (var i = 0; i < this.items.length; ++i) {\n if (shouldRemove(this.items[i])) {\n this.items.splice(i, 1);\n --i;\n }\n }\n};\n\nErrorBag.prototype._makeCandidateFilters = function _makeCandidateFilters (selector) {\n var this$1 = this;\n\n var matchesRule = function () { return true; };\n var matchesScope = function () { return true; };\n var matchesName = function () { return true; };\n var matchesVM = function () { return true; };\n\n var ref = parseSelector(selector);\n var id = ref.id;\n var rule = ref.rule;\n var scope = ref.scope;\n var name = ref.name;\n\n if (rule) {\n matchesRule = function (item) { return item.rule === rule; };\n }\n\n // match by id, can be combined with rule selection.\n if (id) {\n return {\n isPrimary: function (item) { return matchesRule(item) && (function (item) { return id === item.id; }); },\n isAlt: function () { return false; }\n };\n }\n\n if (isNullOrUndefined(scope)) {\n // if no scope specified, make sure the found error has no scope.\n matchesScope = function (item) { return isNullOrUndefined(item.scope); };\n } else {\n matchesScope = function (item) { return item.scope === scope; };\n }\n\n if (!isNullOrUndefined(name) && name !== '*') {\n matchesName = function (item) { return item.field === name; };\n }\n\n if (!isNullOrUndefined(this.vmId)) {\n matchesVM = function (item) { return item.vmId === this$1.vmId; };\n }\n\n // matches the first candidate.\n var isPrimary = function (item) {\n return matchesVM(item) && matchesName(item) && matchesRule(item) && matchesScope(item);\n };\n\n // matches a second candidate, which is a field with a name containing the '.' character.\n var isAlt = function (item) {\n return matchesVM(item) && matchesRule(item) && item.field === (scope + \".\" + name);\n };\n\n return {\n isPrimary: isPrimary,\n isAlt: isAlt\n };\n};\n\nErrorBag.prototype._match = function _match (selector) {\n if (isNullOrUndefined(selector)) {\n return undefined;\n }\n\n var ref = this._makeCandidateFilters(selector);\n var isPrimary = ref.isPrimary;\n var isAlt = ref.isAlt;\n\n return this.items.reduce(function (prev, item, idx, arr) {\n var isLast = idx === arr.length - 1;\n if (prev.primary) {\n return isLast ? prev.primary : prev;\n }\n\n if (isPrimary(item)) {\n prev.primary = item;\n }\n\n if (isAlt(item)) {\n prev.alt = item;\n }\n\n // keep going.\n if (!isLast) {\n return prev;\n }\n\n return prev.primary || prev.alt;\n }, {});\n};\n\nvar DEFAULT_CONFIG = {\n locale: 'en',\n delay: 0,\n errorBagName: 'errors',\n dictionary: null,\n fieldsBagName: 'fields',\n classes: false,\n classNames: null,\n events: 'input',\n inject: true,\n fastExit: true,\n aria: true,\n validity: false,\n mode: 'aggressive',\n useConstraintAttrs: true,\n i18n: null,\n i18nRootKey: 'validation'\n};\n\nvar currentConfig = assign({}, DEFAULT_CONFIG);\n\nvar resolveConfig = function (ctx) {\n var selfConfig = getPath('$options.$_veeValidate', ctx, {});\n\n return assign({}, currentConfig, selfConfig);\n};\n\nvar getConfig = function () { return currentConfig; };\n\nvar setConfig = function (newConf) {\n currentConfig = assign({}, currentConfig, newConf);\n};\n\n// VNode Utils\n\n// Gets the model object on the vnode.\nfunction findModel (vnode) {\n if (!vnode.data) {\n return null;\n }\n\n // Component Model\n if (vnode.data.model) {\n return vnode.data.model;\n }\n\n return !!(vnode.data.directives) && find(vnode.data.directives, function (d) { return d.name === 'model'; });\n}\n\nfunction extractChildren (vnode) {\n if (Array.isArray(vnode)) {\n return vnode;\n }\n\n if (Array.isArray(vnode.children)) {\n return vnode.children;\n }\n\n if (vnode.componentOptions && Array.isArray(vnode.componentOptions.children)) {\n return vnode.componentOptions.children;\n }\n\n return [];\n}\n\nfunction extractVNodes (vnode) {\n if (findModel(vnode)) {\n return [vnode];\n }\n\n var children = extractChildren(vnode);\n\n return children.reduce(function (nodes, node) {\n var candidates = extractVNodes(node);\n if (candidates.length) {\n nodes.push.apply(nodes, candidates);\n }\n\n return nodes;\n }, []);\n}\n\n// Resolves v-model config if exists.\nfunction findModelConfig (vnode) {\n if (!vnode.componentOptions) { return null; }\n\n return vnode.componentOptions.Ctor.options.model;\n}\n// Adds a listener to vnode listener object.\nfunction mergeVNodeListeners (obj, eventName, handler) {\n // Has a single listener, convert to array.\n if (isCallable(obj[eventName])) {\n var prevHandler = obj[eventName];\n obj[eventName] = [prevHandler];\n }\n\n // no listeners, create the array.\n if (isNullOrUndefined(obj[eventName])) {\n obj[eventName] = [];\n }\n\n obj[eventName].push(handler);\n}\n\n// Adds a listener to a native HTML vnode.\nfunction addNativeNodeListener (node, eventName, handler) {\n if (isNullOrUndefined(node.data.on)) {\n node.data.on = {};\n }\n\n mergeVNodeListeners(node.data.on, eventName, handler);\n}\n\n// Adds a listener to a Vue component vnode.\nfunction addComponentNodeListener (node, eventName, handler) {\n /* istanbul ignore next */\n if (!node.componentOptions.listeners) {\n node.componentOptions.listeners = {};\n }\n\n mergeVNodeListeners(node.componentOptions.listeners, eventName, handler);\n}\nfunction addVNodeListener (vnode, eventName, handler) {\n if (vnode.componentOptions) {\n addComponentNodeListener(vnode, eventName, handler);\n return;\n }\n\n addNativeNodeListener(vnode, eventName, handler);\n}\n// Determines if `change` should be used over `input` for listeners.\nfunction getInputEventName (vnode, model) {\n // Is a component.\n if (vnode.componentOptions) {\n var ref = findModelConfig(vnode) || { event: 'input' };\n var event = ref.event;\n\n return event;\n }\n\n // Lazy Models and select tag typically use change event\n if ((model && model.modifiers && model.modifiers.lazy) || vnode.tag === 'select') {\n return 'change';\n }\n\n // is a textual-type input.\n if (vnode.data.attrs && isTextInput({ type: vnode.data.attrs.type || 'text' })) {\n return 'input';\n }\n\n return 'change';\n}\n\nfunction normalizeSlots (slots, ctx) {\n return Object.keys(slots).reduce(function (arr, key) {\n slots[key].forEach(function (vnode) {\n if (!vnode.context) {\n slots[key].context = ctx;\n if (!vnode.data) {\n vnode.data = {};\n }\n vnode.data.slot = key;\n }\n });\n\n return arr.concat(slots[key]);\n }, []);\n}\nfunction createRenderless (h, children) {\n // Only render the first item of the node.\n if (Array.isArray(children) && children[0]) {\n return children[0];\n }\n\n // a single node.\n if (children) {\n return children;\n }\n\n // No slots, render nothing.\n return h();\n}\n\n/**\n * Generates the options required to construct a field.\n */\nvar Resolver = function Resolver () {};\n\nResolver.generate = function generate (el, binding, vnode) {\n var model = Resolver.resolveModel(binding, vnode);\n var options = resolveConfig(vnode.context);\n\n return {\n name: Resolver.resolveName(el, vnode),\n el: el,\n listen: !binding.modifiers.disable,\n bails: binding.modifiers.bails ? true : (binding.modifiers.continues === true ? false : undefined),\n scope: Resolver.resolveScope(el, binding, vnode),\n vm: vnode.context,\n expression: binding.value,\n component: vnode.componentInstance,\n classes: options.classes,\n classNames: options.classNames,\n getter: Resolver.resolveGetter(el, vnode, model),\n events: Resolver.resolveEvents(el, vnode) || options.events,\n model: model,\n delay: Resolver.resolveDelay(el, vnode, options),\n rules: Resolver.resolveRules(el, binding, vnode),\n immediate: !!binding.modifiers.initial || !!binding.modifiers.immediate,\n persist: !!binding.modifiers.persist,\n validity: options.validity && !vnode.componentInstance,\n aria: options.aria && !vnode.componentInstance,\n initialValue: Resolver.resolveInitialValue(vnode)\n };\n};\n\nResolver.getCtorConfig = function getCtorConfig (vnode) {\n if (!vnode.componentInstance) { return null; }\n\n var config = getPath('componentInstance.$options.$_veeValidate', vnode);\n\n return config;\n};\n\n/**\n * Resolves the rules defined on an element.\n */\nResolver.resolveRules = function resolveRules (el, binding, vnode) {\n var rules = '';\n if (!binding.value && (!binding || !binding.expression)) {\n rules = getDataAttribute(el, 'rules');\n }\n\n if (binding.value && includes(['string', 'object'], typeof binding.value.rules)) {\n rules = binding.value.rules;\n } else if (binding.value) {\n rules = binding.value;\n }\n\n if (vnode.componentInstance) {\n return rules;\n }\n\n // If validity is disabled, ignore field rules.\n var normalized = normalizeRules(rules);\n if (!getConfig().useConstraintAttrs) {\n return normalized;\n }\n\n return assign({}, fillRulesFromElement(el, {}), normalized);\n};\n\n/**\n * @param {*} vnode\n */\nResolver.resolveInitialValue = function resolveInitialValue (vnode) {\n var model = vnode.data.model || find(vnode.data.directives, function (d) { return d.name === 'model'; });\n\n return model && model.value;\n};\n\n/**\n * Resolves the delay value.\n * @param {*} el\n * @param {*} vnode\n * @param {Object} options\n */\nResolver.resolveDelay = function resolveDelay (el, vnode, options) {\n var delay = getDataAttribute(el, 'delay');\n var globalDelay = (options && 'delay' in options) ? options.delay : 0;\n\n if (!delay && vnode.componentInstance && vnode.componentInstance.$attrs) {\n delay = vnode.componentInstance.$attrs['data-vv-delay'];\n }\n\n if (!isObject(globalDelay)) {\n return deepParseInt(delay || globalDelay);\n }\n\n if (!isNullOrUndefined(delay)) {\n globalDelay.input = delay;\n }\n\n return deepParseInt(globalDelay);\n};\n\n/**\n * Resolves the events to validate in response to.\n * @param {*} el\n * @param {*} vnode\n */\nResolver.resolveEvents = function resolveEvents (el, vnode) {\n // resolve it from the root element.\n var events = getDataAttribute(el, 'validate-on');\n\n // resolve from data-vv-validate-on if its a vue component.\n if (!events && vnode.componentInstance && vnode.componentInstance.$attrs) {\n events = vnode.componentInstance.$attrs['data-vv-validate-on'];\n }\n\n // resolve it from $_veeValidate options.\n if (!events && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n events = config && config.events;\n }\n\n if (!events && getConfig().events) {\n events = getConfig().events;\n }\n\n // resolve the model event if its configured for custom components.\n if (events && vnode.componentInstance && includes(events, 'input')) {\n var ref = vnode.componentInstance.$options.model || { event: 'input' };\n var event = ref.event;\n // if the prop was configured but not the model.\n if (!event) {\n return events;\n }\n\n events = events.replace('input', event);\n }\n\n return events;\n};\n\n/**\n * Resolves the scope for the field.\n * @param {*} el\n * @param {*} binding\n */\nResolver.resolveScope = function resolveScope (el, binding, vnode) {\n if ( vnode === void 0 ) vnode = {};\n\n var scope = null;\n if (vnode.componentInstance && isNullOrUndefined(scope)) {\n scope = vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-scope'];\n }\n\n return !isNullOrUndefined(scope) ? scope : getScope(el);\n};\n\n/**\n * Checks if the node directives contains a v-model or a specified arg.\n * Args take priority over models.\n *\n * @return {Object}\n */\nResolver.resolveModel = function resolveModel (binding, vnode) {\n if (binding.arg) {\n return { expression: binding.arg };\n }\n\n var model = findModel(vnode);\n if (!model) {\n return null;\n }\n\n // https://github.com/vuejs/vue/blob/dev/src/core/util/lang.js#L26\n var watchable = !/[^\\w.$]/.test(model.expression) && hasPath(model.expression, vnode.context);\n var lazy = !!(model.modifiers && model.modifiers.lazy);\n\n if (!watchable) {\n return { expression: null, lazy: lazy };\n }\n\n return { expression: model.expression, lazy: lazy };\n};\n\n/**\n * Resolves the field name to trigger validations.\n * @return {String} The field name.\n */\nResolver.resolveName = function resolveName (el, vnode) {\n var name = getDataAttribute(el, 'name');\n\n if (!name && !vnode.componentInstance) {\n return el.name;\n }\n\n if (!name && vnode.componentInstance && vnode.componentInstance.$attrs) {\n name = vnode.componentInstance.$attrs['data-vv-name'] || vnode.componentInstance.$attrs['name'];\n }\n\n if (!name && vnode.componentInstance) {\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.name)) {\n var boundGetter = config.name.bind(vnode.componentInstance);\n\n return boundGetter();\n }\n\n return vnode.componentInstance.name;\n }\n\n return name;\n};\n\n/**\n * Returns a value getter input type.\n */\nResolver.resolveGetter = function resolveGetter (el, vnode, model) {\n if (model && model.expression) {\n return function () {\n return getPath(model.expression, vnode.context);\n };\n }\n\n if (vnode.componentInstance) {\n var path = getDataAttribute(el, 'value-path') || (vnode.componentInstance.$attrs && vnode.componentInstance.$attrs['data-vv-value-path']);\n if (path) {\n return function () {\n return getPath(path, vnode.componentInstance);\n };\n }\n\n var config = Resolver.getCtorConfig(vnode);\n if (config && isCallable(config.value)) {\n var boundGetter = config.value.bind(vnode.componentInstance);\n\n return function () {\n return boundGetter();\n };\n }\n\n var ref = vnode.componentInstance.$options.model || { prop: 'value' };\n var prop = ref.prop;\n\n return function () {\n return vnode.componentInstance[prop];\n };\n }\n\n switch (el.type) {\n case 'checkbox': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n\n els = toArray(els).filter(function (el) { return el.checked; });\n if (!els.length) { return undefined; }\n\n return els.map(function (checkbox) { return checkbox.value; });\n };\n case 'radio': return function () {\n var els = document.querySelectorAll((\"input[name=\\\"\" + (el.name) + \"\\\"]\"));\n var elm = find(els, function (el) { return el.checked; });\n\n return elm && elm.value;\n };\n case 'file': return function (context) {\n return toArray(el.files);\n };\n case 'select-multiple': return function () {\n return toArray(el.options).filter(function (opt) { return opt.selected; }).map(function (opt) { return opt.value; });\n };\n default: return function () {\n return el && el.value;\n };\n }\n};\n\nvar RULES = {};\n\nvar RuleContainer = function RuleContainer () {};\n\nvar staticAccessors = { rules: { configurable: true } };\n\nRuleContainer.add = function add (name, ref) {\n var validate = ref.validate;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\n RULES[name] = {\n validate: validate,\n options: options,\n paramNames: paramNames\n };\n};\n\nstaticAccessors.rules.get = function () {\n return RULES;\n};\n\nRuleContainer.has = function has (name) {\n return !!RULES[name];\n};\n\nRuleContainer.isImmediate = function isImmediate (name) {\n return !!(RULES[name] && RULES[name].options.immediate);\n};\n\nRuleContainer.isRequireRule = function isRequireRule (name) {\n return !!(RULES[name] && RULES[name].options.computesRequired);\n};\n\nRuleContainer.isTargetRule = function isTargetRule (name) {\n return !!(RULES[name] && RULES[name].options.hasTarget);\n};\n\nRuleContainer.remove = function remove (ruleName) {\n delete RULES[ruleName];\n};\n\nRuleContainer.getParamNames = function getParamNames (ruleName) {\n return RULES[ruleName] && RULES[ruleName].paramNames;\n};\n\nRuleContainer.getOptions = function getOptions (ruleName) {\n return RULES[ruleName] && RULES[ruleName].options;\n};\n\nRuleContainer.getValidatorMethod = function getValidatorMethod (ruleName) {\n return RULES[ruleName] ? RULES[ruleName].validate : null;\n};\n\nObject.defineProperties( RuleContainer, staticAccessors );\n\n// \n\nvar isEvent = function (evt) {\n return (typeof Event !== 'undefined' && isCallable(Event) && evt instanceof Event) || (evt && evt.srcElement);\n};\n\nvar normalizeEvents = function (evts) {\n if (!evts) { return []; }\n\n return (typeof evts === 'string' ? evts.split('|') : evts);\n};\n\nvar supportsPassive = true;\n\nvar detectPassiveSupport = function () {\n try {\n var opts = Object.defineProperty({}, 'passive', {\n get: function get () {\n supportsPassive = true;\n }\n });\n window.addEventListener('testPassive', null, opts);\n window.removeEventListener('testPassive', null, opts);\n } catch (e) {\n supportsPassive = false;\n }\n return supportsPassive;\n};\n\nvar addEventListener = function (el, eventName, cb) {\n el.addEventListener(eventName, cb, supportsPassive ? { passive: true } : false);\n};\n\n// \n\nvar DEFAULT_OPTIONS = {\n targetOf: null,\n immediate: false,\n persist: false,\n scope: null,\n listen: true,\n name: null,\n rules: {},\n vm: null,\n classes: false,\n validity: true,\n aria: true,\n events: 'input|blur',\n delay: 0,\n classNames: {\n touched: 'touched', // the control has been blurred\n untouched: 'untouched', // the control hasn't been blurred\n valid: 'valid', // model is valid\n invalid: 'invalid', // model is invalid\n pristine: 'pristine', // control has not been interacted with\n dirty: 'dirty' // control has been interacted with\n }\n};\n\nvar Field = function Field (options) {\n if ( options === void 0 ) options = {};\n\n this.id = uniqId();\n this.el = options.el;\n this.updated = false;\n this.vmId = options.vmId;\n defineNonReactive(this, 'dependencies', []);\n defineNonReactive(this, 'watchers', []);\n defineNonReactive(this, 'events', []);\n this.delay = 0;\n this.rules = {};\n this.forceRequired = false;\n this._cacheId(options);\n this.classNames = assign({}, DEFAULT_OPTIONS.classNames);\n options = assign({}, DEFAULT_OPTIONS, options);\n this._delay = !isNullOrUndefined(options.delay) ? options.delay : 0; // cache initial delay\n this.validity = options.validity;\n this.aria = options.aria;\n this.flags = options.flags || createFlags();\n defineNonReactive(this, 'vm', options.vm);\n defineNonReactive(this, 'componentInstance', options.component);\n this.ctorConfig = this.componentInstance ? getPath('$options.$_veeValidate', this.componentInstance) : undefined;\n this.update(options);\n // set initial value.\n this.initialValue = this.value;\n this.updated = false;\n};\n\nvar prototypeAccessors$1 = { validator: { configurable: true },isRequired: { configurable: true },isDisabled: { configurable: true },alias: { configurable: true },value: { configurable: true },bails: { configurable: true },rejectsFalse: { configurable: true } };\n\nprototypeAccessors$1.validator.get = function () {\n if (!this.vm || !this.vm.$validator) {\n return { validate: function () { return Promise.resolve(true); } };\n }\n\n return this.vm.$validator;\n};\n\nprototypeAccessors$1.isRequired.get = function () {\n return !!this.rules.required || this.forceRequired;\n};\n\nprototypeAccessors$1.isDisabled.get = function () {\n return !!(this.el && this.el.disabled);\n};\n\n/**\n * Gets the display name (user-friendly name).\n */\nprototypeAccessors$1.alias.get = function () {\n if (this._alias) {\n return this._alias;\n }\n\n var alias = null;\n if (this.ctorConfig && this.ctorConfig.alias) {\n alias = isCallable(this.ctorConfig.alias) ? this.ctorConfig.alias.call(this.componentInstance) : this.ctorConfig.alias;\n }\n\n if (!alias && this.el) {\n alias = getDataAttribute(this.el, 'as');\n }\n\n if (!alias && this.componentInstance) {\n return this.componentInstance.$attrs && this.componentInstance.$attrs['data-vv-as'];\n }\n\n return alias;\n};\n\n/**\n * Gets the input value.\n */\n\nprototypeAccessors$1.value.get = function () {\n if (!isCallable(this.getter)) {\n return undefined;\n }\n\n return this.getter();\n};\n\nprototypeAccessors$1.bails.get = function () {\n return this._bails;\n};\n\n/**\n * If the field rejects false as a valid value for the required rule.\n */\n\nprototypeAccessors$1.rejectsFalse.get = function () {\n if (this.componentInstance && this.ctorConfig) {\n return !!this.ctorConfig.rejectsFalse;\n }\n\n if (!this.el) {\n return false;\n }\n\n return this.el.type === 'checkbox';\n};\n\n/**\n * Determines if the instance matches the options provided.\n */\nField.prototype.matches = function matches (options) {\n var this$1 = this;\n\n if (!options) {\n return true;\n }\n\n if (options.id) {\n return this.id === options.id;\n }\n\n var matchesComponentId = isNullOrUndefined(options.vmId) ? function () { return true; } : function (id) { return id === this$1.vmId; };\n if (!matchesComponentId(options.vmId)) {\n return false;\n }\n\n if (options.name === undefined && options.scope === undefined) {\n return true;\n }\n\n if (options.scope === undefined) {\n return this.name === options.name;\n }\n\n if (options.name === undefined) {\n return this.scope === options.scope;\n }\n\n return options.name === this.name && options.scope === this.scope;\n};\n\n/**\n * Caches the field id.\n */\nField.prototype._cacheId = function _cacheId (options) {\n if (this.el && !options.targetOf) {\n this.el._veeValidateId = this.id;\n }\n};\n\n/**\n * Keeps a reference of the most current validation run.\n */\nField.prototype.waitFor = function waitFor (pendingPromise) {\n this._waitingFor = pendingPromise;\n};\n\nField.prototype.isWaitingFor = function isWaitingFor (promise) {\n return this._waitingFor === promise;\n};\n\n/**\n * Updates the field with changed data.\n */\nField.prototype.update = function update (options) {\n var this$1 = this;\n\n this.targetOf = options.targetOf || null;\n this.immediate = options.immediate || this.immediate || false;\n this.persist = options.persist || this.persist || false;\n\n // update errors scope if the field scope was changed.\n if (!isNullOrUndefined(options.scope) && options.scope !== this.scope && isCallable(this.validator.update)) {\n this.validator.update(this.id, { scope: options.scope });\n }\n this.scope = !isNullOrUndefined(options.scope) ? options.scope\n : !isNullOrUndefined(this.scope) ? this.scope : null;\n this.name = (!isNullOrUndefined(options.name) ? String(options.name) : options.name) || this.name || null;\n this.rules = options.rules !== undefined ? normalizeRules(options.rules) : this.rules;\n this._bails = options.bails !== undefined ? options.bails : this._bails;\n this.model = options.model || this.model;\n this.listen = options.listen !== undefined ? options.listen : this.listen;\n this.classes = (options.classes || this.classes || false) && !this.componentInstance;\n this.classNames = isObject(options.classNames) ? merge(this.classNames, options.classNames) : this.classNames;\n this.getter = isCallable(options.getter) ? options.getter : this.getter;\n this._alias = options.alias || this._alias;\n this.events = (options.events) ? normalizeEvents(options.events) : this.events;\n this.delay = makeDelayObject(this.events, options.delay || this.delay, this._delay);\n this.updateDependencies();\n this.addActionListeners();\n\n if (process.env.NODE_ENV !== 'production' && !this.name && !this.targetOf) {\n warn('A field is missing a \"name\" or \"data-vv-name\" attribute');\n }\n\n // update required flag flags\n if (options.rules !== undefined) {\n this.flags.required = this.isRequired;\n }\n\n if (Object.keys(options.rules || {}).length === 0 && this.updated) {\n var resetFlag = this.flags.validated;\n this.validator.validate((\"#\" + (this.id))).then(function () {\n this$1.flags.validated = resetFlag;\n });\n }\n\n // validate if it was validated before and field was updated and there was a rules mutation.\n if (this.flags.validated && options.rules !== undefined && this.updated) {\n this.validator.validate((\"#\" + (this.id)));\n }\n\n this.updated = true;\n this.addValueListeners();\n\n // no need to continue.\n if (!this.el) {\n return;\n }\n this.updateClasses();\n this.updateAriaAttrs();\n};\n\n/**\n * Resets field flags and errors.\n */\nField.prototype.reset = function reset () {\n var this$1 = this;\n\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n delete this._cancellationToken;\n }\n\n var defaults = createFlags();\n Object.keys(this.flags).filter(function (flag) { return flag !== 'required'; }).forEach(function (flag) {\n this$1.flags[flag] = defaults[flag];\n });\n\n // update initial value\n this.initialValue = this.value;\n this.flags.changed = false;\n\n this.addValueListeners();\n this.addActionListeners();\n this.updateClasses(true);\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Sets the flags and their negated counterparts, and updates the classes and re-adds action listeners.\n */\nField.prototype.setFlags = function setFlags (flags) {\n var this$1 = this;\n\n var negated = {\n pristine: 'dirty',\n dirty: 'pristine',\n valid: 'invalid',\n invalid: 'valid',\n touched: 'untouched',\n untouched: 'touched'\n };\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n // if it has a negation and was not specified, set it as well.\n if (negated[flag] && flags[negated[flag]] === undefined) {\n this$1.flags[negated[flag]] = !flags[flag];\n }\n });\n\n if (\n flags.untouched !== undefined ||\n flags.touched !== undefined ||\n flags.dirty !== undefined ||\n flags.pristine !== undefined\n ) {\n this.addActionListeners();\n }\n this.updateClasses();\n this.updateAriaAttrs();\n this.updateCustomValidity();\n};\n\n/**\n * Determines if the field requires references to target fields.\n*/\nField.prototype.updateDependencies = function updateDependencies () {\n var this$1 = this;\n\n // reset dependencies.\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n\n // we get the selectors for each field.\n var fields = Object.keys(this.rules).reduce(function (prev, r) {\n if (RuleContainer.isTargetRule(r)) {\n prev.push({ selector: this$1.rules[r][0], name: r });\n }\n\n return prev;\n }, []);\n\n if (!fields.length || !this.vm || !this.vm.$el) { return; }\n\n // must be contained within the same component, so we use the vm root element constrain our dom search.\n fields.forEach(function (ref$1) {\n var selector = ref$1.selector;\n var name = ref$1.name;\n\n var ref = this$1.vm.$refs[selector];\n var el = Array.isArray(ref) ? ref[0] : ref;\n if (!el) {\n return;\n }\n\n var options = {\n vm: this$1.vm,\n classes: this$1.classes,\n classNames: this$1.classNames,\n delay: this$1.delay,\n scope: this$1.scope,\n events: this$1.events.join('|'),\n immediate: this$1.immediate,\n targetOf: this$1.id\n };\n\n // probably a component.\n if (isCallable(el.$watch)) {\n options.component = el;\n options.el = el.$el;\n options.getter = Resolver.resolveGetter(el.$el, el.$vnode);\n } else {\n options.el = el;\n options.getter = Resolver.resolveGetter(el, {});\n }\n\n this$1.dependencies.push({ name: name, field: new Field(options) });\n });\n};\n\n/**\n * Removes listeners.\n */\nField.prototype.unwatch = function unwatch (tag) {\n if ( tag === void 0 ) tag = null;\n\n if (!tag) {\n this.watchers.forEach(function (w) { return w.unwatch(); });\n this.watchers = [];\n return;\n }\n\n this.watchers.filter(function (w) { return tag.test(w.tag); }).forEach(function (w) { return w.unwatch(); });\n this.watchers = this.watchers.filter(function (w) { return !tag.test(w.tag); });\n};\n\n/**\n * Updates the element classes depending on each field flag status.\n */\nField.prototype.updateClasses = function updateClasses (isReset) {\n var this$1 = this;\n if ( isReset === void 0 ) isReset = false;\n\n if (!this.classes || this.isDisabled) { return; }\n var applyClasses = function (el) {\n toggleClass(el, this$1.classNames.dirty, this$1.flags.dirty);\n toggleClass(el, this$1.classNames.pristine, this$1.flags.pristine);\n toggleClass(el, this$1.classNames.touched, this$1.flags.touched);\n toggleClass(el, this$1.classNames.untouched, this$1.flags.untouched);\n\n // remove valid/invalid classes on reset.\n if (isReset) {\n toggleClass(el, this$1.classNames.valid, false);\n toggleClass(el, this$1.classNames.invalid, false);\n }\n\n // make sure we don't set any classes if the state is undetermined.\n if (!isNullOrUndefined(this$1.flags.valid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.valid, this$1.flags.valid);\n }\n\n if (!isNullOrUndefined(this$1.flags.invalid) && this$1.flags.validated) {\n toggleClass(el, this$1.classNames.invalid, this$1.flags.invalid);\n }\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyClasses(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyClasses);\n};\n\n/**\n * Adds the listeners required for automatic classes and some flags.\n */\nField.prototype.addActionListeners = function addActionListeners () {\n var this$1 = this;\n\n // remove previous listeners.\n this.unwatch(/class/);\n\n if (!this.el) { return; }\n\n var onBlur = function () {\n this$1.flags.touched = true;\n this$1.flags.untouched = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.touched, true);\n toggleClass(this$1.el, this$1.classNames.untouched, false);\n }\n\n // only needed once.\n this$1.unwatch(/^class_blur$/);\n };\n\n var inputEvent = isTextInput(this.el) ? 'input' : 'change';\n var onInput = function () {\n this$1.flags.dirty = true;\n this$1.flags.pristine = false;\n if (this$1.classes) {\n toggleClass(this$1.el, this$1.classNames.pristine, false);\n toggleClass(this$1.el, this$1.classNames.dirty, true);\n }\n\n // only needed once.\n this$1.unwatch(/^class_input$/);\n };\n\n if (this.componentInstance && isCallable(this.componentInstance.$once)) {\n this.componentInstance.$once('input', onInput);\n this.componentInstance.$once('blur', onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.componentInstance.$off('input', onInput);\n }\n });\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.componentInstance.$off('blur', onBlur);\n }\n });\n return;\n }\n\n if (!this.el) { return; }\n\n addEventListener(this.el, inputEvent, onInput);\n // Checkboxes and radio buttons on Mac don't emit blur naturally, so we listen on click instead.\n var blurEvent = isCheckboxOrRadioInput(this.el) ? 'change' : 'blur';\n addEventListener(this.el, blurEvent, onBlur);\n this.watchers.push({\n tag: 'class_input',\n unwatch: function () {\n this$1.el.removeEventListener(inputEvent, onInput);\n }\n });\n\n this.watchers.push({\n tag: 'class_blur',\n unwatch: function () {\n this$1.el.removeEventListener(blurEvent, onBlur);\n }\n });\n};\n\nField.prototype.checkValueChanged = function checkValueChanged () {\n // handle some people initialize the value to null, since text inputs have empty string value.\n if (this.initialValue === null && this.value === '' && isTextInput(this.el)) {\n return false;\n }\n\n return this.value !== this.initialValue;\n};\n\n/**\n * Determines the suitable primary event to listen for.\n */\nField.prototype._determineInputEvent = function _determineInputEvent () {\n // if its a custom component, use the customized model event or the input event.\n if (this.componentInstance) {\n return (this.componentInstance.$options.model && this.componentInstance.$options.model.event) || 'input';\n }\n\n if (this.model && this.model.lazy) {\n return 'change';\n }\n\n if (isTextInput(this.el)) {\n return 'input';\n }\n\n return 'change';\n};\n\n/**\n * Determines the list of events to listen to.\n */\nField.prototype._determineEventList = function _determineEventList (defaultInputEvent) {\n var this$1 = this;\n\n // if no event is configured, or it is a component or a text input then respect the user choice.\n if (!this.events.length || this.componentInstance || isTextInput(this.el)) {\n return [].concat( this.events ).map(function (evt) {\n if (evt === 'input' && this$1.model && this$1.model.lazy) {\n return 'change';\n }\n\n return evt;\n });\n }\n\n // force suitable event for non-text type fields.\n return this.events.map(function (e) {\n if (e === 'input') {\n return defaultInputEvent;\n }\n\n return e;\n });\n};\n\n/**\n * Adds the listeners required for validation.\n */\nField.prototype.addValueListeners = function addValueListeners () {\n var this$1 = this;\n\n this.unwatch(/^input_.+/);\n if (!this.listen || !this.el) { return; }\n\n var token = { cancelled: false };\n var fn = this.targetOf ? function () {\n var target = this$1.validator._resolveField((\"#\" + (this$1.targetOf)));\n if (target && target.flags.validated) {\n this$1.validator.validate((\"#\" + (this$1.targetOf)));\n }\n } : function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n // if its a DOM event, resolve the value, otherwise use the first parameter as the value.\n if (args.length === 0 || isEvent(args[0])) {\n args[0] = this$1.value;\n }\n\n this$1.flags.pending = true;\n this$1._cancellationToken = token;\n this$1.validator.validate((\"#\" + (this$1.id)), args[0]);\n };\n\n var inputEvent = this._determineInputEvent();\n var events = this._determineEventList(inputEvent);\n\n // if on input validation is requested.\n if (includes(events, inputEvent)) {\n var ctx = null;\n var expression = null;\n var watchCtxVm = false;\n // if its watchable from the context vm.\n if (this.model && this.model.expression) {\n ctx = this.vm;\n expression = this.model.expression;\n watchCtxVm = true;\n }\n\n // watch it from the custom component vm instead.\n if (!expression && this.componentInstance && this.componentInstance.$options.model) {\n ctx = this.componentInstance;\n expression = this.componentInstance.$options.model.prop || 'value';\n }\n\n if (ctx && expression) {\n var debouncedFn = debounce(fn, this.delay[inputEvent], token);\n var unwatch = ctx.$watch(expression, debouncedFn);\n this.watchers.push({\n tag: 'input_model',\n unwatch: function () {\n this$1.vm.$nextTick(function () {\n unwatch();\n });\n }\n });\n\n // filter out input event when we are watching from the context vm.\n if (watchCtxVm) {\n events = events.filter(function (e) { return e !== inputEvent; });\n }\n }\n }\n\n // Add events.\n events.forEach(function (e) {\n var debouncedFn = debounce(fn, this$1.delay[e], token);\n\n this$1._addComponentEventListener(e, debouncedFn);\n this$1._addHTMLEventListener(e, debouncedFn);\n });\n};\n\nField.prototype._addComponentEventListener = function _addComponentEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.componentInstance) { return; }\n\n this.componentInstance.$on(evt, validate);\n this.watchers.push({\n tag: 'input_vue',\n unwatch: function () {\n this$1.componentInstance.$off(evt, validate);\n }\n });\n};\n\nField.prototype._addHTMLEventListener = function _addHTMLEventListener (evt, validate) {\n var this$1 = this;\n\n if (!this.el || this.componentInstance) { return; }\n\n // listen for the current element.\n var addListener = function (el) {\n addEventListener(el, evt, validate);\n this$1.watchers.push({\n tag: 'input_native',\n unwatch: function () {\n el.removeEventListener(evt, validate);\n }\n });\n };\n\n addListener(this.el);\n if (!isCheckboxOrRadioInput(this.el)) {\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(function (el) {\n // skip if it is added by v-validate and is not the current element.\n if (el._veeValidateId && el !== this$1.el) {\n return;\n }\n\n addListener(el);\n });\n};\n\n/**\n * Updates aria attributes on the element.\n */\nField.prototype.updateAriaAttrs = function updateAriaAttrs () {\n var this$1 = this;\n\n if (!this.aria || !this.el || !isCallable(this.el.setAttribute)) { return; }\n\n var applyAriaAttrs = function (el) {\n el.setAttribute('aria-required', this$1.isRequired ? 'true' : 'false');\n el.setAttribute('aria-invalid', this$1.flags.invalid ? 'true' : 'false');\n };\n\n if (!isCheckboxOrRadioInput(this.el)) {\n applyAriaAttrs(this.el);\n return;\n }\n\n var els = document.querySelectorAll((\"input[name=\\\"\" + (this.el.name) + \"\\\"]\"));\n toArray(els).forEach(applyAriaAttrs);\n};\n\n/**\n * Updates the custom validity for the field.\n */\nField.prototype.updateCustomValidity = function updateCustomValidity () {\n if (!this.validity || !this.el || !isCallable(this.el.setCustomValidity) || !this.validator.errors) { return; }\n\n this.el.setCustomValidity(this.flags.valid ? '' : (this.validator.errors.firstById(this.id) || ''));\n};\n\n/**\n * Removes all listeners.\n */\nField.prototype.destroy = function destroy () {\n // ignore the result of any ongoing validation.\n if (this._cancellationToken) {\n this._cancellationToken.cancelled = true;\n }\n\n this.unwatch();\n this.dependencies.forEach(function (d) { return d.field.destroy(); });\n this.dependencies = [];\n};\n\nObject.defineProperties( Field.prototype, prototypeAccessors$1 );\n\n// \n\nvar FieldBag = function FieldBag (items) {\n if ( items === void 0 ) items = [];\n\n this.items = items || [];\n this.itemsById = this.items.reduce(function (itemsById, item) {\n itemsById[item.id] = item;\n return itemsById;\n }, {});\n};\n\nvar prototypeAccessors$2 = { length: { configurable: true } };\n\nFieldBag.prototype[typeof Symbol === 'function' ? Symbol.iterator : '@@iterator'] = function () {\n var this$1 = this;\n\n var index = 0;\n return {\n next: function () {\n return { value: this$1.items[index++], done: index > this$1.items.length };\n }\n };\n};\n\n/**\n * Gets the current items length.\n */\n\nprototypeAccessors$2.length.get = function () {\n return this.items.length;\n};\n\n/**\n * Finds the first field that matches the provided matcher object.\n */\nFieldBag.prototype.find = function find$1 (matcher) {\n return find(this.items, function (item) { return item.matches(matcher); });\n};\n\n/**\n * Finds the field with the given id, using a plain object as a map to link\n * ids to items faster than by looping over the array and matching.\n */\nFieldBag.prototype.findById = function findById (id) {\n return this.itemsById[id] || null;\n};\n\n/**\n * Filters the items down to the matched fields.\n */\nFieldBag.prototype.filter = function filter (matcher) {\n // multiple matchers to be tried.\n if (Array.isArray(matcher)) {\n return this.items.filter(function (item) { return matcher.some(function (m) { return item.matches(m); }); });\n }\n\n return this.items.filter(function (item) { return item.matches(matcher); });\n};\n\n/**\n * Maps the field items using the mapping function.\n */\nFieldBag.prototype.map = function map (mapper) {\n return this.items.map(mapper);\n};\n\n/**\n * Finds and removes the first field that matches the provided matcher object, returns the removed item.\n */\nFieldBag.prototype.remove = function remove (matcher) {\n var item = null;\n if (matcher instanceof Field) {\n item = matcher;\n } else {\n item = this.find(matcher);\n }\n\n if (!item) { return null; }\n\n var index = this.items.indexOf(item);\n this.items.splice(index, 1);\n delete this.itemsById[item.id];\n\n return item;\n};\n\n/**\n * Adds a field item to the list.\n */\nFieldBag.prototype.push = function push (item) {\n if (! (item instanceof Field)) {\n throw createError('FieldBag only accepts instances of Field that has an id defined.');\n }\n\n if (!item.id) {\n throw createError('Field id must be defined.');\n }\n\n if (this.findById(item.id)) {\n throw createError((\"Field with id \" + (item.id) + \" is already added.\"));\n }\n\n this.items.push(item);\n this.itemsById[item.id] = item;\n};\n\nObject.defineProperties( FieldBag.prototype, prototypeAccessors$2 );\n\nvar ScopedValidator = function ScopedValidator (base, vm) {\n this.id = vm._uid;\n this._base = base;\n this._paused = false;\n\n // create a mirror bag with limited component scope.\n this.errors = new ErrorBag(base.errors, this.id);\n};\n\nvar prototypeAccessors$3 = { flags: { configurable: true },rules: { configurable: true },fields: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\nprototypeAccessors$3.flags.get = function () {\n var this$1 = this;\n\n return this._base.fields.items.filter(function (f) { return f.vmId === this$1.id; }).reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[(\"$\" + (field.scope))]) {\n acc[(\"$\" + (field.scope))] = {};\n }\n\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n};\n\nprototypeAccessors$3.rules.get = function () {\n return this._base.rules;\n};\n\nprototypeAccessors$3.fields.get = function () {\n return new FieldBag(this._base.fields.filter({ vmId: this.id }));\n};\n\nprototypeAccessors$3.dictionary.get = function () {\n return this._base.dictionary;\n};\n\nprototypeAccessors$3.locale.get = function () {\n return this._base.locale;\n};\n\nprototypeAccessors$3.locale.set = function (val) {\n this._base.locale = val;\n};\n\nScopedValidator.prototype.localize = function localize () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).localize.apply(ref, args);\n};\n\nScopedValidator.prototype.update = function update () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).update.apply(ref, args);\n};\n\nScopedValidator.prototype.attach = function attach (opts) {\n var attachOpts = assign({}, opts, { vmId: this.id });\n\n return this._base.attach(attachOpts);\n};\n\nScopedValidator.prototype.pause = function pause () {\n this._paused = true;\n};\n\nScopedValidator.prototype.resume = function resume () {\n this._paused = false;\n};\n\nScopedValidator.prototype.remove = function remove (ruleName) {\n return this._base.remove(ruleName);\n};\n\nScopedValidator.prototype.detach = function detach (name, scope) {\n return this._base.detach(name, scope, this.id);\n};\n\nScopedValidator.prototype.extend = function extend () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).extend.apply(ref, args);\n};\n\nScopedValidator.prototype.validate = function validate (descriptor, value, opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validate(descriptor, value, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.verify = function verify () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).verify.apply(ref, args);\n};\n\nScopedValidator.prototype.validateAll = function validateAll (values, opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validateAll(values, assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.validateScopes = function validateScopes (opts) {\n if ( opts === void 0 ) opts = {};\n\n if (this._paused) { return Promise.resolve(true); }\n\n return this._base.validateScopes(assign({}, { vmId: this.id }, opts || {}));\n};\n\nScopedValidator.prototype.destroy = function destroy () {\n delete this.id;\n delete this._base;\n};\n\nScopedValidator.prototype.reset = function reset (matcher) {\n return this._base.reset(Object.assign({}, matcher || {}, { vmId: this.id }));\n};\n\nScopedValidator.prototype.flag = function flag () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base).flag.apply(ref, args.concat( [this.id] ));\n};\n\nScopedValidator.prototype._resolveField = function _resolveField () {\n var ref;\n\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n return (ref = this._base)._resolveField.apply(ref, args);\n};\n\nObject.defineProperties( ScopedValidator.prototype, prototypeAccessors$3 );\n\nvar VALIDATOR = null;\n\nvar getValidator = function () {\n return VALIDATOR;\n};\n\nvar setValidator = function (value) {\n VALIDATOR = value;\n\n return value;\n};\n\n// \n\n/**\n * Checks if a parent validator instance was requested.\n */\nvar requestsValidator = function (injections) {\n if (isObject(injections) && injections.$validator) {\n return true;\n }\n\n return false;\n};\n\nvar mixin = {\n provide: function provide () {\n if (this.$validator && !isBuiltInComponent(this.$vnode)) {\n return {\n $validator: this.$validator\n };\n }\n\n return {};\n },\n beforeCreate: function beforeCreate () {\n // if built in do nothing.\n if (isBuiltInComponent(this.$vnode) || this.$options.$__veeInject === false) {\n return;\n }\n\n // if its a root instance set the config if it exists.\n if (!this.$parent) {\n setConfig(this.$options.$_veeValidate || {});\n }\n\n var options = resolveConfig(this);\n\n // if its a root instance, inject anyways, or if it requested a new instance.\n if (!this.$parent || (this.$options.$_veeValidate && /new/.test(this.$options.$_veeValidate.validator))) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n var requested = requestsValidator(this.$options.inject);\n\n // if automatic injection is enabled and no instance was requested.\n if (! this.$validator && options.inject && !requested) {\n this.$validator = new ScopedValidator(getValidator(), this);\n }\n\n // don't inject errors or fieldBag as no validator was resolved.\n if (!requested && !this.$validator) {\n return;\n }\n\n // There is a validator but it isn't injected, mark as reactive.\n if (!requested && this.$validator) {\n var Vue = this.$options._base; // the vue constructor.\n Vue.util.defineReactive(this.$validator, 'errors', this.$validator.errors);\n }\n\n if (!this.$options.computed) {\n this.$options.computed = {};\n }\n\n this.$options.computed[options.errorBagName || 'errors'] = function errorBagGetter () {\n return this.$validator.errors;\n };\n this.$options.computed[options.fieldsBagName || 'fields'] = function fieldBagGetter () {\n return this.$validator.fields.items.reduce(function (acc, field) {\n if (field.scope) {\n if (!acc[(\"$\" + (field.scope))]) {\n acc[(\"$\" + (field.scope))] = {};\n }\n\n acc[(\"$\" + (field.scope))][field.name] = field.flags;\n\n return acc;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n };\n },\n beforeDestroy: function beforeDestroy () {\n if (this.$validator && this._uid === this.$validator.id) {\n this.$validator.errors.clear(); // remove errors generated by this component.\n }\n }\n};\n\n// \n\n/**\n * Finds the requested field by id from the context object.\n */\nfunction findField (el, context) {\n if (!context || !context.$validator) {\n return null;\n }\n\n return context.$validator.fields.findById(el._veeValidateId);\n}\nvar directive = {\n bind: function bind (el, binding, vnode) {\n var validator = vnode.context.$validator;\n if (!validator) {\n if (process.env.NODE_ENV !== 'production') {\n warn(\"No validator instance is present on vm, did you forget to inject '$validator'?\");\n }\n\n return;\n }\n\n var fieldOptions = Resolver.generate(el, binding, vnode);\n validator.attach(fieldOptions);\n },\n inserted: function inserted (el, binding, vnode) {\n var field = findField(el, vnode.context);\n var scope = Resolver.resolveScope(el, binding, vnode);\n\n // skip if scope hasn't changed.\n if (!field || scope === field.scope) { return; }\n\n // only update scope.\n field.update({ scope: scope });\n\n // allows the field to re-evaluated once more in the update hook.\n field.updated = false;\n },\n update: function update (el, binding, vnode) {\n var field = findField(el, vnode.context);\n\n // make sure we don't do unneccasary work if no important change was done.\n if (!field || (field.updated && isEqual(binding.value, binding.oldValue))) { return; }\n var scope = Resolver.resolveScope(el, binding, vnode);\n var rules = Resolver.resolveRules(el, binding, vnode);\n\n field.update({\n scope: scope,\n rules: rules\n });\n },\n unbind: function unbind (el, binding, ref) {\n var context = ref.context;\n\n var field = findField(el, context);\n if (!field) { return; }\n\n context.$validator.detach(field);\n }\n};\n\n// \n\nvar Validator = function Validator (validations, options, pluginContainer) {\n if ( options === void 0 ) options = { fastExit: true };\n if ( pluginContainer === void 0 ) pluginContainer = null;\n\n this.errors = new ErrorBag();\n this.fields = new FieldBag();\n this._createFields(validations);\n this.paused = false;\n this.fastExit = !isNullOrUndefined(options && options.fastExit) ? options.fastExit : true;\n this.$vee = pluginContainer || {\n _vm: {\n $nextTick: function (cb) { return isCallable(cb) ? cb() : Promise.resolve(); },\n $emit: function () {},\n $off: function () {}\n }\n };\n};\n\nvar prototypeAccessors$4 = { rules: { configurable: true },dictionary: { configurable: true },flags: { configurable: true },locale: { configurable: true } };\nvar staticAccessors$1 = { rules: { configurable: true },dictionary: { configurable: true },locale: { configurable: true } };\n\n/**\n * @deprecated\n */\nstaticAccessors$1.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n\n return RuleContainer.rules;\n};\n\n/**\n * @deprecated\n */\nprototypeAccessors$4.rules.get = function () {\n if (process.env.NODE_ENV !== 'production') {\n warn('this accessor will be deprecated, use `import { rules } from \"vee-validate\"` instead.');\n }\n\n return RuleContainer.rules;\n};\n\nprototypeAccessors$4.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$1.dictionary.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$4.flags.get = function () {\n return this.fields.items.reduce(function (acc, field) {\n var obj;\n\n if (field.scope) {\n acc[(\"$\" + (field.scope))] = ( obj = {}, obj[field.name] = field.flags, obj );\n\n return acc;\n }\n\n acc[field.name] = field.flags;\n\n return acc;\n }, {});\n};\n\n/**\n * Getter for the current locale.\n */\nprototypeAccessors$4.locale.get = function () {\n return Validator.locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nprototypeAccessors$4.locale.set = function (value) {\n Validator.locale = value;\n};\n\nstaticAccessors$1.locale.get = function () {\n return DictionaryResolver.getDriver().locale;\n};\n\n/**\n * Setter for the validator locale.\n */\nstaticAccessors$1.locale.set = function (value) {\n var hasChanged = value !== DictionaryResolver.getDriver().locale;\n DictionaryResolver.getDriver().locale = value;\n if (hasChanged && Validator.$vee && Validator.$vee._vm) {\n Validator.$vee._vm.$emit('localeChanged');\n }\n};\n\n/**\n * Static constructor.\n * @deprecated\n */\nValidator.create = function create (validations, options) {\n if (process.env.NODE_ENV !== 'production') {\n warn('Please use `new` to create new validator instances.');\n }\n\n return new Validator(validations, options);\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator._guardExtend(name, validator);\n // rules imported from the minimal bundle\n // will have the options embedded in them\n var mergedOpts = validator.options || {};\n Validator._merge(name, {\n validator: validator,\n paramNames: (options && options.paramNames) || validator.paramNames,\n options: assign({ hasTarget: false, immediate: true }, mergedOpts, options || {})\n });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.remove = function remove (name) {\n if (process.env.NODE_ENV !== 'production') {\n warn('this method will be deprecated, you can still override your rules with `extend`');\n }\n\n RuleContainer.remove(name);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n*/\nValidator.prototype.localize = function localize (lang, dictionary) {\n Validator.localize(lang, dictionary);\n};\n\n/**\n * Adds and sets the current locale for the validator.\n */\nValidator.localize = function localize (lang, dictionary) {\n var obj;\n\n if (isObject(lang)) {\n DictionaryResolver.getDriver().merge(lang);\n return;\n }\n\n // merge the dictionary.\n if (dictionary) {\n var locale = lang || dictionary.name;\n dictionary = assign({}, dictionary);\n DictionaryResolver.getDriver().merge(( obj = {}, obj[locale] = dictionary, obj ));\n }\n\n if (lang) {\n // set the locale.\n Validator.locale = lang;\n }\n};\n\n/**\n * Registers a field to be validated.\n */\nValidator.prototype.attach = function attach (fieldOpts) {\n var this$1 = this;\n\n // We search for a field with the same name & scope, having persist enabled\n var oldFieldMatcher = { name: fieldOpts.name, scope: fieldOpts.scope, persist: true };\n var oldField = fieldOpts.persist ? this.fields.find(oldFieldMatcher) : null;\n\n if (oldField) {\n // We keep the flags of the old field, then we remove its instance\n fieldOpts.flags = oldField.flags;\n oldField.destroy();\n this.fields.remove(oldField);\n }\n\n // fixes initial value detection with v-model and select elements.\n var value = fieldOpts.initialValue;\n var field = new Field(fieldOpts);\n this.fields.push(field);\n\n // validate the field initially\n if (field.immediate) {\n this.$vee._vm.$nextTick(function () { return this$1.validate((\"#\" + (field.id)), value || field.value, { vmId: fieldOpts.vmId }); });\n } else {\n this._validate(field, value || field.value, { initial: true }).then(function (result) {\n field.flags.valid = result.valid;\n field.flags.invalid = !result.valid;\n });\n }\n\n return field;\n};\n\n/**\n * Sets the flags on a field.\n */\nValidator.prototype.flag = function flag (name, flags, uid) {\n if ( uid === void 0 ) uid = null;\n\n var field = this._resolveField(name, undefined, uid);\n if (!field || !flags) {\n return;\n }\n\n field.setFlags(flags);\n};\n\n/**\n * Removes a field from the validator.\n */\nValidator.prototype.detach = function detach (name, scope, uid) {\n var field = isCallable(name.destroy) ? name : this._resolveField(name, scope, uid);\n if (!field) { return; }\n\n // We destroy/remove the field & error instances if it's not a `persist` one\n if (!field.persist) {\n field.destroy();\n this.errors.remove(field.name, field.scope, field.vmId);\n this.fields.remove(field);\n }\n};\n\n/**\n * Adds a custom validator to the list of validation rules.\n */\nValidator.prototype.extend = function extend (name, validator, options) {\n if ( options === void 0 ) options = {};\n\n Validator.extend(name, validator, options);\n};\n\nValidator.prototype.reset = function reset (matcher) {\n var this$1 = this;\n\n // two ticks\n return this.$vee._vm.$nextTick().then(function () {\n return this$1.$vee._vm.$nextTick();\n }).then(function () {\n this$1.fields.filter(matcher).forEach(function (field) {\n field.waitFor(null);\n field.reset(); // reset field flags.\n this$1.errors.remove(field.name, field.scope, matcher && matcher.vmId);\n });\n });\n};\n\n/**\n * Updates a field, updating both errors and flags.\n */\nValidator.prototype.update = function update (id, ref) {\n var scope = ref.scope;\n\n var field = this._resolveField((\"#\" + id));\n if (!field) { return; }\n\n // remove old scope.\n this.errors.update(id, { scope: scope });\n};\n\n/**\n * Removes a rule from the list of validators.\n * @deprecated\n */\nValidator.prototype.remove = function remove (name) {\n Validator.remove(name);\n};\n\n/**\n * Validates a value against a registered field validations.\n */\nValidator.prototype.validate = function validate (fieldDescriptor, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n // overload to validate all.\n if (isNullOrUndefined(fieldDescriptor)) {\n return this.validateScopes({ silent: silent, vmId: vmId });\n }\n\n // overload to validate scope-less fields.\n if (fieldDescriptor === '*') {\n return this.validateAll(undefined, { silent: silent, vmId: vmId });\n }\n\n // if scope validation was requested.\n if (/^(.+)\\.\\*$/.test(fieldDescriptor)) {\n var matched = fieldDescriptor.match(/^(.+)\\.\\*$/)[1];\n return this.validateAll(matched);\n }\n\n var field = this._resolveField(fieldDescriptor);\n if (!field) {\n return this._handleFieldNotFound(fieldDescriptor);\n }\n\n if (!silent) { field.flags.pending = true; }\n if (value === undefined) {\n value = field.value;\n }\n\n var validationPromise = this._validate(field, value);\n field.waitFor(validationPromise);\n\n return validationPromise.then(function (result) {\n if (!silent && field.isWaitingFor(validationPromise)) {\n // allow next validation to mutate the state.\n field.waitFor(null);\n this$1._handleValidationResults([result], vmId);\n }\n\n return result.valid;\n });\n};\n\n/**\n * Pauses the validator.\n */\nValidator.prototype.pause = function pause () {\n this.paused = true;\n\n return this;\n};\n\n/**\n * Resumes the validator.\n */\nValidator.prototype.resume = function resume () {\n this.paused = false;\n\n return this;\n};\n\n/**\n * Validates each value against the corresponding field validations.\n */\nValidator.prototype.validateAll = function validateAll (values, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n var matcher = null;\n var providedValues = false;\n\n if (typeof values === 'string') {\n matcher = { scope: values, vmId: vmId };\n } else if (isObject(values)) {\n matcher = Object.keys(values).map(function (key) {\n return { name: key, vmId: vmId, scope: null };\n });\n providedValues = true;\n } else if (Array.isArray(values)) {\n matcher = values.map(function (key) {\n return typeof key === 'object' ? Object.assign({ vmId: vmId }, key) : { name: key, vmId: vmId };\n });\n } else {\n matcher = { scope: null, vmId: vmId };\n }\n\n return Promise.all(\n this.fields.filter(matcher).map(function (field) { return this$1._validate(field, providedValues ? values[field.name] : field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates all scopes.\n */\nValidator.prototype.validateScopes = function validateScopes (ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var silent = ref.silent;\n var vmId = ref.vmId;\n\n if (this.paused) { return Promise.resolve(true); }\n\n return Promise.all(\n this.fields.filter({ vmId: vmId }).map(function (field) { return this$1._validate(field, field.value); })\n ).then(function (results) {\n if (!silent) {\n this$1._handleValidationResults(results, vmId);\n }\n\n return results.every(function (t) { return t.valid; });\n });\n};\n\n/**\n * Validates a value against the rules.\n */\nValidator.prototype.verify = function verify (value, rules, options) {\n if ( options === void 0 ) options = {};\n\n var field = {\n name: (options && options.name) || '{field}',\n rules: normalizeRules(rules),\n bails: getPath('bails', options, true),\n forceRequired: false,\n get isRequired () {\n return !!this.rules.required || this.forceRequired;\n }\n };\n\n var targetRules = Object.keys(field.rules).filter(RuleContainer.isTargetRule);\n if (targetRules.length && options && isObject(options.values)) {\n field.dependencies = targetRules.map(function (rule) {\n var ref = field.rules[rule];\n var targetKey = ref[0];\n\n return {\n name: rule,\n field: { value: options.values[targetKey] }\n };\n });\n }\n\n return this._validate(field, value).then(function (result) {\n var errors = [];\n var ruleMap = {};\n result.errors.forEach(function (e) {\n errors.push(e.msg);\n ruleMap[e.rule] = e.msg;\n });\n\n return {\n valid: result.valid,\n errors: errors,\n failedRules: ruleMap\n };\n });\n};\n\n/**\n * Perform cleanup.\n */\nValidator.prototype.destroy = function destroy () {\n this.$vee._vm.$off('localeChanged');\n};\n\n/**\n * Creates the fields to be validated.\n */\nValidator.prototype._createFields = function _createFields (validations) {\n var this$1 = this;\n\n if (!validations) { return; }\n\n Object.keys(validations).forEach(function (field) {\n var options = assign({}, { name: field, rules: validations[field] });\n this$1.attach(options);\n });\n};\n\n/**\n * Date rules need the existence of a format, so date_format must be supplied.\n */\nValidator.prototype._getDateFormat = function _getDateFormat (validations) {\n var format = null;\n if (validations.date_format && Array.isArray(validations.date_format)) {\n format = validations.date_format[0];\n }\n\n return format || DictionaryResolver.getDriver().getDateFormat(this.locale);\n};\n\n/**\n * Formats an error message for field and a rule.\n */\nValidator.prototype._formatErrorMessage = function _formatErrorMessage (field, rule, data, targetName) {\n if ( data === void 0 ) data = {};\n if ( targetName === void 0 ) targetName = null;\n\n var name = this._getFieldDisplayName(field);\n var params = this._getLocalizedParams(rule, targetName);\n\n return DictionaryResolver.getDriver().getFieldMessage(this.locale, field.name, rule.name, [name, params, data]);\n};\n\n/**\n * We need to convert any object param to an array format since the locales do not handle params as objects yet.\n */\nValidator.prototype._convertParamObjectToArray = function _convertParamObjectToArray (obj, ruleName) {\n if (Array.isArray(obj)) {\n return obj;\n }\n\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames || !isObject(obj)) {\n return obj;\n }\n\n return paramNames.reduce(function (prev, paramName) {\n if (paramName in obj) {\n prev.push(obj[paramName]);\n }\n\n return prev;\n }, []);\n};\n\n/**\n * Translates the parameters passed to the rule (mainly for target fields).\n */\nValidator.prototype._getLocalizedParams = function _getLocalizedParams (rule, targetName) {\n if ( targetName === void 0 ) targetName = null;\n\n var params = this._convertParamObjectToArray(rule.params, rule.name);\n if (rule.options.hasTarget && params && params[0]) {\n var localizedName = targetName || DictionaryResolver.getDriver().getAttribute(this.locale, params[0], params[0]);\n return [localizedName].concat(params.slice(1));\n }\n\n return params;\n};\n\n/**\n * Resolves an appropriate display name, first checking 'data-as' or the registered 'prettyName'\n */\nValidator.prototype._getFieldDisplayName = function _getFieldDisplayName (field) {\n return field.alias || DictionaryResolver.getDriver().getAttribute(this.locale, field.name, field.name);\n};\n\n/**\n * Converts an array of params to an object with named properties.\n * Only works if the rule is configured with a paramNames array.\n * Returns the same params if it cannot convert it.\n */\nValidator.prototype._convertParamArrayToObj = function _convertParamArrayToObj (params, ruleName) {\n var paramNames = RuleContainer.getParamNames(ruleName);\n if (!paramNames) {\n return params;\n }\n\n if (isObject(params)) {\n // check if the object is either a config object or a single parameter that is an object.\n var hasKeys = paramNames.some(function (name) { return Object.keys(params).indexOf(name) !== -1; });\n // if it has some of the keys, return it as is.\n if (hasKeys) {\n return params;\n }\n // otherwise wrap the object in an array.\n params = [params];\n }\n\n // Reduce the paramsNames to a param object.\n return params.reduce(function (prev, value, idx) {\n prev[paramNames[idx]] = value;\n\n return prev;\n }, {});\n};\n\n/**\n * Tests a single input value against a rule.\n */\nValidator.prototype._test = function _test (field, value, rule) {\n var this$1 = this;\n\n var validator = RuleContainer.getValidatorMethod(rule.name);\n var params = Array.isArray(rule.params) ? toArray(rule.params) : rule.params;\n if (!params) {\n params = [];\n }\n\n var targetName = null;\n if (!validator || typeof validator !== 'function') {\n return Promise.reject(createError((\"No such validator '\" + (rule.name) + \"' exists.\")));\n }\n\n // has field dependencies.\n if (rule.options.hasTarget && field.dependencies) {\n var target = find(field.dependencies, function (d) { return d.name === rule.name; });\n if (target) {\n targetName = target.field.alias;\n params = [target.field.value].concat(params.slice(1));\n }\n } else if (rule.name === 'required' && field.rejectsFalse) {\n // invalidate false if no args were specified and the field rejects false by default.\n params = params.length ? params : [true];\n }\n\n if (rule.options.isDate) {\n var dateFormat = this._getDateFormat(field.rules);\n if (rule.name !== 'date_format') {\n params.push(dateFormat);\n }\n }\n\n var result = validator(value, this._convertParamArrayToObj(params, rule.name));\n\n // If it is a promise.\n if (isCallable(result.then)) {\n return result.then(function (values) {\n var allValid = true;\n var data = {};\n if (Array.isArray(values)) {\n allValid = values.every(function (t) { return (isObject(t) ? t.valid : t); });\n } else { // Is a single object/boolean.\n allValid = isObject(values) ? values.valid : values;\n data = values.data;\n }\n\n return {\n valid: allValid,\n data: result.data,\n errors: allValid ? [] : [this$1._createFieldError(field, rule, data, targetName)]\n };\n });\n }\n\n if (!isObject(result)) {\n result = { valid: result, data: {} };\n }\n\n return {\n valid: result.valid,\n data: result.data,\n errors: result.valid ? [] : [this._createFieldError(field, rule, result.data, targetName)]\n };\n};\n\n/**\n * Merges a validator object into the RULES and Messages.\n */\nValidator._merge = function _merge (name, ref) {\n var validator = ref.validator;\n var options = ref.options;\n var paramNames = ref.paramNames;\n\n var validate = isCallable(validator) ? validator : validator.validate;\n if (validator.getMessage) {\n DictionaryResolver.getDriver().setMessage(Validator.locale, name, validator.getMessage);\n }\n\n RuleContainer.add(name, {\n validate: validate,\n options: options,\n paramNames: paramNames\n });\n};\n\n/**\n * Guards from extension violations.\n */\nValidator._guardExtend = function _guardExtend (name, validator) {\n if (isCallable(validator)) {\n return;\n }\n\n if (!isCallable(validator.validate)) {\n throw createError(\n (\"Extension Error: The validator '\" + name + \"' must be a function or have a 'validate' method.\")\n );\n }\n};\n\n/**\n * Creates a Field Error Object.\n */\nValidator.prototype._createFieldError = function _createFieldError (field, rule, data, targetName) {\n var this$1 = this;\n\n return {\n id: field.id,\n vmId: field.vmId,\n field: field.name,\n msg: this._formatErrorMessage(field, rule, data, targetName),\n rule: rule.name,\n scope: field.scope,\n regenerate: function () {\n return this$1._formatErrorMessage(field, rule, data, targetName);\n }\n };\n};\n\n/**\n * Tries different strategies to find a field.\n */\nValidator.prototype._resolveField = function _resolveField (name, scope, uid) {\n if (name[0] === '#') {\n return this.fields.findById(name.slice(1));\n }\n\n if (!isNullOrUndefined(scope)) {\n return this.fields.find({ name: name, scope: scope, vmId: uid });\n }\n\n if (includes(name, '.')) {\n var ref = name.split('.');\n var fieldScope = ref[0];\n var fieldName = ref.slice(1);\n var field = this.fields.find({ name: fieldName.join('.'), scope: fieldScope, vmId: uid });\n if (field) {\n return field;\n }\n }\n\n return this.fields.find({ name: name, scope: null, vmId: uid });\n};\n\n/**\n * Handles when a field is not found.\n */\nValidator.prototype._handleFieldNotFound = function _handleFieldNotFound (name, scope) {\n var fullName = isNullOrUndefined(scope) ? name : (\"\" + (!isNullOrUndefined(scope) ? scope + '.' : '') + name);\n\n return Promise.reject(createError(\n (\"Validating a non-existent field: \\\"\" + fullName + \"\\\". Use \\\"attach()\\\" first.\")\n ));\n};\n\n/**\n * Handles validation results.\n */\nValidator.prototype._handleValidationResults = function _handleValidationResults (results, vmId) {\n var this$1 = this;\n\n var matchers = results.map(function (result) { return ({ id: result.id }); });\n this.errors.removeById(matchers.map(function (m) { return m.id; }));\n // remove by name and scope to remove any custom errors added.\n results.forEach(function (result) {\n this$1.errors.remove(result.field, result.scope, vmId);\n });\n var allErrors = results.reduce(function (prev, curr) {\n prev.push.apply(prev, curr.errors);\n\n return prev;\n }, []);\n\n this.errors.add(allErrors);\n\n // handle flags.\n this.fields.filter(matchers).forEach(function (field) {\n var result = find(results, function (r) { return r.id === field.id; });\n field.setFlags({\n pending: false,\n valid: result.valid,\n validated: true\n });\n });\n};\n\nValidator.prototype._shouldSkip = function _shouldSkip (field, value) {\n // field is configured to run through the pipeline regardless\n if (field.bails === false) {\n return false;\n }\n\n // disabled fields are skipped if useConstraintAttrs is enabled in config\n if (field.isDisabled && getConfig().useConstraintAttrs) {\n return true;\n }\n\n // skip if the field is not required and has an empty value.\n return !field.isRequired && (isNullOrUndefined(value) || value === '' || isEmptyArray(value));\n};\n\nValidator.prototype._shouldBail = function _shouldBail (field) {\n // if the field was configured explicitly.\n if (field.bails !== undefined) {\n return field.bails;\n }\n\n return this.fastExit;\n};\n\n/**\n * Starts the validation process.\n */\nValidator.prototype._validate = function _validate (field, value, ref) {\n var this$1 = this;\n if ( ref === void 0 ) ref = {};\n var initial = ref.initial;\n\n var requireRules = Object.keys(field.rules).filter(RuleContainer.isRequireRule);\n\n field.forceRequired = false;\n requireRules.forEach(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n\n if (isCallable(result.then)) { throw createError('Require rules cannot be async'); }\n if (!isObject(result)) { throw createError('Require rules has to return an object (see docs)'); }\n\n if (result.data.required === true) {\n field.forceRequired = true;\n }\n });\n\n if (this._shouldSkip(field, value)) {\n return Promise.resolve({ valid: true, id: field.id, field: field.name, scope: field.scope, errors: [] });\n }\n\n var promises = [];\n var errors = [];\n var isExitEarly = false;\n if (isCallable(field.checkValueChanged)) {\n field.flags.changed = field.checkValueChanged();\n }\n\n // use of '.some()' is to break iteration in middle by returning true\n Object.keys(field.rules).filter(function (rule) {\n if (!initial || !RuleContainer.has(rule)) { return true; }\n\n return RuleContainer.isImmediate(rule);\n }).some(function (rule) {\n var ruleOptions = RuleContainer.getOptions(rule);\n var result = this$1._test(field, value, { name: rule, params: field.rules[rule], options: ruleOptions });\n if (isCallable(result.then)) {\n promises.push(result);\n } else if (!result.valid && this$1._shouldBail(field)) {\n errors.push.apply(errors, result.errors);\n isExitEarly = true;\n } else {\n // promisify the result.\n promises.push(new Promise(function (resolve) { return resolve(result); }));\n }\n\n return isExitEarly;\n });\n\n if (isExitEarly) {\n return Promise.resolve({ valid: false, errors: errors, id: field.id, field: field.name, scope: field.scope });\n }\n\n return Promise.all(promises).then(function (results) {\n return results.reduce(function (prev, v) {\n var ref;\n\n if (!v.valid) {\n (ref = prev.errors).push.apply(ref, v.errors);\n }\n\n prev.valid = prev.valid && v.valid;\n\n return prev;\n }, { valid: true, errors: errors, id: field.id, field: field.name, scope: field.scope });\n });\n};\n\nObject.defineProperties( Validator.prototype, prototypeAccessors$4 );\nObject.defineProperties( Validator, staticAccessors$1 );\n\n// \n\nvar normalizeValue = function (value) {\n if (isObject(value)) {\n return Object.keys(value).reduce(function (prev, key) {\n prev[key] = normalizeValue(value[key]);\n\n return prev;\n }, {});\n }\n\n if (isCallable(value)) {\n return value('{0}', ['{1}', '{2}', '{3}']);\n }\n\n return value;\n};\n\nvar normalizeFormat = function (locale) {\n // normalize messages\n var dictionary = {};\n if (locale.messages) {\n dictionary.messages = normalizeValue(locale.messages);\n }\n\n if (locale.custom) {\n dictionary.custom = normalizeValue(locale.custom);\n }\n\n if (locale.attributes) {\n dictionary.attributes = locale.attributes;\n }\n\n if (!isNullOrUndefined(locale.dateFormat)) {\n dictionary.dateFormat = locale.dateFormat;\n }\n\n return dictionary;\n};\n\nvar I18nDictionary = function I18nDictionary (i18n, rootKey) {\n this.i18n = i18n;\n this.rootKey = rootKey;\n};\n\nvar prototypeAccessors$5 = { locale: { configurable: true } };\n\nprototypeAccessors$5.locale.get = function () {\n return this.i18n.locale;\n};\n\nprototypeAccessors$5.locale.set = function (value) {\n warn('Cannot set locale from the validator when using vue-i18n, use i18n.locale setter instead');\n};\n\nI18nDictionary.prototype.getDateFormat = function getDateFormat (locale) {\n return this.i18n.getDateTimeFormat(locale || this.locale);\n};\n\nI18nDictionary.prototype.setDateFormat = function setDateFormat (locale, value) {\n this.i18n.setDateTimeFormat(locale || this.locale, value);\n};\n\nI18nDictionary.prototype.getMessage = function getMessage (_, key, data) {\n var path = (this.rootKey) + \".messages.\" + key;\n var dataOptions = data;\n\n if (Array.isArray(data)) {\n dataOptions = [].concat.apply([], data);\n }\n\n if (this.i18n.te(path)) {\n return this.i18n.t(path, dataOptions);\n }\n\n // fallback to the fallback message\n if (this.i18n.te(path, this.i18n.fallbackLocale)) {\n return this.i18n.t(path, this.i18n.fallbackLocale, dataOptions);\n }\n\n // fallback to the root message\n return this.i18n.t(((this.rootKey) + \".messages._default\"), dataOptions);\n};\n\nI18nDictionary.prototype.getAttribute = function getAttribute (_, key, fallback) {\n if ( fallback === void 0 ) fallback = '';\n\n var path = (this.rootKey) + \".attributes.\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path);\n }\n\n return fallback;\n};\n\nI18nDictionary.prototype.getFieldMessage = function getFieldMessage (_, field, key, data) {\n var path = (this.rootKey) + \".custom.\" + field + \".\" + key;\n if (this.i18n.te(path)) {\n return this.i18n.t(path, data);\n }\n\n return this.getMessage(_, key, data);\n};\n\nI18nDictionary.prototype.merge = function merge$1 (dictionary) {\n var this$1 = this;\n\n Object.keys(dictionary).forEach(function (localeKey) {\n var obj;\n\n // i18n doesn't deep merge\n // first clone the existing locale (avoid mutations to locale)\n var clone = merge({}, getPath((localeKey + \".\" + (this$1.rootKey)), this$1.i18n.messages, {}));\n // Merge cloned locale with new one\n var locale = merge(clone, normalizeFormat(dictionary[localeKey]));\n this$1.i18n.mergeLocaleMessage(localeKey, ( obj = {}, obj[this$1.rootKey] = locale, obj ));\n if (locale.dateFormat) {\n this$1.i18n.setDateTimeFormat(localeKey, locale.dateFormat);\n }\n });\n};\n\nI18nDictionary.prototype.setMessage = function setMessage (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n messages: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nI18nDictionary.prototype.setAttribute = function setAttribute (locale, key, value) {\n var obj, obj$1;\n\n this.merge(( obj$1 = {}, obj$1[locale] = {\n attributes: ( obj = {}, obj[key] = value, obj )\n }, obj$1 ));\n};\n\nObject.defineProperties( I18nDictionary.prototype, prototypeAccessors$5 );\n\nvar aggressive = function () { return ({\n on: ['input']\n}); };\n\nvar lazy = function () { return ({\n on: ['change']\n}); };\n\nvar eager = function (ref) {\n var errors = ref.errors;\n\n if (errors.length) {\n return {\n on: ['input']\n };\n }\n\n return {\n on: ['change', 'blur']\n };\n};\n\nvar passive = function () { return ({\n on: []\n}); };\n\nvar modes = {\n aggressive: aggressive,\n eager: eager,\n passive: passive,\n lazy: lazy\n};\n\n// \n\nvar Vue;\nvar pendingPlugins;\nvar pluginInstance;\n\nvar VeeValidate$1 = function VeeValidate (config, _Vue) {\n this.configure(config);\n pluginInstance = this;\n if (_Vue) {\n Vue = _Vue;\n }\n this._validator = setValidator(\n new Validator(null, { fastExit: config && config.fastExit }, this)\n );\n this._initVM(this.config);\n this._initI18n(this.config);\n};\n\nvar prototypeAccessors$6 = { i18nDriver: { configurable: true },config: { configurable: true } };\nvar staticAccessors$2 = { i18nDriver: { configurable: true },config: { configurable: true } };\n\nVeeValidate$1.setI18nDriver = function setI18nDriver (driver, instance) {\n DictionaryResolver.setDriver(driver, instance);\n};\n\nVeeValidate$1.configure = function configure (cfg) {\n setConfig(cfg);\n};\n\nVeeValidate$1.setMode = function setMode (mode, implementation) {\n setConfig({ mode: mode });\n if (!implementation) {\n return;\n }\n\n if (!isCallable(implementation)) {\n throw new Error('A mode implementation must be a function');\n }\n\n modes[mode] = implementation;\n};\n\nVeeValidate$1.use = function use (plugin, options) {\n if ( options === void 0 ) options = {};\n\n if (!isCallable(plugin)) {\n return warn('The plugin must be a callable function');\n }\n\n // Don't install plugins until vee-validate is installed.\n if (!pluginInstance) {\n if (!pendingPlugins) {\n pendingPlugins = [];\n }\n pendingPlugins.push({ plugin: plugin, options: options });\n return;\n }\n\n plugin({ Validator: Validator, ErrorBag: ErrorBag, Rules: Validator.rules }, options);\n};\nVeeValidate$1.install = function install (_Vue, opts) {\n if (Vue && _Vue === Vue) {\n if (process.env.NODE_ENV !== 'production') {\n warn('already installed, Vue.use(VeeValidate) should only be called once.');\n }\n return;\n }\n\n Vue = _Vue;\n pluginInstance = new VeeValidate$1(opts);\n // inject the plugin container statically into the validator class\n Validator.$vee = pluginInstance;\n\n detectPassiveSupport();\n\n Vue.mixin(mixin);\n Vue.directive('validate', directive);\n if (pendingPlugins) {\n pendingPlugins.forEach(function (ref) {\n var plugin = ref.plugin;\n var options = ref.options;\n\n VeeValidate$1.use(plugin, options);\n });\n pendingPlugins = null;\n }\n};\n\nprototypeAccessors$6.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nstaticAccessors$2.i18nDriver.get = function () {\n return DictionaryResolver.getDriver();\n};\n\nprototypeAccessors$6.config.get = function () {\n return getConfig();\n};\n\nstaticAccessors$2.config.get = function () {\n return getConfig();\n};\n\nVeeValidate$1.prototype._initVM = function _initVM (config) {\n var this$1 = this;\n\n this._vm = new Vue({\n data: function () { return ({\n errors: this$1._validator.errors,\n fields: this$1._validator.fields\n }); }\n });\n};\n\nVeeValidate$1.prototype._initI18n = function _initI18n (config) {\n var this$1 = this;\n\n var dictionary = config.dictionary;\n var i18n = config.i18n;\n var i18nRootKey = config.i18nRootKey;\n var locale = config.locale;\n var onLocaleChanged = function () {\n if (dictionary) {\n this$1.i18nDriver.merge(dictionary);\n }\n\n this$1._validator.errors.regenerate();\n };\n\n // i18 is being used for localization.\n if (i18n) {\n VeeValidate$1.setI18nDriver('i18n', new I18nDictionary(i18n, i18nRootKey));\n i18n._vm.$watch('locale', onLocaleChanged);\n } else if (typeof window !== 'undefined') {\n this._vm.$on('localeChanged', onLocaleChanged);\n }\n\n if (dictionary) {\n this.i18nDriver.merge(dictionary);\n }\n\n if (locale && !i18n) {\n this._validator.localize(locale);\n }\n};\n\nVeeValidate$1.prototype.configure = function configure (cfg) {\n setConfig(cfg);\n};\n\nObject.defineProperties( VeeValidate$1.prototype, prototypeAccessors$6 );\nObject.defineProperties( VeeValidate$1, staticAccessors$2 );\n\nVeeValidate$1.mixin = mixin;\nVeeValidate$1.directive = directive;\nVeeValidate$1.Validator = Validator;\nVeeValidate$1.ErrorBag = ErrorBag;\n\n/**\n * Formates file size.\n *\n * @param {Number|String} size\n */\nvar formatFileSize = function (size) {\n var units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n var threshold = 1024;\n size = Number(size) * threshold;\n var i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold));\n return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + \" \" + (units[i]));\n};\n\n/**\n * Checks if vee-validate is defined globally.\n */\nvar isDefinedGlobally = function () {\n return typeof VeeValidate !== 'undefined';\n};\n\nvar obj;\n\nvar messages = {\n _default: function (field) { return (\"The \" + field + \" value is not valid\"); },\n after: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be after \" + (inclusion ? 'or equal to ' : '') + target);\n},\n alpha: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters\"); },\n alpha_dash: function (field) { return (\"The \" + field + \" field may contain alpha-numeric characters as well as dashes and underscores\"); },\n alpha_num: function (field) { return (\"The \" + field + \" field may only contain alpha-numeric characters\"); },\n alpha_spaces: function (field) { return (\"The \" + field + \" field may only contain alphabetic characters as well as spaces\"); },\n before: function (field, ref) {\n var target = ref[0];\n var inclusion = ref[1];\n\n return (\"The \" + field + \" must be before \" + (inclusion ? 'or equal to ' : '') + target);\n},\n between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" field must be between \" + min + \" and \" + max);\n},\n confirmed: function (field) { return (\"The \" + field + \" confirmation does not match\"); },\n credit_card: function (field) { return (\"The \" + field + \" field is invalid\"); },\n date_between: function (field, ref) {\n var min = ref[0];\n var max = ref[1];\n\n return (\"The \" + field + \" must be between \" + min + \" and \" + max);\n},\n date_format: function (field, ref) {\n var format = ref[0];\n\n return (\"The \" + field + \" must be in the format \" + format);\n},\n decimal: function (field, ref) {\n if ( ref === void 0 ) ref = [];\n var decimals = ref[0]; if ( decimals === void 0 ) decimals = '*';\n\n return (\"The \" + field + \" field must be numeric and may contain\" + (!decimals || decimals === '*' ? '' : ' ' + decimals) + \" decimal points\");\n},\n digits: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be numeric and contains exactly \" + length + \" digits\");\n},\n dimensions: function (field, ref) {\n var width = ref[0];\n var height = ref[1];\n\n return (\"The \" + field + \" field must be \" + width + \" pixels by \" + height + \" pixels\");\n},\n email: function (field) { return (\"The \" + field + \" field must be a valid email\"); },\n excluded: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n ext: function (field) { return (\"The \" + field + \" field must be a valid file\"); },\n image: function (field) { return (\"The \" + field + \" field must be an image\"); },\n included: function (field) { return (\"The \" + field + \" field must be a valid value\"); },\n integer: function (field) { return (\"The \" + field + \" field must be an integer\"); },\n ip: function (field) { return (\"The \" + field + \" field must be a valid ip address\"); },\n ip_or_fqdn: function (field) { return (\"The \" + field + \" field must be a valid ip address or FQDN\"); },\n length: function (field, ref) {\n var length = ref[0];\n var max = ref[1];\n\n if (max) {\n return (\"The \" + field + \" length must be between \" + length + \" and \" + max);\n }\n\n return (\"The \" + field + \" length must be \" + length);\n },\n max: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field may not be greater than \" + length + \" characters\");\n},\n max_value: function (field, ref) {\n var max = ref[0];\n\n return (\"The \" + field + \" field must be \" + max + \" or less\");\n},\n mimes: function (field) { return (\"The \" + field + \" field must have a valid file type\"); },\n min: function (field, ref) {\n var length = ref[0];\n\n return (\"The \" + field + \" field must be at least \" + length + \" characters\");\n},\n min_value: function (field, ref) {\n var min = ref[0];\n\n return (\"The \" + field + \" field must be \" + min + \" or more\");\n},\n numeric: function (field) { return (\"The \" + field + \" field may only contain numeric characters\"); },\n regex: function (field) { return (\"The \" + field + \" field format is invalid\"); },\n required: function (field) { return (\"The \" + field + \" field is required\"); },\n required_if: function (field, ref) {\n var target = ref[0];\n\n return (\"The \" + field + \" field is required when the \" + target + \" field has this value\");\n},\n size: function (field, ref) {\n var size = ref[0];\n\n return (\"The \" + field + \" size must be less than \" + (formatFileSize(size)));\n},\n url: function (field) { return (\"The \" + field + \" field is not a valid URL\"); }\n};\n\nvar locale = {\n name: 'en',\n messages: messages,\n attributes: {}\n};\n\nif (isDefinedGlobally()) {\n // eslint-disable-next-line\n VeeValidate.Validator.localize(( obj = {}, obj[locale.name] = locale, obj ));\n}\n\nfunction toInteger (dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN\n }\n\n var number = Number(dirtyNumber);\n\n if (isNaN(number)) {\n return number\n }\n\n return number < 0 ? Math.ceil(number) : Math.floor(number)\n}\n\nvar MILLISECONDS_IN_MINUTE = 60000;\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds (dirtyDate) {\n var date = new Date(dirtyDate.getTime());\n var baseTimezoneOffset = date.getTimezoneOffset();\n date.setSeconds(0, 0);\n var millisecondsPartOfTimezoneOffset = date.getTime() % MILLISECONDS_IN_MINUTE;\n\n return baseTimezoneOffset * MILLISECONDS_IN_MINUTE + millisecondsPartOfTimezoneOffset\n}\n\nvar MILLISECONDS_IN_HOUR = 3600000;\nvar MILLISECONDS_IN_MINUTE$1 = 60000;\nvar DEFAULT_ADDITIONAL_DIGITS = 2;\n\nvar patterns = {\n dateTimeDelimeter: /[T ]/,\n plainTime: /:/,\n timeZoneDelimeter: /[Z ]/i,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/ // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/ // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // timezone tokens\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-])(\\d{2})$/,\n timezoneHHMM: /^([+-])(\\d{2}):?(\\d{2})$/\n};\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nfunction toDate (argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {};\n\n var additionalDigits = options.additionalDigits == null ? DEFAULT_ADDITIONAL_DIGITS : toInteger(options.additionalDigits);\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (typeof argument === 'number' || Object.prototype.toString.call(argument) === '[object Number]') {\n return new Date(argument)\n } else if (!(typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]')) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument);\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits);\n var year = parseYearResult.year;\n var restDateString = parseYearResult.restDateString;\n\n var date = parseDate(restDateString, year);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime();\n var time = 0;\n var offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in timezones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time));\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset));\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString (dateString) {\n var dateStrings = {};\n var array = dateString.split(patterns.dateTimeDelimeter);\n var timeString;\n\n if (patterns.plainTime.test(array[0])) {\n dateStrings.date = null;\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimeter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimeter)[0];\n timeString = dateString.substr(dateStrings.date.length, dateString.length);\n }\n }\n\n if (timeString) {\n var token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], '');\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear (dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits];\n var patternYYYYY = patterns.YYYYY[additionalDigits];\n\n var token;\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString);\n if (token) {\n var yearString = token[1];\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length)\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString);\n if (token) {\n var centuryString = token[1];\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length)\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null\n }\n}\n\nfunction parseDate (dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token;\n var date;\n var month;\n var week;\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0);\n date.setUTCFullYear(year);\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month);\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString);\n if (token) {\n date = new Date(0);\n var dayOfYear = parseInt(token[1], 10);\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear);\n return date\n }\n\n // YYYY-MM-DD or YYYYMMDD\n token = patterns.MMDD.exec(dateString);\n if (token) {\n date = new Date(0);\n month = parseInt(token[1], 10) - 1;\n var day = parseInt(token[2], 10);\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day);\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString);\n if (token) {\n week = parseInt(token[1], 10) - 1;\n var dayOfWeek = parseInt(token[2], 10) - 1;\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime (timeString) {\n var token;\n var hours;\n var minutes;\n\n // hh\n token = patterns.HH.exec(timeString);\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'));\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseFloat(token[2].replace(',', '.'));\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE$1\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString);\n if (token) {\n hours = parseInt(token[1], 10);\n minutes = parseInt(token[2], 10);\n var seconds = parseFloat(token[3].replace(',', '.'));\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR +\n minutes * MILLISECONDS_IN_MINUTE$1 +\n seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction parseTimezone (timezoneString) {\n var token;\n var absoluteOffset;\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString);\n if (token) {\n return 0\n }\n\n var hours;\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n\n if (!validateTimezone()) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString);\n if (token) {\n hours = parseInt(token[2], 10);\n var minutes = parseInt(token[3], 10);\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = hours * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE$1;\n return (token[1] === '+') ? -absoluteOffset : absoluteOffset\n }\n\n return 0\n}\n\nfunction dayOfISOWeekYear (isoWeekYear, week, day) {\n week = week || 0;\n day = day || 0;\n var date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n var fourthOfJanuaryDay = date.getUTCDay() || 7;\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate (year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate (year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year);\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate (year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime (hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n\nfunction validateTimezone (hours, minutes) {\n if (minutes != null && (minutes < 0 || minutes > 59)) {\n return false\n }\n\n return true\n}\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * var result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var timestamp = toDate(dirtyDate, dirtyOptions).getTime();\n var amount = toInteger(dirtyAmount);\n return new Date(timestamp + amount)\n}\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // For the valid date:\n * var result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * var result = isValid('2014-02-31')\n * //=> true\n *\n * @example\n * // For the invalid date:\n * var result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n return !isNaN(date)\n}\n\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n\n halfAMinute: 'half a minute',\n\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\n\nfunction formatDistance (token, count, options) {\n options = options || {};\n\n var result;\n if (typeof formatDistanceLocale[token] === 'string') {\n result = formatDistanceLocale[token];\n } else if (count === 1) {\n result = formatDistanceLocale[token].one;\n } else {\n result = formatDistanceLocale[token].other.replace('{{count}}', count);\n }\n\n if (options.addSuffix) {\n if (options.comparison > 0) {\n return 'in ' + result\n } else {\n return result + ' ago'\n }\n }\n\n return result\n}\n\nfunction buildFormatLongFn (args) {\n return function (dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format\n }\n}\n\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\n\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\n\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\n\nvar formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\n\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\n\nfunction formatRelative (token, date, baseDate, options) {\n return formatRelativeLocale[token]\n}\n\nfunction buildLocalizeFn (args) {\n return function (dirtyIndex, dirtyOptions) {\n var options = dirtyOptions || {};\n var width = options.width ? String(options.width) : args.defaultWidth;\n var context = options.context ? String(options.context) : 'standalone';\n\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n valuesArray = args.formattingValues[width] || args.formattingValues[args.defaultFormattingWidth];\n } else {\n valuesArray = args.values[width] || args.values[args.defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n return valuesArray[index]\n }\n}\n\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\n\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\n\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\n\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\n\nfunction ordinalNumber (dirtyNumber, dirtyOptions) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`:\n //\n // var options = dirtyOptions || {}\n // var unit = String(options.unit)\n //\n // where `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st'\n case 2:\n return number + 'nd'\n case 3:\n return number + 'rd'\n }\n }\n return number + 'th'\n}\n\nvar localize = {\n ordinalNumber: ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function (quarter) {\n return Number(quarter) - 1\n }\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaulFormattingWidth: 'wide'\n })\n};\n\nfunction buildMatchPatternFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) {\n return null\n }\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction buildMatchFn (args) {\n return function (dirtyString, dirtyOptions) {\n var string = String(dirtyString);\n var options = dirtyOptions || {};\n var width = options.width;\n\n var matchPattern = (width && args.matchPatterns[width]) || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null\n }\n var matchedString = matchResult[0];\n\n var parsePatterns = (width && args.parsePatterns[width]) || args.parsePatterns[args.defaultParseWidth];\n\n var value;\n if (Object.prototype.toString.call(parsePatterns) === '[object Array]') {\n value = parsePatterns.findIndex(function (pattern) {\n return pattern.test(string)\n });\n } else {\n value = findKey(parsePatterns, function (pattern) {\n return pattern.test(string)\n });\n }\n\n value = args.valueCallback ? args.valueCallback(value) : value;\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n return {\n value: value,\n rest: string.slice(matchedString.length)\n }\n }\n}\n\nfunction findKey (object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key\n }\n }\n}\n\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\n\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\n\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\n\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\n\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\n\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\n\nvar match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function (value) {\n return parseInt(value, 10)\n }\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function (index) {\n return index + 1\n }\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\n\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale$1 = {\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\n\nvar MILLISECONDS_IN_DAY = 86400000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCDayOfYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var weekStartsOn = 1;\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCISOWeek(fourthOfJanuaryOfNextYear, dirtyOptions);\n\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCISOWeek(fourthOfJanuaryOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCISOWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var year = getUTCISOWeekYear(dirtyDate, dirtyOptions);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCISOWeek(fourthOfJanuary, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCISOWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCISOWeek(date, dirtyOptions).getTime() - startOfUTCISOWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, options);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var year = date.getUTCFullYear();\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively')\n }\n\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = startOfUTCWeek(firstWeekOfNextYear, dirtyOptions);\n\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = startOfUTCWeek(firstWeekOfThisYear, dirtyOptions);\n\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year\n } else {\n return year - 1\n }\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction startOfUTCWeekYear (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeFirstWeekContainsDate = locale &&\n locale.options &&\n locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n var year = getUTCWeekYear(dirtyDate, dirtyOptions);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = startOfUTCWeek(firstWeek, dirtyOptions);\n return date\n}\n\nvar MILLISECONDS_IN_WEEK$1 = 604800000;\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction getUTCWeek (dirtyDate, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var diff = startOfUTCWeek(date, dirtyOptions).getTime() - startOfUTCWeekYear(date, dirtyOptions).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK$1) + 1\n}\n\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function (date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {width: 'abbreviated'})\n // A, B\n case 'GGGGG':\n return localize.era(era, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {width: 'wide'})\n }\n },\n\n // Year\n y: function (date, token, localize, options) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n\n // Two digit year\n if (token === 'yy') {\n var twoDigitYear = year % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'yo') {\n return localize.ordinalNumber(year, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(year, token.length)\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n var signedWeekYear = getUTCWeekYear(date, options);\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2)\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {unit: 'year'})\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length)\n },\n\n // ISO week-numbering year\n R: function (date, token, localize, options) {\n var isoWeekYear = getUTCISOWeekYear(date, options);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length)\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token, localize, options) {\n var year = date.getUTCFullYear();\n return addLeadingZeros(year, token.length)\n },\n\n // Quarter\n Q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'QQ':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize, options) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter)\n // 01, 02, 03, 04\n case 'qq':\n return addLeadingZeros(quarter, 2)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {width: 'abbreviated', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Month\n M: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'MM':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {width: 'abbreviated', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize, options) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1)\n // 01, 02, ..., 12\n case 'LL':\n return addLeadingZeros(month + 1, 2)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {unit: 'month'})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {width: 'abbreviated', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {width: 'wide', context: 'standalone'})\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n var week = getUTCWeek(date, options);\n\n if (token === 'wo') {\n return localize.ordinalNumber(week, {unit: 'week'})\n }\n\n return addLeadingZeros(week, token.length)\n },\n\n // ISO week of year\n I: function (date, token, localize, options) {\n var isoWeek = getUTCISOWeek(date, options);\n\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {unit: 'week'})\n }\n\n return addLeadingZeros(isoWeek, token.length)\n },\n\n // Day of the month\n d: function (date, token, localize, options) {\n var dayOfMonth = date.getUTCDate();\n\n if (token === 'do') {\n return localize.ordinalNumber(dayOfMonth, {unit: 'date'})\n }\n\n return addLeadingZeros(dayOfMonth, token.length)\n },\n\n // Day of year\n D: function (date, token, localize, options) {\n var dayOfYear = getUTCDayOfYear(date, options);\n\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {unit: 'dayOfYear'})\n }\n\n return addLeadingZeros(dayOfYear, token.length)\n },\n\n // Day of week\n E: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek)\n // Padded numerical value\n case 'ee':\n return addLeadingZeros(localDayOfWeek, 2)\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'eee':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = ((dayOfWeek - options.weekStartsOn + 8) % 7) || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek)\n // Padded numberical value\n case 'cc':\n return addLeadingZeros(localDayOfWeek, token.length)\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {unit: 'day'})\n case 'ccc':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'standalone'})\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {width: 'short', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'standalone'})\n }\n },\n\n // ISO day of week\n i: function (date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek)\n // 02\n case 'ii':\n return addLeadingZeros(isoDayOfWeek, token.length)\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {unit: 'day'})\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {width: 'abbreviated', context: 'formatting'})\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {width: 'short', context: 'formatting'})\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = (hours / 12) >= 1 ? 'pm' : 'am';\n }\n\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'abbreviated', context: 'formatting'})\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {width: 'wide', context: 'formatting'})\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (hours === 0) {\n hours = 12;\n }\n\n if (token === 'ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-23]\n H: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (token === 'Ho') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [0-11]\n K: function (date, token, localize, options) {\n var hours = date.getUTCHours() % 12;\n\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Hour [1-24]\n k: function (date, token, localize, options) {\n var hours = date.getUTCHours();\n\n if (hours === 0) {\n hours = 24;\n }\n\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {unit: 'hour'})\n }\n\n return addLeadingZeros(hours, token.length)\n },\n\n // Minute\n m: function (date, token, localize, options) {\n var minutes = date.getUTCMinutes();\n\n if (token === 'mo') {\n return localize.ordinalNumber(minutes, {unit: 'minute'})\n }\n\n return addLeadingZeros(minutes, token.length)\n },\n\n // Second\n s: function (date, token, localize, options) {\n var seconds = date.getUTCSeconds();\n\n if (token === 'so') {\n return localize.ordinalNumber(seconds, {unit: 'second'})\n }\n\n return addLeadingZeros(seconds, token.length)\n },\n\n // Fraction of second\n S: function (date, token, localize, options) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return addLeadingZeros(fractionalSeconds, numberOfDigits)\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Seconds timestamp\n t: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return addLeadingZeros(timestamp, token.length)\n },\n\n // Milliseconds timestamp\n T: function (date, token, localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return addLeadingZeros(timestamp, token.length)\n }\n};\n\nfunction addLeadingZeros (number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output\n}\n\nfunction formatTimezone (offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2);\n var minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes (offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort (offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || '';\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nfunction dateLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'P':\n return formatLong.date({width: 'short'})\n case 'PP':\n return formatLong.date({width: 'medium'})\n case 'PPP':\n return formatLong.date({width: 'long'})\n case 'PPPP':\n default:\n return formatLong.date({width: 'full'})\n }\n}\n\nfunction timeLongFormatter (pattern, formatLong, options) {\n switch (pattern) {\n case 'p':\n return formatLong.time({width: 'short'})\n case 'pp':\n return formatLong.time({width: 'medium'})\n case 'ppp':\n return formatLong.time({width: 'long'})\n case 'pppp':\n default:\n return formatLong.time({width: 'full'})\n }\n}\n\nfunction dateTimeLongFormatter (pattern, formatLong, options) {\n var matchResult = pattern.match(/(P+)(p+)?/);\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong)\n }\n\n var dateTimeFormat;\n\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({width: 'short'});\n break\n case 'PP':\n dateTimeFormat = formatLong.dateTime({width: 'medium'});\n break\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({width: 'long'});\n break\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({width: 'full'});\n break\n }\n\n return dateTimeFormat\n .replace('{{date}}', dateLongFormatter(datePattern, formatLong))\n .replace('{{time}}', timeLongFormatter(timePattern, formatLong))\n}\n\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\n\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|String|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * var result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds (dirtyDate, dirtyAmount, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var amount = toInteger(dirtyAmount);\n return addMilliseconds(dirtyDate, -amount, dirtyOptions)\n}\n\nvar protectedTokens = ['D', 'DD', 'YY', 'YYYY'];\n\nfunction isProtectedToken(token) {\n return protectedTokens.indexOf(token) !== -1\n}\n\nfunction throwProtectedError(token) {\n throw new RangeError(\n '`options.awareOfUnicodeTokens` must be set to `true` to use `' +\n token +\n '` token; see: https://git.io/fxCyr'\n )\n}\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp = /^'(.*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * @param {Date|String|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(\n * new Date(2014, 1, 11),\n * 'MM/dd/yyyy'\n * )\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(\n * new Date(2014, 6, 2),\n * \"do 'de' MMMM yyyy\",\n * {locale: eoLocale}\n * )\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(\n * new Date(2014, 6, 2, 15),\n * \"h 'o''clock'\"\n * )\n * //=> \"3 o'clock\"\n */\nfunction format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError(\n '2 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var formatStr = String(dirtyFormatStr);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property')\n }\n\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property')\n }\n\n var originalDate = toDate(dirtyDate, options);\n\n if (!isValid(originalDate, options)) {\n return 'Invalid Date'\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = getTimezoneOffsetInMilliseconds(originalDate);\n var utcDate = subMilliseconds(originalDate, timezoneOffset, options);\n\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n\n var result = formatStr\n .match(longFormattingTokensRegExp)\n .map(function(substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong, formatterOptions)\n }\n return substring\n })\n .join('')\n .match(formattingTokensRegExp)\n .map(function(substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\"\n }\n\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring)\n }\n\n var formatter = formatters[firstCharacter];\n if (formatter) {\n if (!options.awareOfUnicodeTokens && isProtectedToken(substring)) {\n throwProtectedError(substring);\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions)\n }\n\n return substring\n })\n .join('');\n\n return result\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\")\n}\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param {Date|String|Number} date - the date that should be after the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is after the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * var result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nfunction isAfter (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() > dateToCompare.getTime()\n}\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param {Date|String|Number} date - the date that should be before the other one to return true\n * @param {Date|String|Number} dateToCompare - the date to compare with\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the first date is before the second date\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * var result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nfunction isBefore (dirtyDate, dirtyDateToCompare, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var dateToCompare = toDate(dirtyDateToCompare, dirtyOptions);\n return date.getTime() < dateToCompare.getTime()\n}\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param {Date|String|Number} dateLeft - the first date to compare\n * @param {Date|String|Number} dateRight - the second date to compare\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Boolean} the dates are equal\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * var result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0)\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nfunction isEqual$1 (dirtyLeftDate, dirtyRightDate, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var dateLeft = toDate(dirtyLeftDate, dirtyOptions);\n var dateRight = toDate(dirtyRightDate, dirtyOptions);\n return dateLeft.getTime() === dateRight.getTime()\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCDay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var options = dirtyOptions || {};\n var locale = options.locale;\n var localeWeekStartsOn = locale && locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn = localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn = options.weekStartsOn == null ? defaultWeekStartsOn : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var day = toInteger(dirtyDay);\n\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCWeek (dirtyDate, dirtyWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var week = toInteger(dirtyWeek);\n var diff = getUTCWeek(date, dirtyOptions) - week;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISODay (dirtyDate, dirtyDay, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var day = toInteger(dirtyDay);\n\n if (day % 7 === 0) {\n day = day - 7;\n }\n\n var weekStartsOn = 1;\n var date = toDate(dirtyDate, dirtyOptions);\n var currentDay = date.getUTCDay();\n\n var remainder = day % 7;\n var dayIndex = (remainder + 7) % 7;\n\n var diff = (dayIndex < weekStartsOn ? 7 : 0) + day - currentDay;\n\n date.setUTCDate(date.getUTCDate() + diff);\n return date\n}\n\n// This function will be a part of public API when UTC function will be implemented.\n// See issue: https://github.com/date-fns/date-fns/issues/376\nfunction setUTCISOWeek (dirtyDate, dirtyISOWeek, dirtyOptions) {\n if (arguments.length < 2) {\n throw new TypeError('2 arguments required, but only ' + arguments.length + ' present')\n }\n\n var date = toDate(dirtyDate, dirtyOptions);\n var isoWeek = toInteger(dirtyISOWeek);\n var diff = getUTCISOWeek(date, dirtyOptions) - isoWeek;\n date.setUTCDate(date.getUTCDate() - diff * 7);\n return date\n}\n\nvar MILLISECONDS_IN_HOUR$1 = 3600000;\nvar MILLISECONDS_IN_MINUTE$2 = 60000;\nvar MILLISECONDS_IN_SECOND = 1000;\n\nvar numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/ // 0 to 9999, -0 to -9999\n};\n\nvar timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/\n};\n\nfunction parseNumericPattern (pattern, string, valueCallback) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n var value = parseInt(matchResult[0], 10);\n\n return {\n value: valueCallback ? valueCallback(value) : value,\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseTimezonePattern (pattern, string) {\n var matchResult = string.match(pattern);\n\n if (!matchResult) {\n return null\n }\n\n // Input is 'Z'\n if (matchResult[0] === 'Z') {\n return {\n value: 0,\n rest: string.slice(1)\n }\n }\n\n var sign = matchResult[1] === '+' ? 1 : -1;\n var hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n var minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n var seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value: sign * (\n hours * MILLISECONDS_IN_HOUR$1 +\n minutes * MILLISECONDS_IN_MINUTE$2 +\n seconds * MILLISECONDS_IN_SECOND\n ),\n rest: string.slice(matchResult[0].length)\n }\n}\n\nfunction parseAnyDigitsSigned (string, valueCallback) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, string, valueCallback)\n}\n\nfunction parseNDigits (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction parseNDigitsSigned (n, string, valueCallback) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, string, valueCallback)\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, string, valueCallback)\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, string, valueCallback)\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, string, valueCallback)\n default:\n return parseNumericPattern(new RegExp('^-?\\\\d{1,' + n + '}'), string, valueCallback)\n }\n}\n\nfunction dayPeriodEnumToHours (enumValue) {\n switch (enumValue) {\n case 'morning':\n return 4\n case 'evening':\n return 17\n case 'pm':\n case 'noon':\n case 'afternoon':\n return 12\n case 'am':\n case 'midnight':\n case 'night':\n default:\n return 0\n }\n}\n\nfunction normalizeTwoDigitYear (twoDigitYear, currentYear) {\n var isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n var absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n var result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n var rangeEnd = absCurrentYear + 50;\n var rangeEndCentury = Math.floor(rangeEnd / 100) * 100;\n var isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result\n}\n\nvar DAYS_IN_MONTH$1 = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar DAYS_IN_MONTH_LEAP_YEAR$1 = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\n// User for validation\nfunction isLeapYearIndex$1 (year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nvar parsers = {\n // Era\n G: {\n priority: 140,\n parse: function (string, token, match, options) {\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n // A, B\n case 'GGGGG':\n return match.era(string, {width: 'narrow'})\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return match.era(string, {width: 'wide'}) ||\n match.era(string, {width: 'abbreviated'}) ||\n match.era(string, {width: 'narrow'})\n }\n },\n set: function (date, value, options) {\n // Sets year 10 BC if BC, or 10 AC if AC\n date.setUTCFullYear(value === 1 ? 10 : -9, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Year\n y: {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'yy'\n }\n };\n\n switch (token) {\n case 'y':\n return parseNDigits(4, string, valueCallback)\n case 'yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = getUTCWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week-numbering year\n Y: {\n priority: 130,\n parse: function (string, token, match, options) {\n var valueCallback = function (year) {\n return {\n year: year,\n isTwoDigitYear: token === 'YY'\n }\n };\n\n switch (token) {\n case 'Y':\n return parseNDigits(4, string, valueCallback)\n case 'Yo':\n return match.ordinalNumber(string, {unit: 'year', valueCallback: valueCallback})\n default:\n return parseNDigits(token.length, string, valueCallback)\n }\n },\n validate: function (date, value, options) {\n return value.isTwoDigitYear || value.year > 0\n },\n set: function (date, value, options) {\n var currentYear = date.getUTCFullYear();\n\n if (value.isTwoDigitYear) {\n var normalizedTwoDigitYear = normalizeTwoDigitYear(value.year, currentYear);\n date.setUTCFullYear(normalizedTwoDigitYear, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n\n var year = currentYear > 0 ? value.year : 1 - value.year;\n date.setUTCFullYear(year, 0, options.firstWeekContainsDate);\n date.setUTCHours(0, 0, 0, 0);\n return startOfUTCWeek(date, options)\n }\n },\n\n // ISO week-numbering year\n R: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'R') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n var firstWeekOfYear = new Date(0);\n firstWeekOfYear.setUTCFullYear(value, 0, 4);\n firstWeekOfYear.setUTCHours(0, 0, 0, 0);\n return startOfUTCISOWeek(firstWeekOfYear)\n }\n },\n\n // Extended year\n u: {\n priority: 130,\n parse: function (string, token, match, options) {\n if (token === 'u') {\n return parseNDigitsSigned(4, string)\n }\n\n return parseNDigitsSigned(token.length, string)\n },\n set: function (date, value, options) {\n date.setUTCFullYear(value, 0, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Quarter\n Q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n case 'QQ': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return match.quarter(string, {width: 'narrow', context: 'formatting'})\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return match.quarter(string, {width: 'wide', context: 'formatting'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.quarter(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone quarter\n q: {\n priority: 120,\n parse: function (string, token, match, options) {\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n case 'qq': // 01, 02, 03, 04\n return parseNDigits(token.length, string)\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return match.ordinalNumber(string, {unit: 'quarter'})\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return match.quarter(string, {width: 'narrow', context: 'standalone'})\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return match.quarter(string, {width: 'wide', context: 'standalone'}) ||\n match.quarter(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.quarter(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 4\n },\n set: function (date, value, options) {\n date.setUTCMonth((value - 1) * 3, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Month\n M: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'M':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'MM':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'MMM':\n return match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n // J, F, ..., D\n case 'MMMMM':\n return match.month(string, {width: 'narrow', context: 'formatting'})\n // January, February, ..., December\n case 'MMMM':\n default:\n return match.month(string, {width: 'wide', context: 'formatting'}) ||\n match.month(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.month(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone month\n L: {\n priority: 110,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return value - 1\n };\n\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return parseNumericPattern(numericPatterns.month, string, valueCallback)\n // 01, 02, ..., 12\n case 'LL':\n return parseNDigits(2, string, valueCallback)\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return match.ordinalNumber(string, {unit: 'month', valueCallback: valueCallback})\n // Jan, Feb, ..., Dec\n case 'LLL':\n return match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n // J, F, ..., D\n case 'LLLLL':\n return match.month(string, {width: 'narrow', context: 'standalone'})\n // January, February, ..., December\n case 'LLLL':\n default:\n return match.month(string, {width: 'wide', context: 'standalone'}) ||\n match.month(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.month(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n date.setUTCMonth(value, 1);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local week of year\n w: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'w':\n return parseNumericPattern(numericPatterns.week, string)\n case 'wo':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCWeek(setUTCWeek(date, value, options), options)\n }\n },\n\n // ISO week of year\n I: {\n priority: 100,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'I':\n return parseNumericPattern(numericPatterns.week, string)\n case 'Io':\n return match.ordinalNumber(string, {unit: 'week'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 53\n },\n set: function (date, value, options) {\n return startOfUTCISOWeek(setUTCISOWeek(date, value, options), options)\n }\n },\n\n // Day of the month\n d: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'd':\n return parseNumericPattern(numericPatterns.date, string)\n case 'do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n var month = date.getUTCMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR$1[month]\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH$1[month]\n }\n },\n set: function (date, value, options) {\n date.setUTCDate(value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of year\n D: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'D':\n case 'DD':\n return parseNumericPattern(numericPatterns.dayOfYear, string)\n case 'Do':\n return match.ordinalNumber(string, {unit: 'date'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n var year = date.getUTCFullYear();\n var isLeapYear = isLeapYearIndex$1(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366\n } else {\n return value >= 1 && value <= 365\n }\n },\n set: function (date, value, options) {\n date.setUTCMonth(0, value);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Day of week\n E: {\n priority: 90,\n parse: function (string, token, match, options) {\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'EEEEE':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'EEEEEE':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'EEEE':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Local day of week\n e: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'e':\n case 'ee': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'eo':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'eee':\n return match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // T\n case 'eeeee':\n return match.day(string, {width: 'narrow', context: 'formatting'})\n // Tu\n case 'eeeeee':\n return match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n // Tuesday\n case 'eeee':\n default:\n return match.day(string, {width: 'wide', context: 'formatting'}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.day(string, {width: 'short', context: 'formatting'}) ||\n match.day(string, {width: 'narrow', context: 'formatting'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // Stand-alone local day of week\n c: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n var wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return (value + options.weekStartsOn + 6) % 7 + wholeWeekDays\n };\n\n switch (token) {\n // 3\n case 'c':\n case 'cc': // 03\n return parseNDigits(token.length, string, valueCallback)\n // 3rd\n case 'co':\n return match.ordinalNumber(string, {unit: 'day', valueCallback: valueCallback})\n // Tue\n case 'ccc':\n return match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // T\n case 'ccccc':\n return match.day(string, {width: 'narrow', context: 'standalone'})\n // Tu\n case 'cccccc':\n return match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n // Tuesday\n case 'cccc':\n default:\n return match.day(string, {width: 'wide', context: 'standalone'}) ||\n match.day(string, {width: 'abbreviated', context: 'standalone'}) ||\n match.day(string, {width: 'short', context: 'standalone'}) ||\n match.day(string, {width: 'narrow', context: 'standalone'})\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 6\n },\n set: function (date, value, options) {\n date = setUTCDay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // ISO day of week\n i: {\n priority: 90,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n if (value === 0) {\n return 7\n }\n return value\n };\n\n switch (token) {\n // 2\n case 'i':\n case 'ii': // 02\n return parseNDigits(token.length, string)\n // 2nd\n case 'io':\n return match.ordinalNumber(string, {unit: 'day'})\n // Tue\n case 'iii':\n return match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // T\n case 'iiiii':\n return match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tu\n case 'iiiiii':\n return match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n // Tuesday\n case 'iiii':\n default:\n return match.day(string, {width: 'wide', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'abbreviated', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'short', context: 'formatting', valueCallback: valueCallback}) ||\n match.day(string, {width: 'narrow', context: 'formatting', valueCallback: valueCallback})\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 7\n },\n set: function (date, value, options) {\n date = setUTCISODay(date, value, options);\n date.setUTCHours(0, 0, 0, 0);\n return date\n }\n },\n\n // AM or PM\n a: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'a':\n case 'aa':\n case 'aaa':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaaa':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'aaaa':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // AM, PM, midnight\n b: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'b':\n case 'bb':\n case 'bbb':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbbb':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'bbbb':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: {\n priority: 80,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBBB':\n return match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n case 'BBBB':\n default:\n return match.dayPeriod(string, {width: 'wide', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'abbreviated', context: 'formatting'}) ||\n match.dayPeriod(string, {width: 'narrow', context: 'formatting'})\n }\n },\n set: function (date, value, options) {\n date.setUTCHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date\n }\n },\n\n // Hour [1-12]\n h: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'h':\n return parseNumericPattern(numericPatterns.hour12h, string)\n case 'ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 12\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setUTCHours(0, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [0-23]\n H: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'H':\n return parseNumericPattern(numericPatterns.hour23h, string)\n case 'Ho':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 23\n },\n set: function (date, value, options) {\n date.setUTCHours(value, 0, 0, 0);\n return date\n }\n },\n\n // Hour [0-11]\n K: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'K':\n return parseNumericPattern(numericPatterns.hour11h, string)\n case 'Ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 11\n },\n set: function (date, value, options) {\n var isPM = date.getUTCHours() >= 12;\n if (isPM && value < 12) {\n date.setUTCHours(value + 12, 0, 0, 0);\n } else {\n date.setUTCHours(value, 0, 0, 0);\n }\n return date\n }\n },\n\n // Hour [1-24]\n k: {\n priority: 70,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'k':\n return parseNumericPattern(numericPatterns.hour24h, string)\n case 'ko':\n return match.ordinalNumber(string, {unit: 'hour'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 1 && value <= 24\n },\n set: function (date, value, options) {\n var hours = value <= 24 ? value % 24 : value;\n date.setUTCHours(hours, 0, 0, 0);\n return date\n }\n },\n\n // Minute\n m: {\n priority: 60,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'm':\n return parseNumericPattern(numericPatterns.minute, string)\n case 'mo':\n return match.ordinalNumber(string, {unit: 'minute'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCMinutes(value, 0, 0);\n return date\n }\n },\n\n // Second\n s: {\n priority: 50,\n parse: function (string, token, match, options) {\n switch (token) {\n case 's':\n return parseNumericPattern(numericPatterns.second, string)\n case 'so':\n return match.ordinalNumber(string, {unit: 'second'})\n default:\n return parseNDigits(token.length, string)\n }\n },\n validate: function (date, value, options) {\n return value >= 0 && value <= 59\n },\n set: function (date, value, options) {\n date.setUTCSeconds(value, 0);\n return date\n }\n },\n\n // Fraction of second\n S: {\n priority: 40,\n parse: function (string, token, match, options) {\n var valueCallback = function (value) {\n return Math.floor(value * Math.pow(10, -token.length + 3))\n };\n return parseNDigits(token.length, string, valueCallback)\n },\n set: function (date, value, options) {\n date.setUTCMilliseconds(value);\n return date\n }\n },\n\n // Timezone (ISO-8601. +00:00 is `'Z'`)\n X: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'X':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'XX':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'XXXX':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'XXXXX':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'XXX':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Timezone (ISO-8601)\n x: {\n priority: 20,\n parse: function (string, token, match, options) {\n switch (token) {\n case 'x':\n return parseTimezonePattern(timezonePatterns.basicOptionalMinutes, string)\n case 'xx':\n return parseTimezonePattern(timezonePatterns.basic, string)\n case 'xxxx':\n return parseTimezonePattern(timezonePatterns.basicOptionalSeconds, string)\n case 'xxxxx':\n return parseTimezonePattern(timezonePatterns.extendedOptionalSeconds, string)\n case 'xxx':\n default:\n return parseTimezonePattern(timezonePatterns.extended, string)\n }\n },\n set: function (date, value, options) {\n return new Date(date.getTime() - value)\n }\n },\n\n // Seconds timestamp\n t: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value * 1000)\n }\n },\n\n // Milliseconds timestamp\n T: {\n priority: 10,\n parse: function (string, token, match, options) {\n return parseAnyDigitsSigned(string)\n },\n set: function (date, value, options) {\n return new Date(value)\n }\n }\n};\n\nvar TIMEZONE_UNIT_PRIORITY = 20;\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp$1 = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\nvar escapedStringRegExp$1 = /^'(.*?)'?$/;\nvar doubleQuoteRegExp$1 = /''/g;\n\nvar notWhitespaceRegExp = /\\S/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 6 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 6 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Su | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Su | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | 40 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 0001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 20 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 20 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Seconds timestamp | 10 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Milliseconds timestamp | 10 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `baseDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear]{@link https://date-fns.org/docs/setISOWeekYear}\n * and [setWeekYear]{@link https://date-fns.org/docs/setWeekYear}).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n *\n * 6. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `baseDate` which works as a context of parsing.\n *\n * `baseDate` must be passed for correct work of the function.\n * If you're not sure which `baseDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `baseDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `baseDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {String} dateString - the string to parse\n * @param {String} formatString - the string of tokens\n * @param {Date|String|Number} baseDate - defines values missing from the parsed dateString\n * @param {Options} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {1|2|3|4|5|6|7} [options.firstWeekContainsDate=1] - the day of January, which is always in the first week of the year\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens (`yy`, `yyyy`).\n * See: https://git.io/fxCyr\n * @returns {Date} the parsed date\n * @throws {TypeError} 3 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.locale` must contain `match` property\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see: https://git.io/fxCyr\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse(\n * '02/11/2014',\n * 'MM/dd/yyyy',\n * new Date()\n * )\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse(\n * '28-a de februaro',\n * \"do 'de' MMMM\",\n * new Date(2010, 0, 1),\n * {locale: eo}\n * )\n * //=> Sun Feb 28 2010 00:00:00\n */\nfunction parse(\n dirtyDateString,\n dirtyFormatString,\n dirtyBaseDate,\n dirtyOptions\n) {\n if (arguments.length < 3) {\n throw new TypeError(\n '3 arguments required, but only ' + arguments.length + ' present'\n )\n }\n\n var dateString = String(dirtyDateString);\n var formatString = String(dirtyFormatString);\n var options = dirtyOptions || {};\n\n var locale = options.locale || locale$1;\n\n if (!locale.match) {\n throw new RangeError('locale must contain match property')\n }\n\n var localeFirstWeekContainsDate =\n locale.options && locale.options.firstWeekContainsDate;\n var defaultFirstWeekContainsDate =\n localeFirstWeekContainsDate == null\n ? 1\n : toInteger(localeFirstWeekContainsDate);\n var firstWeekContainsDate =\n options.firstWeekContainsDate == null\n ? defaultFirstWeekContainsDate\n : toInteger(options.firstWeekContainsDate);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError(\n 'firstWeekContainsDate must be between 1 and 7 inclusively'\n )\n }\n\n var localeWeekStartsOn = locale.options && locale.options.weekStartsOn;\n var defaultWeekStartsOn =\n localeWeekStartsOn == null ? 0 : toInteger(localeWeekStartsOn);\n var weekStartsOn =\n options.weekStartsOn == null\n ? defaultWeekStartsOn\n : toInteger(options.weekStartsOn);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively')\n }\n\n if (formatString === '') {\n if (dateString === '') {\n return toDate(dirtyBaseDate, options)\n } else {\n return new Date(NaN)\n }\n }\n\n var subFnOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale\n };\n\n // If timezone isn't specified, it will be set to the system timezone\n var setters = [\n {\n priority: TIMEZONE_UNIT_PRIORITY,\n set: dateToSystemTimezone,\n index: 0\n }\n ];\n\n var i;\n\n var tokens = formatString.match(formattingTokensRegExp$1);\n\n for (i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (!options.awareOfUnicodeTokens && isProtectedToken(token)) {\n throwProtectedError(token);\n }\n\n var firstCharacter = token[0];\n var parser = parsers[firstCharacter];\n if (parser) {\n var parseResult = parser.parse(\n dateString,\n token,\n locale.match,\n subFnOptions\n );\n\n if (!parseResult) {\n return new Date(NaN)\n }\n\n setters.push({\n priority: parser.priority,\n set: parser.set,\n validate: parser.validate,\n value: parseResult.value,\n index: setters.length\n });\n\n dateString = parseResult.rest;\n } else {\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString$1(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateString.indexOf(token) === 0) {\n dateString = dateString.slice(token.length);\n } else {\n return new Date(NaN)\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateString.length > 0 && notWhitespaceRegExp.test(dateString)) {\n return new Date(NaN)\n }\n\n var uniquePrioritySetters = setters\n .map(function(setter) {\n return setter.priority\n })\n .sort(function(a, b) {\n return b - a\n })\n .filter(function(priority, index, array) {\n return array.indexOf(priority) === index\n })\n .map(function(priority) {\n return setters\n .filter(function(setter) {\n return setter.priority === priority\n })\n .reverse()\n })\n .map(function(setterArray) {\n return setterArray[0]\n });\n\n var date = toDate(dirtyBaseDate, options);\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/37\n var utcDate = subMilliseconds(date, getTimezoneOffsetInMilliseconds(date));\n\n for (i = 0; i < uniquePrioritySetters.length; i++) {\n var setter = uniquePrioritySetters[i];\n\n if (\n setter.validate &&\n !setter.validate(utcDate, setter.value, subFnOptions)\n ) {\n return new Date(NaN)\n }\n\n utcDate = setter.set(utcDate, setter.value, subFnOptions);\n }\n\n return utcDate\n}\n\nfunction dateToSystemTimezone(date) {\n var convertedDate = new Date(0);\n convertedDate.setFullYear(\n date.getUTCFullYear(),\n date.getUTCMonth(),\n date.getUTCDate()\n );\n convertedDate.setHours(\n date.getUTCHours(),\n date.getUTCMinutes(),\n date.getUTCSeconds(),\n date.getUTCMilliseconds()\n );\n return convertedDate\n}\n\nfunction cleanEscapedString$1(input) {\n return input.match(escapedStringRegExp$1)[1].replace(doubleQuoteRegExp$1, \"'\")\n}\n\n// \n\n/**\n * Custom parse behavior on top of date-fns parse function.\n */\nfunction parseDate$1 (date, format$1) {\n if (typeof date !== 'string') {\n return isValid(date) ? date : null;\n }\n\n var parsed = parse(date, format$1, new Date());\n\n // if date is not valid or the formatted output after parsing does not match\n // the string value passed in (avoids overflows)\n if (!isValid(parsed) || format(parsed, format$1) !== date) {\n return null;\n }\n\n return parsed;\n}\n\nvar afterValidator = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n\n return isAfter(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options = {\n hasTarget: true,\n isDate: true\n};\n\n// required to convert from a list of array values to an object.\nvar paramNames = ['targetValue', 'inclusion', 'format'];\n\nvar after = {\n validate: afterValidator,\n options: options,\n paramNames: paramNames\n};\n\n/**\n * Some Alpha Regex helpers.\n * https://github.com/chriso/validator.js/blob/master/src/lib/alpha.js\n */\n\nvar alpha = {\n en: /^[A-Z]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[A-ZÆØÅ]*$/i,\n de: /^[A-ZÄÖÜß]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[A-Z\\xC0-\\xFF]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[А-ЯЁ]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[A-ZČĆŽŠĐ]*$/i,\n sv: /^[A-ZÅÄÖ]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaSpaces = {\n en: /^[A-Z\\s]*$/i,\n cs: /^[A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ\\s]*$/i,\n da: /^[A-ZÆØÅ\\s]*$/i,\n de: /^[A-ZÄÖÜß\\s]*$/i,\n es: /^[A-ZÁÉÍÑÓÚÜ\\s]*$/i,\n fa: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی\\s]*$/,\n fr: /^[A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ\\s]*$/i,\n it: /^[A-Z\\xC0-\\xFF\\s]*$/i,\n lt: /^[A-ZĄČĘĖĮŠŲŪŽ\\s]*$/i,\n nl: /^[A-ZÉËÏÓÖÜ\\s]*$/i,\n hu: /^[A-ZÁÉÍÓÖŐÚÜŰ\\s]*$/i,\n pl: /^[A-ZĄĆĘŚŁŃÓŻŹ\\s]*$/i,\n pt: /^[A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ\\s]*$/i,\n ru: /^[А-ЯЁ\\s]*$/i,\n sk: /^[A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ\\s]*$/i,\n sr: /^[A-ZČĆŽŠĐ\\s]*$/i,\n sv: /^[A-ZÅÄÖ\\s]*$/i,\n tr: /^[A-ZÇĞİıÖŞÜ\\s]*$/i,\n uk: /^[А-ЩЬЮЯЄІЇҐ\\s]*$/i,\n ar: /^[ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ\\s]*$/,\n az: /^[A-ZÇƏĞİıÖŞÜ\\s]*$/i\n};\n\nvar alphanumeric = {\n en: /^[0-9A-Z]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ]*$/i,\n da: /^[0-9A-ZÆØÅ]$/i,\n de: /^[0-9A-ZÄÖÜß]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ]*$/i,\n ru: /^[0-9А-ЯЁ]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ]*$/i,\n sv: /^[0-9A-ZÅÄÖ]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ]*$/i\n};\n\nvar alphaDash = {\n en: /^[0-9A-Z_-]*$/i,\n cs: /^[0-9A-ZÁČĎÉĚÍŇÓŘŠŤÚŮÝŽ_-]*$/i,\n da: /^[0-9A-ZÆØÅ_-]*$/i,\n de: /^[0-9A-ZÄÖÜß_-]*$/i,\n es: /^[0-9A-ZÁÉÍÑÓÚÜ_-]*$/i,\n fa: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰپژگچکی_-]*$/,\n fr: /^[0-9A-ZÀÂÆÇÉÈÊËÏÎÔŒÙÛÜŸ_-]*$/i,\n it: /^[0-9A-Z\\xC0-\\xFF_-]*$/i,\n lt: /^[0-9A-ZĄČĘĖĮŠŲŪŽ_-]*$/i,\n nl: /^[0-9A-ZÉËÏÓÖÜ_-]*$/i,\n hu: /^[0-9A-ZÁÉÍÓÖŐÚÜŰ_-]*$/i,\n pl: /^[0-9A-ZĄĆĘŚŁŃÓŻŹ_-]*$/i,\n pt: /^[0-9A-ZÃÁÀÂÇÉÊÍÕÓÔÚÜ_-]*$/i,\n ru: /^[0-9А-ЯЁ_-]*$/i,\n sk: /^[0-9A-ZÁÄČĎÉÍĹĽŇÓŔŠŤÚÝŽ_-]*$/i,\n sr: /^[0-9A-ZČĆŽŠĐ_-]*$/i,\n sv: /^[0-9A-ZÅÄÖ_-]*$/i,\n tr: /^[0-9A-ZÇĞİıÖŞÜ_-]*$/i,\n uk: /^[0-9А-ЩЬЮЯЄІЇҐ_-]*$/i,\n ar: /^[٠١٢٣٤٥٦٧٨٩0-9ءآأؤإئابةتثجحخدذرزسشصضطظعغفقكلمنهوىيًٌٍَُِّْٰ_-]*$/,\n az: /^[0-9A-ZÇƏĞİıÖŞÜ_-]*$/i\n};\n\nvar validate = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alpha).some(function (loc) { return alpha[loc].test(value); });\n }\n\n return (alpha[locale] || alpha.en).test(value);\n};\n\nvar paramNames$1 = ['locale'];\n\nvar alpha$1 = {\n validate: validate,\n paramNames: paramNames$1\n};\n\nvar validate$1 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$1(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaDash).some(function (loc) { return alphaDash[loc].test(value); });\n }\n\n return (alphaDash[locale] || alphaDash.en).test(value);\n};\n\nvar paramNames$2 = ['locale'];\n\nvar alpha_dash = {\n validate: validate$1,\n paramNames: paramNames$2\n};\n\nvar validate$2 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$2(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphanumeric).some(function (loc) { return alphanumeric[loc].test(value); });\n }\n\n return (alphanumeric[locale] || alphanumeric.en).test(value);\n};\n\nvar paramNames$3 = ['locale'];\n\nvar alpha_num = {\n validate: validate$2,\n paramNames: paramNames$3\n};\n\nvar validate$3 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var locale = ref.locale;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$3(val, [locale]); });\n }\n\n // Match at least one locale.\n if (! locale) {\n return Object.keys(alphaSpaces).some(function (loc) { return alphaSpaces[loc].test(value); });\n }\n\n return (alphaSpaces[locale] || alphaSpaces.en).test(value);\n};\n\nvar paramNames$4 = ['locale'];\n\nvar alpha_spaces = {\n validate: validate$3,\n paramNames: paramNames$4\n};\n\nvar validate$4 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var targetValue = ref.targetValue;\n var inclusion = ref.inclusion; if ( inclusion === void 0 ) inclusion = false;\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusion;\n inclusion = false;\n }\n\n value = parseDate$1(value, format);\n targetValue = parseDate$1(targetValue, format);\n\n // if either is not valid.\n if (!value || !targetValue) {\n return false;\n }\n\n return isBefore(value, targetValue) || (inclusion && isEqual$1(value, targetValue));\n};\n\nvar options$1 = {\n hasTarget: true,\n isDate: true\n};\n\nvar paramNames$5 = ['targetValue', 'inclusion', 'format'];\n\nvar before = {\n validate: validate$4,\n options: options$1,\n paramNames: paramNames$5\n};\n\nvar validate$5 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$5(val, { min: min, max: max }); });\n }\n\n return Number(min) <= value && Number(max) >= value;\n};\n\nvar paramNames$6 = ['min', 'max'];\n\nvar between = {\n validate: validate$5,\n paramNames: paramNames$6\n};\n\nvar validate$6 = function (value, ref) {\n var targetValue = ref.targetValue;\n\n return String(value) === String(targetValue);\n};\nvar options$2 = {\n hasTarget: true\n};\n\nvar paramNames$7 = ['targetValue'];\n\nvar confirmed = {\n validate: validate$6,\n options: options$2,\n paramNames: paramNames$7\n};\n\nfunction unwrapExports (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar assertString_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = assertString;\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction assertString(input) {\n var isString = typeof input === 'string' || input instanceof String;\n\n if (!isString) {\n var invalidType;\n\n if (input === null) {\n invalidType = 'null';\n } else {\n invalidType = _typeof(input);\n\n if (invalidType === 'object' && input.constructor && input.constructor.hasOwnProperty('name')) {\n invalidType = input.constructor.name;\n } else {\n invalidType = \"a \".concat(invalidType);\n }\n }\n\n throw new TypeError(\"Expected string but received \".concat(invalidType, \".\"));\n }\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(assertString_1);\n\nvar isCreditCard_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isCreditCard;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/* eslint-disable max-len */\nvar creditCard = /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(222[1-9]|22[3-9][0-9]|2[3-6][0-9]{2}|27[01][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\\d{3})\\d{11}|6[27][0-9]{14})$/;\n/* eslint-enable max-len */\n\nfunction isCreditCard(str) {\n (0, _assertString.default)(str);\n var sanitized = str.replace(/[- ]+/g, '');\n\n if (!creditCard.test(sanitized)) {\n return false;\n }\n\n var sum = 0;\n var digit;\n var tmpNum;\n var shouldDouble;\n\n for (var i = sanitized.length - 1; i >= 0; i--) {\n digit = sanitized.substring(i, i + 1);\n tmpNum = parseInt(digit, 10);\n\n if (shouldDouble) {\n tmpNum *= 2;\n\n if (tmpNum >= 10) {\n sum += tmpNum % 10 + 1;\n } else {\n sum += tmpNum;\n }\n } else {\n sum += tmpNum;\n }\n\n shouldDouble = !shouldDouble;\n }\n\n return !!(sum % 10 === 0 ? sanitized : false);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isCreditCard = unwrapExports(isCreditCard_1);\n\nvar validate$7 = function (value) { return isCreditCard(String(value)); };\n\nvar credit_card = {\n validate: validate$7\n};\n\nvar validate$8 = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var min = ref.min;\n var max = ref.max;\n var inclusivity = ref.inclusivity; if ( inclusivity === void 0 ) inclusivity = '()';\n var format = ref.format;\n\n if (typeof format === 'undefined') {\n format = inclusivity;\n inclusivity = '()';\n }\n\n var minDate = parseDate$1(String(min), format);\n var maxDate = parseDate$1(String(max), format);\n var dateVal = parseDate$1(String(value), format);\n\n if (!minDate || !maxDate || !dateVal) {\n return false;\n }\n\n if (inclusivity === '()') {\n return isAfter(dateVal, minDate) && isBefore(dateVal, maxDate);\n }\n\n if (inclusivity === '(]') {\n return isAfter(dateVal, minDate) && (isEqual$1(dateVal, maxDate) || isBefore(dateVal, maxDate));\n }\n\n if (inclusivity === '[)') {\n return isBefore(dateVal, maxDate) && (isEqual$1(dateVal, minDate) || isAfter(dateVal, minDate));\n }\n\n return isEqual$1(dateVal, maxDate) || isEqual$1(dateVal, minDate) ||\n (isBefore(dateVal, maxDate) && isAfter(dateVal, minDate));\n};\n\nvar options$3 = {\n isDate: true\n};\n\nvar paramNames$8 = ['min', 'max', 'inclusivity', 'format'];\n\nvar date_between = {\n validate: validate$8,\n options: options$3,\n paramNames: paramNames$8\n};\n\nvar validate$9 = function (value, ref) {\n var format = ref.format;\n\n return !!parseDate$1(value, format);\n};\n\nvar options$4 = {\n isDate: true\n};\n\nvar paramNames$9 = ['format'];\n\nvar date_format = {\n validate: validate$9,\n options: options$4,\n paramNames: paramNames$9\n};\n\nvar validate$a = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var decimals = ref.decimals; if ( decimals === void 0 ) decimals = '*';\n var separator = ref.separator; if ( separator === void 0 ) separator = '.';\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$a(val, { decimals: decimals, separator: separator }); });\n }\n\n // if is 0.\n if (Number(decimals) === 0) {\n return /^-?\\d*$/.test(value);\n }\n\n var regexPart = decimals === '*' ? '+' : (\"{1,\" + decimals + \"}\");\n var regex = new RegExp((\"^[-+]?\\\\d*(\\\\\" + separator + \"\\\\d\" + regexPart + \")?([eE]{1}[-]?\\\\d+)?$\"));\n\n if (! regex.test(value)) {\n return false;\n }\n\n var parsedValue = parseFloat(value);\n\n // eslint-disable-next-line\n return parsedValue === parsedValue;\n};\n\nvar paramNames$a = ['decimals', 'separator'];\n\nvar decimal = {\n validate: validate$a,\n paramNames: paramNames$a\n};\n\nvar validate$b = function (value, ref) {\n var length = ref[0];\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$b(val, [length]); });\n }\n var strVal = String(value);\n\n return /^[0-9]*$/.test(strVal) && strVal.length === Number(length);\n};\n\nvar digits = {\n validate: validate$b\n};\n\nvar imageRegex = /\\.(jpg|svg|jpeg|png|bmp|gif)$/i;\n\nvar validateImage = function (file, width, height) {\n var URL = window.URL || window.webkitURL;\n return new Promise(function (resolve) {\n var image = new Image();\n image.onerror = function () { return resolve({ valid: false }); };\n image.onload = function () { return resolve({\n valid: image.width === Number(width) && image.height === Number(height)\n }); };\n\n image.src = URL.createObjectURL(file);\n });\n};\n\nvar validate$c = function (files, ref) {\n var width = ref[0];\n var height = ref[1];\n\n var images = ensureArray(files).filter(function (file) { return imageRegex.test(file.name); });\n if (images.length === 0) {\n return false;\n }\n return Promise.all(images.map(function (image) { return validateImage(image, width, height); }));\n};\n\nvar dimensions = {\n validate: validate$c\n};\n\nvar merge_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = merge;\n\nfunction merge() {\n var obj = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var defaults = arguments.length > 1 ? arguments[1] : undefined;\n\n for (var key in defaults) {\n if (typeof obj[key] === 'undefined') {\n obj[key] = defaults[key];\n }\n }\n\n return obj;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(merge_1);\n\nvar isByteLength_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isByteLength;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/* eslint-disable prefer-rest-params */\nfunction isByteLength(str, options) {\n (0, _assertString.default)(str);\n var min;\n var max;\n\n if (_typeof(options) === 'object') {\n min = options.min || 0;\n max = options.max;\n } else {\n // backwards compatibility: isByteLength(str, min [, max])\n min = arguments[1];\n max = arguments[2];\n }\n\n var len = encodeURI(str).split(/%..|./).length - 1;\n return len >= min && (typeof max === 'undefined' || len <= max);\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nunwrapExports(isByteLength_1);\n\nvar isFQDN_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isFQDN;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_fqdn_options = {\n require_tld: true,\n allow_underscores: false,\n allow_trailing_dot: false\n};\n\nfunction isFQDN(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_fqdn_options);\n /* Remove the optional trailing dot before checking validity */\n\n if (options.allow_trailing_dot && str[str.length - 1] === '.') {\n str = str.substring(0, str.length - 1);\n }\n\n var parts = str.split('.');\n\n for (var i = 0; i < parts.length; i++) {\n if (parts[i].length > 63) {\n return false;\n }\n }\n\n if (options.require_tld) {\n var tld = parts.pop();\n\n if (!parts.length || !/^([a-z\\u00a1-\\uffff]{2,}|xn[a-z0-9-]{2,})$/i.test(tld)) {\n return false;\n } // disallow spaces\n\n\n if (/[\\s\\u2002-\\u200B\\u202F\\u205F\\u3000\\uFEFF\\uDB40\\uDC20]/.test(tld)) {\n return false;\n }\n }\n\n for (var part, _i = 0; _i < parts.length; _i++) {\n part = parts[_i];\n\n if (options.allow_underscores) {\n part = part.replace(/_/g, '');\n }\n\n if (!/^[a-z\\u00a1-\\uffff0-9-]+$/i.test(part)) {\n return false;\n } // disallow full-width chars\n\n\n if (/[\\uff01-\\uff5e]/.test(part)) {\n return false;\n }\n\n if (part[0] === '-' || part[part.length - 1] === '-') {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isFQDN = unwrapExports(isFQDN_1);\n\nvar isIP_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isIP;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar ipv4Maybe = /^(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})\\.(\\d{1,3})$/;\nvar ipv6Block = /^[0-9A-F]{1,4}$/i;\n\nfunction isIP(str) {\n var version = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n (0, _assertString.default)(str);\n version = String(version);\n\n if (!version) {\n return isIP(str, 4) || isIP(str, 6);\n } else if (version === '4') {\n if (!ipv4Maybe.test(str)) {\n return false;\n }\n\n var parts = str.split('.').sort(function (a, b) {\n return a - b;\n });\n return parts[3] <= 255;\n } else if (version === '6') {\n var blocks = str.split(':');\n var foundOmissionBlock = false; // marker to indicate ::\n // At least some OS accept the last 32 bits of an IPv6 address\n // (i.e. 2 of the blocks) in IPv4 notation, and RFC 3493 says\n // that '::ffff:a.b.c.d' is valid for IPv4-mapped IPv6 addresses,\n // and '::a.b.c.d' is deprecated, but also valid.\n\n var foundIPv4TransitionBlock = isIP(blocks[blocks.length - 1], 4);\n var expectedNumberOfBlocks = foundIPv4TransitionBlock ? 7 : 8;\n\n if (blocks.length > expectedNumberOfBlocks) {\n return false;\n } // initial or final ::\n\n\n if (str === '::') {\n return true;\n } else if (str.substr(0, 2) === '::') {\n blocks.shift();\n blocks.shift();\n foundOmissionBlock = true;\n } else if (str.substr(str.length - 2) === '::') {\n blocks.pop();\n blocks.pop();\n foundOmissionBlock = true;\n }\n\n for (var i = 0; i < blocks.length; ++i) {\n // test for a :: which can not be at the string start/end\n // since those cases have been handled above\n if (blocks[i] === '' && i > 0 && i < blocks.length - 1) {\n if (foundOmissionBlock) {\n return false; // multiple :: in address\n }\n\n foundOmissionBlock = true;\n } else if (foundIPv4TransitionBlock && i === blocks.length - 1) ; else if (!ipv6Block.test(blocks[i])) {\n return false;\n }\n }\n\n if (foundOmissionBlock) {\n return blocks.length >= 1;\n }\n\n return blocks.length === expectedNumberOfBlocks;\n }\n\n return false;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isIP = unwrapExports(isIP_1);\n\nvar isEmail_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isEmail;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nvar _isByteLength = _interopRequireDefault(isByteLength_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_email_options = {\n allow_display_name: false,\n require_display_name: false,\n allow_utf8_local_part: true,\n require_tld: true\n};\n/* eslint-disable max-len */\n\n/* eslint-disable no-control-regex */\n\nvar displayName = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\,\\.\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF\\s]*<(.+)>$/i;\nvar emailUserPart = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]+$/i;\nvar gmailUserPart = /^[a-z\\d]+$/;\nvar quotedEmailUser = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]))*$/i;\nvar emailUserUtf8Part = /^[a-z\\d!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+$/i;\nvar quotedEmailUserUtf8 = /^([\\s\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f\\x21\\x23-\\x5b\\x5d-\\x7e\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]|(\\\\[\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))*$/i;\n/* eslint-enable max-len */\n\n/* eslint-enable no-control-regex */\n\nfunction isEmail(str, options) {\n (0, _assertString.default)(str);\n options = (0, _merge.default)(options, default_email_options);\n\n if (options.require_display_name || options.allow_display_name) {\n var display_email = str.match(displayName);\n\n if (display_email) {\n str = display_email[1];\n } else if (options.require_display_name) {\n return false;\n }\n }\n\n var parts = str.split('@');\n var domain = parts.pop();\n var user = parts.join('@');\n var lower_domain = domain.toLowerCase();\n\n if (options.domain_specific_validation && (lower_domain === 'gmail.com' || lower_domain === 'googlemail.com')) {\n /*\n Previously we removed dots for gmail addresses before validating.\n This was removed because it allows `multiple..dots@gmail.com`\n to be reported as valid, but it is not.\n Gmail only normalizes single dots, removing them from here is pointless,\n should be done in normalizeEmail\n */\n user = user.toLowerCase(); // Removing sub-address from username before gmail validation\n\n var username = user.split('+')[0]; // Dots are not included in gmail length restriction\n\n if (!(0, _isByteLength.default)(username.replace('.', ''), {\n min: 6,\n max: 30\n })) {\n return false;\n }\n\n var _user_parts = username.split('.');\n\n for (var i = 0; i < _user_parts.length; i++) {\n if (!gmailUserPart.test(_user_parts[i])) {\n return false;\n }\n }\n }\n\n if (!(0, _isByteLength.default)(user, {\n max: 64\n }) || !(0, _isByteLength.default)(domain, {\n max: 254\n })) {\n return false;\n }\n\n if (!(0, _isFQDN.default)(domain, {\n require_tld: options.require_tld\n })) {\n if (!options.allow_ip_domain) {\n return false;\n }\n\n if (!(0, _isIP.default)(domain)) {\n if (!domain.startsWith('[') || !domain.endsWith(']')) {\n return false;\n }\n\n var noBracketdomain = domain.substr(1, domain.length - 2);\n\n if (noBracketdomain.length === 0 || !(0, _isIP.default)(noBracketdomain)) {\n return false;\n }\n }\n }\n\n if (user[0] === '\"') {\n user = user.slice(1, user.length - 1);\n return options.allow_utf8_local_part ? quotedEmailUserUtf8.test(user) : quotedEmailUser.test(user);\n }\n\n var pattern = options.allow_utf8_local_part ? emailUserUtf8Part : emailUserPart;\n var user_parts = user.split('.');\n\n for (var _i = 0; _i < user_parts.length; _i++) {\n if (!pattern.test(user_parts[_i])) {\n return false;\n }\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isEmail = unwrapExports(isEmail_1);\n\nfunction objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; }\n\nvar validate$d = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var multiple = ref.multiple; if ( multiple === void 0 ) multiple = false;\n var rest = objectWithoutProperties( ref, [\"multiple\"] );\n var options = rest;\n\n if (multiple && !Array.isArray(value)) {\n value = String(value).split(',').map(function (emailStr) { return emailStr.trim(); });\n }\n\n var validatorOptions = assign({}, options);\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isEmail(String(val), validatorOptions); });\n }\n\n return isEmail(String(value), validatorOptions);\n};\n\nvar email = {\n validate: validate$d\n};\n\nvar validate$e = function (value, options) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$e(val, options); });\n }\n\n return toArray(options).some(function (item) {\n // eslint-disable-next-line\n return item == value;\n });\n};\n\nvar included = {\n validate: validate$e\n};\n\nvar validate$f = function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return !validate$e.apply(void 0, args);\n};\n\nvar excluded = {\n validate: validate$f\n};\n\nvar validate$g = function (files, extensions) {\n var regex = new RegExp((\".(\" + (extensions.join('|')) + \")$\"), 'i');\n return ensureArray(files).every(function (file) { return regex.test(file.name); });\n};\n\nvar ext = {\n validate: validate$g\n};\n\nvar validate$h = function (files) { return (Array.isArray(files) ? files : [files]).every(function (file) { return /\\.(jpg|svg|jpeg|png|bmp|gif)$/i.test(file.name); }); };\n\nvar image = {\n validate: validate$h\n};\n\nvar validate$i = function (value) {\n if (Array.isArray(value)) {\n return value.every(function (val) { return /^-?[0-9]+$/.test(String(val)); });\n }\n\n return /^-?[0-9]+$/.test(String(value));\n};\n\nvar integer = {\n validate: validate$i\n};\n\nvar validate$j = function (value, ref) {\n if ( ref === void 0 ) ref = {};\n var version = ref.version; if ( version === void 0 ) version = 4;\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isIP(val, version); });\n }\n\n return isIP(value, version);\n};\n\nvar paramNames$b = ['version'];\n\nvar ip = {\n validate: validate$j,\n paramNames: paramNames$b\n};\n\nvar validate$k = function (value) {\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return (isIP(val, '') || isFQDN(val)); });\n }\n\n return isIP(value, '') || isFQDN(value);\n};\n\nvar ip_or_fqdn = {\n validate: validate$k\n};\n\nvar validate$l = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value === other;\n};\n\nvar is = {\n validate: validate$l\n};\n\nvar validate$m = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var other = ref[0];\n\n return value !== other;\n};\n\nvar is_not = {\n validate: validate$m\n};\n\n/**\n * @param {Array|String} value\n * @param {Number} length\n * @param {Number} max\n */\nvar compare = function (value, length, max) {\n if (max === undefined) {\n return value.length === length;\n }\n\n // cast to number.\n max = Number(max);\n\n return value.length >= length && value.length <= max;\n};\n\nvar validate$n = function (value, ref) {\n var length = ref[0];\n var max = ref[1]; if ( max === void 0 ) max = undefined;\n\n if (isNullOrUndefined(value)) {\n return false;\n }\n\n length = Number(length);\n if (typeof value === 'number') {\n value = String(value);\n }\n\n if (!value.length) {\n value = toArray(value);\n }\n\n return compare(value, length, max);\n};\n\nvar length = {\n validate: validate$n\n};\n\nvar validate$o = function (value, ref) {\n var length = ref[0];\n\n if (isNullOrUndefined(value)) {\n return length >= 0;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$o(val, [length]); });\n }\n\n return String(value).length <= length;\n};\n\nvar max = {\n validate: validate$o\n};\n\nvar validate$p = function (value, ref) {\n var max = ref[0];\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) { return validate$p(val, [max]); });\n }\n\n return Number(value) <= max;\n};\n\nvar max_value = {\n validate: validate$p\n};\n\nvar validate$q = function (files, mimes) {\n var regex = new RegExp(((mimes.join('|').replace('*', '.+')) + \"$\"), 'i');\n return ensureArray(files).every(function (file) { return regex.test(file.type); });\n};\n\nvar mimes = {\n validate: validate$q\n};\n\nvar validate$r = function (value, ref) {\n var length = ref[0];\n\n if (isNullOrUndefined(value)) {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$r(val, [length]); });\n }\n\n return String(value).length >= length;\n};\n\nvar min = {\n validate: validate$r\n};\n\nvar validate$s = function (value, ref) {\n var min = ref[0];\n\n if (isNullOrUndefined(value) || value === '') {\n return false;\n }\n\n if (Array.isArray(value)) {\n return value.length > 0 && value.every(function (val) { return validate$s(val, [min]); });\n }\n\n return Number(value) >= min;\n};\n\nvar min_value = {\n validate: validate$s\n};\n\nvar ar = /^[٠١٢٣٤٥٦٧٨٩]+$/;\nvar en = /^[0-9]+$/;\n\nvar validate$t = function (value) {\n var testValue = function (val) {\n var strValue = String(val);\n\n return en.test(strValue) || ar.test(strValue);\n };\n\n if (Array.isArray(value)) {\n return value.every(testValue);\n }\n\n return testValue(value);\n};\n\nvar numeric = {\n validate: validate$t\n};\n\nvar validate$u = function (value, ref) {\n var expression = ref.expression;\n\n if (typeof expression === 'string') {\n expression = new RegExp(expression);\n }\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return validate$u(val, { expression: expression }); });\n }\n\n return expression.test(String(value));\n};\n\nvar paramNames$c = ['expression'];\n\nvar regex = {\n validate: validate$u,\n paramNames: paramNames$c\n};\n\nvar validate$v = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var invalidateFalse = ref[0]; if ( invalidateFalse === void 0 ) invalidateFalse = false;\n\n if (isNullOrUndefined(value) || isEmptyArray(value)) {\n return false;\n }\n\n // incase a field considers `false` as an empty value like checkboxes.\n if (value === false && invalidateFalse) {\n return false;\n }\n\n return !!String(value).trim().length;\n};\n\nvar required = {\n validate: validate$v\n};\n\nvar validate$w = function (value, ref) {\n if ( ref === void 0 ) ref = [];\n var otherFieldVal = ref[0];\n var possibleVals = ref.slice(1);\n\n var required = possibleVals.includes(String(otherFieldVal).trim());\n\n if (!required) {\n return {\n valid: true,\n data: {\n required: required\n }\n };\n }\n\n var invalid = (isEmptyArray(value) || [false, null, undefined].includes(value));\n\n invalid = invalid || !String(value).trim().length;\n\n return {\n valid: !invalid,\n data: {\n required: required\n }\n };\n};\n\nvar options$5 = {\n hasTarget: true,\n computesRequired: true\n};\n\nvar required_if = {\n validate: validate$w,\n options: options$5\n};\n\nvar validate$x = function (files, ref) {\n var size = ref[0];\n\n if (isNaN(size)) {\n return false;\n }\n var nSize = Number(size) * 1024;\n return ensureArray(files).every(function (file) { return file.size <= nSize; });\n};\n\nvar size = {\n validate: validate$x\n};\n\nvar isURL_1 = createCommonjsModule(function (module, exports) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isURL;\n\nvar _assertString = _interopRequireDefault(assertString_1);\n\nvar _isFQDN = _interopRequireDefault(isFQDN_1);\n\nvar _isIP = _interopRequireDefault(isIP_1);\n\nvar _merge = _interopRequireDefault(merge_1);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar default_url_options = {\n protocols: ['http', 'https', 'ftp'],\n require_tld: true,\n require_protocol: false,\n require_host: true,\n require_valid_protocol: true,\n allow_underscores: false,\n allow_trailing_dot: false,\n allow_protocol_relative_urls: false\n};\nvar wrapped_ipv6 = /^\\[([^\\]]+)\\](?::([0-9]+))?$/;\n\nfunction isRegExp(obj) {\n return Object.prototype.toString.call(obj) === '[object RegExp]';\n}\n\nfunction checkHost(host, matches) {\n for (var i = 0; i < matches.length; i++) {\n var match = matches[i];\n\n if (host === match || isRegExp(match) && match.test(host)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction isURL(url, options) {\n (0, _assertString.default)(url);\n\n if (!url || url.length >= 2083 || /[\\s<>]/.test(url)) {\n return false;\n }\n\n if (url.indexOf('mailto:') === 0) {\n return false;\n }\n\n options = (0, _merge.default)(options, default_url_options);\n var protocol, auth, host, hostname, port, port_str, split, ipv6;\n split = url.split('#');\n url = split.shift();\n split = url.split('?');\n url = split.shift();\n split = url.split('://');\n\n if (split.length > 1) {\n protocol = split.shift().toLowerCase();\n\n if (options.require_valid_protocol && options.protocols.indexOf(protocol) === -1) {\n return false;\n }\n } else if (options.require_protocol) {\n return false;\n } else if (url.substr(0, 2) === '//') {\n if (!options.allow_protocol_relative_urls) {\n return false;\n }\n\n split[0] = url.substr(2);\n }\n\n url = split.join('://');\n\n if (url === '') {\n return false;\n }\n\n split = url.split('/');\n url = split.shift();\n\n if (url === '' && !options.require_host) {\n return true;\n }\n\n split = url.split('@');\n\n if (split.length > 1) {\n if (options.disallow_auth) {\n return false;\n }\n\n auth = split.shift();\n\n if (auth.indexOf(':') >= 0 && auth.split(':').length > 2) {\n return false;\n }\n }\n\n hostname = split.join('@');\n port_str = null;\n ipv6 = null;\n var ipv6_match = hostname.match(wrapped_ipv6);\n\n if (ipv6_match) {\n host = '';\n ipv6 = ipv6_match[1];\n port_str = ipv6_match[2] || null;\n } else {\n split = hostname.split(':');\n host = split.shift();\n\n if (split.length) {\n port_str = split.join(':');\n }\n }\n\n if (port_str !== null) {\n port = parseInt(port_str, 10);\n\n if (!/^[0-9]+$/.test(port_str) || port <= 0 || port > 65535) {\n return false;\n }\n }\n\n if (!(0, _isIP.default)(host) && !(0, _isFQDN.default)(host, options) && (!ipv6 || !(0, _isIP.default)(ipv6, 6))) {\n return false;\n }\n\n host = host || ipv6;\n\n if (options.host_whitelist && !checkHost(host, options.host_whitelist)) {\n return false;\n }\n\n if (options.host_blacklist && checkHost(host, options.host_blacklist)) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;\n});\n\nvar isURL = unwrapExports(isURL_1);\n\nvar validate$y = function (value, options) {\n if ( options === void 0 ) options = {};\n\n if (isNullOrUndefined(value)) {\n value = '';\n }\n\n var validatorOptions = assign({}, options);\n\n if (Array.isArray(value)) {\n return value.every(function (val) { return isURL(val, validatorOptions); });\n }\n\n return isURL(value, validatorOptions);\n};\n\nvar url = {\n validate: validate$y\n};\n\n/* eslint-disable camelcase */\n\nvar Rules = /*#__PURE__*/Object.freeze({\n after: after,\n alpha_dash: alpha_dash,\n alpha_num: alpha_num,\n alpha_spaces: alpha_spaces,\n alpha: alpha$1,\n before: before,\n between: between,\n confirmed: confirmed,\n credit_card: credit_card,\n date_between: date_between,\n date_format: date_format,\n decimal: decimal,\n digits: digits,\n dimensions: dimensions,\n email: email,\n ext: ext,\n image: image,\n included: included,\n integer: integer,\n length: length,\n ip: ip,\n ip_or_fqdn: ip_or_fqdn,\n is_not: is_not,\n is: is,\n max: max,\n max_value: max_value,\n mimes: mimes,\n min: min,\n min_value: min_value,\n excluded: excluded,\n numeric: numeric,\n regex: regex,\n required: required,\n required_if: required_if,\n size: size,\n url: url\n});\n\n// \n\nvar normalize = function (fields) {\n if (Array.isArray(fields)) {\n return fields.reduce(function (prev, curr) {\n if (includes(curr, '.')) {\n prev[curr.split('.')[1]] = curr;\n } else {\n prev[curr] = curr;\n }\n\n return prev;\n }, {});\n }\n\n return fields;\n};\n\n// Combines two flags using either AND or OR depending on the flag type.\nvar combine = function (lhs, rhs) {\n var mapper = {\n pristine: function (lhs, rhs) { return lhs && rhs; },\n dirty: function (lhs, rhs) { return lhs || rhs; },\n touched: function (lhs, rhs) { return lhs || rhs; },\n untouched: function (lhs, rhs) { return lhs && rhs; },\n valid: function (lhs, rhs) { return lhs && rhs; },\n invalid: function (lhs, rhs) { return lhs || rhs; },\n pending: function (lhs, rhs) { return lhs || rhs; },\n required: function (lhs, rhs) { return lhs || rhs; },\n validated: function (lhs, rhs) { return lhs && rhs; }\n };\n\n return Object.keys(mapper).reduce(function (flags, flag) {\n flags[flag] = mapper[flag](lhs[flag], rhs[flag]);\n\n return flags;\n }, {});\n};\n\nvar mapScope = function (scope, deep) {\n if ( deep === void 0 ) deep = true;\n\n return Object.keys(scope).reduce(function (flags, field) {\n if (!flags) {\n flags = assign({}, scope[field]);\n return flags;\n }\n\n // scope.\n var isScope = field.indexOf('$') === 0;\n if (deep && isScope) {\n return combine(mapScope(scope[field]), flags);\n } else if (!deep && isScope) {\n return flags;\n }\n\n flags = combine(flags, scope[field]);\n\n return flags;\n }, null);\n};\n\n/**\n * Maps fields to computed functions.\n */\nvar mapFields = function (fields) {\n if (!fields) {\n return function () {\n return mapScope(this.$validator.flags);\n };\n }\n\n var normalized = normalize(fields);\n return Object.keys(normalized).reduce(function (prev, curr) {\n var field = normalized[curr];\n prev[curr] = function mappedField () {\n // if field exists\n if (this.$validator.flags[field]) {\n return this.$validator.flags[field];\n }\n\n // scopeless fields were selected.\n if (normalized[curr] === '*') {\n return mapScope(this.$validator.flags, false);\n }\n\n // if it has a scope defined\n var index = field.indexOf('.');\n if (index <= 0) {\n return {};\n }\n\n var ref = field.split('.');\n var scope = ref[0];\n var name = ref.slice(1);\n\n scope = this.$validator.flags[(\"$\" + scope)];\n name = name.join('.');\n\n // an entire scope was selected: scope.*\n if (name === '*' && scope) {\n return mapScope(scope);\n }\n\n if (scope && scope[name]) {\n return scope[name];\n }\n\n return {};\n };\n\n return prev;\n }, {});\n};\n\nvar $validator = null;\n\nvar PROVIDER_COUNTER = 0;\n\nvar ValidationProvider = {\n $__veeInject: false,\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n default: function default$1 () {\n if (!this.$vnode.context.$_veeObserver) {\n this.$vnode.context.$_veeObserver = createObserver();\n }\n\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n vid: {\n type: [String, Number],\n default: function () {\n PROVIDER_COUNTER++;\n\n return (\"_vee_\" + PROVIDER_COUNTER);\n }\n },\n name: {\n type: String,\n default: null\n },\n mode: {\n type: [String, Function],\n default: function () {\n return getConfig().mode;\n }\n },\n events: {\n type: Array,\n validate: function () {\n /* istanbul ignore next */\n if (process.env.NODE_ENV !== 'production') {\n warn('events prop and config will be deprecated in future version please use the interaction modes instead');\n }\n\n return true;\n },\n default: function () {\n var events = getConfig().events;\n if (typeof events === 'string') {\n return events.split('|');\n }\n\n return events;\n }\n },\n rules: {\n type: [Object, String],\n default: null\n },\n immediate: {\n type: Boolean,\n default: false\n },\n persist: {\n type: Boolean,\n default: false\n },\n bails: {\n type: Boolean,\n default: function () { return getConfig().fastExit; }\n },\n debounce: {\n type: Number,\n default: function () { return getConfig().delay || 0; }\n },\n tag: {\n type: String,\n default: 'span'\n },\n slim: {\n type: Boolean,\n default: false\n }\n },\n watch: {\n rules: {\n deep: true,\n handler: function handler (val, oldVal) {\n this._needsValidation = !isEqual(val, oldVal);\n }\n }\n },\n data: function () { return ({\n messages: [],\n value: undefined,\n initialized: false,\n initialValue: undefined,\n flags: createFlags(),\n failedRules: {},\n forceRequired: false,\n isDeactivated: false,\n id: null\n }); },\n computed: {\n isValid: function isValid () {\n return this.flags.valid;\n },\n fieldDeps: function fieldDeps () {\n var this$1 = this;\n\n var rules = normalizeRules(this.rules);\n\n return Object.keys(rules).filter(RuleContainer.isTargetRule).map(function (rule) {\n var depName = rules[rule][0];\n watchCrossFieldDep(this$1, depName);\n\n return depName;\n });\n },\n normalizedEvents: function normalizedEvents () {\n var this$1 = this;\n\n var ref = computeModeSetting(this);\n var on = ref.on;\n\n return normalizeEvents(on || this.events || []).map(function (e) {\n if (e === 'input') {\n return this$1._inputEventName;\n }\n\n return e;\n });\n },\n isRequired: function isRequired () {\n var rules = normalizeRules(this.rules);\n var forceRequired = this.forceRequired;\n\n var isRequired = rules.required || forceRequired;\n this.flags.required = isRequired;\n\n return isRequired;\n },\n classes: function classes () {\n var this$1 = this;\n\n var names = getConfig().classNames;\n return Object.keys(this.flags).reduce(function (classes, flag) {\n var className = (names && names[flag]) || flag;\n if (isNullOrUndefined(this$1.flags[flag])) {\n return classes;\n }\n\n if (className) {\n classes[className] = this$1.flags[flag];\n }\n\n return classes;\n }, {});\n }\n },\n render: function render (h) {\n var this$1 = this;\n\n this.registerField();\n var ctx = createValidationCtx(this);\n\n // Gracefully handle non-existent scoped slots.\n var slot = this.$scopedSlots.default;\n /* istanbul ignore next */\n if (!isCallable(slot)) {\n if (process.env.NODE_ENV !== 'production') {\n warn('ValidationProvider expects a scoped slot. Did you forget to add \"v-slot\" to your slot?');\n }\n\n return h(this.tag, this.$slots.default);\n }\n\n var nodes = slot(ctx);\n // Handle single-root slot.\n extractVNodes(nodes).forEach(function (input) {\n addListeners.call(this$1, input);\n });\n\n return this.slim ? createRenderless(h, nodes) : h(this.tag, nodes);\n },\n beforeDestroy: function beforeDestroy () {\n // cleanup reference.\n this.$_veeObserver.unsubscribe(this);\n },\n activated: function activated () {\n this.$_veeObserver.subscribe(this);\n this.isDeactivated = false;\n },\n deactivated: function deactivated () {\n this.$_veeObserver.unsubscribe(this);\n this.isDeactivated = true;\n },\n methods: {\n setFlags: function setFlags (flags) {\n var this$1 = this;\n\n Object.keys(flags).forEach(function (flag) {\n this$1.flags[flag] = flags[flag];\n });\n },\n syncValue: function syncValue (e) {\n var value = normalizeValue$1(e);\n this.value = value;\n this.flags.changed = this.initialValue !== value;\n },\n reset: function reset () {\n this.messages = [];\n this._pendingValidation = null;\n this.initialValue = this.value;\n var flags = createFlags();\n this.setFlags(flags);\n },\n validate: function validate () {\n var this$1 = this;\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (args.length > 0) {\n this.syncValue(args[0]);\n }\n\n return this.validateSilent().then(function (result) {\n this$1.applyResult(result);\n\n return result;\n });\n },\n validateSilent: function validateSilent () {\n var this$1 = this;\n\n this.setFlags({ pending: true });\n\n return $validator.verify(this.value, this.rules, {\n name: this.name,\n values: createValuesLookup(this),\n bails: this.bails\n }).then(function (result) {\n this$1.setFlags({ pending: false });\n if (!this$1.isRequired) {\n this$1.setFlags({ valid: result.valid, invalid: !result.valid });\n }\n\n return result;\n });\n },\n applyResult: function applyResult (ref) {\n var errors = ref.errors;\n var failedRules = ref.failedRules;\n\n this.messages = errors;\n this.failedRules = assign({}, failedRules);\n this.setFlags({\n valid: !errors.length,\n changed: this.value !== this.initialValue,\n invalid: !!errors.length,\n validated: true\n });\n },\n registerField: function registerField () {\n if (!$validator) {\n $validator = getValidator() || new Validator(null, { fastExit: getConfig().fastExit });\n }\n\n updateRenderingContextRefs(this);\n }\n }\n};\n\nfunction createValidationCtx (ctx) {\n return {\n errors: ctx.messages,\n flags: ctx.flags,\n classes: ctx.classes,\n valid: ctx.isValid,\n failedRules: ctx.failedRules,\n reset: function () { return ctx.reset(); },\n validate: function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n return ctx.validate.apply(ctx, args);\n },\n aria: {\n 'aria-invalid': ctx.flags.invalid ? 'true' : 'false',\n 'aria-required': ctx.isRequired ? 'true' : 'false'\n }\n };\n}\n\nfunction normalizeValue$1 (value) {\n if (isEvent(value)) {\n return value.target.type === 'file' ? toArray(value.target.files) : value.target.value;\n }\n\n return value;\n}\n\n/**\n * Determines if a provider needs to run validation.\n */\nfunction shouldValidate (ctx, model) {\n // when an immediate/initial validation is needed and wasn't done before.\n if (!ctx._ignoreImmediate && ctx.immediate) {\n return true;\n }\n\n // when the value changes for whatever reason.\n if (ctx.value !== model.value) {\n return true;\n }\n\n // when it needs validation due to props/cross-fields changes.\n if (ctx._needsValidation) {\n return true;\n }\n\n // when the initial value is undefined and the field wasn't rendered yet.\n if (!ctx.initialized && model.value === undefined) {\n return true;\n }\n\n return false;\n}\n\nfunction computeModeSetting (ctx) {\n var compute = isCallable(ctx.mode) ? ctx.mode : modes[ctx.mode];\n\n return compute({\n errors: ctx.messages,\n value: ctx.value,\n flags: ctx.flags\n });\n}\n\nfunction onRenderUpdate (model) {\n if (!this.initialized) {\n this.initialValue = model.value;\n }\n\n var validateNow = shouldValidate(this, model);\n this._needsValidation = false;\n this.value = model.value;\n this._ignoreImmediate = true;\n\n if (!validateNow) {\n return;\n }\n\n this.validateSilent().then(this.immediate || this.flags.validated ? this.applyResult : function (x) { return x; });\n}\n\n// Creates the common handlers for a validatable context.\nfunction createCommonHandlers (ctx) {\n var onInput = function (e) {\n ctx.syncValue(e); // track and keep the value updated.\n ctx.setFlags({ dirty: true, pristine: false });\n };\n\n // Blur event listener.\n var onBlur = function () {\n ctx.setFlags({ touched: true, untouched: false });\n };\n\n var onValidate = ctx.$veeHandler;\n var mode = computeModeSetting(ctx);\n\n // Handle debounce changes.\n if (!onValidate || ctx.$veeDebounce !== ctx.debounce) {\n onValidate = debounce(\n function () {\n ctx.$nextTick(function () {\n var pendingPromise = ctx.validateSilent();\n // avoids race conditions between successive validations.\n ctx._pendingValidation = pendingPromise;\n pendingPromise.then(function (result) {\n if (pendingPromise === ctx._pendingValidation) {\n ctx.applyResult(result);\n ctx._pendingValidation = null;\n }\n });\n });\n },\n mode.debounce || ctx.debounce\n );\n\n // Cache the handler so we don't create it each time.\n ctx.$veeHandler = onValidate;\n // cache the debounce value so we detect if it was changed.\n ctx.$veeDebounce = ctx.debounce;\n }\n\n return { onInput: onInput, onBlur: onBlur, onValidate: onValidate };\n}\n\n// Adds all plugin listeners to the vnode.\nfunction addListeners (node) {\n var model = findModel(node);\n // cache the input eventName.\n this._inputEventName = this._inputEventName || getInputEventName(node, model);\n\n onRenderUpdate.call(this, model);\n\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n addVNodeListener(node, this._inputEventName, onInput);\n addVNodeListener(node, 'blur', onBlur);\n\n // add the validation listeners.\n this.normalizedEvents.forEach(function (evt) {\n addVNodeListener(node, evt, onValidate);\n });\n\n this.initialized = true;\n}\n\nfunction createValuesLookup (ctx) {\n var providers = ctx.$_veeObserver.refs;\n\n return ctx.fieldDeps.reduce(function (acc, depName) {\n if (!providers[depName]) {\n return acc;\n }\n\n acc[depName] = providers[depName].value;\n\n return acc;\n }, {});\n}\n\nfunction updateRenderingContextRefs (ctx) {\n // IDs should not be nullable.\n if (isNullOrUndefined(ctx.id) && ctx.id === ctx.vid) {\n ctx.id = PROVIDER_COUNTER;\n PROVIDER_COUNTER++;\n }\n\n var id = ctx.id;\n var vid = ctx.vid;\n // Nothing has changed.\n if (ctx.isDeactivated || (id === vid && ctx.$_veeObserver.refs[id])) {\n return;\n }\n\n // vid was changed.\n if (id !== vid && ctx.$_veeObserver.refs[id] === ctx) {\n ctx.$_veeObserver.unsubscribe({ vid: id });\n }\n\n ctx.$_veeObserver.subscribe(ctx);\n ctx.id = vid;\n}\n\nfunction createObserver () {\n return {\n refs: {},\n subscribe: function subscribe (ctx) {\n this.refs[ctx.vid] = ctx;\n },\n unsubscribe: function unsubscribe (ctx) {\n delete this.refs[ctx.vid];\n }\n };\n}\n\nfunction watchCrossFieldDep (ctx, depName, withHooks) {\n if ( withHooks === void 0 ) withHooks = true;\n\n var providers = ctx.$_veeObserver.refs;\n if (!ctx._veeWatchers) {\n ctx._veeWatchers = {};\n }\n\n if (!providers[depName] && withHooks) {\n return ctx.$once('hook:mounted', function () {\n watchCrossFieldDep(ctx, depName, false);\n });\n }\n\n if (!isCallable(ctx._veeWatchers[depName]) && providers[depName]) {\n ctx._veeWatchers[depName] = providers[depName].$watch('value', function () {\n if (ctx.flags.validated) {\n ctx._needsValidation = true;\n ctx.validate();\n }\n });\n }\n}\n\nvar flagMergingStrategy = {\n pristine: 'every',\n dirty: 'some',\n touched: 'some',\n untouched: 'every',\n valid: 'every',\n invalid: 'some',\n pending: 'some',\n validated: 'every'\n};\n\nfunction mergeFlags (lhs, rhs, strategy) {\n var stratName = flagMergingStrategy[strategy];\n\n return [lhs, rhs][stratName](function (f) { return f; });\n}\n\nvar OBSERVER_COUNTER = 0;\n\nvar ValidationObserver = {\n name: 'ValidationObserver',\n provide: function provide () {\n return {\n $_veeObserver: this\n };\n },\n inject: {\n $_veeObserver: {\n from: '$_veeObserver',\n default: function default$1 () {\n if (!this.$vnode.context.$_veeObserver) {\n return null;\n }\n\n return this.$vnode.context.$_veeObserver;\n }\n }\n },\n props: {\n tag: {\n type: String,\n default: 'span'\n },\n slim: {\n type: Boolean,\n default: false\n }\n },\n data: function () { return ({\n vid: (\"obs_\" + (OBSERVER_COUNTER++)),\n refs: {},\n observers: [],\n persistedStore: {}\n }); },\n computed: {\n ctx: function ctx () {\n var this$1 = this;\n\n var ctx = {\n errors: {},\n validate: function (arg) {\n var promise = this$1.validate(arg);\n\n return {\n then: function then (thenable) {\n return promise.then(function (success) {\n if (success && isCallable(thenable)) {\n return Promise.resolve(thenable());\n }\n\n return Promise.resolve(success);\n });\n }\n };\n },\n reset: function () { return this$1.reset(); }\n };\n\n return values(this.refs).concat( Object.keys(this.persistedStore).map(function (key) {\n return {\n vid: key,\n flags: this$1.persistedStore[key].flags,\n messages: this$1.persistedStore[key].errors\n };\n }),\n this.observers ).reduce(function (acc, provider) {\n Object.keys(flagMergingStrategy).forEach(function (flag) {\n var flags = provider.flags || provider.ctx;\n if (!(flag in acc)) {\n acc[flag] = flags[flag];\n return;\n }\n\n acc[flag] = mergeFlags(acc[flag], flags[flag], flag);\n });\n\n acc.errors[provider.vid] = provider.messages || values(provider.ctx.errors).reduce(function (errs, obsErrors) {\n return errs.concat(obsErrors);\n }, []);\n\n return acc;\n }, ctx);\n }\n },\n created: function created () {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n activated: function activated () {\n if (this.$_veeObserver) {\n this.$_veeObserver.subscribe(this, 'observer');\n }\n },\n deactivated: function deactivated () {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n beforeDestroy: function beforeDestroy () {\n if (this.$_veeObserver) {\n this.$_veeObserver.unsubscribe(this, 'observer');\n }\n },\n render: function render (h) {\n var slots = this.$slots.default || this.$scopedSlots.default || [];\n if (isCallable(slots)) {\n slots = slots(this.ctx);\n }\n\n return this.slim ? createRenderless(h, slots) : h(this.tag, { on: this.$listeners, attrs: this.$attrs }, slots);\n },\n methods: {\n subscribe: function subscribe (subscriber, kind) {\n var obj;\n\n if ( kind === void 0 ) kind = 'provider';\n if (kind === 'observer') {\n this.observers.push(subscriber);\n return;\n }\n\n this.refs = Object.assign({}, this.refs, ( obj = {}, obj[subscriber.vid] = subscriber, obj ));\n if (subscriber.persist && this.persistedStore[subscriber.vid]) {\n this.restoreProviderState(subscriber);\n }\n },\n unsubscribe: function unsubscribe (ref, kind) {\n var vid = ref.vid;\n if ( kind === void 0 ) kind = 'provider';\n\n if (kind === 'provider') {\n this.removeProvider(vid);\n }\n\n var idx = findIndex(this.observers, function (o) { return o.vid === vid; });\n if (idx !== -1) {\n this.observers.splice(idx, 1);\n }\n },\n validate: function validate (ref) {\n if ( ref === void 0 ) ref = { silent: false };\n var silent = ref.silent;\n\n return Promise.all(values(this.refs).map(function (ref) { return ref[silent ? 'validateSilent' : 'validate']().then(function (r) { return r.valid; }); }).concat( this.observers.map(function (obs) { return obs.validate({ silent: silent }); })\n )).then(function (results) { return results.every(function (r) { return r; }); });\n },\n reset: function reset () {\n var this$1 = this;\n\n Object.keys(this.persistedStore).forEach(function (key) {\n this$1.$delete(this$1.persistedStore, key);\n });\n return values(this.refs).concat( this.observers).forEach(function (ref) { return ref.reset(); });\n },\n restoreProviderState: function restoreProviderState (provider) {\n var state = this.persistedStore[provider.vid];\n provider.setFlags(state.flags);\n provider.applyResult(state);\n this.$delete(this.persistedStore, provider.vid);\n },\n removeProvider: function removeProvider (vid) {\n var obj;\n\n var provider = this.refs[vid];\n // save it for the next time.\n if (provider && provider.persist) {\n /* istanbul ignore else */\n if (process.env.NODE_ENV !== 'production') {\n if (vid.indexOf('_vee_') === 0) {\n warn('Please provide a `vid` prop when using `persist`, there might be unexpected issues otherwise.');\n }\n }\n\n this.persistedStore = assign({}, this.persistedStore, ( obj = {}, obj[vid] = {\n flags: provider.flags,\n errors: provider.messages,\n failedRules: provider.failedRules\n }, obj ));\n }\n\n this.$delete(this.refs, vid);\n },\n }\n};\n\nfunction withValidation (component, ctxToProps) {\n if ( ctxToProps === void 0 ) ctxToProps = null;\n\n var options = isCallable(component) ? component.options : component;\n options.$__veeInject = false;\n var hoc = {\n name: ((options.name || 'AnonymousHoc') + \"WithValidation\"),\n props: assign({}, ValidationProvider.props),\n data: ValidationProvider.data,\n computed: assign({}, ValidationProvider.computed),\n methods: assign({}, ValidationProvider.methods),\n $__veeInject: false,\n beforeDestroy: ValidationProvider.beforeDestroy,\n inject: ValidationProvider.inject\n };\n\n // Default ctx converts ctx props to component props.\n if (!ctxToProps) {\n ctxToProps = function (ctx) { return ctx; };\n }\n\n var eventName = (options.model && options.model.event) || 'input';\n\n hoc.render = function (h) {\n var obj;\n\n this.registerField();\n var vctx = createValidationCtx(this);\n var listeners = assign({}, this.$listeners);\n\n var model = findModel(this.$vnode);\n this._inputEventName = this._inputEventName || getInputEventName(this.$vnode, model);\n onRenderUpdate.call(this, model);\n\n var ref = createCommonHandlers(this);\n var onInput = ref.onInput;\n var onBlur = ref.onBlur;\n var onValidate = ref.onValidate;\n\n mergeVNodeListeners(listeners, eventName, onInput);\n mergeVNodeListeners(listeners, 'blur', onBlur);\n this.normalizedEvents.forEach(function (evt, idx) {\n mergeVNodeListeners(listeners, evt, onValidate);\n });\n\n // Props are any attrs not associated with ValidationProvider Plus the model prop.\n // WARNING: Accidental prop overwrite will probably happen.\n var ref$1 = findModelConfig(this.$vnode) || { prop: 'value' };\n var prop = ref$1.prop;\n var props = assign({}, this.$attrs, ( obj = {}, obj[prop] = model.value, obj ), ctxToProps(vctx));\n\n return h(options, {\n attrs: this.$attrs,\n props: props,\n on: listeners\n }, normalizeSlots(this.$slots, this.$vnode.context));\n };\n\n return hoc;\n}\n\nvar version = '2.2.15';\n\nObject.keys(Rules).forEach(function (rule) {\n Validator.extend(rule, Rules[rule].validate, assign({}, Rules[rule].options, { paramNames: Rules[rule].paramNames }));\n});\n\n// Merge the english messages.\nValidator.localize({ en: locale });\n\nvar install = VeeValidate$1.install;\n\nVeeValidate$1.version = version;\nVeeValidate$1.mapFields = mapFields;\nVeeValidate$1.ValidationProvider = ValidationProvider;\nVeeValidate$1.ValidationObserver = ValidationObserver;\nVeeValidate$1.withValidation = withValidation;\n\nexport default VeeValidate$1;\nexport { ErrorBag, Rules, ValidationObserver, ValidationProvider, Validator, directive, install, mapFields, mixin, version, withValidation };\n"],"names":["isTextInput","el","includes","isCheckboxOrRadioInput","isDateInput","getDataAttribute","name","isNaN$1","value","isNullOrUndefined","values","len","createFlags","isEqual","lhs","rhs","i","isObject","key","getScope","scope","form","getForm","getPath","path","target","def","prop","hasPath","obj","isValidPath","reducer","parseRule","rule","params","debounce","fn","wait","token","timeout","args","later","appendRule","rules","normalizeRules","assign","prev","curr","warn","parsedRule","message","createError","isCallable","func","hasClass","className","addClass","removeClass","reg","toggleClass","status","item","toArray","arrayLike","array","length","ensureArray","isEmptyArray","others","to","arg","id","idTemplate","uniqId","newId","findIndex","predicate","find","idx","isBuiltInComponent","vnode","tag","makeDelayObject","events","delay","delayConfig","e","deepParseInt","input","map","element","merge","source","obj$1","fillRulesFromElement","timeFormat","k","parseSelector","selector","parts","collection","arr","defineNonReactive","LOCALE","Dictionary","dictionary","prototypeAccessors","locale","format","data","field","dict","fallback","attribute","drivers","currentDriver","DictionaryResolver","driver","implementation","ErrorBag","errorBag","this$1","index","error","ref","filterFn","matchesScope","matchesVM","isSingleField","groupErrors","items","errors","isPrimary","isAlt","collected","match","condition","vmId","matches","shouldRemove","matchesRule","matchesName","isLast","DEFAULT_CONFIG","currentConfig","resolveConfig","ctx","selfConfig","getConfig","setConfig","newConf","findModel","d","extractChildren","extractVNodes","children","nodes","node","candidates","findModelConfig","mergeVNodeListeners","eventName","handler","prevHandler","addNativeNodeListener","addComponentNodeListener","addVNodeListener","getInputEventName","model","event","normalizeSlots","slots","createRenderless","h","Resolver","binding","options","config","normalized","globalDelay","watchable","lazy","boundGetter","els","checkbox","elm","context","opt","RULES","RuleContainer","staticAccessors","validate","paramNames","ruleName","isEvent","evt","normalizeEvents","evts","supportsPassive","detectPassiveSupport","opts","addEventListener","cb","DEFAULT_OPTIONS","Field","prototypeAccessors$1","alias","matchesComponentId","pendingPromise","promise","resetFlag","defaults","flag","flags","negated","fields","r","ref$1","w","isReset","applyClasses","onBlur","inputEvent","onInput","blurEvent","defaultInputEvent","expression","watchCtxVm","debouncedFn","unwatch","addListener","applyAriaAttrs","FieldBag","itemsById","prototypeAccessors$2","matcher","m","mapper","ScopedValidator","base","vm","prototypeAccessors$3","f","acc","val","attachOpts","descriptor","VALIDATOR","getValidator","setValidator","requestsValidator","injections","mixin","requested","Vue","findField","directive","validator","fieldOptions","Validator","validations","pluginContainer","prototypeAccessors$4","staticAccessors$1","hasChanged","mergedOpts","lang","fieldOpts","oldFieldMatcher","oldField","result","uid","fieldDescriptor","silent","matched","validationPromise","providedValues","results","t","targetRules","targetKey","ruleMap","targetName","paramName","localizedName","hasKeys","dateFormat","allValid","fieldScope","fieldName","fullName","matchers","allErrors","initial","requireRules","ruleOptions","promises","isExitEarly","resolve","v","normalizeValue","normalizeFormat","I18nDictionary","i18n","rootKey","prototypeAccessors$5","_","dataOptions","localeKey","clone","aggressive","eager","passive","modes","pendingPlugins","pluginInstance","VeeValidate$1","_Vue","prototypeAccessors$6","staticAccessors$2","instance","cfg","mode","plugin","i18nRootKey","onLocaleChanged","formatFileSize","size","units","threshold","isDefinedGlobally","messages","inclusion","min","max","decimals","width","height","toInteger","dirtyNumber","number","MILLISECONDS_IN_MINUTE","getTimezoneOffsetInMilliseconds","dirtyDate","date","baseTimezoneOffset","millisecondsPartOfTimezoneOffset","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE$1","DEFAULT_ADDITIONAL_DIGITS","patterns","toDate","argument","dirtyOptions","additionalDigits","dateStrings","splitDateString","parseYearResult","parseYear","year","restDateString","parseDate","timestamp","time","offset","parseTime","parseTimezone","dateString","timeString","patternYYY","patternYYYYY","yearString","centuryString","month","week","validateDate","dayOfYear","validateDayOfYearDate","day","validateWeekDate","dayOfISOWeekYear","dayOfWeek","hours","minutes","validateTime","seconds","timezoneString","absoluteOffset","validateTimezone","isoWeekYear","fourthOfJanuaryDay","diff","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","isLeapYearIndex","isLeapYear","addMilliseconds","dirtyAmount","amount","isValid","formatDistanceLocale","formatDistance","count","buildFormatLongFn","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","baseDate","buildLocalizeFn","dirtyIndex","valuesArray","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","rem100","localize","quarter","buildMatchPatternFn","dirtyString","string","matchResult","matchedString","parseResult","buildMatchFn","matchPattern","parsePatterns","pattern","findKey","object","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","locale$1","MILLISECONDS_IN_DAY","getUTCDayOfYear","startOfYearTimestamp","difference","startOfUTCISOWeek","weekStartsOn","getUTCISOWeekYear","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","startOfUTCISOWeekYear","fourthOfJanuary","MILLISECONDS_IN_WEEK","getUTCISOWeek","startOfUTCWeek","localeWeekStartsOn","defaultWeekStartsOn","getUTCWeekYear","localeFirstWeekContainsDate","defaultFirstWeekContainsDate","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfUTCWeekYear","firstWeek","MILLISECONDS_IN_WEEK$1","getUTCWeek","dayPeriodEnum","formatters","era","signedYear","twoDigitYear","addLeadingZeros","signedWeekYear","weekYear","isoWeek","dayOfMonth","localDayOfWeek","isoDayOfWeek","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","originalDate","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","targetLength","sign","output","dirtyDelimeter","delimeter","absOffset","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","subMilliseconds","protectedTokens","isProtectedToken","throwProtectedError","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","dirtyFormatStr","formatStr","utcDate","formatterOptions","substring","firstCharacter","longFormatter","cleanEscapedString","formatter","isAfter","dirtyDateToCompare","dateToCompare","isBefore","isEqual$1","dirtyLeftDate","dirtyRightDate","dateLeft","dateRight","setUTCDay","dirtyDay","currentDay","remainder","dayIndex","setUTCWeek","dirtyWeek","setUTCISODay","setUTCISOWeek","dirtyISOWeek","MILLISECONDS_IN_HOUR$1","MILLISECONDS_IN_MINUTE$2","MILLISECONDS_IN_SECOND","numericPatterns","timezonePatterns","parseNumericPattern","valueCallback","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","enumValue","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","DAYS_IN_MONTH$1","DAYS_IN_MONTH_LEAP_YEAR$1","isLeapYearIndex$1","parsers","normalizedTwoDigitYear","firstWeekOfYear","wholeWeekDays","isPM","TIMEZONE_UNIT_PRIORITY","formattingTokensRegExp$1","escapedStringRegExp$1","doubleQuoteRegExp$1","notWhitespaceRegExp","parse","dirtyDateString","dirtyFormatString","dirtyBaseDate","formatString","subFnOptions","setters","dateToSystemTimezone","tokens","parser","cleanEscapedString$1","uniquePrioritySetters","setter","a","b","priority","setterArray","convertedDate","parseDate$1","format$1","parsed","afterValidator","targetValue","after","alpha","alphaSpaces","alphanumeric","alphaDash","loc","paramNames$1","alpha$1","validate$1","paramNames$2","alpha_dash","validate$2","paramNames$3","alpha_num","validate$3","paramNames$4","alpha_spaces","validate$4","options$1","paramNames$5","before","validate$5","paramNames$6","between","validate$6","options$2","paramNames$7","confirmed","unwrapExports","x","createCommonjsModule","module","assertString_1","exports","assertString","_typeof","isString","invalidType","isCreditCard_1","isCreditCard","_assertString","_interopRequireDefault","creditCard","str","sanitized","sum","digit","tmpNum","shouldDouble","validate$7","credit_card","validate$8","inclusivity","minDate","maxDate","dateVal","options$3","paramNames$8","date_between","validate$9","options$4","paramNames$9","date_format","validate$a","separator","regexPart","regex","parsedValue","paramNames$a","decimal","validate$b","strVal","digits","imageRegex","validateImage","file","URL","image","validate$c","files","images","dimensions","merge_1","isByteLength_1","isByteLength","isFQDN_1","isFQDN","_merge","default_fqdn_options","tld","part","_i","isIP_1","isIP","ipv4Maybe","ipv6Block","version","blocks","foundOmissionBlock","foundIPv4TransitionBlock","expectedNumberOfBlocks","isEmail_1","isEmail","_isByteLength","_isFQDN","_isIP","default_email_options","displayName","emailUserPart","gmailUserPart","quotedEmailUser","emailUserUtf8Part","quotedEmailUserUtf8","display_email","domain","user","lower_domain","username","_user_parts","noBracketdomain","user_parts","objectWithoutProperties","exclude","validate$d","multiple","rest","emailStr","validatorOptions","email","validate$e","included","validate$f","excluded","validate$g","extensions","ext","validate$h","validate$i","integer","validate$j","paramNames$b","ip","validate$k","ip_or_fqdn","validate$l","other","is","validate$m","is_not","compare","validate$n","validate$o","validate$p","max_value","validate$q","mimes","validate$r","validate$s","min_value","ar","en","validate$t","testValue","strValue","numeric","validate$u","paramNames$c","validate$v","invalidateFalse","required","validate$w","otherFieldVal","possibleVals","invalid","options$5","required_if","validate$x","nSize","isURL_1","isURL","default_url_options","wrapped_ipv6","isRegExp","checkHost","host","url","protocol","auth","hostname","port","port_str","split","ipv6","ipv6_match","validate$y","Rules","normalize","combine","mapScope","deep","isScope","mapFields","$validator","PROVIDER_COUNTER","ValidationProvider","createObserver","oldVal","depName","watchCrossFieldDep","computeModeSetting","on","forceRequired","isRequired","names","classes","createValidationCtx","slot","addListeners","normalizeValue$1","createValuesLookup","failedRules","updateRenderingContextRefs","shouldValidate","compute","onRenderUpdate","validateNow","createCommonHandlers","onValidate","providers","vid","withHooks","flagMergingStrategy","mergeFlags","strategy","stratName","OBSERVER_COUNTER","ValidationObserver","thenable","success","provider","errs","obsErrors","subscriber","kind","o","obs","state","withValidation","component","ctxToProps","hoc","vctx","listeners","props"],"mappings":"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"}