{"version":3,"file":"ad-hoc/wac/company/contact.js","mappings":"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","sources":["webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/cancel/CanceledError.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/AxiosError.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/defaults/index.js","webpack:///./node_modules/axios/lib/defaults/transitional.js","webpack:///./node_modules/axios/lib/env/data.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/isAxiosError.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/helpers/null.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/parseProtocol.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/helpers/toFormData.js","webpack:///./node_modules/axios/lib/helpers/validator.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./config.ts","webpack:///./resources/js/ad-hoc/wac/company/contact.ts","webpack:///./resources/js/common/analytics.ts","webpack:///./resources/js/common/environment.ts","webpack:///./resources/js/common/logger.ts","webpack:///./resources/js/common/optimizelyHelpers.ts","webpack:///./resources/js/common/tracking/index.ts","webpack:///./resources/js/common/tracking/constants.ts","webpack:///./resources/js/common/tracking/platforms/gasv2.ts","webpack:///./resources/js/common/tracking/platforms/gasv3.ts","webpack:///./resources/js/common/tracking/platforms/googleAnalytics.ts","webpack:///./resources/js/common/tracking/platforms/optimizely.ts","webpack:///./resources/js/common/tracking/platforms/segment.ts","webpack:///./resources/js/common/tracking/platforms/index.ts","webpack:///./resources/js/imkt.ts","webpack:///./resources/js/utils/api.ts","webpack:///./resources/js/utils/browser.ts","webpack:///./resources/js/utils/general.ts","webpack:///./resources/js/utils/get-script.ts","webpack:///./resources/js/utils/history.ts","webpack:///./resources/js/utils/storage.ts","webpack:///./resources/js/utils/string.ts","webpack:///./resources/js/utils/tracking.ts","webpack:///./resources/js/utils/url.ts","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/jquery-validation/dist/jquery.validate-exposed.js","webpack:///./node_modules/expose-loader/dist/runtime/getGlobalThis.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/jquery-validation/dist/jquery.validate.js","webpack:///external var \"jQuery\""],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar transitionalDefaults = require('../defaults/transitional');\nvar AxiosError = require('../core/AxiosError');\nvar CanceledError = require('../cancel/CanceledError');\nvar parseProtocol = require('../helpers/parseProtocol');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && utils.isStandardBrowserEnv()) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function(cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || (cancel && cancel.type) ? new CanceledError() : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n var protocol = parseProtocol(fullPath);\n\n if (protocol && [ 'http', 'https', 'file' ].indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = require('./cancel/CanceledError');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\naxios.toFormData = require('./helpers/toFormData');\n\n// Expose AxiosError class\naxios.AxiosError = require('../lib/core/AxiosError');\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\nvar CanceledError = require('./CanceledError');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(function(cancel) {\n if (!token._listeners) return;\n\n var i;\n var l = token._listeners.length;\n\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function(onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function(resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nvar AxiosError = require('../core/AxiosError');\nvar utils = require('../utils');\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction CanceledError(message) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nmodule.exports = CanceledError;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar buildFullPath = require('./buildFullPath');\nvar validator = require('../helpers/validator');\n\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n var transitional = config.transitional;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n var promise;\n\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n }\n\n\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n var fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url: url,\n data: data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nvar prototype = AxiosError.prototype;\nvar descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED'\n// eslint-disable-next-line func-names\n].forEach(function(code) {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = function(error, code, config, request, response, customProps) {\n var axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nmodule.exports = AxiosError;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\nvar CanceledError = require('../cancel/CanceledError');\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'beforeRedirect': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n};\n","'use strict';\n\nvar AxiosError = require('./AxiosError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar normalizeHeaderName = require('../helpers/normalizeHeaderName');\nvar AxiosError = require('../core/AxiosError');\nvar transitionalDefaults = require('./transitional');\nvar toFormData = require('../helpers/toFormData');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('../adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('../adapters/http');\n }\n return adapter;\n}\n\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nvar defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n\n var isObjectPayload = utils.isObject(data);\n var contentType = headers && headers['Content-Type'];\n\n var isFileList;\n\n if ((isFileList = utils.isFileList(data)) || (isObjectPayload && contentType === 'multipart/form-data')) {\n var _FormData = this.env && this.env.FormData;\n return toFormData(isFileList ? {'files[]': data} : data, _FormData && new _FormData());\n } else if (isObjectPayload || contentType === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional || defaults.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n\n if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: require('./env/FormData')\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","module.exports = {\n \"version\": \"0.27.2\"\n};","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","// eslint-disable-next-line strict\nmodule.exports = null;\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nmodule.exports = function parseProtocol(url) {\n var match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Convert a data object to FormData\n * @param {Object} obj\n * @param {?Object} [formData]\n * @returns {Object}\n **/\n\nfunction toFormData(obj, formData) {\n // eslint-disable-next-line no-param-reassign\n formData = formData || new FormData();\n\n var stack = [];\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n function build(data, parentKey) {\n if (utils.isPlainObject(data) || utils.isArray(data)) {\n if (stack.indexOf(data) !== -1) {\n throw Error('Circular reference detected in ' + parentKey);\n }\n\n stack.push(data);\n\n utils.forEach(data, function each(value, key) {\n if (utils.isUndefined(value)) return;\n var fullKey = parentKey ? parentKey + '.' + key : key;\n var arr;\n\n if (value && !parentKey && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (utils.endsWith(key, '[]') && (arr = utils.toArray(value))) {\n // eslint-disable-next-line func-names\n arr.forEach(function(el) {\n !utils.isUndefined(el) && formData.append(fullKey, convertValue(el));\n });\n return;\n }\n }\n\n build(value, fullKey);\n });\n\n stack.pop();\n } else {\n formData.append(parentKey, convertValue(data));\n }\n }\n\n build(obj);\n\n return formData;\n}\n\nmodule.exports = toFormData;\n","'use strict';\n\nvar VERSION = require('../env/data').version;\nvar AxiosError = require('../core/AxiosError');\n\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nvar deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function(value, opt, opts) {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nmodule.exports = {\n assertOptions: assertOptions,\n validators: validators\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n// eslint-disable-next-line func-names\nvar kindOf = (function(cache) {\n // eslint-disable-next-line func-names\n return function(thing) {\n var str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n };\n})(Object.create(null));\n\nfunction kindOfTest(type) {\n type = type.toLowerCase();\n return function isKindOf(thing) {\n return kindOf(thing) === type;\n };\n}\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return Array.isArray(val);\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nvar isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nvar isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nvar isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nvar isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} thing The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(thing) {\n var pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n * @function\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nvar isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n */\n\nfunction inherits(constructor, superConstructor, props, descriptors) {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function} [filter]\n * @returns {Object}\n */\n\nfunction toFlatObject(sourceObj, destObj, filter) {\n var props;\n var i;\n var prop;\n var merged = {};\n\n destObj = destObj || {};\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (!merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = Object.getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/*\n * determines whether a string ends with the characters of a specified string\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n * @returns {boolean}\n */\nfunction endsWith(str, searchString, position) {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n var lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object\n * @param {*} [thing]\n * @returns {Array}\n */\nfunction toArray(thing) {\n if (!thing) return null;\n var i = thing.length;\n if (isUndefined(i)) return null;\n var arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n// eslint-disable-next-line func-names\nvar isTypedArray = (function(TypedArray) {\n // eslint-disable-next-line func-names\n return function(thing) {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && Object.getPrototypeOf(Uint8Array));\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM,\n inherits: inherits,\n toFlatObject: toFlatObject,\n kindOf: kindOf,\n kindOfTest: kindOfTest,\n endsWith: endsWith,\n toArray: toArray,\n isTypedArray: isTypedArray,\n isFileList: isFileList\n};\n","/**\n * url Config for de cluttering endpoints so that we can change it in one place and it will reflect\n * across the whole code base, eventually we can make one for prod but just dev for right now\n * stgWacInternalUrl(formerly): \"qa-wac.internal.atlassian.com\"\n */\n\n\nexport const stgConfig = {\n stgWacInternalUrl: \"https://wac.stg.internal.atlassian.com\"\n};\n\nexport default stgConfig;\n","import * as $ from \"jquery\";\nimport imkt from '../../../imkt';\nimport tracking from '../../../utils/tracking';\nimport 'jquery-validation';\n\nvar cst = window.cst || (window.cst = {});\n\nvar FILE_SIZE_LIMIT = 26214400; //25MB\nvar FILE_SIZE_LIMIT_DISPLAY = (FILE_SIZE_LIMIT / 1024 / 1024).toFixed(0);\n\nvar $formSection = $(\".wac-form--billing-licensing\");\nvar STICKYNAV_HEIGHT = $(\"#companynav\").outerHeight();\n\n/********************\n Custom AUI validators for conditional forms.\n These validators do not invalidate if the field is hidden by our conditional form framework.\n ********************/\n\n/**\n * data-aui-validation-cst-required\n *\n * clone of the standard aui \"required\" validator\n */\n/* jshint -W117 */\nAJS.formValidation.register([\"cst-required\"], function (field) {\n var value = $.trim(field.el.value);\n if (!$(field.el).prop(\"disabled\") && value.length === 0) {\n field.invalidate(\"This is a required field\");\n } else {\n field.validate();\n }\n});\n\n/**\n * data-aui-validation-cst-minlength\n *\n * validate that the field has a minimum number of characters to validate\n */\nAJS.formValidation.register([\"cst-minlength\"], function (field) {\n var value = $.trim(field.el.value),\n arg = parseInt(field.args(\"cst-minlength\"));\n if (!$(field.el).prop(\"disabled\") && arg && value.length < arg) {\n field.invalidate(\n AJS.format(\"Input has minimum length of {0} characters\", arg)\n );\n } else {\n field.validate();\n }\n});\n\n/**\n * data-aui-validation-cst-filesize\n *\n * For HTML 5 capable browsers, check the filesize of file attachements\n */\nAJS.formValidation.register([\"cst-filesize\"], function (field) {\n if (field.el && !$(field.el).prop(\"disabled\") && field.el.files) {\n var files = field.el.files;\n if (files.length > 0) {\n var fileSize = files[0].size;\n if (fileSize > FILE_SIZE_LIMIT) {\n field.invalidate(\n \"Maximum attachment size is \" + FILE_SIZE_LIMIT_DISPLAY + \" MB\"\n );\n }\n }\n }\n field.validate();\n});\n\n// validate email address\nAJS.formValidation.register([\"cst-email\"], function (field) {\n var emailAddress = $.trim(field.el.value).trim(),\n pattern = cst.support.forms[field.args(\"cst-email\")];\n if (\n !$(field.el).prop(\"disabled\") &&\n pattern &&\n !validEmailAddressAndUser(pattern, emailAddress)\n ) {\n field.invalidate(AJS.format(\"Invalid Email address\"));\n } else {\n field.validate();\n }\n});\n\n// This logic has been taken from JSD com.atlassian.servicedesk.internal.feature.emailchannel.EmailUtil.java\nfunction validEmailAddressAndUser(pattern, emailAddress) {\n if (pattern.test(emailAddress)) {\n var userName = emailAddress.split(\"@\")[0];\n // we do not allow .foo or foo. or foo..foo username in the email as per JSD restriction so email address with any of these username will be invalid\n return (\n !/^[.]/.test(userName) &&\n !/.*[.]$/.test(userName) &&\n !/.*?[.]{2,}.*$/.test(userName)\n );\n }\n return false;\n}\n\nfunction clone(obj) {\n return JSON.parse(JSON.stringify(obj));\n}\n\nvar isMobile = function () {\n return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n );\n};\n\nvar generalMessageControl = function (mode) {\n var generalMessage = $(\"#jq_general_message\");\n if (mode == \"hide\") {\n generalMessage.hide();\n generalMessage.find(\":input\").val(\"\");\n disableFields(generalMessage);\n } else {\n generalMessage.show();\n enableFields(generalMessage);\n }\n};\n\n// these map keys come from the \"data-product\" attributes on the evaluator advice form\nvar productMap = {\n default: {\n recommended_by: \"Tim\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.youtube.com/user/GoAtlassian\",\n trial_url: \"http://www.atlassian.com/software\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n jira_software: {\n recommended_by: \"Aaron\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.atlassian.com/software/jira/demo/\",\n trial_url: \"http://www.atlassian.com/software/jira/try\",\n rfp_help_url:\n \"https://confluence.atlassian.com/display/JIRAKB/RFI+for+JIRA+and+JIRA+Agile\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n jira_service_desk: {\n recommended_by: \"Will \",\n avatar: \"img/placeholder.png\",\n webinar_url:\n \"http://www.atlassian.com/software/jira/service-desk/demo?partnerref=pa-form\",\n trial_url: \"http://www.atlassian.com/software/jira/service-desk/try\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n jira_core: {\n recommended_by: \"Matt\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://blogs.atlassian.com/2015/10/say-hello-jira-core/\",\n trial_url: \"http://www.atlassian.com/software/jira/core/try\",\n rfp_help_url:\n \"https://confluence.atlassian.com/display/JIRAKB/RFI+for+JIRA+and+JIRA+Agile\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n jira_portfolio: {\n recommended_by: \"Aaron\",\n avatar: \"img/placeholder.png\",\n webinar_url:\n \"https://www.atlassian.com/software/jira/portfolio/demo-video?partnerref=pa-form\",\n trial_url:\n \"http://marketplace.atlassian.com/plugins/com.radiantminds.roadmaps-jira/cloud/overview\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n confluence: {\n recommended_by: \"Zu\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.atlassian.com/software/confluence/demo/\",\n trial_url: \"https://www.atlassian.com/software/confluence/try\",\n rfp_help_url:\n \"https://confluence.atlassian.com/display/CONFKB/RFI+for+Confluence\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n bitbucket: {\n recommended_by: \"Malik\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.youtube.com/user/GoAtlassian/search?query=bitbucket\",\n trial_url: \"http://www.atlassian.com/software/bitbucket/download/\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n sourcetree: {\n recommended_by: \"Malik\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.atlassian.com/software/sourcetree/overview\",\n trial_url: \"http://www.sourcetreeapp.com\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n bamboo: {\n recommended_by: \"Malik\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.youtube.com/user/GoAtlassian/search?query=bamboo\",\n trial_url: \"https://www.atlassian.com/software/bamboo/download\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n clover: {\n recommended_by: \"Malik\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.atlassian.com/software/clover/overview\",\n trial_url: \"http://www.atlassian.com/software/clover/download\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n fisheye: {\n recommended_by: \"Malik\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.atlassian.com/software/fisheye\",\n trial_url: \"http://www.atlassian.com/software/fisheye/download\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n crucible: {\n recommended_by: \"Malik\",\n avatar: \"img/placeholder.png\",\n demo_url: \"http://www.atlassian.com/software/crucible/\",\n trial_url: \"http://www.atlassian.com/software/crucible/download\",\n tech_support_url: \"https://support.atlassian.com/contact/\",\n },\n};\n\nvar selfHelpMarginCalc = 0;\n\nfunction moveSlider(marginCalc) {\n $(\"#kt_test_slider_content\").animate(\n { \"margin-left\": marginCalc + \"%\" },\n 450,\n \"swing\"\n );\n}\n\nvar handleSlideNext = function (jqTarget) {\n handleSlideNextState(jqTarget);\n\n var slide = jqTarget.parents(\".kt_test_slide\");\n\n if (slide.is(\"#kt_test_slide_1\")) {\n selfHelpMarginCalc -= 200;\n moveSlider(selfHelpMarginCalc);\n $(\"#kt_test_help_slider_crop\").addClass(\"show-content\");\n slide.children().fadeOut(\"fast\");\n $(\"#kt_test_slide_2\").children().show();\n }\n\n if (slide.is(\"#kt_test_slide_3\")) {\n if (\n $(\"#kt_test_slide_4\").children(\".kt_test_sub_level:visible\").length < 1\n ) {\n selfHelpMarginCalc -= 100;\n moveSlider(selfHelpMarginCalc);\n }\n }\n\n jqTarget.addClass(\"selected\");\n jqTarget.siblings(\".selected\").removeClass(\"selected\");\n\n jqTarget\n .parents(\".kt_test_slide\")\n .nextAll(\".kt_test_slide\")\n .find(\".kt_test_sub_level\")\n .hide();\n\n if (typeof sub_level === \"undefined\") {\n var sub_level;\n }\n sub_level = jqTarget.attr(\"rel\");\n $(\"#kt_test_show_\" + sub_level).fadeIn();\n};\n\nvar handleSlideBack = function (jqTarget) {\n var selfHelpLevel = jqTarget\n .closest(\"[data-selfhelp-level]\")\n .data(\"selfhelpLevel\");\n handleSlideBackState(selfHelpLevel);\n\n var slide = jqTarget.parents(\".kt_test_slide\");\n\n if (slide.is(\"#kt_test_slide_2\")) {\n selfHelpMarginCalc += 200;\n moveSlider(selfHelpMarginCalc);\n $(\"#kt_test_help_slider_crop\").removeClass(\"show-content\");\n $(\"#kt_test_slide_1\").children().delay(200).fadeIn();\n $(\"#kt_test_slide_2\").children().hide();\n }\n\n if (slide.is(\"#kt_test_slide_3\")) {\n if ($(\"#kt_test_slide_4\").children(\".kt_test_sub_level:visible\").length) {\n selfHelpMarginCalc += 100;\n moveSlider(selfHelpMarginCalc);\n }\n }\n\n if (slide.is(\"#kt_test_slide_4\")) {\n selfHelpMarginCalc += 100;\n moveSlider(selfHelpMarginCalc);\n }\n\n jqTarget.parents(\".kt_test_sub_level\").fadeOut();\n jqTarget\n .parents(\".kt_test_slide\")\n .nextAll(\".kt_test_slide\")\n .find(\".kt_test_sub_level\")\n .fadeOut();\n\n // clear out all selections for higher levels\n for (var i = selfHelpLevel; i <= 4; i++) {\n $(\"[data-selfhelp-level='\" + i + \"'] a.kt_test_slide_next\").removeClass(\n \"selected\"\n );\n }\n};\n\n/**\n * Maps self help key + reporter status to reason\n */\nvar selfHelpReasonMap = {\n \"help_tax_exemptions|customer_no\": \"tax_exemptions\",\n \"help_new_quote|customer_no\": \"request_quote\",\n \"help_new_quote|reseller\": \"request_quote\",\n \"help_change_quote|customer_no\": \"edit_quote\",\n \"help_change_quote|reseller\": \"edit_quote\",\n \"help_renewal_quote|reseller\": \"renew_quote\",\n \"help_upgrade_quote|reseller\": \"change_user_tier\",\n \"help_make_payment|customer_no\": \"how_to_purchase\",\n \"help_make_payment|reseller\": \"process_payment\",\n \"help_purchase_from_trial|customer_yes\": \"process_payment\",\n \"help_purchase_from_trial|reseller\": \"process_payment\",\n \"help_problems_payment|customer_no\": \"how_to_purchase\",\n \"help_invoices|reseller\": \"request_invoice\",\n \"help_upgrade_user_tier|reseller\": \"change_user_tier\",\n \"help_change_contact|reseller\": \"update_contacts\",\n \"help_extend_trial|customer_no\": \"extend_trial\",\n};\n\nvar selfHelpState;\nvar selfHelpStateStack;\n\nvar resetSelfHelpState = function () {\n selfHelpState = {\n formOverride: \"\",\n selfHelpKey: \"\",\n reason: \"\",\n reporterStatus: \"\",\n reporterStatusUnchecked: \"\",\n hosting: \"\",\n selfHelpPath: [],\n selfHelpLabels: [],\n };\n selfHelpStateStack = [];\n selfHelpStateStack.push(clone(selfHelpState));\n};\n\n/**\n * Tie in pick-a-path self-help to form through selfHelpState\n */\nvar handleSlideNextState = function (jqTarget) {\n var selfHelpLevel = jqTarget\n .closest(\"[data-selfhelp-level]\")\n .data(\"selfhelpLevel\");\n var nodeKey = jqTarget.attr(\"rel\");\n\n // slideNext also gets invoked for siblings. Visiting siblings should invoke a state slideback first.\n if (selfHelpState.selfHelpPath.length == selfHelpLevel) {\n handleSlideBackState(selfHelpLevel + 1);\n }\n\n // check if this node adds labels\n if (typeof jqTarget.data(\"label\") !== \"undefined\") {\n selfHelpState.selfHelpLabels.push(jqTarget.data(\"label\"));\n }\n\n // check if the node sets a reporter_status\n if (typeof jqTarget.data(\"reporterStatus\") !== \"undefined\") {\n selfHelpState.reporterStatus = jqTarget.data(\"reporterStatus\");\n }\n\n // check if the node sets reporter-status-unchecked\n if (typeof jqTarget.data(\"reporterStatusUnchecked\") !== \"undefined\") {\n selfHelpState.reporterStatusUnchecked = jqTarget.data(\n \"reporterStatusUnchecked\"\n );\n }\n\n // check if the node sets reason\n if (typeof jqTarget.data(\"reason\") !== \"undefined\") {\n selfHelpState.reason = jqTarget.data(\"reason\");\n selfHelpState.selfHelpKey = nodeKey;\n }\n\n // check if the node sets hosting\n if (typeof jqTarget.data(\"hosting\") !== \"undefined\") {\n selfHelpState.hosting = jqTarget.data(\"hosting\");\n }\n\n // push this self help node onto the full path\n selfHelpState.selfHelpPath.push(nodeKey);\n\n // copy state onto stack so we can go backwards\n selfHelpStateStack.push(clone(selfHelpState));\n};\n\n// Undo things that were set by moving forward in self help\nvar handleSlideBackState = function (selfHelpLevel) {\n var backIndex = selfHelpStateStack.length - selfHelpLevel + 1;\n for (var i = 0; i < backIndex; i++) {\n selfHelpStateStack.pop();\n }\n selfHelpState = clone(selfHelpStateStack[selfHelpStateStack.length - 1]);\n};\n\nvar resetSelfHelp = function () {\n resetSelfHelpState();\n selfHelpMarginCalc = -200;\n handleSlideBack($(\"#kt_test_slide_2\").find(\".kt_test_slide_back\"));\n};\n\nvar simulateClickReasonMenuLink = function (reasonMenu, reason) {\n var reasonLink = $(\n \"[data-select-option-id='\" +\n reasonMenu +\n \"'] a[data-fake-select-value='\" +\n reason +\n \"']\"\n );\n var simulatedClick = true;\n reasonLink.trigger(\"click\", simulatedClick);\n};\n\nvar setSelfHelpFormSelections = function (\n selfHelpKey,\n reporterStatus,\n reason,\n reporterStatusUnchecked\n) {\n // if self help reason is supplied, then just use it, no need to look anything up\n // otherwise reason is based on self help key and reporter status\n if (!reason) {\n var reasonKey = selfHelpKey + \"|\" + reporterStatus;\n\n reason = selfHelpReasonMap[reasonKey];\n\n if (!reason) {\n // the default reason\n reason = \"other_queries\";\n }\n }\n\n var triggeredReporterRadio = $(\n \"input[name='reporter_status'][value=\" + reporterStatus + \"]\"\n );\n var selector = triggeredReporterRadio.parents(\"[data-selector-level]\");\n var optionSelectorLevel = selector.data(\"selectorLevel\");\n\n // simulate reporter_status selection. Normally this pops open the reason menu, but in this case we want it to stay closed.\n var reasonMenu = $(\"[data-select-option-id='\" + reporterStatus + \"']\");\n reasonMenu.data(\"disableAutoOpen\", true);\n handleConditionalFormSelect(\n triggeredReporterRadio,\n reporterStatus,\n optionSelectorLevel\n );\n reasonMenu.data(\"disableAutoOpen\", false);\n\n if (!reporterStatusUnchecked) {\n triggeredReporterRadio.prop(\"checked\", true);\n }\n\n // simulate reason selection\n simulateClickReasonMenuLink(reporterStatus, reason);\n\n // set hosting if any\n if (selfHelpState.hosting) {\n $(\n \"input[type='radio'][name='hosting'][value='\" +\n selfHelpState.hosting +\n \"']:visible\"\n )\n .prop(\"checked\", true)\n .trigger(\"click\");\n }\n};\n\nvar selfHelpContactUs = function () {\n // changes how the normal conditional forms framework behaves\n selfHelpState.formOverride = true;\n\n // clear reporter_status which may have been set previously\n $(\"input[name='reporter_status']\").prop(\"checked\", false);\n\n setSelfHelpFormSelections(\n selfHelpState.selfHelpKey,\n selfHelpState.reporterStatus,\n selfHelpState.reason,\n selfHelpState.reporterStatusUnchecked\n );\n};\n\nvar doAlternateSelfHelpBehavior = function (selectedValue) {\n if (selectedValue == selfHelpState.reporterStatus) {\n // set just like original form selection\n setSelfHelpFormSelections(\n selfHelpState.selfHelpKey,\n selfHelpState.reporterStatus,\n selfHelpState.reason\n );\n } else {\n // set based on selfHelpKey map\n setSelfHelpFormSelections(selfHelpState.selfHelpKey, selectedValue);\n }\n};\n\n// event handler to add self-help stuff to form at submit time\n$(\"form.jq_conditional_form\").on(\"final-submit\", function () {\n var form = $(this);\n\n // add self-help path if any\n if (selfHelpState.selfHelpPath.length > 0) {\n var pathString = \"\";\n $.each(selfHelpState.selfHelpPath, function (index, value) {\n pathString += value;\n if (index < selfHelpState.selfHelpPath.length - 1) {\n pathString += \" > \";\n }\n });\n cst.support.forms.addFormData(\n form,\n \"selfhelp_path\",\n pathString,\n \"Self Help Path\"\n );\n }\n\n // add additional labels to form reason field if any\n if (selfHelpState.selfHelpLabels.length > 0) {\n // var reasonField = jqThis.find(\"input[name='reason']\");\n // var reasonFieldValue = reasonField.val();\n $.each(selfHelpState.selfHelpLabels, function (index, value) {\n // adding this way creates an array of values in request params\n cst.support.forms.addFormData(form, \"reason\", value);\n });\n // reasonField.val(reasonFieldValue);\n }\n});\n\nvar disableField = function (jqField) {\n var origDisabledVal = jqField.prop(\"disabled\");\n jqField.attr(\"orig-disabled\", origDisabledVal);\n jqField.prop(\"disabled\", \"true\");\n};\n\nvar disableFields = function (jqElem) {\n jqElem.find(\":input\").each(function () {\n disableField($(this));\n });\n};\n\nvar enableField = function (jqField) {\n var origDisabledVal = jqField.attr(\"orig-disabled\");\n jqField.removeAttr(\"orig-disabled\");\n // set to true if the original value was true, else false\n jqField.prop(\"disabled\", origDisabledVal == \"true\");\n};\n\nvar enableFields = function (jqElem) {\n jqElem.find(\":input\").each(function () {\n enableField($(this));\n });\n};\n\nvar resetFakeSelect = function (fakeSelect) {\n var fakeSelectField = fakeSelect.find(\".jq_fake_select_field\");\n var fakeSelectInput = fakeSelect.find(\".jq_fake_select_input\");\n var fakeSelectOptions = fakeSelect.find(\".jq_fake_select_options\");\n fakeSelectField.html(fakeSelectField.data(\"defaultValue\"));\n fakeSelectInput.val(\"\");\n closeFakeSelectOptions(fakeSelectOptions);\n};\n\nvar archiveAndChangeHtml = function (jqNodes, newHtml) {\n jqNodes.each(function () {\n var jqThis = $(this);\n var origHtml = jqThis.data(\"originalHtml\");\n if (!origHtml) {\n origHtml = jqThis.html();\n jqThis.attr(\"data-original-html\", origHtml);\n }\n jqThis.html(newHtml);\n });\n};\n\nvar restoreHtml = function (jqNodes) {\n jqNodes.each(function () {\n var jqThis = $(this);\n var origHtml = jqThis.data(\"originalHtml\");\n if (origHtml) {\n jqThis.html(origHtml);\n }\n });\n};\n\n/**\n * The main function of the conditional forms. Handles showing and hiding of conditional form sections.\n * @param option_selected The dom element that was selected.\n * @param option_selected_value The value associated with that dom element. Passed in separately because this is also\n * used with pseudo selectors that are not real html select elements.\n */\nvar handleConditionalFormSelect = function (\n option_selected,\n option_selected_value,\n selectorLevel\n) {\n /* Save the text in the current comments and instance identifier fields before swapping the form out */\n var currentCommentsField = $(\"[data-persist-comments=true]:visible\");\n var persistedComments = currentCommentsField.val();\n\n var currentInstanceIdentifierField = $(\n \"input[name=instance_identifier]:visible\"\n );\n var persistedInstanceIdentifier = currentInstanceIdentifierField.val();\n\n var solvvyDisclaimer = $(\"#solvvy-disclaimer\");\n var formSubmitButton = $(\"#jq_form_submit\");\n if (option_selected_value === \"sourcetree_customer\") {\n solvvyDisclaimer.hide();\n formSubmitButton.hide();\n disableFields(solvvyDisclaimer, formSubmitButton);\n } else {\n solvvyDisclaimer.show();\n formSubmitButton.show();\n enableFields(solvvyDisclaimer, formSubmitButton);\n }\n\n var getMaxSelectedLevel = function (elem) {\n var maxLevel = -1;\n $(elem)\n .find(\"[data-selected-level]\")\n .each(function () {\n var selectedLevel = $(this).data(\"selectedLevel\");\n if (selectedLevel > maxLevel) {\n maxLevel = selectedLevel;\n }\n });\n return maxLevel;\n };\n\n /**\n * de-select and hide any existing selections for that level and higher levels, also clear form inputs within the existing selections,\n * also show the general message if a replacer is contained in any higher levels\n */\n var maxSelectedLevel = getMaxSelectedLevel(document);\n for (var i = selectorLevel; i <= maxSelectedLevel; i++) {\n var existingSelection = $(\"[data-selected-level=\" + i + \"]\").removeAttr(\n \"data-selected-level\"\n );\n // suppress jshint warning\n /* jshint -W083 */\n existingSelection.find(\":input\").each(function () {\n var jqThis = $(this);\n var inputType = jqThis.attr(\"type\");\n if (inputType == \"radio\" || inputType == \"checkbox\") {\n jqThis.prop(\"checked\", false);\n } else if (jqThis.is(\"select\")) {\n if (jqThis.hasClass(\"select2-offscreen\")) {\n jqThis.select2(\"val\", \"\");\n } else {\n this.selectedIndex = -1;\n }\n } else {\n jqThis.val(\"\");\n }\n\n // disable fields that are conditionally hidden\n disableField(jqThis);\n });\n\n existingSelection.find(\".jq_fake_select\").each(function () {\n resetFakeSelect($(this));\n });\n\n // hide any inline dialogs\n existingSelection.find(\"aui-inline-dialog\").css(\"display\", \"none\");\n existingSelection.hide();\n existingSelection.trigger(\"conditional-hide\");\n\n if (\n existingSelection.find(\"textarea[name='comments']\").length ||\n existingSelection.is(\".jq_replace_general_message\")\n ) {\n generalMessageControl(\"show\");\n }\n }\n\n /**\n * select and fade in the new html section for that level.\n */\n // due to multiple inputs that have the same values, had to introduce this data-selected-value attr to disambiguate\n option_selected_value =\n option_selected.data(\"selectedValue\") || option_selected_value;\n\n /**\n * Add exceptions here that don't follow the normal selection rules.\n */\n // product evaluator enterprise exceptions\n var selectedProduct = $(\"input[name='product']\").val();\n if (\n selectedProduct == \"tam\" ||\n selectedProduct == \"priority_support\" ||\n selectedProduct == \"premier_support\"\n ) {\n if (option_selected_value == \"eval\") {\n // skip the inquiry_category selector and go straight to enterprise_eval\n option_selected_value = \"enterprise_eval\";\n } else if (option_selected_value == \"pre_eval\") {\n // don't show any conditional fields\n option_selected_value = \"enterprise_pre_eval\";\n }\n }\n\n // products with hosting options\n var selectedEvalStage = $(\"input[name='evaluation_stage']:checked\").val();\n var product_whitelist = [\n \"confluence\",\n \"jira_software\",\n \"jira_service_desk\",\n \"jira_core\",\n \"jira_portfolio\",\n \"bitbucket\",\n ];\n var eval_stage_whitelist = [\"eval\", \"pre_eval\"];\n if (\n product_whitelist.indexOf(selectedProduct) !== -1 &&\n eval_stage_whitelist.indexOf(selectedEvalStage) !== -1\n ) {\n var hostingOptionSection = $(\n \"#hosting_option_section_\" + selectedEvalStage\n );\n\n enableFields(hostingOptionSection);\n hostingOptionSection.show();\n\n if (selectedProduct == \"jira_core\" || selectedProduct == \"jira_portfolio\") {\n hostingOptionSection.find(\".hosting_option_section_dc\").hide();\n hostingOptionSection.find(\".hosting_option_section_cloud\").show();\n } else {\n hostingOptionSection\n .find(\".hosting_option_section_cloud, .hosting_option_section_dc\")\n .show();\n }\n } else {\n var allHostingOptionSections = $(\"[data-level-id=hosting_option]\");\n disableFields(allHostingOptionSections);\n allHostingOptionSections.hide();\n }\n\n var selectedSection = $(\n \"[data-select-option-id=\" + option_selected_value + \"]\"\n );\n selectedSection.attr(\"data-selected-level\", selectorLevel);\n selectedSection.find(\":input\").each(function () {\n var jqThis = $(this);\n if (jqThis.is(\"[type='radio']\") || jqThis.is(\"[type='checkbox']\")) {\n jqThis.prop(\"checked\", jqThis.data(\"default\") == \"checked\");\n }\n\n // re-enable fields that are conditionally shown\n enableField(jqThis);\n });\n\n if (\n selectedSection.find(\"textarea[name='comments']\").length ||\n selectedSection.is(\".jq_replace_general_message\")\n ) {\n generalMessageControl(\"hide\");\n }\n\n selectedSection.trigger(\"conditional-show\");\n selectedSection.fadeIn();\n\n /*\n * New conditional form is showing, we can select the new fields and populate it with the persisted values\n * Setting input value in JS doesn't trigger 'change' event automatically, we call it manually to hide any fake placeholders\n */\n if (persistedComments) {\n var newCommentsField = $(\"[data-persist-comments=true]:visible\");\n newCommentsField.val(persistedComments).trigger(\"change\");\n }\n\n if (persistedInstanceIdentifier) {\n var newInstanceIdentifierField = $(\n \"input[name=instance_identifier]:visible\"\n );\n newInstanceIdentifierField\n .val(persistedInstanceIdentifier)\n .trigger(\"change\");\n }\n};\n\nvar toggleFakeSelectOptions = function (fakeSelectOptions) {\n fakeSelectOptions.slideToggle(\"fast\");\n};\nvar openFakeSelectOptions = function (fakeSelectOptions) {\n fakeSelectOptions.slideDown(\"fast\");\n};\nvar closeFakeSelectOptions = function (fakeSelectOptions) {\n fakeSelectOptions.slideUp(\"fast\");\n};\n\n/**\n * on ready\n */\n$(document).ready(function () {\n resetSelfHelpState();\n // Let's fetch again so the next trigger would have the correct LC state\n\n /**\n * Spam prevention\n * - hp-field-email fields are hidden by jquery and should always have value name@email.com\n * - hp-field-value fields are hidden by css and should always have empty value\n * Spam form submissions are submitted as usual and then flagged and processed as spam on server side\n */\n var emailElem = $(\".jq_conditional_form #email\");\n emailElem.after(\n \"
\"\n );\n emailElem.after(\n \"
\"\n );\n\n $(\".hp-field-email\").hide();\n $(\".hp-field-email input[type=email]\").val(\"name@email.com\");\n\n // make columns on main Contact page link to button href\n if (!imkt.isEditMode) {\n var columnLink = $(\".column__support-portal-link\");\n if (columnLink.length) {\n columnLink.click(function () {\n window.location = $(this).find(\"a.button\").attr(\"href\");\n return false;\n });\n }\n }\n\n /**\n * disable all conditional fields. These will be enabled by conditional form logic if they need to be.\n */\n var conditionalFields = $(\"[data-select-option-id] :input\");\n conditionalFields.each(function () {\n disableField($(this));\n });\n\n /**\n * Replace select fields marked with 'selectReplace' class with select2 widget\n */\n var selector = $(\".selectReplace\");\n if (selector.length) {\n if (!isMobile()) {\n // replace with select2\n $.getScript(\n imkt.constants.libPath + \"select2.js\" + imkt.constants.cdnVersionQuery\n ).done(function () {\n selector.select2({\n minimumResultsForSearch: Infinity,\n });\n });\n } else {\n // make sure real select is displayed if not in conditional section\n selector.find(\"option\").css(\"display\", \"inline\");\n selector.css(\"display\", \"inline\");\n }\n }\n\n /**\n * Set up the conditional form event handlers for different input types\n */\n $(\"select[data-selector-level]\").on(\"change\", function (e, simulated) {\n var jqThis = $(this);\n var selector = jqThis;\n var optionSelected = jqThis.find(\":selected\");\n // conditional form selector value can be set in html via \"data-selector-value\", which takes precedence, or natural input value\n var optionSelectedValue;\n if (optionSelected.is(\"[data-selector-value]\")) {\n optionSelectedValue = optionSelected.data(\"selectorValue\");\n } else {\n optionSelectedValue = optionSelected.val();\n }\n var optionSelectorLevel = selector.data(\"selectorLevel\");\n if (\n !simulated &&\n selector.data(\"selfhelpReset\") &&\n selfHelpState.formOverride\n ) {\n resetSelfHelp();\n }\n handleConditionalFormSelect(\n optionSelected,\n optionSelectedValue,\n optionSelectorLevel\n );\n });\n\n $(\"[data-selector-level] input[type='radio']\").on(\n \"click\",\n function (e, simulated) {\n var jqThis = $(this);\n\n var selector = jqThis.parents(\"[data-selector-level]\");\n var optionSelected = selector.find(\"input:checked\");\n // conditional form selector value can be set in html via \"data-selector-value\", which takes precedence, or natural input value\n var optionSelectedValue;\n if (optionSelected.is(\"[data-selector-value]\")) {\n optionSelectedValue = optionSelected.data(\"selectorValue\");\n } else {\n optionSelectedValue = optionSelected.val();\n }\n\n var optionSelectorLevel = selector.data(\"selectorLevel\");\n if (\n !simulated &&\n selector.data(\"selfhelpReset\") &&\n selfHelpState.formOverride\n ) {\n resetSelfHelp();\n }\n\n // if selector has alternateSelfHelpBehavior, do that action here\n if (\n selector.data(\"alternateSelfhelpBehavior\") &&\n selfHelpState.formOverride\n ) {\n doAlternateSelfHelpBehavior(optionSelectedValue);\n } else {\n // do normal conditional form behavior\n handleConditionalFormSelect(\n optionSelected,\n optionSelectedValue,\n optionSelectorLevel\n );\n }\n }\n );\n\n $(\".jq_fake_select[data-selector-level] .jq_fake_select_options a\").on(\n \"click\",\n function (e, simulated) {\n e.preventDefault();\n\n var jqThis = $(this);\n var selector = jqThis.parents(\"[data-selector-level]\");\n var optionSelected = jqThis;\n // conditional form selector value can be set in html via \"data-selector-value\", which takes precedence, or natural input value\n var optionSelectedValue;\n if (optionSelected.is(\"[data-selector-value]\")) {\n optionSelectedValue = optionSelected.data(\"selectorValue\");\n } else {\n optionSelectedValue = optionSelected.attr(\"rel\");\n }\n var optionSelectorLevel = selector.data(\"selectorLevel\");\n if (\n !simulated &&\n selector.data(\"selfhelpReset\") &&\n selfHelpState.formOverride\n ) {\n resetSelfHelp();\n }\n handleConditionalFormSelect(\n optionSelected,\n optionSelectedValue,\n optionSelectorLevel\n );\n }\n );\n\n /**\n * Set up fake select event handlers\n */\n\n // toggle fake select options\n $(\".jq_fake_select_field\").click(function () {\n var fakeSelectOptions = $(this)\n .parents(\".jq_fake_select\")\n .find(\".jq_fake_select_options\");\n toggleFakeSelectOptions(fakeSelectOptions);\n });\n\n // close fake select on click outside\n $(document).mouseup(function (e) {\n var fakeSelect = $(\".jq_fake_select\");\n\n // if click not in fake_selector\n if (!fakeSelect.is(e.target) && fakeSelect.has(e.target).length === 0) {\n var fakeSelectOptions = fakeSelect.find(\".jq_fake_select_options\");\n closeFakeSelectOptions(fakeSelectOptions);\n }\n });\n\n // handle fake select selection\n $(\".jq_fake_select .jq_fake_select_options a\").click(function (e) {\n e.preventDefault();\n\n var selectedOption = $(this);\n var fakeSelect = selectedOption.parents(\".jq_fake_select\");\n var fakeSelectField = fakeSelect.find(\".jq_fake_select_field\");\n var fakeSelectOptions = fakeSelect.find(\".jq_fake_select_options\");\n var fakeSelectInput = fakeSelect.find(\"input.jq_fake_select_input\");\n var selectedOptionText = selectedOption.html();\n var selectedOptionValue = selectedOption.data(\"fakeSelectValue\");\n\n // if default value of this fake field has not been set, then set it\n if (!fakeSelectField.data(\"defaultValue\")) {\n fakeSelectField.attr(\"data-default-value\", fakeSelectField.html());\n }\n\n // set fake field to chosen value and close the options\n fakeSelectField.addClass(\"populated\").html(selectedOptionText);\n fakeSelectInput.val(selectedOptionValue);\n fakeSelectOptions.fadeOut(\"fast\");\n });\n\n /**\n * Fake placeholder\n */\n $(\".jq_fake_placeholder\").on(\"keyup change\", function () {\n if (this.value.length > 0) {\n $(this).css(\"background-color\", \"#fff\");\n } else {\n $(this).css(\"background-color\", \"transparent\");\n }\n });\n\n $(\".jq_toggle_self_service_instructions\").click(function (e) {\n e.preventDefault();\n var instructions = $(this).next(\".jq_self_service_instructions\");\n\n instructions.toggle();\n });\n\n /*******************************\n * Purchasing and Licensing Form\n *******************************/\n\n /**\n * Handle the \"reason\" fake select field and make it drop down automatically.\n */\n $(\"[data-select-option-id]:has(input[name='reason'])\").on(\n \"conditional-show\",\n function () {\n var jqThis = $(this);\n\n if (!jqThis.data(\"disableAutoOpen\")) {\n // open the fake selector options\n openFakeSelectOptions(jqThis.find(\".jq_fake_select_options\"));\n }\n }\n );\n\n //TODO: replace with AUI required field?\n /**\n * Force selection before allowing form submit.\n */\n $(\n \"#jq_choose_customer_yes a, #jq_choose_customer_no a, #jq_choose_reseller a\"\n ).click(function () {\n $(\".js-form-submit-disabled\").removeClass(\"js-form-submit-disabled\");\n $(\".form-submit-disabled\").removeClass(\"form-submit-disabled\");\n });\n\n /*******************************\n * General Inquiries Form\n *******************************/\n $(\".general_inquiry_select\").change(function () {\n if ($(this).val() == \"events\") {\n $(\".general_inquiry_form_element\").hide();\n $(\"#general_inquiry_atlas_note\").fadeIn();\n $(\"#general_inquiry_security_note\").hide();\n $(\"#general_inquiry_product_advice_note\").hide();\n $(\"#general_inquiry_demo_note\").hide();\n } else if ($(this).val() == \"security\") {\n $(\".general_inquiry_form_element\").hide();\n $(\"#general_inquiry_atlas_note\").hide();\n $(\"#general_inquiry_security_note\").fadeIn();\n $(\"#general_inquiry_product_advice_note\").hide();\n $(\"#general_inquiry_demo_note\").hide();\n } else if ($(this).val() == \"demo\") {\n $(\".general_inquiry_form_element\").hide();\n $(\"#general_inquiry_atlas_note\").hide();\n $(\"#general_inquiry_demo_note\").fadeIn();\n $(\"#general_inquiry_security_note\").hide();\n $(\"#general_inquiry_product_advice_note\").hide();\n } else if ($(this).val() == \"product_advice\") {\n $(\".general_inquiry_form_element\").hide();\n $(\"#general_inquiry_atlas_note\").hide();\n $(\"#general_inquiry_demo_note\").hide();\n $(\"#general_inquiry_product_advice_note\").fadeIn();\n $(\"#general_inquiry_security_note\").hide();\n } else {\n $(\".general_inquiry_form_element\").fadeIn();\n $(\"#general_inquiry_atlas_note\").hide();\n $(\"#general_inquiry_demo_note\").hide();\n $(\"#general_inquiry_product_advice_note\").hide();\n $(\"#general_inquiry_security_note\").hide();\n $(\"#message\").delay(300).focus();\n }\n });\n\n /*******************************\n * Evaluator Advice Form\n *******************************/\n\n // when product selection clicked\n $(\".jq_product_select .jq_fake_select_options a\").on(\"click\", function () {\n var selectedProduct = $(this);\n var productName = selectedProduct.html();\n var productValue = selectedProduct.data(\"fakeSelectValue\");\n\n // insert product name in all into all placeholder spans\n var productPlaceholder;\n if (\n productValue == \"tam\" ||\n productValue == \"priority_support\" ||\n productValue == \"premier_support\"\n ) {\n productPlaceholder = $(\"span.jq_product_placeholder\").not(\n \"span.jq_datacenter_product_placeholder\"\n );\n } else {\n productPlaceholder = $(\"span.jq_product_placeholder\");\n }\n archiveAndChangeHtml(productPlaceholder, productName);\n\n // insert product name into select options\n var productOption = $(\"option.jq_product_placeholder\");\n var productOptionOriginalValue = productOption.data(\"originalValue\");\n if (!productOptionOriginalValue) {\n productOptionOriginalValue = productOption.html();\n productOption.attr(\"data-original-value\", productOptionOriginalValue);\n }\n productOption.html(productOptionOriginalValue + \" \" + productName);\n\n // insert product demo\n var demoUrl = productMap[\"default\"].demo_url;\n if (productMap[productValue] && productMap[productValue].demo_url) {\n demoUrl = productMap[productValue].demo_url;\n }\n $(\"a.jq_demo_link\").attr(\"href\", demoUrl);\n\n // insert trial url\n var trialUrl = productMap[\"default\"].trial_url;\n if (productMap[productValue] && productMap[productValue].trial_url) {\n trialUrl = productMap[productValue].trial_url;\n }\n $(\"a.jq_trial_link\").attr(\"href\", trialUrl);\n\n // By default show the RFP general Experts instructions and link.\n // IF a custom RFP help link is defined for the product then show the RFP/RFI-specific instructions and links instead.\n var rfpHelpLink = $(\"a.jq_rfp_help_link\");\n if (productMap[productValue] && productMap[productValue].rfp_help_url) {\n rfpHelpLink.attr(\"href\", productMap[productValue].rfp_help_url);\n rfpHelpLink.show();\n $(\".jq_rfp_resources_instructions\").show();\n $(\".jq_rfp_expert_instructions\").hide();\n $(\"a.jq_rfp_experts_link\").hide();\n } else {\n $(\".jq_rfp_expert_instructions\").show();\n $(\"a.jq_rfp_experts_link\").show();\n rfpHelpLink.hide();\n $(\".jq_rfp_resources_instructions\").hide();\n }\n\n // IF a custom webinar help link is defined for the product then show the webinar-specific instructions and links instead.\n var webinarLink = $(\"a.jq_webinar_link\");\n if (productMap[productValue] && productMap[productValue].webinar_url) {\n $(\".webinar-section\").show();\n webinarLink.attr(\"href\", productMap[productValue].webinar_url);\n } else {\n $(\".webinar-section\").hide();\n }\n\n // insert tech support url\n var techSupportUrl = productMap[\"default\"].tech_support_url;\n if (productMap[productValue] && productMap[productValue].tech_support_url) {\n techSupportUrl = productMap[productValue].tech_support_url;\n }\n $(\"a.jq_tech_support_link\").attr(\"href\", techSupportUrl);\n\n // insert product recommender name\n var recommendedBy = productMap[\"default\"].recommended_by;\n if (productMap[productValue] && productMap[productValue].recommended_by) {\n recommendedBy = productMap[productValue].recommended_by;\n }\n $(\".jq_recommended_by\").html(recommendedBy);\n\n // insert product recommender avatar\n var avatarImg = productMap[\"default\"].avatar;\n if (productMap[productValue] && productMap[productValue].avatar) {\n avatarImg = productMap[productValue].avatar;\n }\n $(\"img.jq_avatar\").attr(\"src\", avatarImg);\n });\n\n // when evaluation stage is clicked, see if extra product fields need to be added or hidden\n $(\"input[name='evaluation_stage']\").on(\"click\", function () {\n var selectedEvalStage = $(this).val();\n var selectedProduct = $(\"input[name='product']\").val();\n\n // handle the premier product field\n var premierProductSection = $(\"#premier_product_section\");\n if (\n selectedEvalStage == \"customer\" &&\n selectedProduct == \"premier_support\"\n ) {\n enableFields(premierProductSection);\n premierProductSection.show();\n } else {\n disableFields(premierProductSection);\n premierProductSection.hide();\n }\n\n // handle the priority product field\n var priorityProductSection = $(\"#priority_product_section\");\n if (\n selectedEvalStage == \"customer\" &&\n selectedProduct == \"priority_support\"\n ) {\n enableFields(priorityProductSection);\n priorityProductSection.show();\n } else {\n disableFields(priorityProductSection);\n priorityProductSection.hide();\n }\n\n // handle the tam product field\n var tamProductSection = $(\"#tam_product_section\");\n if (selectedEvalStage == \"customer\" && selectedProduct == \"tam\") {\n enableFields(tamProductSection);\n tamProductSection.show();\n } else {\n disableFields(tamProductSection);\n tamProductSection.hide();\n }\n });\n\n // when enterprise selection changed, change product placeholder html\n $(\n \"select[name='tam_product'],select[name='priority_product'],select[name='premier_product']\"\n ).on(\"change\", function () {\n // insert product name in all into enterprise product placeholder spans\n var dcProductName = $(this).find(\":selected\").html();\n var dcProductPlaceholder = $(\"span.jq_datacenter_product_placeholder\");\n archiveAndChangeHtml(dcProductPlaceholder, dcProductName);\n\n // insert tech support url\n var productValue = $(this).val();\n var techSupportUrl = productMap[\"default\"].tech_support_url;\n if (productMap[productValue] && productMap[productValue].tech_support_url) {\n techSupportUrl = productMap[productValue].tech_support_url;\n }\n $(\"a.jq_tech_support_link\").attr(\"href\", techSupportUrl);\n });\n\n // when enterprise placeholder is hidden conditionally, reset the enterprise product placeholder name to default.\n $(\"[data-select-option-id='customer']\").on(\"conditional-hide\", function () {\n var dcProductPlaceholder = $(this).find(\n \"span.jq_datacenter_product_placeholder\"\n );\n restoreHtml(dcProductPlaceholder);\n });\n\n // If slider test exists\n if ($(\"#contactHelpTest\").length) {\n // Clicking 'contact us' button moves screen position to form below\n $(\".link-to-self-serve\")\n .find('a[href=\"#\"]')\n .on(\"click\", function () {\n $(\"html, body\").animate(\n {\n scrollTop: $formSection.offset().top - STICKYNAV_HEIGHT,\n },\n \"slow\"\n );\n\n // prefill form with information from self-help\n selfHelpContactUs();\n\n // focus on email field after auto-filling form.\n var emailField = $(\"#email\");\n setTimeout(function () {\n emailField.focus();\n }, 1000);\n\n return false;\n });\n\n $(\".kt_test_slide_next\").on(\"click\", function (e) {\n handleSlideNext($(this));\n e.preventDefault();\n });\n\n $(\".kt_test_slide_back\").on(\"click\", function (e) {\n handleSlideBack($(this));\n e.preventDefault();\n });\n }\n\n /**\n * Analytics\n */\n function handleSelfHelpLink(target, selfHelpType) {\n var eventProperties =\n cst.support.analytics.getStandardAnalyticsEventProperties(target);\n eventProperties[\"self-help-type\"] = selfHelpType;\n if (selfHelpState.selfHelpPath.length > 0) {\n eventProperties[\"self-help-path\"] = selfHelpState.selfHelpPath;\n }\n var form = $(\"form.jq_conditional_form\");\n Object.assign(\n eventProperties,\n cst.support.analytics.getNonPiiFormDataMap(form)\n );\n tracking.trackEvent(\"Self-Help Clicked\", eventProperties);\n }\n\n window.segmentPageReady = () => {\n if (cst.support.analytics.checkForSegmentAnalytics()) {\n const purchasingLicensingEventProperties = {\n customerStatus: null,\n customerTopic: null,\n customerPlatform: null,\n };\n\n // Track reporter status\n $('input[type=\"radio\"][name=\"reporter_status\"]').on(\"change\", (event) => {\n purchasingLicensingEventProperties.customerStatus = $(event.target)\n .parent(\"label\")\n .text();\n tracking.trackEvent(\"radioItem selected\", {\n label: purchasingLicensingEventProperties.customerStatus,\n });\n });\n\n // Track selection of dropdown menu\n $(\"[data-fake-select-value]\").on(\"click\", (event) => {\n purchasingLicensingEventProperties.customerTopic =\n event.target.textContent;\n tracking.trackEvent(\"dropListItem selected\", {\n label: purchasingLicensingEventProperties.customerTopic,\n });\n });\n\n // Track buttons inside info-wrap\n $(\".info-wrap\")\n .find(\"a.button\")\n .on(\"click\", (event) => {\n tracking.trackEvent(\"button clicked\", {\n label: event.target.textContent,\n });\n });\n\n // Track Billing an licensing form on submit\n $('form[name=\"ca-billing-licensing\"].jq_conditional_form').on(\n \"final-submit\",\n () => {\n const hostingRadioButtons = $(\n 'input[type=\"radio\"][name=\"hosting\"]:visible'\n );\n hostingRadioButtons.each((i, radioButton) => {\n if (radioButton.checked) {\n purchasingLicensingEventProperties.customerPlatform = $(\n radioButton\n )\n .parent(\"label\")\n .text();\n }\n });\n tracking.trackEvent(\n \"purchasingLicensingForm submitted\",\n purchasingLicensingEventProperties\n );\n }\n );\n\n // this is our submit event that says that the form has passed validation etc.\n $(\"form.jq_conditional_form\").on(\"final-submit\", function (event) {\n var form = $(event.target);\n var eventProperties =\n cst.support.analytics.getStandardAnalyticsEventProperties(form);\n\n // see if self-help was offered\n var selfHelpOfferedInline = $(\".self-service-opt:visible\").length > 0;\n eventProperties[\"self-help-offered-inline\"] = selfHelpOfferedInline;\n\n var selfHelpOfferedToplevel = $(\".js-self-help:visible\").length > 0;\n eventProperties[\"self-help-offered-toplevel\"] = selfHelpOfferedToplevel;\n if (selfHelpState.selfHelpPath.length > 0) {\n eventProperties[\"self-help-path\"] = selfHelpState.selfHelpPath;\n }\n\n // add all of the form name/value pairs as event properties\n Object.assign(\n eventProperties,\n cst.support.analytics.getNonPiiFormDataMap(form)\n );\n tracking.trackEvent(\"Form Submit\", eventProperties);\n });\n\n // click on top-level self-help\n $(\"a.js-self-help\").on(\"click\", function () {\n var target = $(this);\n handleSelfHelpLink(target, \"top-level\");\n });\n\n // click on inline self-help\n $(\".self-service-opt a\").on(\"click\", function () {\n var target = $(this);\n handleSelfHelpLink(target, \"inline\");\n });\n }\n };\n\n //attachment upload input element behavior\n $(\".inputfile\").each(function () {\n var $input = $(this),\n $label = $input.next(\"label\"),\n labelVal = $label.html();\n\n $input.on(\"change\", function (e) {\n var fileName = \"\";\n\n if (this.files && this.files.length > 1)\n fileName = (this.getAttribute(\"data-multiple-caption\") || \"\").replace(\n \"{count}\",\n this.files.length\n );\n else if (e.target.value) fileName = e.target.value.split(\"\\\\\").pop();\n\n if (fileName)\n $label.find(\"span\").html(fileName.replace(/(<(\\/?[^>]+)>)/g, \"\"));\n else $label.html(labelVal);\n });\n\n // Firefox bug fix\n $input\n .on(\"focus\", function () {\n $input.addClass(\"has-focus\");\n })\n .on(\"blur\", function () {\n $input.removeClass(\"has-focus\");\n });\n });\n\n if (location.hash === \"#priority-support-inquiry\") {\n $('form[name=\"pa-evaluation-inquiry\"] #product').val(\"priority_support\");\n $('form[name=\"pa-evaluation-inquiry\"] .fake-select.jq_fake_select_field')\n .text(\"Priority Support\")\n .addClass(\"populated\");\n $(\n 'form[name=\"pa-evaluation-inquiry\"] div[data-select-option-id=\"stage\"]'\n ).show();\n $('form[name=\"pa-evaluation-inquiry\"] input[name=\"evaluation_stage\"]').prop(\n \"checked\",\n true\n );\n enableFields(\n $('form[name=\"pa-evaluation-inquiry\"] div[data-select-option-id=\"stage\"]')\n );\n $('form[name=\"pa-evaluation-inquiry\"] #email').focus();\n $(document).scrollTop($(\".wac-form\").offset().top);\n }\n\n /**\n * END OF onReady()\n */\n});\n","import * as Logger from './logger';\nimport axios from 'axios';\nimport * as OptimizelyHelpers from './optimizelyHelpers';\n\n\nlet capturedEventsPromise: Array = [];\nlet onAnalyticsLoad = () => {\n Promise.all(capturedEventsPromise.map(fn => fn()));\n};\n\nexport const trackEvent = function (event: string, data: Record) {\n // First try to use the atl-global wrapper\n if (typeof ace !== \"undefined\") {\n ace.analytics.Tracking.trackEvent(event, data);\n } else {\n capturedEventsPromise.push(\n () => new Promise((resolve) => {\n trackEvent(event, data);\n resolve(null);\n })\n );\n\n window.segmentPageReady = onAnalyticsLoad;\n\n Logger.log({\n event,\n data,\n }, 'Analytics wrapper track event');\n }\n};\n\nexport const trackOptimizely = function (name: string) {\n if (typeof window.optimizely !== 'undefined') {\n window.optimizely.push({\n type: 'event',\n eventName: name\n });\n }\n};\n/**\n* Iterates through event keys, ensures that values are lowercase,\n* and replaces whitespace with `-` character\n**/\nexport const sanitizeEventProperties = function (propertiesObj) {\n let result = {};\n Object.keys(propertiesObj).map(key => {\n // do a quick check just in case values are null\n result[key] = propertiesObj[key] && propertiesObj[key].replace(/\\s+/g, '-').toLowerCase();\n });\n return result;\n}\n\nexport const trackGas = function (postBody) {\n const analyticsApiUrl = 'https://mgas.prod.public.atl-paas.net/v1/event';\n const options = {\n headers: {\n 'content-type': 'application/json'\n },\n withCredentials: true\n };\n\n postBody['properties']['optimizelyCohorts'] = OptimizelyHelpers.getOptimizelyCohorts();\n postBody['properties']['optimizelySegments'] = OptimizelyHelpers.getOptimizelySegments();\n postBody['properties']['optimizelyEndUserId'] = OptimizelyHelpers.getOptimizelyEndUserId();\n return axios.post(analyticsApiUrl, postBody, options)\n .then(() => Promise.resolve());\n};\n","import stgConfig from \"../../../config\";\nconst ENV_DEV = \"dev\";\nconst ENV_STAGING = \"staging\";\nconst ENV_PRODUCTION = \"production\";\nconst ENV_AUTHOR = \"author\";\n\nexport default class Environment {\n static getWindowLocation() {\n return window.location;\n }\n\n static getSubdomain() {\n const urlParts = this.getWindowLocation().hostname.split(\".\");\n\n if (urlParts[1] === \"dev\") {\n return \"localhost\";\n }\n\n return urlParts[0];\n }\n\n static getSubdirectory() {\n const urlParts = this.getWindowLocation().pathname.split(\"/\");\n if (urlParts[1] === \"wac\") {\n return urlParts.length > 1 ? urlParts[2] : \"\";\n } else {\n return urlParts[1];\n }\n }\n\n static isStagingPublicEnvironment() {\n return (\n this.getWindowLocation().hostname.indexOf(\"wac.stg.internal.atlassian\") >\n -1 || this.getWindowLocation().hostname.indexOf(\"qa-wac.atlassian\") > -1\n );\n }\n\n static getEnvironment() {\n const forceStaging = window.location.search.includes('forceProdTesting=true');\n \n if (forceStaging) {\n return ENV_PRODUCTION;\n }\n switch (this.getSubdomain()) {\n case \"wac\":\n case \"qa-wac\":\n case \"author\":\n case \"proof\":\n return ENV_STAGING;\n case \"localhost\":\n case \"local\":\n return ENV_DEV;\n case \"truth\":\n case \"www\":\n case \"atlassian\":\n case \"bitbucket\":\n case \"sourcetreeapp\":\n case \"agile\": \n case \"git\":\n case \"software\":\n return ENV_PRODUCTION;\n default:\n /* for omlet instances */\n return ENV_STAGING;\n }\n }\n\n static getInternationalSubdomain() {\n const hostnameSubdomain = this.getSubdomain();\n const validLocales = [\n \"cn\",\n \"cs\",\n \"de\",\n \"es\",\n \"fr\",\n \"it\",\n \"ko\",\n \"hu\",\n \"nl\",\n \"ja\",\n \"pl\",\n \"br\",\n \"ro\",\n \"fi\",\n \"ru\",\n ];\n\n if (validLocales.indexOf(hostnameSubdomain) === -1) {\n return false;\n }\n\n return hostnameSubdomain;\n }\n\n static getInternationalSubdirectory() {\n const subdirectory = this.getSubdirectory();\n const validLocales = [\n \"zh\",\n \"cs\",\n \"de\",\n \"es\",\n \"fr\",\n \"it\",\n \"ko\",\n \"hu\",\n \"nl\",\n \"ja\",\n \"pl\",\n \"br\",\n \"ro\",\n \"fi\",\n \"ru\",\n ];\n\n if (validLocales.indexOf(subdirectory) === -1) {\n return false;\n }\n\n return subdirectory;\n }\n\n static isInternationalSubdomain() {\n return !!this.getInternationalSubdomain();\n }\n\n static production() {\n return ENV_PRODUCTION;\n }\n\n static staging() {\n return ENV_STAGING;\n }\n\n static dev() {\n return ENV_DEV;\n }\n\n static author() {\n return ENV_AUTHOR;\n }\n\n static isProduction() {\n return this.getEnvironment() === this.production();\n }\n\n static isStaging() {\n return this.getEnvironment() === this.staging();\n }\n\n static isDev() {\n return this.getEnvironment() === this.dev();\n }\n\n static isAuthor() {\n return this.getSubdomain() === this.author();\n }\n\n static getIdentityBaseUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://id.stg.internal.atlassian.com\";\n } else {\n return \"https://id.atlassian.com\";\n }\n }\n\n static getLoginUrl(skipEncoding: boolean) {\n const continueUrl = this.getWindowLocation().href;\n if (!skipEncoding) {\n return `${this.getIdentityBaseUrl()}/login?continue=${encodeURIComponent(\n continueUrl\n )}`;\n } else {\n return `${this.getIdentityBaseUrl()}/login?continue=${continueUrl}`;\n }\n }\n\n static getLogoutUrl() {\n const continueUrl = this.getWindowLocation().href;\n return `${this.getIdentityBaseUrl()}/logout?continue=${encodeURIComponent(\n continueUrl\n )}`;\n }\n\n static getSwitchAccountURL(continueUrlParam?: string) {\n const continueUrl = continueUrlParam ? continueUrlParam : this.getWindowLocation().href;\n return `${this.getIdentityBaseUrl()}/login/select-account?continue=${encodeURIComponent(\n continueUrl\n )}`;\n }\n \n static getManageProfileUrl(userEmail: string) {\n const applicationParam = encodeURIComponent(\"wac\")\n const continueUrlParam = encodeURIComponent(`${this.getIdentityBaseUrl()}/manage-profile`)\n const loginHintParam = encodeURIComponent(userEmail)\n \n return `${this.getIdentityBaseUrl()}/login?application=${applicationParam}&continue=${continueUrlParam}&login_hint=${loginHintParam}`;\n }\n\n static getMacUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://my.stg.internal.atlassian.com\";\n } else {\n return \"https://my.atlassian.com\";\n }\n }\n\n static getStartUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://start.stg.atlassian.com\";\n } else {\n return \"https://start.atlassian.com\";\n }\n }\n\n static getAPIPrivateURL() {\n if (this.isStaging() || this.isDev()) {\n return \"https://wac.stg.internal.atlassian.com/gateway/api\";\n }\n\n return \"https://www.atlassian.com/gateway/api\";\n }\n\n static getWacIntegrationUrl() {\n if (this.isStaging() || this.isDev()) {\n const useQaWAC =\n window.location.hostname.indexOf(\"qa-wac\") > -1 ||\n window.location.hostname.indexOf(\"author\") > -1;\n return `${useQaWAC\n ? \"https://qa-wac.internal.atlassian.com\"\n : stgConfig.stgWacInternalUrl\n }`;\n } else {\n return \"https://www.atlassian.com\";\n }\n }\n\n static getBBIntegrationUrl() {\n if (this.isStaging() || this.isDev()) {\n return \"https://integration.bb-inf.net\";\n } else {\n return \"https://bitbucket.org\";\n }\n }\n}\n","import Environment from './environment';\n\nconst debug = Environment.isDev();\n\nexport const log = function (msg, title = '') {\n if (debug) {\n console.log(msg, title);\n }\n};\n\nexport const todo = function (msg) {\n if (debug) {\n console.log(`%c todo: ${msg}`, 'background: #2684FF; color: #fff; padding-right: 10px;');\n }\n};\n\nexport const warn = function (msg) {\n if (debug) {\n console.warn(msg);\n }\n};\n\nexport const error = function (msg, title = '') {\n if (debug) {\n console.error(msg, title);\n } else {\n // @todo: track error somewhere\n }\n};\n\n","export const getOptimizelyEndUserId = function () {\n if (typeof window.optimizely !== 'undefined' && typeof window.optimizely.get === 'function') {\n return window.optimizely.get('visitor_id').randomId;\n }\n return '';\n};\n\nexport const getOptimizelyCohorts = function () {\n if (typeof window.optimizely !== 'undefined' && typeof window.optimizely.get === 'function') {\n const variations = optimizely.get('state').getVariationMap();\n let buckets = {};\n\n for (let key in variations) {\n buckets[key] = variations[key].id;\n }\n\n buckets = JSON.stringify(buckets);\n return buckets;\n }\n return '';\n};\n\nexport const getOptimizelySegments = function () {\n if (typeof window.optimizely !== 'undefined' && typeof window.optimizely.get === 'function') {\n const custom = optimizely.get('visitor').custom;\n let segments = {};\n\n for (var key in custom) {\n // Sometimes it's encoded and has extra quotes\n var val = decodeURIComponent(custom[key].value);\n val = val.replace(/^\"(.*)\"$/, '$1');\n segments[custom[key].id] = val;\n }\n\n segments = JSON.stringify(segments);\n return segments;\n }\n return '';\n};\n\n// Get experiments+cohort that the user is enrolled in formatted for consumption by MEP Provisioning Provider\n// Returns (possibly empty) array of objects with experimentId and cohortId properties\nexport const getAllOptimizelyCohortsAsObjects = function () {\n if (typeof window.optimizely !== 'undefined' && typeof window.optimizely.get === 'function') {\n const variations = optimizely.get('state').getVariationMap();\n\n return Object.keys(variations).map( key => ({ experimentId: key, cohortId: variations[key].id}));\n }\n return [];\n};\n\n// Extend getAllOptimizelyCohortsAsObjects function to return null if array is empty\nexport const getMappedOptimizelyCohorts = function () {\n const cohorts = getAllOptimizelyCohortsAsObjects();\n return cohorts.length ? cohorts : null;\n};\n","import { trackAllPlatforms } from './platforms';\n\nclass Tracking {\n /**\n * Process the value attribute to remove newlines, if the value attribute exists.\n *\n * @param {any} attributes\n */\n processAttributes(attributes) {\n if (!attributes) return {};\n\n let { value, ...additionalAttributes } = attributes;\n if (value) {\n value = value.replace(/\\r?\\n|\\r/g, \"\");\n }\n return { value, ...additionalAttributes };\n }\n\n /**\n * Send a tracking event to any tracking platforms defined in the `trackAllPlatforms` array.\n *\n * @param {string} category The event category, e.g. \"cart-cloud\" or \"bxp.formCloudSignup\".\n * @param {string} action The action name, e.g. \"page-unload\" or \"time-to-form-ready\".\n * @param {string} label An event label, e.g. \"form-event\" or \"signup-social-login\". Not used by all platforms.\n * @param {any} attributes Additional attributes passed to the tracking platform.\n * @param {string} optimizelyValue A plain string to pass to Optimizely as the event name. Deprecated.\n * @param {boolean} isNonInteraction Whether or not the event is a non-interaction event (Google Analytics). See also, https://support.google.com/analytics/answer/1033068#NonInteractionEvents\n */\n trackAll(category, action, label, attributes = {}, optimizelyValue, isNonInteraction) {\n const attrs = this.processAttributes(attributes);\n\n trackAllPlatforms.forEach(platform => {\n platform.track({\n category,\n action,\n label,\n attributes: attrs,\n optimizelyValue,\n isNonInteraction,\n });\n })\n }\n}\n\nexport { Tracking };\n\nexport default new Tracking();\n","export default {\n categories: {\n none: 'no-category',\n optimizelyTracking: 'optimizely-tracking',\n googleAnalyticsTracking: 'google-analytics-tracking',\n gasv2Tracking: 'gas-v2-tracking',\n },\n actions: {\n none: 'no-action',\n inferredNameMatch: 'inferred-name-match',\n inferredNameMismatch: 'inferred-name-mismatch',\n noNameProvided: 'no-name-provided',\n trackingFailure: 'tracking-failure',\n },\n labels: {\n none: 'no-label',\n },\n reasons: {\n trackingNotLoaded: 'tracking-not-loaded',\n },\n urls: {\n gasv2Url: 'https://mgas.prod.public.atl-paas.net/v1/event',\n },\n};\n","import axios from 'axios';\nimport * as Logger from '../../logger';\nimport { getOptimizelyCohorts, getOptimizelyEndUserId, getOptimizelySegments } from '../../optimizelyHelpers';\nimport Constants from '../constants';\n\nclass GASv2 {\n constructor() {\n this.hasShownWarning = false;\n }\n\n track(postBody) {\n if (!this.hasShownWarning) {\n this.hasShownWarning = true;\n Logger.warn('GASv2 is deprecated! Please migrate to GASv3 when possible.');\n }\n\n let options = {\n headers: {\n 'content-type': 'application/json'\n },\n withCredentials: true\n };\n\n postBody['properties']['optimizelyCohorts'] = getOptimizelyCohorts();\n postBody['properties']['optimizelySegments'] = getOptimizelySegments();\n postBody['properties']['optimizelyEndUserId'] = getOptimizelyEndUserId();\n\n return axios.post(Constants.urls.gasv2Url, postBody, options)\n .then(d => {\n return d;\n })\n .catch(e => {\n return Promise.reject(e);\n });\n }\n}\n\nexport { GASv2 };\n\nexport default new GASv2();\n","class GASv3 {\n track() {\n return Promise.reject('Not yet implemented.');\n }\n}\n\nexport { GASv3 };\n\nexport default new GASv3();\n","class GoogleAnalytics {\n track(data) {\n const { action, attributes, category, label, isNonInteraction } = data;\n const { value } = (attributes || {});\n\n if (typeof ga !== 'undefined') {\n ga('send', 'event', category, action, label, value, {\n nonInteraction: isNonInteraction\n });\n }\n }\n}\n\nexport { GoogleAnalytics };\n\nexport default new GoogleAnalytics();\n","class Optimizely {\n inferName(data) {\n const normalize = (str) => str.toLowerCase().replace(/\\s/g, '-');\n\n return `${normalize(data.category)}.${normalize(data.action)}.${normalize(data.label)}`;\n }\n\n track(data) {\n const name = data.optimizelyValue;\n const inferredName = this.inferName(data);\n\n if (typeof window.optimizely !== 'undefined') {\n window.optimizely.push({\n type: 'event',\n eventName: name || inferredName\n });\n }\n }\n}\n\nexport { Optimizely };\n\nexport default new Optimizely();\n","import tracking from '../../../utils/tracking';\nimport url from '../../../utils/url';\nimport { getOptimizelyCohorts, getOptimizelyEndUserId, getOptimizelySegments } from '../../optimizelyHelpers';\n\nclass Segment {\n track(data) {\n if (!imkt || !imkt.utils) {\n return;\n }\n\n const { action, attributes, category, label } = data;\n const { value, ...additionalAttributes } = (attributes || {});\n\n var eventProperties = {\n category,\n label,\n value,\n eventAction: action,\n urlParams: url.getUrlParams() || {},\n optimizelyCohorts: getOptimizelyCohorts(),\n optimizelySegments: getOptimizelySegments(),\n optimizelyEndUserId: getOptimizelyEndUserId(),\n ...additionalAttributes\n };\n tracking.trackEvent(action, eventProperties);\n }\n}\n\nexport { Segment };\n\nexport default new Segment();\n","import GASv2 from './gasv2';\nimport GASv3 from './gasv3';\nimport GoogleAnalytics from './googleAnalytics';\nimport Optimizely from './optimizely';\nimport Segment from './segment';\n\n// platforms to send to when Tracking.trackAll() is called.\nexport const trackAllPlatforms = [Optimizely, GoogleAnalytics, Segment];\n\n// all supported platforms.\nexport {\n GASv2,\n GASv3,\n GoogleAnalytics,\n Optimizely,\n Segment,\n};\n","import api from \"./utils/api\";\nimport browser from \"./utils/browser\";\nimport getScript from \"./utils/get-script\";\nimport tracking from \"./utils/tracking\";\nimport general from \"./utils/general\";\nimport history from \"./utils/history\";\nimport string from \"./utils/string\"\nimport storage from \"./utils/storage\";\nimport url from \"./utils/url\";\n\nconst imkt: { [property: string]: any } = window.imkt = window.imkt || {\n core: {\n /*\n * this parses the DOM and finds any type=\"text/x-component\" scripts and initializes a component for each\n */\n init: async function (domRoot) {\n var self = this;\n\n this.featureDetect();\n\n const LocalizedPricing = (await import(\"./utils/localized-pricing\")).default;\n\n const localizedPricing = new LocalizedPricing();\n\n $(\"script[type='text/x-component']\", domRoot).each(function (i, elem) {\n var componentInfo = JSON.parse(elem.innerHTML.trim()),\n componentRoot = elem.parentNode;\n\n const {\n productKey,\n productKeyArray,\n period,\n offeringSku,\n countryISOCodeReq,\n } = componentInfo.params;\n\n if (productKey) {\n componentInfo.params.pricing = localizedPricing.getPricingPromise(\n productKey,\n period\n );\n }\n\n if (offeringSku) {\n componentInfo.params.pricing = localizedPricing.getPricingPromise(\n null,\n period,\n null,\n null,\n offeringSku\n );\n }\n\n if (productKeyArray) {\n componentInfo.params.pricingObject = productKeyArray.map((product) => {\n return localizedPricing.getPricingPromise(\n product.key,\n product.period,\n product.identifiers,\n product.customCurrency,\n product.offeringSku\n );\n });\n }\n\n if (countryISOCodeReq) {\n componentInfo.params.countryISOCodePromise =\n localizedPricing.getLocale();\n }\n\n try {\n self.componentInit.call(self, componentRoot, componentInfo);\n } catch (e) {\n console.log(e);\n }\n });\n\n localizedPricing.resolvePricingPromises();\n\n // Init component scripts with Smartling Translation\n $(\"script[type='text/x-component-translate']\", domRoot).each(function (\n i,\n elem\n ) {\n var innerHTML = elem.innerHTML\n .trim()\n .replace(\"/* */\", \"\")\n .replace(\"/* */\", \"\");\n var componentInfo = JSON.parse(innerHTML),\n componentRoot = elem.parentNode;\n self.componentInit.call(self, componentRoot, componentInfo);\n });\n\n $(document).trigger(\"appInitialized\");\n this.appInitialized = true;\n },\n onInitialized: function (cb) {\n if (this.appInitialized) {\n cb();\n } else {\n $(document).on(\"appInitialized\", cb);\n }\n },\n featureDetect: function () {\n var bodyClasses = [];\n if (!this.supports.svg()) {\n bodyClasses.push(\"no-svg\");\n }\n if (!this.supports.backgroundSize()) {\n bodyClasses.push(\"no-backgroundsize\");\n }\n if (!this.supports.flexBox()) {\n bodyClasses.push(\"no-flexbox\");\n }\n $(\"body\").addClass(bodyClasses.join(\" \"));\n },\n extend: function (supertype, subtype, overrides = {}) {\n var ctor = function () { },\n name;\n ctor.prototype = supertype.prototype;\n subtype.prototype = new ctor();\n for (name in overrides) {\n subtype.prototype[name] = overrides[name];\n }\n subtype.prototype.constructor = supertype;\n },\n /*\n * this takes a namespaced string like \"imkt.components.tabs\" and returns the actual JS object (if found)\n */\n resolve: function (str, createIfNotExists) {\n var basis = window;\n if (!str) {\n return null;\n } else if (typeof str === \"function\") {\n return str;\n } else {\n var last = basis,\n names = str.split(\".\"),\n name,\n i,\n j;\n for (i = 0, j = names.length; i < j; i++) {\n name = names[i];\n basis = basis[name];\n if (!basis) {\n if (createIfNotExists) {\n basis = last[name] = {};\n } else {\n return null;\n }\n }\n last = basis;\n }\n }\n return basis;\n },\n /*\n * tries to resolve the component name and if so, initializes it\n */\n componentInit: function (componentRoot, componentInfo) {\n var componentType = this.resolve(componentInfo.type);\n if (componentType) {\n return new componentType(\n componentRoot,\n Object.assign({}, componentInfo.params, $(componentRoot).data())\n );\n } else {\n // could not find component\n }\n },\n supports: {\n flexBox: function () {\n return (\n \"flexWrap\" in document.documentElement.style ||\n \"webkitFlexWrap\" in document.documentElement.style\n );\n },\n history: function () {\n return window.history && window.history.pushState;\n },\n svg: function () {\n return document.implementation.hasFeature(\n \"http://www.w3.org/TR/SVG11/feature#Image\",\n \"1.1\"\n );\n },\n backgroundSize: function () {\n return \"backgroundSize\" in document.documentElement.style;\n },\n touch: function () {\n return \"ontouchstart\" in window;\n },\n placeholder: function () {\n var i = document.createElement(\"input\");\n return \"placeholder\" in i;\n },\n localStorage: function () {\n // Bugfix WTF-15606, try/catch for localStorage empty object (private browsers)\n try {\n window.localStorage.setItem(\"hasStorage\", \"1\");\n return (\n window.localStorage &&\n window.localStorage.setItem &&\n window.localStorage.removeItem\n );\n } catch (error) {\n return false;\n }\n },\n transitions: function () {\n var b = document.body || document.documentElement,\n s = b.style,\n p = \"transition\";\n\n if (typeof s[p] == \"string\") {\n return true;\n }\n\n // Tests for vendor specific prop\n var v = [\"Moz\", \"webkit\", \"Webkit\", \"Khtml\", \"O\", \"ms\"];\n p = p.charAt(0).toUpperCase() + p.substr(1);\n\n for (var i = 0; i < v.length; i++) {\n if (typeof s[v[i] + p] == \"string\") {\n return true;\n }\n }\n\n return false;\n },\n },\n is: {\n mobile: function () {\n return imkt.core.supports.touch() && screen.width && screen.width < 768;\n },\n },\n },\n utils: {\n api,\n browser,\n getScript,\n tracking,\n general,\n history,\n string,\n storage,\n url,\n },\n wpl: {\n globals: {\n mediaQueries: {\n \"xs\": { \"minWidth\": 0, \"maxWidth\": 539 },\n \"sm\": { \"minWidth\": 540, \"maxWidth\": 767 },\n \"md\": { \"minWidth\": 768, \"maxWidth\": 1023 },\n \"lg\": { \"minWidth\": 1024, \"maxWidth\": 1439 },\n \"xl\": { \"minWidth\": 1440, \"maxWidth\": null }\n }\n }\n },\n common: {},\n wac: {},\n landing: {},\n experts: {},\n legal: {},\n components: {},\n software: {},\n bxp: {},\n customers: {},\n pages: {},\n teamPatterns: {},\n};\n\nexport default imkt;","import stgConfig from \"../../../config\";\nimport imkt from '../imkt';\n\n/**\n * Get an api endpoint relative to current environment\n * @todo: define what a dev environment is (BizBox?) in this context\n */\n\nexport default {\n urls: {\n apiGetAuthToken: {\n public:\n \"https://www.atlassian.com/hamlet/1.0/auth/xsrf/html?domain=atlassian.com\",\n staging: `${\n window.location.hostname.indexOf(\"qa-wac\") > -1\n ? \"https://qa-wac.internal.atlassian.com\"\n : stgConfig.stgWacInternalUrl\n }/apis/stg/hamlet/1.0/auth/xsrf/html?domain=atlassian.com`,\n dev: \"\",\n },\n apiGetSites: {\n public: \"https://api-private.atlassian.com/available-sites\",\n staging: \"https://api-private.stg.atlassian.com/available-sites\",\n dev: \"\",\n },\n apiGetUser: {\n public: \"https://api-private.atlassian.com/me\",\n staging: \"https://api-private.stg.atlassian.com/me\",\n dev: \"\",\n },\n },\n\n getUrl: function (endpoint) {\n var env = imkt.constants.public ? \"public\" : \"staging\";\n var url =\n typeof this.urls[endpoint] !== \"undefined\"\n ? this.urls[endpoint][env]\n : \"\";\n return url;\n },\n}\n","import imkt from '../imkt';\n\nexport default {\n // Get Browser OS\n getBrowserOs: function () {\n var nAgt = navigator.userAgent;\n\n var clientStrings = [\n { s: 'Windows 10', r: /(Windows 10.0|Windows NT 10.0)/ },\n { s: 'Windows 8.1', r: /(Windows 8.1|Windows NT 6.3)/ },\n { s: 'Windows 8', r: /(Windows 8|Windows NT 6.2)/ },\n { s: 'Windows 7', r: /(Windows 7|Windows NT 6.1)/ },\n { s: 'Windows Vista', r: /Windows NT 6.0/ },\n { s: 'Windows Server 2003', r: /Windows NT 5.2/ },\n { s: 'Windows XP', r: /(Windows NT 5.1|Windows XP)/ },\n { s: 'Windows 2000', r: /(Windows NT 5.0|Windows 2000)/ },\n { s: 'Windows ME', r: /(Win 9x 4.90|Windows ME)/ },\n { s: 'Windows 98', r: /(Windows 98|Win98)/ },\n { s: 'Windows 95', r: /(Windows 95|Win95|Windows_95)/ },\n { s: 'Windows NT 4.0', r: /(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/ },\n { s: 'Windows CE', r: /Windows CE/ },\n { s: 'Windows 3.11', r: /Win16/ },\n { s: 'Android', r: /Android/ },\n { s: 'Open BSD', r: /OpenBSD/ },\n { s: 'Sun OS', r: /SunOS/ },\n { s: 'Linux', r: /(Linux|X11)/ },\n { s: 'iOS', r: /(iPhone|iPad|iPod)/ },\n { s: 'Mac OS X', r: /Mac OS X/ },\n { s: 'Mac OS', r: /(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/ },\n { s: 'QNX', r: /QNX/ },\n { s: 'UNIX', r: /UNIX/ },\n { s: 'BeOS', r: /BeOS/ },\n { s: 'OS/2', r: /OS\\/2/ },\n { s: 'Search Bot', r: /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\\/Teoma|ia_archiver)/ }\n ];\n\n for (var id in clientStrings) {\n var cs = clientStrings[id];\n if (cs.r.test(nAgt)) {\n return cs.s;\n }\n }\n\n return \"unknown\";\n },\n // Check if browser is windows\n isWindows: function () {\n var os = this.getBrowserOs();\n return os.indexOf(\"Windows\") > -1;\n },\n // NOTE: We have a similar function inside app.js (imkt.core.is.mobile) but the breakpoint is 768px\n // This breakpoint is consistent with imkt.constants.mobileBreakpoint and our CSS breakpoint\n isMobile: function () {\n return (imkt.core.supports.touch() && screen.width && screen.width <= (imkt.constants.mobileBreakpoint));\n }\n};\n","export default {\n // url without any query string\n randomString: function (l) {\n var s = \"\";\n while (s.length < l && l > 0) {\n var r = Math.random();\n s +=\n r < 0.1\n ? Math.floor(r * 100)\n : String.fromCharCode(Math.floor(r * 26) + (r > 0.5 ? 97 : 65));\n }\n return s;\n },\n numberWithCommas: function (n) {\n return n.toString().replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n },\n elementInViewport: function (el) {\n var top = el.offsetTop;\n var left = el.offsetLeft;\n var width = el.offsetWidth;\n var height = el.offsetHeight;\n\n while (el.offsetParent) {\n el = el.offsetParent;\n top += el.offsetTop;\n left += el.offsetLeft;\n }\n\n return (\n top >= window.pageYOffset &&\n left >= window.pageXOffset &&\n top + height <= window.pageYOffset + window.innerHeight &&\n left + width <= window.pageXOffset + window.innerWidth\n );\n },\n};\n","import * as $ from \"jquery\";\nimport imkt from '../imkt';\n\nvar datepickerRequest = $.Deferred();\nvar select2Request = $.Deferred();\nvar underscoreRequest = $.Deferred();\n\nvar getStyle = function (url: string, params: any) {\n \"use strict\";\n\n // If there is no URL to load, no point in continuing.\n if (typeof url === \"undefined\") {\n return;\n }\n\n // If this stylesheet has already been loaded, no point in continuing.\n if (\n params.hasOwnProperty(\"id\") &&\n $(\"head\").find(\"#\" + params.id).length\n ) {\n return;\n }\n\n var linkAttrs = {\n rel: \"stylesheet\",\n media: \"screen\",\n href: url,\n };\n\n if ($.isPlainObject(params)) {\n linkAttrs = Object.assign({}, linkAttrs, params);\n }\n\n var link = $(\"\").attr(linkAttrs);\n $(\"head\").append(link);\n};\n\nexport default {\n datepicker: function (callback) {\n if (typeof datepickerRequest === \"undefined\") {\n datepickerRequest = $.getScript(\n imkt.constants.libPath +\n \"air-datepicker.js\" +\n imkt.constants.cdnVersionQuery\n );\n getStyle(\n imkt.constants.libPath +\n \"air-datepicker.css\" +\n imkt.constants.cdnVersionQuery,\n {\n id: \"datepicker-style\",\n }\n );\n } else {\n // Select2 already exists\n datepickerRequest.resolve();\n }\n $.when(datepickerRequest).then(callback);\n return this;\n },\n select2: function (callback) {\n // Select2 is a dependency, so load that first\n if (typeof select2Request === \"undefined\") {\n select2Request = $.getScript(\n imkt.constants.libPath + \"select2.js\" + imkt.constants.cdnVersionQuery\n );\n } else {\n // Select2 already exists\n select2Request.resolve();\n }\n $.when(select2Request).then(callback);\n return this;\n },\n underscore: function (callback) {\n // underscore is a dependency, so load that first\n if (typeof underscoreRequest === \"undefined\") {\n underscoreRequest = $.getScript(\n imkt.constants.libPath +\n \"underscore.js\" +\n imkt.constants.cdnVersionQuery\n );\n } else {\n // underscore already exists\n underscoreRequest.resolve();\n }\n $.when(underscoreRequest).then(callback);\n return this;\n },\n};\n","// Wrapping the History API here to push analytics when state is pushed\nexport default {\n supportsHistory: function () {\n return window.history && window.history.pushState;\n },\n pushState: function (data, title, url) {\n if (this.supportsHistory()) {\n window.history.pushState(data, title, url);\n\n // Trigger Analytics\n if (typeof analytics !== \"undefined\") {\n analytics.page();\n }\n }\n },\n pushStateNoTracking: function (data, title, url) {\n if (this.supportsHistory()) {\n window.history.pushState(data, title, url);\n }\n },\n}\n","// Util to handle get/set of local storage\n// @todo: Test need for fallback to cookies\nexport default {\n hasStorage: localStorage && typeof localStorage.getItem === \"function\",\n\n getLocalStorage: function (key) {\n // Get value from local storage or cookies\n\n if (!this.hasStorage) {\n return this.getCookie(key);\n }\n\n var value = localStorage.getItem(key);\n return value;\n },\n setLocalStorage: function (key, value) {\n // Set value in local storage or cookies\n\n if (!this.hasStorage) {\n this.setCookie(key, value);\n }\n\n try {\n localStorage.setItem(key, value);\n } catch (e) {\n // Don't store for private browsing\n console.log(\n \"Local Storage failed, check if browsing in Safari private window.\"\n );\n }\n },\n removeLocalStorage: function (key) {\n if (!this.hasStorage) {\n this.removeCookie(key);\n }\n try {\n localStorage.removeItem(key);\n } catch (e) {\n // Don't remove for private browsing\n console.log(\n \"Local Storage failed, check if browsing in Safari private window.\"\n );\n }\n },\n getSessionStorage: function (key) {\n // Get value from Session storage or cookies\n\n if (!this.hasStorage) {\n return this.getCookie(key);\n }\n\n var value = sessionStorage.getItem(key);\n return value;\n },\n setSessionStorage: function (key, value) {\n // Set value in Session storage or cookies\n\n if (!this.hasStorage) {\n this.setCookie(key, value);\n }\n\n try {\n sessionStorage.setItem(key, value);\n } catch (e) {\n // Don't store for private browsing\n console.log(\n \"Session Storage failed, check if browsing in Safari private window.\"\n );\n }\n },\n removeSessionStorage: function (key) {\n if (!this.hasStorage) {\n this.removeCookie(key);\n }\n try {\n sessionStorage.removeItem(key);\n } catch (e) {\n // Don't remove for private browsing\n console.log(\n \"Session Storage failed, check if browsing in Safari private window.\"\n );\n }\n },\n getCookie: function (key) {\n // Get value from cookie\n\n var encodedName = encodeURIComponent(key).replace(/[\\-\\.\\+\\*]/g, \"\\\\$&\");\n var regex = new RegExp(\n \"(?:(?:^|.*;)\\\\s*\" + encodedName + \"\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$\"\n );\n\n return decodeURIComponent(document.cookie.replace(regex, \"$1\")) || null;\n },\n setCookie: function (key, value, days, sameSite, domain) {\n let expires = \"\";\n let domainLevel = ``;\n if (domain) {\n domainLevel = `; domain=${domain}`;\n }\n let sameSiteVal = sameSite ? sameSite.toLowerCase() : false;\n let sameSiteString = `samesite=${\n (sameSiteVal && sameSiteVal == \"strict\") || sameSiteVal == \"lax\"\n ? sameSiteVal\n : \"none\"\n }`;\n if (days) {\n let date = new Date();\n date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000);\n expires = \"; expires=\" + date.toGMTString();\n }\n document.cookie =\n key + \"=\" + value + \";path=/;\" + sameSiteString + expires + domainLevel;\n },\n removeCookie: function (key) {\n this.setCookie(key, \"\", -1);\n },\n}\n","import general from '../utils/general';\n\nexport default {\n /**\n * Reverse string\n * @param {string} str - String you want to reverse\n * @returns {string} Reverse of str\n * @example\n * // returns \"olleh\"\n * imkt.utils.string.reverse(\"hello\")\n */\n reverse: function (str) {\n if (typeof str !== \"string\") {\n return \"\";\n }\n\n if (str.trim() === \"\") {\n return str;\n }\n\n return str.split(\"\").reverse().join(\"\");\n },\n};\n\nexport const replaceText = (srcObj, inputText, replaceMap) =>\n Object.keys(replaceMap).reduce(\n (outputText, replaceKey) =>\n srcObj[replaceKey]\n ? outputText.replace(`{{${replaceKey}}}`, srcObj[replaceKey])\n : outputText,\n inputText\n );\n\nexport const getStrWithCommas = (input) =>\n general.numberWithCommas(input.toString());\n","import { trackEvent, sanitizeEventProperties } from \"../common/analytics\";\nimport Tracking from \"../common/tracking\";\nimport * as Platforms from \"../common/tracking/platforms\";\n\nexport default class ImktTracking {\n // expose utils for Apollo to call from external experiment code.\n apollo = {\n Tracking,\n Platforms,\n };\n\n // Track events for analytics\n static trackEvent(eventName: string, eventProperties: {}) {\n trackEvent(eventName, eventProperties);\n }\n\n static sanitizeEventProperties(eventProperty) {\n return sanitizeEventProperties(eventProperty);\n }\n\n /* use the below function for tracking content that was not rendered server-side and has thus escaped the purview of the tracking wrapper */\n static trackLateRenderedEvent(eventName: string, eventTarget) {\n if (\n eventTarget.tagName == \"A\" ||\n (eventTarget.tagName == \"BUTTON\" && eventTarget.dataset.uuid)\n ) {\n let attributes = [\n \"uuid\",\n \"event\",\n \"eventComponent\",\n \"eventContainer\",\n \"parentLabel\",\n \"eventColumn\",\n \"schemaVersion\",\n ];\n let eventData = {\n label: eventTarget.dataset.label\n ? eventTarget.dataset.label\n : eventTarget.innerText,\n };\n attributes.forEach((attribute) => {\n eventData[attribute] = eventTarget.dataset[attribute];\n });\n this.trackEvent(eventName, eventData);\n }\n }\n\n static getOptimizelyXData() {\n if (!window.optimizely) {\n return false;\n }\n let campaigns;\n try {\n const state = window.optimizely.get(\"state\");\n const campaignList = state.getCampaignStates({ \"isActive\": true });\n campaigns = Object.keys(campaignList).reduce((acc, key) => {\n const campaign = campaignList[key];\n return {\n ...acc,\n [key]: {\n activeExperiments: [{\n [campaign.experiment.id]: campaign.variation.id,\n }],\n holdbackExperiments: campaign.isInCampaignHoldback ? [campaign.experiment.id] : [],\n }\n };\n }, {});\n } catch (_e) {\n return false;\n }\n\n return campaigns;\n }\n}\n","import history from '../utils/history';\n\nexport default {\n // url without any query string\n getBareUrl: function (url?: string) {\n var questionIndex;\n url = url || window.location.href;\n questionIndex = url.indexOf(\"?\");\n return url.substring(0, questionIndex > -1 ? questionIndex : url.length);\n },\n // url without any hash\n getUnhashedUrl: function (url?: string) {\n var hashIndex;\n url = url || window.location.href;\n hashIndex = url.indexOf(\"#\");\n return url.substring(0, hashIndex > -1 ? hashIndex : url.length);\n },\n getProtocol: function (url?: string) {\n var r = \"\",\n i;\n url = this.getBareUrl(url || window.location.href);\n i = url.indexOf(\"://\");\n if (i > -1) {\n r = url.substring(0, i);\n }\n return r;\n },\n getHostname: function (url?: string) {\n var protocol, start;\n url = this.getBareUrl(url || window.location.href);\n protocol = this.getProtocol(url);\n start = protocol ? protocol.length + 3 : 0;\n return url.substring(start, url.indexOf(\"/\", start));\n },\n // query string only (no question mark)\n getQueryString: function (url?: string) {\n var questionIndex,\n r = window.location.search.substring(1, window.location.search.length);\n if (url) {\n url = this.getUnhashedUrl(url);\n questionIndex = url.indexOf(\"?\");\n r = questionIndex > -1 ? url.substring(questionIndex + 1) : \"\";\n }\n return r;\n },\n updateQueryStringParam: function (key: string, value: string) {\n var baseUrl = [\n location.protocol,\n \"//\",\n location.host,\n location.pathname,\n ].join(\"\"),\n queryString = document.location.search,\n newParam = key + \"=\" + value,\n params = \"?\" + newParam;\n\n if (queryString) {\n var keyRegex = new RegExp(\"([?&])\" + key + \"[^&]*\");\n\n if (queryString.match(keyRegex) !== null) {\n params = queryString.replace(keyRegex, \"$1\" + newParam);\n } else {\n params = queryString + \"&\" + newParam;\n }\n }\n\n history.pushState({}, \"\", baseUrl + params);\n },\n getPathname: function (url?: string) {\n var hostname, questionIndex;\n url = url || window.location.href;\n hostname = this.getHostname(url);\n questionIndex = url.indexOf(\"?\");\n return url.substring(\n url.indexOf(hostname) + hostname.length,\n questionIndex > -1 ? questionIndex : url.length\n );\n },\n // serialize an object literal into a url encoded string\n serialize: function (params: { [key: string]: string }) {\n var r = [],\n tempArray;\n for (var prop in params) {\n if (params[prop] !== null) {\n tempArray = [prop];\n tempArray.push(\"=\");\n tempArray.push(encodeURIComponent(params[prop]));\n r.push(tempArray.join(\"\"));\n }\n }\n return r.join(\"&\");\n },\n htmlEscape: function (str) {\n return String(str)\n .replace(/&/g, \"&\")\n .replace(/\"/g, \""\")\n .replace(/'/g, \"'\")\n .replace(//g, \">\");\n },\n // returns an object literal of the url params on a url\n getUrlParams: function (url?: string) {\n var r: { [key: string]: string } | null = null,\n qs,\n paramPairs,\n keyValuePair,\n i = 0;\n\n qs = this.getQueryString(url);\n\n if (qs) {\n paramPairs = qs.split(\"&\");\n for (i; i < paramPairs.length; i++) {\n if (!r) {\n r = {};\n }\n keyValuePair = paramPairs[i].split(\"=\");\n r[keyValuePair[0]] =\n keyValuePair.length > 1\n ? this.htmlEscape(decodeURIComponent(keyValuePair[1]))\n : null;\n }\n }\n\n return r;\n },\n // returns a url with additional params added (params is an object literal)\n addUrlParams: function (params: {}, url?: string) {\n var r = [],\n qs;\n\n url = url || window.location.href;\n r.push(this.getBareUrl(url));\n params = { ...this.getUrlParams(url), ...params };\n qs = this.serialize(params);\n if (qs) {\n r.push(\"?\");\n r.push(qs);\n }\n\n return r.join(\"\");\n },\n // returns a url with params removed (params is an array of url param keys)\n removeUrlParams: function (params: {}, url?: string) {\n var r = [],\n qs;\n\n url = url || window.location.href;\n r.push(this.getBareUrl(url));\n var currentParams = this.getUrlParams(url);\n for (var i = params.length - 1; i >= 0; i--) {\n if (typeof currentParams[params[i]] !== \"undefined\") {\n delete currentParams[params[i]];\n }\n }\n\n qs = this.serialize(currentParams);\n if (qs) {\n r.push(\"?\");\n r.push(qs);\n }\n\n return r.join(\"\");\n },\n // returns a url without http(s)://(www.) and without trailing slash, optionally with url vars\n getSimpleUrl: function (url: string | null, matchUrlVars?: boolean) {\n url = url || window.location.href;\n\n var simpleMatch = /^((https?|):\\/\\/)?(www\\.)?/;\n var trailingSlashMatch = /\\/$/;\n\n var bareUrl = this.getBareUrl(url);\n var hashUrlArray = bareUrl.split(\"#\");\n var hashUrl = \"\";\n\n bareUrl = hashUrlArray[0];\n if (hashUrlArray.length > 1) {\n hashUrl = \"#\" + hashUrlArray[1];\n }\n\n var result = bareUrl\n .replace(simpleMatch, \"\")\n .replace(trailingSlashMatch, \"\");\n\n if (matchUrlVars) {\n var queryString = this.getQueryString(url);\n\n if (queryString) {\n result += \"?\" + queryString;\n }\n result += hashUrl;\n }\n\n return result;\n },\n}\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","var ___EXPOSE_LOADER_IMPORT___ = require(\"-!./jquery.validate.js\");\nvar ___EXPOSE_LOADER_GET_GLOBAL_THIS___ = require(\"../../expose-loader/dist/runtime/getGlobalThis.js\");\nvar ___EXPOSE_LOADER_GLOBAL_THIS___ = ___EXPOSE_LOADER_GET_GLOBAL_THIS___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"window\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"window\"] = {};\n___EXPOSE_LOADER_GLOBAL_THIS___[\"window\"][\"$\"] = ___EXPOSE_LOADER_IMPORT___;\nif (typeof ___EXPOSE_LOADER_GLOBAL_THIS___[\"window\"] === 'undefined') ___EXPOSE_LOADER_GLOBAL_THIS___[\"window\"] = {};\n___EXPOSE_LOADER_GLOBAL_THIS___[\"window\"][\"jQuery\"] = ___EXPOSE_LOADER_IMPORT___;\nmodule.exports = ___EXPOSE_LOADER_IMPORT___;\n","\"use strict\";\n\n// eslint-disable-next-line func-names\nmodule.exports = function () {\n if (typeof globalThis === \"object\") {\n return globalThis;\n }\n\n var g;\n\n try {\n // This works if eval is allowed (see CSP)\n // eslint-disable-next-line no-new-func\n g = this || new Function(\"return this\")();\n } catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") {\n return window;\n } // This works if the self reference is available\n\n\n if (typeof self === \"object\") {\n return self;\n } // This works if the global reference is available\n\n\n if (typeof global !== \"undefined\") {\n return global;\n }\n }\n\n return g;\n}();","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/*!\n * jQuery Validation Plugin v1.19.5\n *\n * https://jqueryvalidation.org/\n *\n * Copyright (c) 2022 Jörn Zaefferer\n * Released under the MIT license\n */\n(function( factory ) {\n\tif ( typeof define === \"function\" && define.amd ) {\n\t\tdefine( [\"jquery\"], factory );\n\t} else if (typeof module === \"object\" && module.exports) {\n\t\tmodule.exports = factory( require( \"jquery\" ) );\n\t} else {\n\t\tfactory( jQuery );\n\t}\n}(function( $ ) {\n\n$.extend( $.fn, {\n\n\t// https://jqueryvalidation.org/validate/\n\tvalidate: function( options ) {\n\n\t\t// If nothing is selected, return nothing; can't chain anyway\n\t\tif ( !this.length ) {\n\t\t\tif ( options && options.debug && window.console ) {\n\t\t\t\tconsole.warn( \"Nothing selected, can't validate, returning nothing.\" );\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Check if a validator for this form was already created\n\t\tvar validator = $.data( this[ 0 ], \"validator\" );\n\t\tif ( validator ) {\n\t\t\treturn validator;\n\t\t}\n\n\t\t// Add novalidate tag if HTML5.\n\t\tthis.attr( \"novalidate\", \"novalidate\" );\n\n\t\tvalidator = new $.validator( options, this[ 0 ] );\n\t\t$.data( this[ 0 ], \"validator\", validator );\n\n\t\tif ( validator.settings.onsubmit ) {\n\n\t\t\tthis.on( \"click.validate\", \":submit\", function( event ) {\n\n\t\t\t\t// Track the used submit button to properly handle scripted\n\t\t\t\t// submits later.\n\t\t\t\tvalidator.submitButton = event.currentTarget;\n\n\t\t\t\t// Allow suppressing validation by adding a cancel class to the submit button\n\t\t\t\tif ( $( this ).hasClass( \"cancel\" ) ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\n\t\t\t\t// Allow suppressing validation by adding the html5 formnovalidate attribute to the submit button\n\t\t\t\tif ( $( this ).attr( \"formnovalidate\" ) !== undefined ) {\n\t\t\t\t\tvalidator.cancelSubmit = true;\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t// Validate the form on submit\n\t\t\tthis.on( \"submit.validate\", function( event ) {\n\t\t\t\tif ( validator.settings.debug ) {\n\n\t\t\t\t\t// Prevent form submit to be able to see console output\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\n\t\t\t\tfunction handle() {\n\t\t\t\t\tvar hidden, result;\n\n\t\t\t\t\t// Insert a hidden input as a replacement for the missing submit button\n\t\t\t\t\t// The hidden input is inserted in two cases:\n\t\t\t\t\t// - A user defined a `submitHandler`\n\t\t\t\t\t// - There was a pending request due to `remote` method and `stopRequest()`\n\t\t\t\t\t// was called to submit the form in case it's valid\n\t\t\t\t\tif ( validator.submitButton && ( validator.settings.submitHandler || validator.formSubmitted ) ) {\n\t\t\t\t\t\thidden = $( \"\" )\n\t\t\t\t\t\t\t.attr( \"name\", validator.submitButton.name )\n\t\t\t\t\t\t\t.val( $( validator.submitButton ).val() )\n\t\t\t\t\t\t\t.appendTo( validator.currentForm );\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( validator.settings.submitHandler && !validator.settings.debug ) {\n\t\t\t\t\t\tresult = validator.settings.submitHandler.call( validator, validator.currentForm, event );\n\t\t\t\t\t\tif ( hidden ) {\n\n\t\t\t\t\t\t\t// And clean up afterwards; thanks to no-block-scope, hidden can be referenced\n\t\t\t\t\t\t\thidden.remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( result !== undefined ) {\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\t// Prevent submit for invalid forms or custom submit handlers\n\t\t\t\tif ( validator.cancelSubmit ) {\n\t\t\t\t\tvalidator.cancelSubmit = false;\n\t\t\t\t\treturn handle();\n\t\t\t\t}\n\t\t\t\tif ( validator.form() ) {\n\t\t\t\t\tif ( validator.pendingRequest ) {\n\t\t\t\t\t\tvalidator.formSubmitted = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\treturn handle();\n\t\t\t\t} else {\n\t\t\t\t\tvalidator.focusInvalid();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn validator;\n\t},\n\n\t// https://jqueryvalidation.org/valid/\n\tvalid: function() {\n\t\tvar valid, validator, errorList;\n\n\t\tif ( $( this[ 0 ] ).is( \"form\" ) ) {\n\t\t\tvalid = this.validate().form();\n\t\t} else {\n\t\t\terrorList = [];\n\t\t\tvalid = true;\n\t\t\tvalidator = $( this[ 0 ].form ).validate();\n\t\t\tthis.each( function() {\n\t\t\t\tvalid = validator.element( this ) && valid;\n\t\t\t\tif ( !valid ) {\n\t\t\t\t\terrorList = errorList.concat( validator.errorList );\n\t\t\t\t}\n\t\t\t} );\n\t\t\tvalidator.errorList = errorList;\n\t\t}\n\t\treturn valid;\n\t},\n\n\t// https://jqueryvalidation.org/rules/\n\trules: function( command, argument ) {\n\t\tvar element = this[ 0 ],\n\t\t\tisContentEditable = typeof this.attr( \"contenteditable\" ) !== \"undefined\" && this.attr( \"contenteditable\" ) !== \"false\",\n\t\t\tsettings, staticRules, existingRules, data, param, filtered;\n\n\t\t// If nothing is selected, return empty object; can't chain anyway\n\t\tif ( element == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( !element.form && isContentEditable ) {\n\t\t\telement.form = this.closest( \"form\" )[ 0 ];\n\t\t\telement.name = this.attr( \"name\" );\n\t\t}\n\n\t\tif ( element.form == null ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( command ) {\n\t\t\tsettings = $.data( element.form, \"validator\" ).settings;\n\t\t\tstaticRules = settings.rules;\n\t\t\texistingRules = $.validator.staticRules( element );\n\t\t\tswitch ( command ) {\n\t\t\tcase \"add\":\n\t\t\t\t$.extend( existingRules, $.validator.normalizeRule( argument ) );\n\n\t\t\t\t// Remove messages from rules, but allow them to be set separately\n\t\t\t\tdelete existingRules.messages;\n\t\t\t\tstaticRules[ element.name ] = existingRules;\n\t\t\t\tif ( argument.messages ) {\n\t\t\t\t\tsettings.messages[ element.name ] = $.extend( settings.messages[ element.name ], argument.messages );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"remove\":\n\t\t\t\tif ( !argument ) {\n\t\t\t\t\tdelete staticRules[ element.name ];\n\t\t\t\t\treturn existingRules;\n\t\t\t\t}\n\t\t\t\tfiltered = {};\n\t\t\t\t$.each( argument.split( /\\s/ ), function( index, method ) {\n\t\t\t\t\tfiltered[ method ] = existingRules[ method ];\n\t\t\t\t\tdelete existingRules[ method ];\n\t\t\t\t} );\n\t\t\t\treturn filtered;\n\t\t\t}\n\t\t}\n\n\t\tdata = $.validator.normalizeRules(\n\t\t$.extend(\n\t\t\t{},\n\t\t\t$.validator.classRules( element ),\n\t\t\t$.validator.attributeRules( element ),\n\t\t\t$.validator.dataRules( element ),\n\t\t\t$.validator.staticRules( element )\n\t\t), element );\n\n\t\t// Make sure required is at front\n\t\tif ( data.required ) {\n\t\t\tparam = data.required;\n\t\t\tdelete data.required;\n\t\t\tdata = $.extend( { required: param }, data );\n\t\t}\n\n\t\t// Make sure remote is at back\n\t\tif ( data.remote ) {\n\t\t\tparam = data.remote;\n\t\t\tdelete data.remote;\n\t\t\tdata = $.extend( data, { remote: param } );\n\t\t}\n\n\t\treturn data;\n\t}\n} );\n\n// JQuery trim is deprecated, provide a trim method based on String.prototype.trim\nvar trim = function( str ) {\n\n\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim#Polyfill\n\treturn str.replace( /^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\" );\n};\n\n// Custom selectors\n$.extend( $.expr.pseudos || $.expr[ \":\" ], {\t\t// '|| $.expr[ \":\" ]' here enables backwards compatibility to jQuery 1.7. Can be removed when dropping jQ 1.7.x support\n\n\t// https://jqueryvalidation.org/blank-selector/\n\tblank: function( a ) {\n\t\treturn !trim( \"\" + $( a ).val() );\n\t},\n\n\t// https://jqueryvalidation.org/filled-selector/\n\tfilled: function( a ) {\n\t\tvar val = $( a ).val();\n\t\treturn val !== null && !!trim( \"\" + val );\n\t},\n\n\t// https://jqueryvalidation.org/unchecked-selector/\n\tunchecked: function( a ) {\n\t\treturn !$( a ).prop( \"checked\" );\n\t}\n} );\n\n// Constructor for validator\n$.validator = function( options, form ) {\n\tthis.settings = $.extend( true, {}, $.validator.defaults, options );\n\tthis.currentForm = form;\n\tthis.init();\n};\n\n// https://jqueryvalidation.org/jQuery.validator.format/\n$.validator.format = function( source, params ) {\n\tif ( arguments.length === 1 ) {\n\t\treturn function() {\n\t\t\tvar args = $.makeArray( arguments );\n\t\t\targs.unshift( source );\n\t\t\treturn $.validator.format.apply( this, args );\n\t\t};\n\t}\n\tif ( params === undefined ) {\n\t\treturn source;\n\t}\n\tif ( arguments.length > 2 && params.constructor !== Array ) {\n\t\tparams = $.makeArray( arguments ).slice( 1 );\n\t}\n\tif ( params.constructor !== Array ) {\n\t\tparams = [ params ];\n\t}\n\t$.each( params, function( i, n ) {\n\t\tsource = source.replace( new RegExp( \"\\\\{\" + i + \"\\\\}\", \"g\" ), function() {\n\t\t\treturn n;\n\t\t} );\n\t} );\n\treturn source;\n};\n\n$.extend( $.validator, {\n\n\tdefaults: {\n\t\tmessages: {},\n\t\tgroups: {},\n\t\trules: {},\n\t\terrorClass: \"error\",\n\t\tpendingClass: \"pending\",\n\t\tvalidClass: \"valid\",\n\t\terrorElement: \"label\",\n\t\tfocusCleanup: false,\n\t\tfocusInvalid: true,\n\t\terrorContainer: $( [] ),\n\t\terrorLabelContainer: $( [] ),\n\t\tonsubmit: true,\n\t\tignore: \":hidden\",\n\t\tignoreTitle: false,\n\t\tonfocusin: function( element ) {\n\t\t\tthis.lastActive = element;\n\n\t\t\t// Hide error label and remove error class on focus if enabled\n\t\t\tif ( this.settings.focusCleanup ) {\n\t\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.hideThese( this.errorsFor( element ) );\n\t\t\t}\n\t\t},\n\t\tonfocusout: function( element ) {\n\t\t\tif ( !this.checkable( element ) && ( element.name in this.submitted || !this.optional( element ) ) ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonkeyup: function( element, event ) {\n\n\t\t\t// Avoid revalidate the field when pressing one of the following keys\n\t\t\t// Shift => 16\n\t\t\t// Ctrl => 17\n\t\t\t// Alt => 18\n\t\t\t// Caps lock => 20\n\t\t\t// End => 35\n\t\t\t// Home => 36\n\t\t\t// Left arrow => 37\n\t\t\t// Up arrow => 38\n\t\t\t// Right arrow => 39\n\t\t\t// Down arrow => 40\n\t\t\t// Insert => 45\n\t\t\t// Num lock => 144\n\t\t\t// AltGr key => 225\n\t\t\tvar excludedKeys = [\n\t\t\t\t16, 17, 18, 20, 35, 36, 37,\n\t\t\t\t38, 39, 40, 45, 144, 225\n\t\t\t];\n\n\t\t\tif ( event.which === 9 && this.elementValue( element ) === \"\" || $.inArray( event.keyCode, excludedKeys ) !== -1 ) {\n\t\t\t\treturn;\n\t\t\t} else if ( element.name in this.submitted || element.name in this.invalid ) {\n\t\t\t\tthis.element( element );\n\t\t\t}\n\t\t},\n\t\tonclick: function( element ) {\n\n\t\t\t// Click on selects, radiobuttons and checkboxes\n\t\t\tif ( element.name in this.submitted ) {\n\t\t\t\tthis.element( element );\n\n\t\t\t// Or option elements, check parent select in that case\n\t\t\t} else if ( element.parentNode.name in this.submitted ) {\n\t\t\t\tthis.element( element.parentNode );\n\t\t\t}\n\t\t},\n\t\thighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).addClass( errorClass ).removeClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).addClass( errorClass ).removeClass( validClass );\n\t\t\t}\n\t\t},\n\t\tunhighlight: function( element, errorClass, validClass ) {\n\t\t\tif ( element.type === \"radio\" ) {\n\t\t\t\tthis.findByName( element.name ).removeClass( errorClass ).addClass( validClass );\n\t\t\t} else {\n\t\t\t\t$( element ).removeClass( errorClass ).addClass( validClass );\n\t\t\t}\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.setDefaults/\n\tsetDefaults: function( settings ) {\n\t\t$.extend( $.validator.defaults, settings );\n\t},\n\n\tmessages: {\n\t\trequired: \"This field is required.\",\n\t\tremote: \"Please fix this field.\",\n\t\temail: \"Please enter a valid email address.\",\n\t\turl: \"Please enter a valid URL.\",\n\t\tdate: \"Please enter a valid date.\",\n\t\tdateISO: \"Please enter a valid date (ISO).\",\n\t\tnumber: \"Please enter a valid number.\",\n\t\tdigits: \"Please enter only digits.\",\n\t\tequalTo: \"Please enter the same value again.\",\n\t\tmaxlength: $.validator.format( \"Please enter no more than {0} characters.\" ),\n\t\tminlength: $.validator.format( \"Please enter at least {0} characters.\" ),\n\t\trangelength: $.validator.format( \"Please enter a value between {0} and {1} characters long.\" ),\n\t\trange: $.validator.format( \"Please enter a value between {0} and {1}.\" ),\n\t\tmax: $.validator.format( \"Please enter a value less than or equal to {0}.\" ),\n\t\tmin: $.validator.format( \"Please enter a value greater than or equal to {0}.\" ),\n\t\tstep: $.validator.format( \"Please enter a multiple of {0}.\" )\n\t},\n\n\tautoCreateRanges: false,\n\n\tprototype: {\n\n\t\tinit: function() {\n\t\t\tthis.labelContainer = $( this.settings.errorLabelContainer );\n\t\t\tthis.errorContext = this.labelContainer.length && this.labelContainer || $( this.currentForm );\n\t\t\tthis.containers = $( this.settings.errorContainer ).add( this.settings.errorLabelContainer );\n\t\t\tthis.submitted = {};\n\t\t\tthis.valueCache = {};\n\t\t\tthis.pendingRequest = 0;\n\t\t\tthis.pending = {};\n\t\t\tthis.invalid = {};\n\t\t\tthis.reset();\n\n\t\t\tvar currentForm = this.currentForm,\n\t\t\t\tgroups = ( this.groups = {} ),\n\t\t\t\trules;\n\t\t\t$.each( this.settings.groups, function( key, value ) {\n\t\t\t\tif ( typeof value === \"string\" ) {\n\t\t\t\t\tvalue = value.split( /\\s/ );\n\t\t\t\t}\n\t\t\t\t$.each( value, function( index, name ) {\n\t\t\t\t\tgroups[ name ] = key;\n\t\t\t\t} );\n\t\t\t} );\n\t\t\trules = this.settings.rules;\n\t\t\t$.each( rules, function( key, value ) {\n\t\t\t\trules[ key ] = $.validator.normalizeRule( value );\n\t\t\t} );\n\n\t\t\tfunction delegate( event ) {\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( !this.form && isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = $( this ).attr( \"name\" );\n\t\t\t\t}\n\n\t\t\t\t// Ignore the element if it belongs to another form. This will happen mainly\n\t\t\t\t// when setting the `form` attribute of an input to the id of another form.\n\t\t\t\tif ( currentForm !== this.form ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar validator = $.data( this.form, \"validator\" ),\n\t\t\t\t\teventType = \"on\" + event.type.replace( /^validate/, \"\" ),\n\t\t\t\t\tsettings = validator.settings;\n\t\t\t\tif ( settings[ eventType ] && !$( this ).is( settings.ignore ) ) {\n\t\t\t\t\tsettings[ eventType ].call( validator, this, event );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.on( \"focusin.validate focusout.validate keyup.validate\",\n\t\t\t\t\t\":text, [type='password'], [type='file'], select, textarea, [type='number'], [type='search'], \" +\n\t\t\t\t\t\"[type='tel'], [type='url'], [type='email'], [type='datetime'], [type='date'], [type='month'], \" +\n\t\t\t\t\t\"[type='week'], [type='time'], [type='datetime-local'], [type='range'], [type='color'], \" +\n\t\t\t\t\t\"[type='radio'], [type='checkbox'], [contenteditable], [type='button']\", delegate )\n\n\t\t\t\t// Support: Chrome, oldIE\n\t\t\t\t// \"select\" is provided as event.target when clicking a option\n\t\t\t\t.on( \"click.validate\", \"select, option, [type='radio'], [type='checkbox']\", delegate );\n\n\t\t\tif ( this.settings.invalidHandler ) {\n\t\t\t\t$( this.currentForm ).on( \"invalid-form.validate\", this.settings.invalidHandler );\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.form/\n\t\tform: function() {\n\t\t\tthis.checkForm();\n\t\t\t$.extend( this.submitted, this.errorMap );\n\t\t\tthis.invalid = $.extend( {}, this.errorMap );\n\t\t\tif ( !this.valid() ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t}\n\t\t\tthis.showErrors();\n\t\t\treturn this.valid();\n\t\t},\n\n\t\tcheckForm: function() {\n\t\t\tthis.prepareForm();\n\t\t\tfor ( var i = 0, elements = ( this.currentElements = this.elements() ); elements[ i ]; i++ ) {\n\t\t\t\tthis.check( elements[ i ] );\n\t\t\t}\n\t\t\treturn this.valid();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.element/\n\t\telement: function( element ) {\n\t\t\tvar cleanElement = this.clean( element ),\n\t\t\t\tcheckElement = this.validationTargetFor( cleanElement ),\n\t\t\t\tv = this,\n\t\t\t\tresult = true,\n\t\t\t\trs, group;\n\n\t\t\tif ( checkElement === undefined ) {\n\t\t\t\tdelete this.invalid[ cleanElement.name ];\n\t\t\t} else {\n\t\t\t\tthis.prepareElement( checkElement );\n\t\t\t\tthis.currentElements = $( checkElement );\n\n\t\t\t\t// If this element is grouped, then validate all group elements already\n\t\t\t\t// containing a value\n\t\t\t\tgroup = this.groups[ checkElement.name ];\n\t\t\t\tif ( group ) {\n\t\t\t\t\t$.each( this.groups, function( name, testgroup ) {\n\t\t\t\t\t\tif ( testgroup === group && name !== checkElement.name ) {\n\t\t\t\t\t\t\tcleanElement = v.validationTargetFor( v.clean( v.findByName( name ) ) );\n\t\t\t\t\t\t\tif ( cleanElement && cleanElement.name in v.invalid ) {\n\t\t\t\t\t\t\t\tv.currentElements.push( cleanElement );\n\t\t\t\t\t\t\t\tresult = v.check( cleanElement ) && result;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t} );\n\t\t\t\t}\n\n\t\t\t\trs = this.check( checkElement ) !== false;\n\t\t\t\tresult = result && rs;\n\t\t\t\tif ( rs ) {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = false;\n\t\t\t\t} else {\n\t\t\t\t\tthis.invalid[ checkElement.name ] = true;\n\t\t\t\t}\n\n\t\t\t\tif ( !this.numberOfInvalids() ) {\n\n\t\t\t\t\t// Hide error containers on last error\n\t\t\t\t\tthis.toHide = this.toHide.add( this.containers );\n\t\t\t\t}\n\t\t\t\tthis.showErrors();\n\n\t\t\t\t// Add aria-invalid status for screen readers\n\t\t\t\t$( element ).attr( \"aria-invalid\", !rs );\n\t\t\t}\n\n\t\t\treturn result;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.showErrors/\n\t\tshowErrors: function( errors ) {\n\t\t\tif ( errors ) {\n\t\t\t\tvar validator = this;\n\n\t\t\t\t// Add items to error list and map\n\t\t\t\t$.extend( this.errorMap, errors );\n\t\t\t\tthis.errorList = $.map( this.errorMap, function( message, name ) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessage: message,\n\t\t\t\t\t\telement: validator.findByName( name )[ 0 ]\n\t\t\t\t\t};\n\t\t\t\t} );\n\n\t\t\t\t// Remove items from success list\n\t\t\t\tthis.successList = $.grep( this.successList, function( element ) {\n\t\t\t\t\treturn !( element.name in errors );\n\t\t\t\t} );\n\t\t\t}\n\t\t\tif ( this.settings.showErrors ) {\n\t\t\t\tthis.settings.showErrors.call( this, this.errorMap, this.errorList );\n\t\t\t} else {\n\t\t\t\tthis.defaultShowErrors();\n\t\t\t}\n\t\t},\n\n\t\t// https://jqueryvalidation.org/Validator.resetForm/\n\t\tresetForm: function() {\n\t\t\tif ( $.fn.resetForm ) {\n\t\t\t\t$( this.currentForm ).resetForm();\n\t\t\t}\n\t\t\tthis.invalid = {};\n\t\t\tthis.submitted = {};\n\t\t\tthis.prepareForm();\n\t\t\tthis.hideErrors();\n\t\t\tvar elements = this.elements()\n\t\t\t\t.removeData( \"previousValue\" )\n\t\t\t\t.removeAttr( \"aria-invalid\" );\n\n\t\t\tthis.resetElements( elements );\n\t\t},\n\n\t\tresetElements: function( elements ) {\n\t\t\tvar i;\n\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0; elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ],\n\t\t\t\t\t\tthis.settings.errorClass, \"\" );\n\t\t\t\t\tthis.findByName( elements[ i ].name ).removeClass( this.settings.validClass );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\telements\n\t\t\t\t\t.removeClass( this.settings.errorClass )\n\t\t\t\t\t.removeClass( this.settings.validClass );\n\t\t\t}\n\t\t},\n\n\t\tnumberOfInvalids: function() {\n\t\t\treturn this.objectLength( this.invalid );\n\t\t},\n\n\t\tobjectLength: function( obj ) {\n\t\t\t/* jshint unused: false */\n\t\t\tvar count = 0,\n\t\t\t\ti;\n\t\t\tfor ( i in obj ) {\n\n\t\t\t\t// This check allows counting elements with empty error\n\t\t\t\t// message as invalid elements\n\t\t\t\tif ( obj[ i ] !== undefined && obj[ i ] !== null && obj[ i ] !== false ) {\n\t\t\t\t\tcount++;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn count;\n\t\t},\n\n\t\thideErrors: function() {\n\t\t\tthis.hideThese( this.toHide );\n\t\t},\n\n\t\thideThese: function( errors ) {\n\t\t\terrors.not( this.containers ).text( \"\" );\n\t\t\tthis.addWrapper( errors ).hide();\n\t\t},\n\n\t\tvalid: function() {\n\t\t\treturn this.size() === 0;\n\t\t},\n\n\t\tsize: function() {\n\t\t\treturn this.errorList.length;\n\t\t},\n\n\t\tfocusInvalid: function() {\n\t\t\tif ( this.settings.focusInvalid ) {\n\t\t\t\ttry {\n\t\t\t\t\t$( this.findLastActive() || this.errorList.length && this.errorList[ 0 ].element || [] )\n\t\t\t\t\t.filter( \":visible\" )\n\t\t\t\t\t.trigger( \"focus\" )\n\n\t\t\t\t\t// Manually trigger focusin event; without it, focusin handler isn't called, findLastActive won't have anything to find\n\t\t\t\t\t.trigger( \"focusin\" );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// Ignore IE throwing errors when focusing hidden elements\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tfindLastActive: function() {\n\t\t\tvar lastActive = this.lastActive;\n\t\t\treturn lastActive && $.grep( this.errorList, function( n ) {\n\t\t\t\treturn n.element.name === lastActive.name;\n\t\t\t} ).length === 1 && lastActive;\n\t\t},\n\n\t\telements: function() {\n\t\t\tvar validator = this,\n\t\t\t\trulesCache = {};\n\n\t\t\t// Select all valid inputs inside the form (no submit or reset buttons)\n\t\t\treturn $( this.currentForm )\n\t\t\t.find( \"input, select, textarea, [contenteditable]\" )\n\t\t\t.not( \":submit, :reset, :image, :disabled\" )\n\t\t\t.not( this.settings.ignore )\n\t\t\t.filter( function() {\n\t\t\t\tvar name = this.name || $( this ).attr( \"name\" ); // For contenteditable\n\t\t\t\tvar isContentEditable = typeof $( this ).attr( \"contenteditable\" ) !== \"undefined\" && $( this ).attr( \"contenteditable\" ) !== \"false\";\n\n\t\t\t\tif ( !name && validator.settings.debug && window.console ) {\n\t\t\t\t\tconsole.error( \"%o has no name assigned\", this );\n\t\t\t\t}\n\n\t\t\t\t// Set form expando on contenteditable\n\t\t\t\tif ( isContentEditable ) {\n\t\t\t\t\tthis.form = $( this ).closest( \"form\" )[ 0 ];\n\t\t\t\t\tthis.name = name;\n\t\t\t\t}\n\n\t\t\t\t// Ignore elements that belong to other/nested forms\n\t\t\t\tif ( this.form !== validator.currentForm ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t// Select only the first element for each name, and only those with rules specified\n\t\t\t\tif ( name in rulesCache || !validator.objectLength( $( this ).rules() ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\trulesCache[ name ] = true;\n\t\t\t\treturn true;\n\t\t\t} );\n\t\t},\n\n\t\tclean: function( selector ) {\n\t\t\treturn $( selector )[ 0 ];\n\t\t},\n\n\t\terrors: function() {\n\t\t\tvar errorClass = this.settings.errorClass.split( \" \" ).join( \".\" );\n\t\t\treturn $( this.settings.errorElement + \".\" + errorClass, this.errorContext );\n\t\t},\n\n\t\tresetInternals: function() {\n\t\t\tthis.successList = [];\n\t\t\tthis.errorList = [];\n\t\t\tthis.errorMap = {};\n\t\t\tthis.toShow = $( [] );\n\t\t\tthis.toHide = $( [] );\n\t\t},\n\n\t\treset: function() {\n\t\t\tthis.resetInternals();\n\t\t\tthis.currentElements = $( [] );\n\t\t},\n\n\t\tprepareForm: function() {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errors().add( this.containers );\n\t\t},\n\n\t\tprepareElement: function( element ) {\n\t\t\tthis.reset();\n\t\t\tthis.toHide = this.errorsFor( element );\n\t\t},\n\n\t\telementValue: function( element ) {\n\t\t\tvar $element = $( element ),\n\t\t\t\ttype = element.type,\n\t\t\t\tisContentEditable = typeof $element.attr( \"contenteditable\" ) !== \"undefined\" && $element.attr( \"contenteditable\" ) !== \"false\",\n\t\t\t\tval, idx;\n\n\t\t\tif ( type === \"radio\" || type === \"checkbox\" ) {\n\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).val();\n\t\t\t} else if ( type === \"number\" && typeof element.validity !== \"undefined\" ) {\n\t\t\t\treturn element.validity.badInput ? \"NaN\" : $element.val();\n\t\t\t}\n\n\t\t\tif ( isContentEditable ) {\n\t\t\t\tval = $element.text();\n\t\t\t} else {\n\t\t\t\tval = $element.val();\n\t\t\t}\n\n\t\t\tif ( type === \"file\" ) {\n\n\t\t\t\t// Modern browser (chrome & safari)\n\t\t\t\tif ( val.substr( 0, 12 ) === \"C:\\\\fakepath\\\\\" ) {\n\t\t\t\t\treturn val.substr( 12 );\n\t\t\t\t}\n\n\t\t\t\t// Legacy browsers\n\t\t\t\t// Unix-based path\n\t\t\t\tidx = val.lastIndexOf( \"/\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Windows-based path\n\t\t\t\tidx = val.lastIndexOf( \"\\\\\" );\n\t\t\t\tif ( idx >= 0 ) {\n\t\t\t\t\treturn val.substr( idx + 1 );\n\t\t\t\t}\n\n\t\t\t\t// Just the file name\n\t\t\t\treturn val;\n\t\t\t}\n\n\t\t\tif ( typeof val === \"string\" ) {\n\t\t\t\treturn val.replace( /\\r/g, \"\" );\n\t\t\t}\n\t\t\treturn val;\n\t\t},\n\n\t\tcheck: function( element ) {\n\t\t\telement = this.validationTargetFor( this.clean( element ) );\n\n\t\t\tvar rules = $( element ).rules(),\n\t\t\t\trulesCount = $.map( rules, function( n, i ) {\n\t\t\t\t\treturn i;\n\t\t\t\t} ).length,\n\t\t\t\tdependencyMismatch = false,\n\t\t\t\tval = this.elementValue( element ),\n\t\t\t\tresult, method, rule, normalizer;\n\n\t\t\t// Prioritize the local normalizer defined for this element over the global one\n\t\t\t// if the former exists, otherwise user the global one in case it exists.\n\t\t\tif ( typeof rules.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = rules.normalizer;\n\t\t\t} else if (\ttypeof this.settings.normalizer === \"function\" ) {\n\t\t\t\tnormalizer = this.settings.normalizer;\n\t\t\t}\n\n\t\t\t// If normalizer is defined, then call it to retreive the changed value instead\n\t\t\t// of using the real one.\n\t\t\t// Note that `this` in the normalizer is `element`.\n\t\t\tif ( normalizer ) {\n\t\t\t\tval = normalizer.call( element, val );\n\n\t\t\t\t// Delete the normalizer from rules to avoid treating it as a pre-defined method.\n\t\t\t\tdelete rules.normalizer;\n\t\t\t}\n\n\t\t\tfor ( method in rules ) {\n\t\t\t\trule = { method: method, parameters: rules[ method ] };\n\t\t\t\ttry {\n\t\t\t\t\tresult = $.validator.methods[ method ].call( this, val, element, rule.parameters );\n\n\t\t\t\t\t// If a method indicates that the field is optional and therefore valid,\n\t\t\t\t\t// don't mark it as valid when there are no other rules\n\t\t\t\t\tif ( result === \"dependency-mismatch\" && rulesCount === 1 ) {\n\t\t\t\t\t\tdependencyMismatch = true;\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\tdependencyMismatch = false;\n\n\t\t\t\t\tif ( result === \"pending\" ) {\n\t\t\t\t\t\tthis.toHide = this.toHide.not( this.errorsFor( element ) );\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( !result ) {\n\t\t\t\t\t\tthis.formatAndAdd( element, rule );\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t} catch ( e ) {\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.log( \"Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\", e );\n\t\t\t\t\t}\n\t\t\t\t\tif ( e instanceof TypeError ) {\n\t\t\t\t\t\te.message += \". Exception occurred when checking element \" + element.id + \", check the '\" + rule.method + \"' method.\";\n\t\t\t\t\t}\n\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( dependencyMismatch ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( this.objectLength( rules ) ) {\n\t\t\t\tthis.successList.push( element );\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t// Return the custom message for the given element and validation method\n\t\t// specified in the element's HTML5 data attribute\n\t\t// return the generic message if present and no method specific message is present\n\t\tcustomDataMessage: function( element, method ) {\n\t\t\treturn $( element ).data( \"msg\" + method.charAt( 0 ).toUpperCase() +\n\t\t\t\tmethod.substring( 1 ).toLowerCase() ) || $( element ).data( \"msg\" );\n\t\t},\n\n\t\t// Return the custom message for the given element name and validation method\n\t\tcustomMessage: function( name, method ) {\n\t\t\tvar m = this.settings.messages[ name ];\n\t\t\treturn m && ( m.constructor === String ? m : m[ method ] );\n\t\t},\n\n\t\t// Return the first defined argument, allowing empty strings\n\t\tfindDefined: function() {\n\t\t\tfor ( var i = 0; i < arguments.length; i++ ) {\n\t\t\t\tif ( arguments[ i ] !== undefined ) {\n\t\t\t\t\treturn arguments[ i ];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn undefined;\n\t\t},\n\n\t\t// The second parameter 'rule' used to be a string, and extended to an object literal\n\t\t// of the following form:\n\t\t// rule = {\n\t\t// method: \"method name\",\n\t\t// parameters: \"the given method parameters\"\n\t\t// }\n\t\t//\n\t\t// The old behavior still supported, kept to maintain backward compatibility with\n\t\t// old code, and will be removed in the next major release.\n\t\tdefaultMessage: function( element, rule ) {\n\t\t\tif ( typeof rule === \"string\" ) {\n\t\t\t\trule = { method: rule };\n\t\t\t}\n\n\t\t\tvar message = this.findDefined(\n\t\t\t\t\tthis.customMessage( element.name, rule.method ),\n\t\t\t\t\tthis.customDataMessage( element, rule.method ),\n\n\t\t\t\t\t// 'title' is never undefined, so handle empty string as undefined\n\t\t\t\t\t!this.settings.ignoreTitle && element.title || undefined,\n\t\t\t\t\t$.validator.messages[ rule.method ],\n\t\t\t\t\t\"Warning: No message defined for \" + element.name + \"\"\n\t\t\t\t),\n\t\t\t\ttheregex = /\\$?\\{(\\d+)\\}/g;\n\t\t\tif ( typeof message === \"function\" ) {\n\t\t\t\tmessage = message.call( this, rule.parameters, element );\n\t\t\t} else if ( theregex.test( message ) ) {\n\t\t\t\tmessage = $.validator.format( message.replace( theregex, \"{$1}\" ), rule.parameters );\n\t\t\t}\n\n\t\t\treturn message;\n\t\t},\n\n\t\tformatAndAdd: function( element, rule ) {\n\t\t\tvar message = this.defaultMessage( element, rule );\n\n\t\t\tthis.errorList.push( {\n\t\t\t\tmessage: message,\n\t\t\t\telement: element,\n\t\t\t\tmethod: rule.method\n\t\t\t} );\n\n\t\t\tthis.errorMap[ element.name ] = message;\n\t\t\tthis.submitted[ element.name ] = message;\n\t\t},\n\n\t\taddWrapper: function( toToggle ) {\n\t\t\tif ( this.settings.wrapper ) {\n\t\t\t\ttoToggle = toToggle.add( toToggle.parent( this.settings.wrapper ) );\n\t\t\t}\n\t\t\treturn toToggle;\n\t\t},\n\n\t\tdefaultShowErrors: function() {\n\t\t\tvar i, elements, error;\n\t\t\tfor ( i = 0; this.errorList[ i ]; i++ ) {\n\t\t\t\terror = this.errorList[ i ];\n\t\t\t\tif ( this.settings.highlight ) {\n\t\t\t\t\tthis.settings.highlight.call( this, error.element, this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t\tthis.showLabel( error.element, error.message );\n\t\t\t}\n\t\t\tif ( this.errorList.length ) {\n\t\t\t\tthis.toShow = this.toShow.add( this.containers );\n\t\t\t}\n\t\t\tif ( this.settings.success ) {\n\t\t\t\tfor ( i = 0; this.successList[ i ]; i++ ) {\n\t\t\t\t\tthis.showLabel( this.successList[ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( this.settings.unhighlight ) {\n\t\t\t\tfor ( i = 0, elements = this.validElements(); elements[ i ]; i++ ) {\n\t\t\t\t\tthis.settings.unhighlight.call( this, elements[ i ], this.settings.errorClass, this.settings.validClass );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toHide = this.toHide.not( this.toShow );\n\t\t\tthis.hideErrors();\n\t\t\tthis.addWrapper( this.toShow ).show();\n\t\t},\n\n\t\tvalidElements: function() {\n\t\t\treturn this.currentElements.not( this.invalidElements() );\n\t\t},\n\n\t\tinvalidElements: function() {\n\t\t\treturn $( this.errorList ).map( function() {\n\t\t\t\treturn this.element;\n\t\t\t} );\n\t\t},\n\n\t\tshowLabel: function( element, message ) {\n\t\t\tvar place, group, errorID, v,\n\t\t\t\terror = this.errorsFor( element ),\n\t\t\t\telementID = this.idOrName( element ),\n\t\t\t\tdescribedBy = $( element ).attr( \"aria-describedby\" );\n\n\t\t\tif ( error.length ) {\n\n\t\t\t\t// Refresh error/success class\n\t\t\t\terror.removeClass( this.settings.validClass ).addClass( this.settings.errorClass );\n\n\t\t\t\t// Replace message on existing label\n\t\t\t\terror.html( message );\n\t\t\t} else {\n\n\t\t\t\t// Create error element\n\t\t\t\terror = $( \"<\" + this.settings.errorElement + \">\" )\n\t\t\t\t\t.attr( \"id\", elementID + \"-error\" )\n\t\t\t\t\t.addClass( this.settings.errorClass )\n\t\t\t\t\t.html( message || \"\" );\n\n\t\t\t\t// Maintain reference to the element to be placed into the DOM\n\t\t\t\tplace = error;\n\t\t\t\tif ( this.settings.wrapper ) {\n\n\t\t\t\t\t// Make sure the element is visible, even in IE\n\t\t\t\t\t// actually showing the wrapped element is handled elsewhere\n\t\t\t\t\tplace = error.hide().show().wrap( \"<\" + this.settings.wrapper + \"/>\" ).parent();\n\t\t\t\t}\n\t\t\t\tif ( this.labelContainer.length ) {\n\t\t\t\t\tthis.labelContainer.append( place );\n\t\t\t\t} else if ( this.settings.errorPlacement ) {\n\t\t\t\t\tthis.settings.errorPlacement.call( this, place, $( element ) );\n\t\t\t\t} else {\n\t\t\t\t\tplace.insertAfter( element );\n\t\t\t\t}\n\n\t\t\t\t// Link error back to the element\n\t\t\t\tif ( error.is( \"label\" ) ) {\n\n\t\t\t\t\t// If the error is a label, then associate using 'for'\n\t\t\t\t\terror.attr( \"for\", elementID );\n\n\t\t\t\t\t// If the element is not a child of an associated label, then it's necessary\n\t\t\t\t\t// to explicitly apply aria-describedby\n\t\t\t\t} else if ( error.parents( \"label[for='\" + this.escapeCssMeta( elementID ) + \"']\" ).length === 0 ) {\n\t\t\t\t\terrorID = error.attr( \"id\" );\n\n\t\t\t\t\t// Respect existing non-error aria-describedby\n\t\t\t\t\tif ( !describedBy ) {\n\t\t\t\t\t\tdescribedBy = errorID;\n\t\t\t\t\t} else if ( !describedBy.match( new RegExp( \"\\\\b\" + this.escapeCssMeta( errorID ) + \"\\\\b\" ) ) ) {\n\n\t\t\t\t\t\t// Add to end of list if not already present\n\t\t\t\t\t\tdescribedBy += \" \" + errorID;\n\t\t\t\t\t}\n\t\t\t\t\t$( element ).attr( \"aria-describedby\", describedBy );\n\n\t\t\t\t\t// If this element is grouped, then assign to all elements in the same group\n\t\t\t\t\tgroup = this.groups[ element.name ];\n\t\t\t\t\tif ( group ) {\n\t\t\t\t\t\tv = this;\n\t\t\t\t\t\t$.each( v.groups, function( name, testgroup ) {\n\t\t\t\t\t\t\tif ( testgroup === group ) {\n\t\t\t\t\t\t\t\t$( \"[name='\" + v.escapeCssMeta( name ) + \"']\", v.currentForm )\n\t\t\t\t\t\t\t\t\t.attr( \"aria-describedby\", error.attr( \"id\" ) );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( !message && this.settings.success ) {\n\t\t\t\terror.text( \"\" );\n\t\t\t\tif ( typeof this.settings.success === \"string\" ) {\n\t\t\t\t\terror.addClass( this.settings.success );\n\t\t\t\t} else {\n\t\t\t\t\tthis.settings.success( error, element );\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.toShow = this.toShow.add( error );\n\t\t},\n\n\t\terrorsFor: function( element ) {\n\t\t\tvar name = this.escapeCssMeta( this.idOrName( element ) ),\n\t\t\t\tdescriber = $( element ).attr( \"aria-describedby\" ),\n\t\t\t\tselector = \"label[for='\" + name + \"'], label[for='\" + name + \"'] *\";\n\n\t\t\t// 'aria-describedby' should directly reference the error element\n\t\t\tif ( describer ) {\n\t\t\t\tselector = selector + \", #\" + this.escapeCssMeta( describer )\n\t\t\t\t\t.replace( /\\s+/g, \", #\" );\n\t\t\t}\n\n\t\t\treturn this\n\t\t\t\t.errors()\n\t\t\t\t.filter( selector );\n\t\t},\n\n\t\t// See https://api.jquery.com/category/selectors/, for CSS\n\t\t// meta-characters that should be escaped in order to be used with JQuery\n\t\t// as a literal part of a name/id or any selector.\n\t\tescapeCssMeta: function( string ) {\n\t\t\tif ( string === undefined ) {\n\t\t\t\treturn \"\";\n\t\t\t}\n\n\t\t\treturn string.replace( /([\\\\!\"#$%&'()*+,./:;<=>?@\\[\\]^`{|}~])/g, \"\\\\$1\" );\n\t\t},\n\n\t\tidOrName: function( element ) {\n\t\t\treturn this.groups[ element.name ] || ( this.checkable( element ) ? element.name : element.id || element.name );\n\t\t},\n\n\t\tvalidationTargetFor: function( element ) {\n\n\t\t\t// If radio/checkbox, validate first element in group instead\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\telement = this.findByName( element.name );\n\t\t\t}\n\n\t\t\t// Always apply ignore filter\n\t\t\treturn $( element ).not( this.settings.ignore )[ 0 ];\n\t\t},\n\n\t\tcheckable: function( element ) {\n\t\t\treturn ( /radio|checkbox/i ).test( element.type );\n\t\t},\n\n\t\tfindByName: function( name ) {\n\t\t\treturn $( this.currentForm ).find( \"[name='\" + this.escapeCssMeta( name ) + \"']\" );\n\t\t},\n\n\t\tgetLength: function( value, element ) {\n\t\t\tswitch ( element.nodeName.toLowerCase() ) {\n\t\t\tcase \"select\":\n\t\t\t\treturn $( \"option:selected\", element ).length;\n\t\t\tcase \"input\":\n\t\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\t\treturn this.findByName( element.name ).filter( \":checked\" ).length;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn value.length;\n\t\t},\n\n\t\tdepend: function( param, element ) {\n\t\t\treturn this.dependTypes[ typeof param ] ? this.dependTypes[ typeof param ]( param, element ) : true;\n\t\t},\n\n\t\tdependTypes: {\n\t\t\t\"boolean\": function( param ) {\n\t\t\t\treturn param;\n\t\t\t},\n\t\t\t\"string\": function( param, element ) {\n\t\t\t\treturn !!$( param, element.form ).length;\n\t\t\t},\n\t\t\t\"function\": function( param, element ) {\n\t\t\t\treturn param( element );\n\t\t\t}\n\t\t},\n\n\t\toptional: function( element ) {\n\t\t\tvar val = this.elementValue( element );\n\t\t\treturn !$.validator.methods.required.call( this, val, element ) && \"dependency-mismatch\";\n\t\t},\n\n\t\tstartRequest: function( element ) {\n\t\t\tif ( !this.pending[ element.name ] ) {\n\t\t\t\tthis.pendingRequest++;\n\t\t\t\t$( element ).addClass( this.settings.pendingClass );\n\t\t\t\tthis.pending[ element.name ] = true;\n\t\t\t}\n\t\t},\n\n\t\tstopRequest: function( element, valid ) {\n\t\t\tthis.pendingRequest--;\n\n\t\t\t// Sometimes synchronization fails, make sure pendingRequest is never < 0\n\t\t\tif ( this.pendingRequest < 0 ) {\n\t\t\t\tthis.pendingRequest = 0;\n\t\t\t}\n\t\t\tdelete this.pending[ element.name ];\n\t\t\t$( element ).removeClass( this.settings.pendingClass );\n\t\t\tif ( valid && this.pendingRequest === 0 && this.formSubmitted && this.form() && this.pendingRequest === 0 ) {\n\t\t\t\t$( this.currentForm ).trigger( \"submit\" );\n\n\t\t\t\t// Remove the hidden input that was used as a replacement for the\n\t\t\t\t// missing submit button. The hidden input is added by `handle()`\n\t\t\t\t// to ensure that the value of the used submit button is passed on\n\t\t\t\t// for scripted submits triggered by this method\n\t\t\t\tif ( this.submitButton ) {\n\t\t\t\t\t$( \"input:hidden[name='\" + this.submitButton.name + \"']\", this.currentForm ).remove();\n\t\t\t\t}\n\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t} else if ( !valid && this.pendingRequest === 0 && this.formSubmitted ) {\n\t\t\t\t$( this.currentForm ).triggerHandler( \"invalid-form\", [ this ] );\n\t\t\t\tthis.formSubmitted = false;\n\t\t\t}\n\t\t},\n\n\t\tpreviousValue: function( element, method ) {\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\treturn $.data( element, \"previousValue\" ) || $.data( element, \"previousValue\", {\n\t\t\t\told: null,\n\t\t\t\tvalid: true,\n\t\t\t\tmessage: this.defaultMessage( element, { method: method } )\n\t\t\t} );\n\t\t},\n\n\t\t// Cleans up all forms and elements, removes validator-specific events\n\t\tdestroy: function() {\n\t\t\tthis.resetForm();\n\n\t\t\t$( this.currentForm )\n\t\t\t\t.off( \".validate\" )\n\t\t\t\t.removeData( \"validator\" )\n\t\t\t\t.find( \".validate-equalTo-blur\" )\n\t\t\t\t\t.off( \".validate-equalTo\" )\n\t\t\t\t\t.removeClass( \"validate-equalTo-blur\" )\n\t\t\t\t.find( \".validate-lessThan-blur\" )\n\t\t\t\t\t.off( \".validate-lessThan\" )\n\t\t\t\t\t.removeClass( \"validate-lessThan-blur\" )\n\t\t\t\t.find( \".validate-lessThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-lessThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-lessThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThanEqual-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThanEqual\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThanEqual-blur\" )\n\t\t\t\t.find( \".validate-greaterThan-blur\" )\n\t\t\t\t\t.off( \".validate-greaterThan\" )\n\t\t\t\t\t.removeClass( \"validate-greaterThan-blur\" );\n\t\t}\n\n\t},\n\n\tclassRuleSettings: {\n\t\trequired: { required: true },\n\t\temail: { email: true },\n\t\turl: { url: true },\n\t\tdate: { date: true },\n\t\tdateISO: { dateISO: true },\n\t\tnumber: { number: true },\n\t\tdigits: { digits: true },\n\t\tcreditcard: { creditcard: true }\n\t},\n\n\taddClassRules: function( className, rules ) {\n\t\tif ( className.constructor === String ) {\n\t\t\tthis.classRuleSettings[ className ] = rules;\n\t\t} else {\n\t\t\t$.extend( this.classRuleSettings, className );\n\t\t}\n\t},\n\n\tclassRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tclasses = $( element ).attr( \"class\" );\n\n\t\tif ( classes ) {\n\t\t\t$.each( classes.split( \" \" ), function() {\n\t\t\t\tif ( this in $.validator.classRuleSettings ) {\n\t\t\t\t\t$.extend( rules, $.validator.classRuleSettings[ this ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeAttributeRule: function( rules, type, method, value ) {\n\n\t\t// Convert the value to a number for number inputs, and for text for backwards compability\n\t\t// allows type=\"date\" and others to be compared as strings\n\t\tif ( /min|max|step/.test( method ) && ( type === null || /number|range|text/.test( type ) ) ) {\n\t\t\tvalue = Number( value );\n\n\t\t\t// Support Opera Mini, which returns NaN for undefined minlength\n\t\t\tif ( isNaN( value ) ) {\n\t\t\t\tvalue = undefined;\n\t\t\t}\n\t\t}\n\n\t\tif ( value || value === 0 ) {\n\t\t\trules[ method ] = value;\n\t\t} else if ( type === method && type !== \"range\" ) {\n\n\t\t\t// Exception: the jquery validate 'range' method\n\t\t\t// does not test for the html5 'range' type\n\t\t\trules[ type === \"date\" ? \"dateISO\" : method ] = true;\n\t\t}\n\t},\n\n\tattributeRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\n\t\t\t// Support for in both html5 and older browsers\n\t\t\tif ( method === \"required\" ) {\n\t\t\t\tvalue = element.getAttribute( method );\n\n\t\t\t\t// Some browsers return an empty string for the required attribute\n\t\t\t\t// and non-HTML5 browsers might have required=\"\" markup\n\t\t\t\tif ( value === \"\" ) {\n\t\t\t\t\tvalue = true;\n\t\t\t\t}\n\n\t\t\t\t// Force non-HTML5 browsers to return bool\n\t\t\t\tvalue = !!value;\n\t\t\t} else {\n\t\t\t\tvalue = $element.attr( method );\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\n\t\t// 'maxlength' may be returned as -1, 2147483647 ( IE ) and 524288 ( safari ) for text inputs\n\t\tif ( rules.maxlength && /-1|2147483647|524288/.test( rules.maxlength ) ) {\n\t\t\tdelete rules.maxlength;\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\tdataRules: function( element ) {\n\t\tvar rules = {},\n\t\t\t$element = $( element ),\n\t\t\ttype = element.getAttribute( \"type\" ),\n\t\t\tmethod, value;\n\n\t\tfor ( method in $.validator.methods ) {\n\t\t\tvalue = $element.data( \"rule\" + method.charAt( 0 ).toUpperCase() + method.substring( 1 ).toLowerCase() );\n\n\t\t\t// Cast empty attributes like `data-rule-required` to `true`\n\t\t\tif ( value === \"\" ) {\n\t\t\t\tvalue = true;\n\t\t\t}\n\n\t\t\tthis.normalizeAttributeRule( rules, type, method, value );\n\t\t}\n\t\treturn rules;\n\t},\n\n\tstaticRules: function( element ) {\n\t\tvar rules = {},\n\t\t\tvalidator = $.data( element.form, \"validator\" );\n\n\t\tif ( validator.settings.rules ) {\n\t\t\trules = $.validator.normalizeRule( validator.settings.rules[ element.name ] ) || {};\n\t\t}\n\t\treturn rules;\n\t},\n\n\tnormalizeRules: function( rules, element ) {\n\n\t\t// Handle dependency check\n\t\t$.each( rules, function( prop, val ) {\n\n\t\t\t// Ignore rule when param is explicitly false, eg. required:false\n\t\t\tif ( val === false ) {\n\t\t\t\tdelete rules[ prop ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif ( val.param || val.depends ) {\n\t\t\t\tvar keepRule = true;\n\t\t\t\tswitch ( typeof val.depends ) {\n\t\t\t\tcase \"string\":\n\t\t\t\t\tkeepRule = !!$( val.depends, element.form ).length;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"function\":\n\t\t\t\t\tkeepRule = val.depends.call( element, element );\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif ( keepRule ) {\n\t\t\t\t\trules[ prop ] = val.param !== undefined ? val.param : true;\n\t\t\t\t} else {\n\t\t\t\t\t$.data( element.form, \"validator\" ).resetElements( $( element ) );\n\t\t\t\t\tdelete rules[ prop ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\t// Evaluate parameters\n\t\t$.each( rules, function( rule, parameter ) {\n\t\t\trules[ rule ] = typeof parameter === \"function\" && rule !== \"normalizer\" ? parameter( element ) : parameter;\n\t\t} );\n\n\t\t// Clean number parameters\n\t\t$.each( [ \"minlength\", \"maxlength\" ], function() {\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\trules[ this ] = Number( rules[ this ] );\n\t\t\t}\n\t\t} );\n\t\t$.each( [ \"rangelength\", \"range\" ], function() {\n\t\t\tvar parts;\n\t\t\tif ( rules[ this ] ) {\n\t\t\t\tif ( Array.isArray( rules[ this ] ) ) {\n\t\t\t\t\trules[ this ] = [ Number( rules[ this ][ 0 ] ), Number( rules[ this ][ 1 ] ) ];\n\t\t\t\t} else if ( typeof rules[ this ] === \"string\" ) {\n\t\t\t\t\tparts = rules[ this ].replace( /[\\[\\]]/g, \"\" ).split( /[\\s,]+/ );\n\t\t\t\t\trules[ this ] = [ Number( parts[ 0 ] ), Number( parts[ 1 ] ) ];\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\n\t\tif ( $.validator.autoCreateRanges ) {\n\n\t\t\t// Auto-create ranges\n\t\t\tif ( rules.min != null && rules.max != null ) {\n\t\t\t\trules.range = [ rules.min, rules.max ];\n\t\t\t\tdelete rules.min;\n\t\t\t\tdelete rules.max;\n\t\t\t}\n\t\t\tif ( rules.minlength != null && rules.maxlength != null ) {\n\t\t\t\trules.rangelength = [ rules.minlength, rules.maxlength ];\n\t\t\t\tdelete rules.minlength;\n\t\t\t\tdelete rules.maxlength;\n\t\t\t}\n\t\t}\n\n\t\treturn rules;\n\t},\n\n\t// Converts a simple string to a {string: true} rule, e.g., \"required\" to {required:true}\n\tnormalizeRule: function( data ) {\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tvar transformed = {};\n\t\t\t$.each( data.split( /\\s/ ), function() {\n\t\t\t\ttransformed[ this ] = true;\n\t\t\t} );\n\t\t\tdata = transformed;\n\t\t}\n\t\treturn data;\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.addMethod/\n\taddMethod: function( name, method, message ) {\n\t\t$.validator.methods[ name ] = method;\n\t\t$.validator.messages[ name ] = message !== undefined ? message : $.validator.messages[ name ];\n\t\tif ( method.length < 3 ) {\n\t\t\t$.validator.addClassRules( name, $.validator.normalizeRule( name ) );\n\t\t}\n\t},\n\n\t// https://jqueryvalidation.org/jQuery.validator.methods/\n\tmethods: {\n\n\t\t// https://jqueryvalidation.org/required-method/\n\t\trequired: function( value, element, param ) {\n\n\t\t\t// Check if dependency is met\n\t\t\tif ( !this.depend( param, element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\t\t\tif ( element.nodeName.toLowerCase() === \"select\" ) {\n\n\t\t\t\t// Could be an array for select-multiple or a string, both are fine this way\n\t\t\t\tvar val = $( element ).val();\n\t\t\t\treturn val && val.length > 0;\n\t\t\t}\n\t\t\tif ( this.checkable( element ) ) {\n\t\t\t\treturn this.getLength( value, element ) > 0;\n\t\t\t}\n\t\t\treturn value !== undefined && value !== null && value.length > 0;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/email-method/\n\t\temail: function( value, element ) {\n\n\t\t\t// From https://html.spec.whatwg.org/multipage/forms.html#valid-e-mail-address\n\t\t\t// Retrieved 2014-01-14\n\t\t\t// If you have a problem with this implementation, report a bug against the above spec\n\t\t\t// Or use custom methods to implement your own email validation\n\t\t\treturn this.optional( element ) || /^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/url-method/\n\t\turl: function( value, element ) {\n\n\t\t\t// Copyright (c) 2010-2013 Diego Perini, MIT licensed\n\t\t\t// https://gist.github.com/dperini/729294\n\t\t\t// see also https://mathiasbynens.be/demo/url-regex\n\t\t\t// modified to allow protocol-relative URLs\n\t\t\treturn this.optional( element ) || /^(?:(?:(?:https?|ftp):)?\\/\\/)(?:(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})+(?::(?:[^\\]\\[?\\/<~#`!@$^&*()+=}|:\";',>{ ]|%[0-9A-Fa-f]{2})*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z0-9\\u00a1-\\uffff][a-z0-9\\u00a1-\\uffff_-]{0,62})?[a-z0-9\\u00a1-\\uffff]\\.)+(?:[a-z\\u00a1-\\uffff]{2,}\\.?))(?::\\d{2,5})?(?:[/?#]\\S*)?$/i.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/date-method/\n\t\tdate: ( function() {\n\t\t\tvar called = false;\n\n\t\t\treturn function( value, element ) {\n\t\t\t\tif ( !called ) {\n\t\t\t\t\tcalled = true;\n\t\t\t\t\tif ( this.settings.debug && window.console ) {\n\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\"The `date` method is deprecated and will be removed in version '2.0.0'.\\n\" +\n\t\t\t\t\t\t\t\"Please don't use it, since it relies on the Date constructor, which\\n\" +\n\t\t\t\t\t\t\t\"behaves very differently across browsers and locales. Use `dateISO`\\n\" +\n\t\t\t\t\t\t\t\"instead or one of the locale specific methods in `localizations/`\\n\" +\n\t\t\t\t\t\t\t\"and `additional-methods.js`.\"\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn this.optional( element ) || !/Invalid|NaN/.test( new Date( value ).toString() );\n\t\t\t};\n\t\t}() ),\n\n\t\t// https://jqueryvalidation.org/dateISO-method/\n\t\tdateISO: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d{4}[\\/\\-](0?[1-9]|1[012])[\\/\\-](0?[1-9]|[12][0-9]|3[01])$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/number-method/\n\t\tnumber: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^(?:-?\\d+|-?\\d{1,3}(?:,\\d{3})+)?(?:\\.\\d+)?$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/digits-method/\n\t\tdigits: function( value, element ) {\n\t\t\treturn this.optional( element ) || /^\\d+$/.test( value );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/minlength-method/\n\t\tminlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/maxlength-method/\n\t\tmaxlength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || length <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/rangelength-method/\n\t\trangelength: function( value, element, param ) {\n\t\t\tvar length = Array.isArray( value ) ? value.length : this.getLength( value, element );\n\t\t\treturn this.optional( element ) || ( length >= param[ 0 ] && length <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/min-method/\n\t\tmin: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value >= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/max-method/\n\t\tmax: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || value <= param;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/range-method/\n\t\trange: function( value, element, param ) {\n\t\t\treturn this.optional( element ) || ( value >= param[ 0 ] && value <= param[ 1 ] );\n\t\t},\n\n\t\t// https://jqueryvalidation.org/step-method/\n\t\tstep: function( value, element, param ) {\n\t\t\tvar type = $( element ).attr( \"type\" ),\n\t\t\t\terrorMessage = \"Step attribute on input type \" + type + \" is not supported.\",\n\t\t\t\tsupportedTypes = [ \"text\", \"number\", \"range\" ],\n\t\t\t\tre = new RegExp( \"\\\\b\" + type + \"\\\\b\" ),\n\t\t\t\tnotSupported = type && !re.test( supportedTypes.join() ),\n\t\t\t\tdecimalPlaces = function( num ) {\n\t\t\t\t\tvar match = ( \"\" + num ).match( /(?:\\.(\\d+))?$/ );\n\t\t\t\t\tif ( !match ) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Number of digits right of decimal point.\n\t\t\t\t\treturn match[ 1 ] ? match[ 1 ].length : 0;\n\t\t\t\t},\n\t\t\t\ttoInt = function( num ) {\n\t\t\t\t\treturn Math.round( num * Math.pow( 10, decimals ) );\n\t\t\t\t},\n\t\t\t\tvalid = true,\n\t\t\t\tdecimals;\n\n\t\t\t// Works only for text, number and range input types\n\t\t\t// TODO find a way to support input types date, datetime, datetime-local, month, time and week\n\t\t\tif ( notSupported ) {\n\t\t\t\tthrow new Error( errorMessage );\n\t\t\t}\n\n\t\t\tdecimals = decimalPlaces( param );\n\n\t\t\t// Value can't have too many decimals\n\t\t\tif ( decimalPlaces( value ) > decimals || toInt( value ) % toInt( param ) !== 0 ) {\n\t\t\t\tvalid = false;\n\t\t\t}\n\n\t\t\treturn this.optional( element ) || valid;\n\t\t},\n\n\t\t// https://jqueryvalidation.org/equalTo-method/\n\t\tequalTo: function( value, element, param ) {\n\n\t\t\t// Bind to the blur event of the target in order to revalidate whenever the target field is updated\n\t\t\tvar target = $( param );\n\t\t\tif ( this.settings.onfocusout && target.not( \".validate-equalTo-blur\" ).length ) {\n\t\t\t\ttarget.addClass( \"validate-equalTo-blur\" ).on( \"blur.validate-equalTo\", function() {\n\t\t\t\t\t$( element ).valid();\n\t\t\t\t} );\n\t\t\t}\n\t\t\treturn value === target.val();\n\t\t},\n\n\t\t// https://jqueryvalidation.org/remote-method/\n\t\tremote: function( value, element, param, method ) {\n\t\t\tif ( this.optional( element ) ) {\n\t\t\t\treturn \"dependency-mismatch\";\n\t\t\t}\n\n\t\t\tmethod = typeof method === \"string\" && method || \"remote\";\n\n\t\t\tvar previous = this.previousValue( element, method ),\n\t\t\t\tvalidator, data, optionDataString;\n\n\t\t\tif ( !this.settings.messages[ element.name ] ) {\n\t\t\t\tthis.settings.messages[ element.name ] = {};\n\t\t\t}\n\t\t\tprevious.originalMessage = previous.originalMessage || this.settings.messages[ element.name ][ method ];\n\t\t\tthis.settings.messages[ element.name ][ method ] = previous.message;\n\n\t\t\tparam = typeof param === \"string\" && { url: param } || param;\n\t\t\toptionDataString = $.param( $.extend( { data: value }, param.data ) );\n\t\t\tif ( previous.old === optionDataString ) {\n\t\t\t\treturn previous.valid;\n\t\t\t}\n\n\t\t\tprevious.old = optionDataString;\n\t\t\tvalidator = this;\n\t\t\tthis.startRequest( element );\n\t\t\tdata = {};\n\t\t\tdata[ element.name ] = value;\n\t\t\t$.ajax( $.extend( true, {\n\t\t\t\tmode: \"abort\",\n\t\t\t\tport: \"validate\" + element.name,\n\t\t\t\tdataType: \"json\",\n\t\t\t\tdata: data,\n\t\t\t\tcontext: validator.currentForm,\n\t\t\t\tsuccess: function( response ) {\n\t\t\t\t\tvar valid = response === true || response === \"true\",\n\t\t\t\t\t\terrors, message, submitted;\n\n\t\t\t\t\tvalidator.settings.messages[ element.name ][ method ] = previous.originalMessage;\n\t\t\t\t\tif ( valid ) {\n\t\t\t\t\t\tsubmitted = validator.formSubmitted;\n\t\t\t\t\t\tvalidator.resetInternals();\n\t\t\t\t\t\tvalidator.toHide = validator.errorsFor( element );\n\t\t\t\t\t\tvalidator.formSubmitted = submitted;\n\t\t\t\t\t\tvalidator.successList.push( element );\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = false;\n\t\t\t\t\t\tvalidator.showErrors();\n\t\t\t\t\t} else {\n\t\t\t\t\t\terrors = {};\n\t\t\t\t\t\tmessage = response || validator.defaultMessage( element, { method: method, parameters: value } );\n\t\t\t\t\t\terrors[ element.name ] = previous.message = message;\n\t\t\t\t\t\tvalidator.invalid[ element.name ] = true;\n\t\t\t\t\t\tvalidator.showErrors( errors );\n\t\t\t\t\t}\n\t\t\t\t\tprevious.valid = valid;\n\t\t\t\t\tvalidator.stopRequest( element, valid );\n\t\t\t\t}\n\t\t\t}, param ) );\n\t\t\treturn \"pending\";\n\t\t}\n\t}\n\n} );\n\n// Ajax mode: abort\n// usage: $.ajax({ mode: \"abort\"[, port: \"uniqueport\"]});\n// if mode:\"abort\" is used, the previous request on that port (port can be undefined) is aborted via XMLHttpRequest.abort()\n\nvar pendingRequests = {},\n\tajax;\n\n// Use a prefilter if available (1.5+)\nif ( $.ajaxPrefilter ) {\n\t$.ajaxPrefilter( function( settings, _, xhr ) {\n\t\tvar port = settings.port;\n\t\tif ( settings.mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = xhr;\n\t\t}\n\t} );\n} else {\n\n\t// Proxy ajax\n\tajax = $.ajax;\n\t$.ajax = function( settings ) {\n\t\tvar mode = ( \"mode\" in settings ? settings : $.ajaxSettings ).mode,\n\t\t\tport = ( \"port\" in settings ? settings : $.ajaxSettings ).port;\n\t\tif ( mode === \"abort\" ) {\n\t\t\tif ( pendingRequests[ port ] ) {\n\t\t\t\tpendingRequests[ port ].abort();\n\t\t\t}\n\t\t\tpendingRequests[ port ] = ajax.apply( this, arguments );\n\t\t\treturn pendingRequests[ port ];\n\t\t}\n\t\treturn ajax.apply( this, arguments );\n\t};\n}\nreturn $;\n}));","module.exports = jQuery;"],"names":["module","exports","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","transitionalDefaults","AxiosError","CanceledError","parseProtocol","config","Promise","resolve","reject","onCanceled","requestData","data","requestHeaders","headers","responseType","done","cancelToken","unsubscribe","signal","removeEventListener","isFormData","isStandardBrowserEnv","request","XMLHttpRequest","auth","username","password","unescape","encodeURIComponent","Authorization","btoa","fullPath","baseURL","url","onloadend","responseHeaders","getAllResponseHeaders","response","responseText","status","statusText","value","err","open","method","toUpperCase","params","paramsSerializer","timeout","onreadystatechange","readyState","responseURL","indexOf","setTimeout","onabort","ECONNABORTED","onerror","ERR_NETWORK","ontimeout","timeoutErrorMessage","transitional","clarifyTimeoutError","ETIMEDOUT","xsrfValue","withCredentials","xsrfCookieName","read","undefined","xsrfHeaderName","forEach","val","key","toLowerCase","setRequestHeader","isUndefined","onDownloadProgress","addEventListener","onUploadProgress","upload","cancel","type","abort","subscribe","aborted","protocol","ERR_BAD_REQUEST","send","bind","Axios","mergeConfig","axios","createInstance","defaultConfig","context","instance","prototype","extend","create","instanceConfig","CancelToken","isCancel","VERSION","toFormData","Cancel","all","promises","spread","isAxiosError","executor","TypeError","resolvePromise","this","promise","token","then","_listeners","i","l","length","onfulfilled","_resolve","message","reason","throwIfRequested","listener","push","index","splice","source","c","call","ERR_CANCELED","name","inherits","__CANCEL__","InterceptorManager","dispatchRequest","validator","validators","defaults","interceptors","configOrUrl","assertOptions","silentJSONParsing","boolean","forcedJSONParsing","requestInterceptorChain","synchronousRequestInterceptors","interceptor","runWhen","synchronous","unshift","fulfilled","rejected","responseInterceptorChain","chain","Array","apply","concat","shift","newConfig","onFulfilled","onRejected","error","getUri","generateHTTPMethod","isForm","code","Error","toJSON","description","number","fileName","lineNumber","columnNumber","stack","descriptors","Object","defineProperties","defineProperty","from","customProps","axiosError","toFlatObject","obj","assign","handlers","use","options","eject","id","fn","h","isAbsoluteURL","combineURLs","requestedURL","transformData","throwIfCancellationRequested","transformRequest","merge","common","adapter","transformResponse","config1","config2","getMergedValue","target","isPlainObject","isArray","slice","mergeDeepProperties","prop","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","keys","configValue","validateStatus","ERR_BAD_RESPONSE","Math","floor","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","toString","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","buffer","isURLSearchParams","isFileList","isObjectPayload","isObject","contentType","_FormData","env","FormData","rawValue","parser","encoder","isString","JSON","parse","trim","e","stringify","stringifySafely","strictJSONParsing","maxContentLength","maxBodyLength","thisArg","args","arguments","encode","replace","serializedParams","parts","v","isDate","toISOString","join","hashmarkIndex","relativeURL","write","expires","path","domain","secure","cookie","isNumber","Date","toGMTString","document","match","RegExp","decodeURIComponent","remove","now","test","payload","originURL","msie","navigator","userAgent","urlParsingNode","createElement","resolveURL","href","setAttribute","host","search","hash","hostname","port","pathname","charAt","window","location","requestURL","parsed","normalizedName","ignoreDuplicateOf","split","line","substr","exec","callback","arr","formData","convertValue","isTypedArray","Blob","Buffer","build","parentKey","fullKey","endsWith","toArray","el","append","pop","thing","deprecatedWarnings","version","formatMessage","opt","desc","opts","ERR_DEPRECATED","console","warn","schema","allowUnknown","ERR_BAD_OPTION_VALUE","result","ERR_BAD_OPTION","cache","kindOf","str","kindOfTest","getPrototypeOf","isFunction","hasOwnProperty","TypedArray","Uint8Array","constructor","pattern","ArrayBuffer","isView","pipe","product","assignValue","a","b","stripBOM","content","charCodeAt","superConstructor","props","sourceObj","destObj","filter","merged","getOwnPropertyNames","searchString","position","String","lastIndex","stgWacInternalUrl","cst","FILE_SIZE_LIMIT_DISPLAY","toFixed","$formSection","$","STICKYNAV_HEIGHT","outerHeight","clone","AJS","formValidation","register","field","validate","invalidate","arg","parseInt","format","files","size","emailAddress","support","forms","userName","validEmailAddressAndUser","generalMessageControl","mode","generalMessage","hide","find","disableFields","show","enableFields","productMap","default","recommended_by","avatar","demo_url","trial_url","tech_support_url","jira_software","rfp_help_url","jira_service_desk","webinar_url","jira_core","jira_portfolio","confluence","bitbucket","sourcetree","bamboo","clover","fisheye","crucible","selfHelpMarginCalc","moveSlider","marginCalc","animate","selfHelpState","selfHelpStateStack","handleSlideBack","jqTarget","selfHelpLevel","closest","handleSlideBackState","slide","parents","is","removeClass","children","delay","fadeIn","fadeOut","nextAll","selfHelpReasonMap","resetSelfHelpState","formOverride","selfHelpKey","reporterStatus","reporterStatusUnchecked","hosting","selfHelpPath","selfHelpLabels","backIndex","resetSelfHelp","setSelfHelpFormSelections","triggeredReporterRadio","optionSelectorLevel","reasonMenu","handleConditionalFormSelect","trigger","simulateClickReasonMenuLink","on","form","pathString","addFormData","disableField","jqField","origDisabledVal","attr","jqElem","each","enableField","removeAttr","archiveAndChangeHtml","jqNodes","newHtml","jqThis","origHtml","html","option_selected","option_selected_value","selectorLevel","persistedComments","persistedInstanceIdentifier","solvvyDisclaimer","formSubmitButton","elem","maxLevel","maxSelectedLevel","selectedLevel","existingSelection","inputType","hasClass","select2","selectedIndex","fakeSelect","fakeSelectField","fakeSelectInput","fakeSelectOptions","closeFakeSelectOptions","css","selectedProduct","selectedEvalStage","hostingOptionSection","allHostingOptionSections","selectedSection","slideUp","ready","emailElem","after","imkt","columnLink","click","selector","handleSelfHelpLink","selfHelpType","eventProperties","analytics","getStandardAnalyticsEventProperties","getNonPiiFormDataMap","tracking","minimumResultsForSearch","Infinity","simulated","optionSelectedValue","optionSelected","selectedValue","preventDefault","slideToggle","mouseup","has","selectedOption","selectedOptionText","selectedOptionValue","addClass","next","toggle","slideDown","change","focus","productPlaceholder","productName","productValue","not","productOption","productOptionOriginalValue","demoUrl","trialUrl","rfpHelpLink","webinarLink","techSupportUrl","recommendedBy","avatarImg","premierProductSection","priorityProductSection","tamProductSection","dcProductName","dcProductPlaceholder","scrollTop","offset","top","emailField","nodeKey","handleSlideNextState","siblings","sub_level","handleSlideNext","segmentPageReady","checkForSegmentAnalytics","purchasingLicensingEventProperties","customerStatus","customerTopic","customerPlatform","event","parent","text","label","textContent","radioButton","checked","selfHelpOfferedInline","selfHelpOfferedToplevel","$input","$label","labelVal","getAttribute","capturedEventsPromise","onAnalyticsLoad","map","trackEvent","ace","Tracking","Logger","trackOptimizely","optimizely","eventName","sanitizeEventProperties","propertiesObj","ENV_STAGING","ENV_PRODUCTION","Environment","urlParts","getWindowLocation","includes","getSubdomain","hostnameSubdomain","subdirectory","getSubdirectory","getInternationalSubdomain","getEnvironment","production","staging","dev","author","isStaging","isDev","skipEncoding","continueUrl","getIdentityBaseUrl","continueUrlParam","userEmail","applicationParam","loginHintParam","useQaWAC","stgConfig","debug","log","msg","title","getOptimizelyEndUserId","get","randomId","getOptimizelyCohorts","variations","getVariationMap","buckets","getOptimizelySegments","custom","segments","getAllOptimizelyCohortsAsObjects","experimentId","cohortId","attributes","additionalAttributes","category","action","optimizelyValue","isNonInteraction","attrs","processAttributes","trackAllPlatforms","platform","track","GASv2","hasShownWarning","postBody","Constants","d","GASv3","GoogleAnalytics","ga","nonInteraction","Optimizely","normalize","inferredName","inferName","Segment","eventAction","urlParams","optimizelyCohorts","optimizelySegments","optimizelyEndUserId","core","init","domRoot","self","featureDetect","LocalizedPricing","localizedPricing","componentInfo","innerHTML","componentRoot","parentNode","productKey","productKeyArray","period","offeringSku","countryISOCodeReq","pricing","getPricingPromise","pricingObject","identifiers","customCurrency","countryISOCodePromise","getLocale","componentInit","resolvePricingPromises","appInitialized","onInitialized","cb","bodyClasses","supports","svg","backgroundSize","flexBox","supertype","subtype","overrides","ctor","createIfNotExists","basis","j","last","names","componentType","documentElement","style","history","pushState","implementation","hasFeature","touch","placeholder","localStorage","setItem","removeItem","transitions","s","body","p","mobile","screen","width","api","browser","getScript","general","string","storage","wpl","globals","mediaQueries","wac","landing","experts","legal","components","software","bxp","customers","pages","teamPatterns","urls","apiGetAuthToken","public","apiGetSites","apiGetUser","getUrl","endpoint","getBrowserOs","nAgt","clientStrings","r","cs","isWindows","isMobile","randomString","random","fromCharCode","numberWithCommas","n","elementInViewport","offsetTop","left","offsetLeft","offsetWidth","height","offsetHeight","offsetParent","pageYOffset","pageXOffset","innerHeight","innerWidth","datepickerRequest","select2Request","underscoreRequest","datepicker","linkAttrs","rel","media","link","getStyle","underscore","supportsHistory","page","pushStateNoTracking","hasStorage","getItem","getLocalStorage","getCookie","setLocalStorage","setCookie","removeLocalStorage","removeCookie","getSessionStorage","sessionStorage","setSessionStorage","removeSessionStorage","encodedName","regex","days","sameSite","domainLevel","sameSiteVal","sameSiteString","date","setTime","getTime","reverse","replaceText","srcObj","inputText","replaceMap","reduce","outputText","replaceKey","getStrWithCommas","input","ImktTracking","Platforms","eventProperty","eventTarget","tagName","dataset","uuid","eventData","innerText","attribute","campaigns","campaignList","getCampaignStates","acc","campaign","activeExperiments","experiment","variation","holdbackExperiments","isInCampaignHoldback","_e","getBareUrl","questionIndex","substring","getUnhashedUrl","hashIndex","getProtocol","getHostname","start","getQueryString","updateQueryStringParam","baseUrl","queryString","newParam","keyRegex","getPathname","serialize","tempArray","htmlEscape","getUrlParams","qs","paramPairs","keyValuePair","addUrlParams","removeUrlParams","currentParams","getSimpleUrl","matchUrlVars","bareUrl","hashUrlArray","hashUrl","byteLength","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","tmp","Arr","_byteLength","curByte","len","revLookup","fromByteArray","uint8","extraBytes","maxChunkLength","len2","encodeChunk","lookup","end","num","output","base64","ieee754","customInspectSymbol","Symbol","K_MAX_LENGTH","createBuffer","RangeError","buf","setPrototypeOf","encodingOrOffset","allocUnsafe","encoding","isEncoding","actual","fromString","arrayView","isInstance","copy","fromArrayBuffer","byteOffset","fromArrayLike","fromArrayView","SharedArrayBuffer","valueOf","numberIsNaN","fromObject","toPrimitive","assertSize","array","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","m","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","readUInt16BE","foundIndex","found","hexWrite","Number","remaining","strLen","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","hi","lo","utf16leToBytes","min","res","secondByte","thirdByte","fourthByte","tempCodePoint","firstByte","codePoint","bytesPerSequence","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","enumerable","poolSize","alloc","fill","allocUnsafeSlow","_isBuffer","compare","x","y","list","pos","set","swap16","swap32","swap64","toLocaleString","equals","inspect","max","thisStart","thisEnd","thisCopy","targetCopy","isFinite","_arr","ret","out","hexSliceLookupTable","bytes","checkOffset","ext","checkInt","checkIEEE754","writeFloat","littleEndian","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","mul","readUintBE","readUIntBE","readUint8","readUInt8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readUInt32BE","readIntLE","pow","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUIntBE","writeUint8","writeUInt8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUInt16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeUInt32BE","writeIntLE","limit","sub","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","INVALID_BASE64_RE","leadSurrogate","base64clean","src","dst","alphabet","table","i16","___EXPOSE_LOADER_IMPORT___","___EXPOSE_LOADER_GLOBAL_THIS___","globalThis","g","Function","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","abs","isNaN","LN2","settings","onsubmit","submitButton","currentTarget","cancelSubmit","handle","hidden","submitHandler","formSubmitted","appendTo","currentForm","pendingRequest","focusInvalid","valid","errorList","element","rules","command","argument","staticRules","existingRules","param","filtered","isContentEditable","normalizeRule","messages","normalizeRules","classRules","attributeRules","dataRules","required","remote","called","expr","pseudos","blank","filled","unchecked","makeArray","groups","errorClass","pendingClass","validClass","errorElement","focusCleanup","errorContainer","errorLabelContainer","ignore","ignoreTitle","onfocusin","lastActive","unhighlight","hideThese","errorsFor","onfocusout","checkable","submitted","optional","onkeyup","which","elementValue","inArray","keyCode","invalid","onclick","highlight","findByName","setDefaults","email","dateISO","digits","equalTo","maxlength","minlength","rangelength","range","step","autoCreateRanges","labelContainer","errorContext","containers","add","valueCache","pending","reset","delegate","eventType","invalidHandler","checkForm","errorMap","triggerHandler","showErrors","prepareForm","elements","currentElements","check","rs","group","cleanElement","clean","checkElement","validationTargetFor","prepareElement","testgroup","numberOfInvalids","toHide","errors","successList","grep","defaultShowErrors","resetForm","hideErrors","removeData","resetElements","objectLength","count","addWrapper","findLastActive","rulesCache","resetInternals","toShow","idx","$element","validity","badInput","rule","normalizer","rulesCount","dependencyMismatch","parameters","methods","formatAndAdd","customDataMessage","customMessage","findDefined","defaultMessage","theregex","toToggle","wrapper","showLabel","success","validElements","invalidElements","place","errorID","elementID","idOrName","describedBy","wrap","errorPlacement","insertAfter","escapeCssMeta","describer","getLength","nodeName","depend","dependTypes","startRequest","stopRequest","previousValue","old","destroy","off","classRuleSettings","creditcard","addClassRules","className","classes","normalizeAttributeRule","depends","keepRule","parameter","transformed","addMethod","decimals","errorMessage","re","decimalPlaces","toInt","round","optionDataString","previous","originalMessage","ajax","dataType","pendingRequests","ajaxPrefilter","_","xhr","ajaxSettings","jQuery"],"sourceRoot":""}